예제 #1
0
        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 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));
        }
        public IActionResult AddressEdit(CustomerAddressModel model, IFormCollection form)
        {
            var customer = _customerService.GetCustomerById(model.CustomerId);

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

            var address = customer.Addresses.Where(x => x.Id == model.Address.Id).FirstOrDefault();

            if (address == null)
            {
                //No address found with the specified id
                return(RedirectToAction("Edit", new { id = customer.Id }));
            }

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

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

            if (ModelState.IsValid)
            {
                address = _customerViewModelService.UpdateAddressModel(customer, address, model, customAttributes);
                SuccessNotification(_localizationService.GetResource("Admin.Customers.Customers.Addresses.Updated"));
                return(RedirectToAction("AddressEdit", new { addressId = model.Address.Id, customerId = model.CustomerId }));
            }
            //If we got this far, something failed, redisplay form
            _customerViewModelService.PrepareAddressModel(model, address, customer, true);

            return(View(model));
        }
예제 #5
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));
        }