public async Task <IActionResult> AddressCreate(CustomerAddressModel model, IFormCollection form)
        {
            var customer = await _customerService.GetCustomerById(model.CustomerId);

            if (customer == null)
            {
                //No customer found with the specified id
                return(RedirectToAction("List"));
            }

            //custom address attributes
            var customAttributes = await form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);

            var customAttributeWarnings = await _addressAttributeParser.GetAttributeWarnings(customAttributes);

            foreach (var error in customAttributeWarnings)
            {
                ModelState.AddModelError("", error);
            }

            if (ModelState.IsValid)
            {
                var address = await _customerViewModelService.InsertAddressModel(customer, model, customAttributes);

                SuccessNotification(_localizationService.GetResource("Admin.Customers.Customers.Addresses.Added"));
                return(RedirectToAction("AddressEdit", new { addressId = address.Id, customerId = model.CustomerId }));
            }

            //If we got this far, something failed, redisplay form
            await _customerViewModelService.PrepareAddressModel(model, null, customer, true);

            return(View(model));
        }
        public virtual IActionResult AddressAdd(UserAddressEditModel model)
        {
            if (!_workContext.CurrentUser.IsRegistered())
            {
                return(Challenge());
            }

            var user = _workContext.CurrentUser;

            //custom address attributes
            var customAttributes        = _addressAttributeParser.ParseCustomAddressAttributes(model.Form);
            var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);

            foreach (var error in customAttributeWarnings)
            {
                ModelState.AddModelError("", error);
            }

            if (ModelState.IsValid)
            {
                var address = model.Address.ToEntity();
                address.CustomAttributes = customAttributes;
                address.CreatedOnUtc     = DateTime.UtcNow;
                //some validation
                if (address.CountryId == 0)
                {
                    address.CountryId = null;
                }
                if (address.StateProvinceId == 0)
                {
                    address.StateProvinceId = null;
                }
                //user.Addresses.Add(address);
                user.UserAddressMappings.Add(new UserAddressMapping {
                    Address = address
                });
                _userService.UpdateUser(user);

                return(RedirectToRoute("UserAddresses"));
            }

            //If we got this far, something failed, redisplay form
            _addressModelFactory.PrepareAddressModel(model.Address,
                                                     address: null,
                                                     excludeProperties: true,
                                                     addressSettings: _addressSettings,
                                                     loadCountries: () => _countryService.GetAllCountries(_workContext.WorkingLanguage.Id),
                                                     overrideAttributesXml: customAttributes);

            return(View(model));
        }
        public async Task <IActionResult> Edit(ReturnRequestModel model, bool continueEditing, IFormCollection form,
                                               [FromServices] IAddressAttributeService addressAttributeService,
                                               [FromServices] IAddressAttributeParser addressAttributeParser,
                                               [FromServices] OrderSettings orderSettings
                                               )
        {
            var returnRequest = await _returnRequestService.GetReturnRequestById(model.Id);

            if (returnRequest == null)
            {
                //No return request found with the specified id
                return(RedirectToAction("List"));
            }

            if (_workContext.CurrentCustomer.IsStaff() && returnRequest.StoreId != _workContext.CurrentCustomer.StaffStoreId)
            {
                return(RedirectToAction("List", "ReturnRequest"));
            }

            //a vendor should have access only to his return request
            if (_workContext.CurrentVendor != null && returnRequest.VendorId != _workContext.CurrentVendor.Id)
            {
                return(RedirectToAction("List", "ReturnRequest"));
            }

            var customAddressAttributes = string.Empty;

            if (orderSettings.ReturnRequests_AllowToSpecifyPickupAddress)
            {
                customAddressAttributes = await form.ParseCustomAddressAttributes(addressAttributeParser, addressAttributeService);

                var customAddressAttributeWarnings = await addressAttributeParser.GetAttributeWarnings(customAddressAttributes);

                foreach (var error in customAddressAttributeWarnings)
                {
                    ModelState.AddModelError("", error);
                }
            }
            if (ModelState.IsValid)
            {
                returnRequest = await _returnRequestViewModelService.UpdateReturnRequestModel(returnRequest, model, customAddressAttributes);

                SuccessNotification(_localizationService.GetResource("Admin.ReturnRequests.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = returnRequest.Id }) : RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            await _returnRequestViewModelService.PrepareReturnRequestModel(model, returnRequest, false);

            return(View(model));
        }
        public async Task <IActionResult> Edit(MerchandiseReturnModel model, bool continueEditing, IFormCollection form,
                                               [FromServices] IAddressAttributeService addressAttributeService,
                                               [FromServices] IAddressAttributeParser addressAttributeParser,
                                               [FromServices] OrderSettings orderSettings
                                               )
        {
            var merchandiseReturn = await _merchandiseReturnService.GetMerchandiseReturnById(model.Id);

            if (merchandiseReturn == null)
            {
                //No merchandise return found with the specified id
                return(RedirectToAction("List"));
            }

            if (await _groupService.IsStaff(_workContext.CurrentCustomer) && merchandiseReturn.StoreId != _workContext.CurrentCustomer.StaffStoreId)
            {
                return(RedirectToAction("List", "MerchandiseReturn"));
            }

            //a vendor should have access only to his merchandise return
            if (_workContext.CurrentVendor != null && merchandiseReturn.VendorId != _workContext.CurrentVendor.Id)
            {
                return(RedirectToAction("List", "MerchandiseReturn"));
            }

            var customAddressAttributes = new List <CustomAttribute>();

            if (orderSettings.MerchandiseReturns_AllowToSpecifyPickupAddress)
            {
                customAddressAttributes = await form.ParseCustomAddressAttributes(addressAttributeParser, addressAttributeService);

                var customAddressAttributeWarnings = await addressAttributeParser.GetAttributeWarnings(customAddressAttributes);

                foreach (var error in customAddressAttributeWarnings)
                {
                    ModelState.AddModelError("", error);
                }
            }
            if (ModelState.IsValid)
            {
                merchandiseReturn = await _merchandiseReturnViewModelService.UpdateMerchandiseReturnModel(merchandiseReturn, model, customAddressAttributes);

                Success(_translationService.GetResource("Admin.Orders.MerchandiseReturns.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = merchandiseReturn.Id }) : RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            await _merchandiseReturnViewModelService.PrepareMerchandiseReturnModel(model, merchandiseReturn, false);

            return(View(model));
        }
Example #5
0
 public virtual IList <string> GetAttributeWarnings(string attributesXml)
 {
     return(_addressAttributeParser.GetAttributeWarnings(attributesXml));
 }
Example #6
0
        public IActionResult Edit(ReturnRequestModel model, bool continueEditing, IFormCollection form)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageReturnRequests))
            {
                return(AccessDeniedView());
            }

            var returnRequest = _returnRequestService.GetReturnRequestById(model.Id);

            if (returnRequest == null)
            {
                //No return request found with the specified id
                return(RedirectToAction("List"));
            }

            var customAddressAttributes = string.Empty;

            if (_orderSettings.ReturnRequests_AllowToSpecifyPickupAddress)
            {
                customAddressAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
                var customAddressAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAddressAttributes);
                foreach (var error in customAddressAttributeWarnings)
                {
                    ModelState.AddModelError("", error);
                }
            }
            if (ModelState.IsValid)
            {
                returnRequest.CustomerComments      = model.CustomerComments;
                returnRequest.StaffNotes            = model.StaffNotes;
                returnRequest.ReturnRequestStatusId = model.ReturnRequestStatusId;
                returnRequest.UpdatedOnUtc          = DateTime.UtcNow;
                if (_orderSettings.ReturnRequests_AllowToSpecifyPickupDate)
                {
                    returnRequest.PickupDate = model.PickupDate;
                }
                if (_orderSettings.ReturnRequests_AllowToSpecifyPickupAddress)
                {
                    returnRequest.PickupAddress = model.PickupAddress.ToEntity();
                    if (returnRequest.PickupAddress != null)
                    {
                        returnRequest.PickupAddress.CustomAttributes = customAddressAttributes;
                    }
                }
                returnRequest.NotifyCustomer = model.NotifyCustomer;
                _returnRequest.Update(returnRequest);

                //activity log
                _customerActivityService.InsertActivity("EditReturnRequest", returnRequest.Id, _localizationService.GetResource("ActivityLog.EditReturnRequest"), returnRequest.Id);

                if (model.NotifyCustomer)
                {
                    NotifyCustomer(returnRequest);
                }

                SuccessNotification(_localizationService.GetResource("Admin.ReturnRequests.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = returnRequest.Id }) : RedirectToAction("List"));
            }


            //If we got this far, something failed, redisplay form
            PrepareReturnRequestModel(model, returnRequest, false);
            return(View(model));
        }
 public virtual async Task <IList <string> > GetAttributeWarnings(string attributesXml)
 {
     return(await _addressAttributeParser.GetAttributeWarnings(attributesXml));
 }