Add Recipient destination model and functionality on front end

This commit is contained in:
Adam
2016-01-12 09:01:46 +01:00
parent 794cc2ec69
commit 5ee38f6d9a
5 changed files with 130 additions and 35 deletions

View File

@@ -7,6 +7,7 @@ var ItemInCart = require('../models/itemInCart');
var ItemInCartCollection = require('../models/itemInCartCollection');
var ItemCollection = require('../models/itemCollection');
var DeliveryDestination = require('../models/deliveryDestination');
var RecipientDestination = require('../models/recipientDestination');
var OrderConfirmation = require('../models/orderConfirmation');
var Place = require('../models/place');
var Validation = require('../utils/validation');
@@ -23,7 +24,13 @@ var _deliveryDestination = new DeliveryDestination();
var _deliveryDestinationErrors = {};
var _deliveryCosts = new Place({
postalCode: _deliveryDestination.get('place')
})
});
var _recipientDestination = new RecipientDestination();
var _recipientDestinationErrors = {};
var _recipientCosts = new Place({
postalCode: _recipientDestination.get('place')
});
var _addressColapsed = false;
@@ -2701,6 +2708,15 @@ var changeDeliveryDestinationProperty = function(property, value) {
validateDeliveryDestinationForm();
};
var changeRecipientDestinationProperty = function(property, value) {
_recipientDestination.set(property, value);
if (property === 'place') {
fetchPlace();
}
validateRecipientDestinationForm();
};
var confirmOrder = function() {
@@ -2774,10 +2790,52 @@ var validateDeliveryDestinationForm = function() {
}
var validateRecipientDestinationForm = function() {
_recipientDestinationErrors = {};
var nameRegex = /.+\s+.+/i;
if (Validation.safeString(_recipientDestinationErrors.get('name')).search(nameRegex) < 0) {
_recipientDestinationErrors['name'] = "I prezime i ime su obavezni";
}
var addressRegex = /.+\s+.+/i;
if (Validation.safeString(_recipientDestinationErrors.get('address')).search(addressRegex) < 0) {
_recipientDestinationErrors['address'] = "Adresa mora biti ispravna";
}
var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/i;
if (Validation.safeString(_recipientDestinationErrors.get('email')).search(emailRegex) < 0) {
_recipientDestinationErrors['email'] = "Email mora biti ispravno upisan";
}
var phoneRegex = /^[\d\s-]{8,12}$/i;
if (Validation.safeString(_recipientDestinationErrors.get('phone')).search(phoneRegex) < 0) {
_recipientDestinationErrors['phone'] = "Telefon mora biti ispravan";
}
var placeRegex = /^\s{0,1}\d{5}$/i;
if (Validation.safeString(_recipientDestinationErrors.get('place')).search(placeRegex) < 0) {
_recipientDestinationErrors['place'] = "Mjesto mora biti izabrano";
}
var requiredFields = ["name", "place", 'address', 'phone'];
for (var i in requiredFields) {
var value = _deliveryDestination.get(requiredFields[i]);
if (value === undefined || value === null || value === "") {
// if it's required there will be a star there
_deliveryDestinationErrors[requiredFields[i]] = "*";
}
}
}
var isDeliveryDestinationValid = function() {
return Object.getOwnPropertyNames(_deliveryDestinationErrors).length === 0;
}
return Object.getOwnPropertyNames(_deliveryDestinationErrors).length === 0;
}
var isRecipientDestinationValid = function() {
return Object.getOwnPropertyNames(_recipientDestinationErrors).length === 0;
}
// Extend CartStore with EventEmitter to add eventing capabilities
var CartStore = _.extend({}, EventEmitter.prototype, {
@@ -2842,7 +2900,12 @@ var CartStore = _.extend({}, EventEmitter.prototype, {
deliveryDestinationErrors: _deliveryDestinationErrors,
isDeliveryDestinationValid: isDeliveryDestinationValid(),
deliveryCosts: _deliveryCosts,
destinationValid: isDeliveryDestinationValid()
destinationValid: isDeliveryDestinationValid(),
recipientDestination: _recipientDestination,
recipientDestinationErrors: _recipientDestinationErrors,
isRecipientDestinationValid: isRecipientDestinationValid(),
recipientCosts: _recipientCosts,
recipientValid: isRecipientDestinationValid()
};
return state;
},
@@ -2915,6 +2978,9 @@ AppDispatcher.register(function(payload) {
case CartConstants.CHANGE_DELIVERY_DESTINATION_PROPERTY:
changeDeliveryDestinationProperty(action.propertyName, action.value)
break;
case CartConstants.CHANGE_RECIPIENT_DESTINATION_PROPERTY:
changeRecipientDestinationProperty(action.propertyName, action.value)
break;
case CartConstants.CONFIRM_DELIVERY:
saveDeliveryDestination();
break;