Пример #1
0
        public virtual IActionResult Create(CreateMaterialModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(XrmsPermissionProvider.ManageMaterials))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                //a vendor should have access only to his materials

                /*if (_workContext.CurrentVendor != null)
                 * {
                 *  model.VendorId = _workContext.CurrentVendor.Id;
                 * }*/

                //material
                var material = model.ToEntity();
                material.CreatedOnUtc = DateTime.UtcNow;
                material.UpdatedOnUtc = DateTime.UtcNow;
                _materialService.InsertMaterial(material);

                // quantity change history
                _materialService.AddStockQuantityHistoryEntry(material, material.StockQuantity, material.StockQuantity, material.WarehouseId,
                                                              _localizationService.GetResource("Xrms.Admin.Catalog.Materials.StockQuantityHistory.Messages.Edit"));

                // activity log
                _customerActivityService.InsertActivity("AddNewMaterial", _localizationService.GetResource("Xrms.ActivityLog.AddNewMaterial"), material);

                SuccessNotification(_localizationService.GetResource("Xrms.Admin.Catalog.Materials.Notifications.Added"));

                if (continueEditing)
                {
                    //selected tab
                    SaveSelectedTabName();

                    return(RedirectToAction("Edit", new { id = material.Id }));
                }

                return(RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            var viewModel = new MaterialDetailsPageViewModel();

            model.ToDetailsViewModel(viewModel);
            //viewModel.MaterialGroupInfo = model;

            // groups
            PrepareAvailableMaterialGroups(viewModel);
            // warehouses
            PrepareAvailableWarehouses(viewModel);

            return(View("~/Plugins/Xrms/Areas/Admin/Views/Material/Create.cshtml", viewModel));
        }
Пример #2
0
        // create material
        public virtual IActionResult Create()
        {
            if (!_permissionService.Authorize(XrmsPermissionProvider.ManageMaterials))
            {
                return(AccessDeniedView());
            }

            var model = new MaterialDetailsPageViewModel();

            // groups
            PrepareAvailableMaterialGroups(model);
            // warehouses
            PrepareAvailableWarehouses(model);

            return(View("~/Plugins/Xrms/Areas/Admin/Views/Material/Create.cshtml", model));
        }
Пример #3
0
        protected virtual void PrepareAvailableMaterialGroups(MaterialDetailsPageViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var groups = _materialGroupService.GetAllMaterialGroups(showHidden: true);
            var list   = groups.Select(c => new SelectListItem
            {
                Text  = c.GetFormattedBreadCrumb(_materialGroupService),
                Value = c.Id.ToString()
            });

            foreach (var item in list)
            {
                model.AvailableMaterialGroups.Add(item);
            }
        }
Пример #4
0
        protected virtual void PrepareAvailableWarehouses(MaterialDetailsPageViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var warehouses = _shippingService.GetAllWarehouses();

            model.AvailableWarehouses.Add(new SelectListItem
            {
                Text  = _localizationService.GetResource("Xrms.Admin.Catalog.Materials.Fields.Warehouse.None"),
                Value = "0"
            });

            foreach (var warehouse in warehouses)
            {
                model.AvailableWarehouses.Add(new SelectListItem
                {
                    Text  = warehouse.Name,
                    Value = warehouse.Id.ToString()
                });
            }
        }
Пример #5
0
        public virtual IActionResult Edit(int id, UpdateMaterialModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(XrmsPermissionProvider.ManageMaterials))
            {
                return(AccessDeniedView());
            }

            var material = _materialService.GetMaterialById(id);

            if (material == null || material.Deleted)
            {
                //No material found with the specified id
                return(RedirectToAction("List"));
            }

            //check if the material quantity has been changed while we were editing the material
            //and if it has been changed then we show error notification
            //and redirect on the editing page without data saving

            /*if (material.StockQuantity != model.LastStockQuantity)
             * {
             *  ErrorNotification(_localizationService.GetResource("Admin.Catalog.Materials.Fields.StockQuantity.ChangedWarning"));
             *  return RedirectToAction("Edit", new { id = material.Id });
             * }*/

            if (ModelState.IsValid)
            {
                //some previously used values
                var previousWarehouseId   = material.WarehouseId;
                var previousStockQuantity = material.StockQuantity;

                //material
                material = model.ToEntity(material);

                material.UpdatedOnUtc = DateTime.UtcNow;
                _materialService.UpdateMaterial(material);

                // quantity change history
                if (previousWarehouseId != material.WarehouseId)
                {
                    //warehouse is changed
                    //compose a message
                    var oldWarehouseMessage = string.Empty;
                    if (previousWarehouseId > 0)
                    {
                        var oldWarehouse = _shippingService.GetWarehouseById(previousWarehouseId);
                        if (oldWarehouse != null)
                        {
                            oldWarehouseMessage = string.Format(_localizationService.GetResource("Xrms.Admin.Catalog.Materials.StockQuantityHistory.Messages.EditWarehouse.Old"), oldWarehouse.Name);
                        }
                    }
                    var newWarehouseMessage = string.Empty;
                    if (material.WarehouseId > 0)
                    {
                        var newWarehouse = _shippingService.GetWarehouseById(material.WarehouseId);
                        if (newWarehouse != null)
                        {
                            newWarehouseMessage = string.Format(_localizationService.GetResource("Xrms.Admin.Catalog.Materials.StockQuantityHistory.Messages.EditWarehouse.New"), newWarehouse.Name);
                        }
                    }
                    var message = string.Format(_localizationService.GetResource("Xrms.Admin.Catalog.Materials.StockQuantityHistory.Messages.EditWarehouse"), oldWarehouseMessage, newWarehouseMessage);

                    //record history
                    _materialService.AddStockQuantityHistoryEntry(material, -previousStockQuantity, 0, previousWarehouseId, message);
                    _materialService.AddStockQuantityHistoryEntry(material, material.StockQuantity, material.StockQuantity, material.WarehouseId, message);
                }
                else
                {
                    _materialService.AddStockQuantityHistoryEntry(material, material.StockQuantity - previousStockQuantity, material.StockQuantity,
                                                                  material.WarehouseId, _localizationService.GetResource("Xrms.Admin.Catalog.Materials.StockQuantityHistory.Messages.Edit"));
                }

                //activity log
                _customerActivityService.InsertActivity("EditMaterial", _localizationService.GetResource("Xrms.ActivityLog.EditMaterial"), material);

                SuccessNotification(_localizationService.GetResource("Xrms.Admin.Catalog.Materials.Notifications.Updated"));

                if (continueEditing)
                {
                    //selected tab
                    SaveSelectedTabName();

                    return(RedirectToAction("Edit", new { id = material.Id }));
                }
                return(RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            var viewModel = new MaterialDetailsPageViewModel();

            model.ToDetailsViewModel(viewModel);
            // groups
            PrepareAvailableMaterialGroups(viewModel);
            // warehouses
            PrepareAvailableWarehouses(viewModel);

            return(View("~/Plugins/Xrms/Areas/Admin/Views/Material/Edit.cshtml", viewModel));
        }
 public static MaterialDetailsPageViewModel ToDetailsViewModel(this Material entity, MaterialDetailsPageViewModel viewModel)
 {
     return(entity.MapTo(viewModel));
 }
 public static MaterialDetailsPageViewModel ToDetailsViewModel(this MaterialModel model, MaterialDetailsPageViewModel viewModel)
 {
     return(model.MapTo(viewModel));
 }