public virtual IActionResult Edit(int id, MaterialGroupModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(XrmsPermissionProvider.ManageMaterialGroups))
            {
                return(AccessDeniedView());
            }

            var materialGroup = _materialGroupService.GetMaterialGroupById(id);

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

            if (ModelState.IsValid)
            {
                var prevPictureId = materialGroup.PictureId;
                materialGroup = model.ToEntity(materialGroup);
                materialGroup.UpdatedOnUtc = DateTime.UtcNow;
                _materialGroupService.UpdateMaterialGroup(materialGroup);

                //delete an old picture (if deleted or updated)
                if (prevPictureId > 0 && prevPictureId != materialGroup.PictureId)
                {
                    var prevPicture = _pictureService.GetPictureById(prevPictureId);
                    if (prevPicture != null)
                    {
                        _pictureService.DeletePicture(prevPicture);
                    }
                }

                //activity log
                _customerActivityService.InsertActivity("EditMaterialGroup", _localizationService.GetResource("Xrms.ActivityLog.EditMaterialGroup"), materialGroup.Name);

                SuccessNotification(_localizationService.GetResource("Xrms.Admin.Catalog.MaterialGroups.Notifications.Updated"));
                if (continueEditing)
                {
                    //selected tab
                    SaveSelectedTabName();

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

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

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

            //If we got this far, something failed, redisplay form
            // prepare parent groups
            PrepareAvailableMaterialGroups(viewModel);

            return(View("~/Plugins/Xrms.MaterialAdmin/Areas/Admin/Views/MaterialGroup/Edit.cshtml", viewModel));
        }
        public virtual IActionResult Create()
        {
            if (!_permissionService.Authorize(XrmsPermissionProvider.ManageMaterialGroups))
            {
                return(AccessDeniedView());
            }

            var model = new MaterialGroupDetailsPageViewModel();

            // set default values
            model.DisplayOrder = 1;

            // prepare parent groups
            PrepareAvailableMaterialGroups(model);

            return(View("~/Plugins/Xrms.MaterialAdmin/Areas/Admin/Views/MaterialGroup/Create.cshtml", model));
        }
        public virtual IActionResult Create(MaterialGroupModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(XrmsPermissionProvider.ManageMaterialGroups))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                var group = model.ToEntity();
                group.CreatedOnUtc = DateTime.UtcNow;
                group.UpdatedOnUtc = DateTime.UtcNow;
                _materialGroupService.InsertMaterialGroup(group);

                //activity log
                _customerActivityService.InsertActivity("AddNewMaterialGroup", _localizationService.GetResource("Xrms.ActivityLog.AddNewMaterialGroup"), group.Name);

                SuccessNotification(_localizationService.GetResource("Xrms.Admin.Catalog.MaterialGroups.Notifications.Created"));

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

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

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

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

            // prepare parent groups
            PrepareAvailableMaterialGroups(viewModel);

            return(View("~/Plugins/Xrms.MaterialAdmin/Areas/Admin/Views/MaterialGroup/Create.cshtml", viewModel));
        }
        protected virtual void PrepareAvailableMaterialGroups(MaterialGroupDetailsPageViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            model.AvailableMaterialGroups.Add(new SelectListItem
            {
                Text  = _localizationService.GetResource("Xrms.Admin.Catalog.MaterialGroups.Fields.Parent.None"),
                Value = "0"
            });
            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);
            }
        }
 public static MaterialGroupDetailsPageViewModel ToDetailsViewModel(this MaterialGroupModel model, MaterialGroupDetailsPageViewModel viewModel)
 {
     return(model.MapTo(viewModel));
 }
 public static MaterialGroupDetailsPageViewModel ToDetailsViewModel(this MaterialGroup entity, MaterialGroupDetailsPageViewModel viewModel)
 {
     return(entity.MapTo(viewModel));
 }