예제 #1
0
        public ActionResult EditItem(int id)
        {
            if (!Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                return(AccessDeniedView());
            }

            var item = _menuStorage.GetMenuItemById(id);

            if (item == null)
            {
                return(HttpNotFound());
            }

            var model = MiniMapper.Map <MenuItemRecord, MenuItemRecordModel>(item);

            model.ParentItemId    = item.ParentItemId == 0 ? (int?)null : item.ParentItemId;
            model.PermissionNames = item.PermissionNames.SplitSafe(",");

            PrepareModel(model, item);
            AddLocales(_languageService, model.Locales, (locale, languageId) =>
            {
                locale.Title            = item.GetLocalized(x => x.Title, languageId, false, false);
                locale.ShortDescription = item.GetLocalized(x => x.ShortDescription, languageId, false, false);
            });

            return(View(model));
        }
예제 #2
0
        public ActionResult List(GridCommand command, MenuRecordListModel model)
        {
            var gridModel = new GridModel <MenuRecordModel>();

            if (Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                var menus = _menuStorage.GetAllMenus(model.SystemName, model.StoreId, true, command.Page - 1, command.PageSize);

                gridModel.Data = menus.Select(x =>
                {
                    var itemModel = new MenuRecordModel();
                    MiniMapper.Map(x, itemModel);

                    return(itemModel);
                });

                gridModel.Total = menus.TotalCount;
            }
            else
            {
                gridModel.Data = Enumerable.Empty <MenuRecordModel>();
                NotifyAccessDenied();
            }

            return(new JsonResult
            {
                MaxJsonLength = int.MaxValue,
                Data = gridModel
            });
        }
예제 #3
0
        public ActionResult CreateItem(MenuItemRecordModel itemModel, bool continueEditing, FormCollection form)
        {
            if (!Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                var item = MiniMapper.Map <MenuItemRecordModel, MenuItemRecord>(itemModel);
                item.ParentItemId    = itemModel.ParentItemId ?? 0;
                item.PermissionNames = string.Join(",", itemModel.PermissionNames ?? new string[0]).NullEmpty();

                _menuStorage.InsertMenuItem(item);

                UpdateLocales(item, itemModel);

                Services.EventPublisher.Publish(new ModelBoundEvent(itemModel, item, form));
                NotifySuccess(T("Admin.Common.DataSuccessfullySaved"));

                if (continueEditing)
                {
                    return(RedirectToAction("EditItem", new { id = item.Id }));
                }

                return(RedirectToAction("Edit", new { id = item.MenuId }));
            }

            PrepareModel(itemModel, null);

            return(View(itemModel));
        }
예제 #4
0
        public void CanMap2()
        {
            var from = new MapClass2
            {
                Prop1 = "Prop1",
                Prop2 = "Prop2",
                Prop3 = "Prop3"
            };

            from.Address["FirstName"] = "John";
            from.Address["LastName"]  = "Doe";
            from.Address["Age"]       = 24;

            var to = MiniMapper.Map <MapClass2, MapClass1>(from);

            Assert.AreEqual(from.Prop1, to.Prop1);
            Assert.AreEqual(from.Prop2, to.Prop2);
            Assert.AreEqual(from.Prop3, to.Prop3);

            var dict = from.Address;

            Assert.AreEqual(dict.Count, 3);
            Assert.AreEqual(dict["FirstName"], to.Address.FirstName);
            Assert.AreEqual(dict["LastName"], to.Address.LastName);
            Assert.AreEqual(dict["Age"], to.Address.Age);
        }
예제 #5
0
        public ActionResult Create(MenuRecordModel model, bool continueEditing, FormCollection form)
        {
            if (!Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                var menu = MiniMapper.Map <MenuRecordModel, MenuRecord>(model);
                menu.WidgetZone = string.Join(",", model.WidgetZone ?? new string[0]).NullEmpty();

                _menuStorage.InsertMenu(menu);

                SaveStoreMappings(menu, model);
                SaveAclMappings(menu, model);
                UpdateLocales(menu, model);

                Services.EventPublisher.Publish(new ModelBoundEvent(model, menu, form));

                NotifySuccess(T("Admin.Common.DataSuccessfullySaved"));
                return(continueEditing ? RedirectToAction("Edit", new { id = menu.Id }) : RedirectToAction("List"));
            }

            PrepareModel(model, null);

            return(View(model));
        }
        public ActionResult Configure(PayPalInstalmentsSettings settings, int storeScope)
        {
            var model = new PayPalInstalmentsConfigModel();
            MiniMapper.Map(settings, model);
            //model.PromotionWidgetZones = settings.PromotionWidgetZones.SplitSafe(",");

            model.ProductPagePromotions = settings.ProductPagePromotion.HasValue
                ? settings.ProductPagePromotion.Value.ToSelectList(true).ToList()
                : PayPalPromotion.FinancingExample.ToSelectList(false).ToList();

            model.CartPagePromotions = settings.CartPagePromotion.HasValue
                ? settings.CartPagePromotion.Value.ToSelectList(true).ToList()
                : PayPalPromotion.FinancingExample.ToSelectList(false).ToList();

            model.PaymentListPromotions = PayPalPromotion.FinancingExample.ToSelectList(false).ToList();

            PrepareConfigurationModel(model, storeScope);

            if (model.Lender == null)
            {
                var cs = Services.Settings.LoadSetting<CompanyInformationSettings>();
                model.Lender = $"{cs.CompanyName.EmptyNull()}, {cs.Street.EmptyNull()}, {cs.ZipCode.EmptyNull()} {cs.City.EmptyNull()}";
            }

            return View(model);
        }
예제 #7
0
        public void CanMapAnonymousType()
        {
            var from = new
            {
                Prop1   = "Prop1",
                Prop2   = "Prop2",
                Prop3   = "Prop3",
                Address = new
                {
                    FirstName = "John",
                    LastName  = "Doe",
                    Age       = 24
                }
            };

            var to = new MapClass2();

            MiniMapper.Map(from, to);

            Assert.AreEqual(from.Prop1, to.Prop1);
            Assert.AreEqual(from.Prop2, to.Prop2);
            Assert.AreEqual(from.Prop3, to.Prop3);

            var dict = to.Address;

            Assert.AreEqual(dict.Count, 3);
            Assert.AreEqual(dict["FirstName"], from.Address.FirstName);
            Assert.AreEqual(dict["LastName"], from.Address.LastName);
            Assert.AreEqual(dict["Age"], from.Address.Age);
        }
        public ActionResult Edit(MenuRecordModel model, bool continueEditing, FormCollection form)
        {
            var menu = _menuStorage.GetMenuById(model.Id);

            if (menu == null)
            {
                return(HttpNotFound());
            }

            if (ModelState.IsValid)
            {
                MiniMapper.Map(model, menu);
                menu.WidgetZone = string.Join(",", model.WidgetZone ?? new string[0]).NullEmpty();

                _menuStorage.UpdateMenu(menu);

                SaveStoreMappings(menu, model.SelectedStoreIds);
                SaveAclMappings(menu, model.SelectedCustomerRoleIds);
                UpdateLocales(menu, model);

                Services.EventPublisher.Publish(new ModelBoundEvent(model, menu, form));

                NotifySuccess(T("Admin.Common.DataSuccessfullySaved"));
                return(continueEditing ? RedirectToAction("Edit", menu.Id) : RedirectToAction("List"));
            }

            PrepareModel(model, menu);

            return(View(model));
        }
예제 #9
0
        private async Task PrepareRegisterModelAsync(RegisterModel model)
        {
            model.AllowCustomersToSetTimeZone = _dateTimeSettings.AllowCustomersToSetTimeZone;
            model.DisplayVatNumber            = _taxSettings.EuVatEnabled;
            model.VatRequired = _taxSettings.VatRequired;

            MiniMapper.Map(_customerSettings, model);

            model.UsernamesEnabled = _customerSettings.CustomerLoginType != CustomerLoginType.Email;
            model.CheckUsernameAvailabilityEnabled = _customerSettings.CheckUsernameAvailabilityEnabled;
            model.DisplayCaptcha = _captchaSettings.CanDisplayCaptcha && _captchaSettings.ShowOnRegistrationPage;

            ViewBag.AvailableTimeZones = new List <SelectListItem>();
            foreach (var tzi in _dateTimeHelper.GetSystemTimeZones())
            {
                ViewBag.AvailableTimeZones.Add(new SelectListItem {
                    Text = tzi.DisplayName, Value = tzi.Id, Selected = (tzi.Id == _dateTimeHelper.DefaultStoreTimeZone.Id)
                });
            }

            if (_customerSettings.CountryEnabled)
            {
                await AddCountriesAndStatesToViewBagAsync(model.CountryId, _customerSettings.StateProvinceEnabled, model.StateProvinceId ?? 0);
            }
        }
예제 #10
0
 public void Map(BlogPost from, BlogPostModel to)
 {
     MiniMapper.Map(from, to);
     to.SeName           = from.GetSeName(0, true, false);
     to.PictureId        = from.MediaFileId;
     to.PreviewPictureId = from.PreviewMediaFileId;
 }
        public ActionResult CreateItem(MenuItemRecordModel itemModel, bool continueEditing, FormCollection form)
        {
            if (ModelState.IsValid)
            {
                itemModel.ParentItemId = itemModel.ParentItemId ?? 0;
                var item = MiniMapper.Map <MenuItemRecordModel, MenuItemRecord>(itemModel);
                item.PermissionNames = string.Join(",", itemModel.PermissionNames ?? new string[0]).NullEmpty();

                _menuStorage.InsertMenuItem(item);

                SaveStoreMappings(item, itemModel.SelectedStoreIds);
                SaveAclMappings(item, itemModel.SelectedCustomerRoleIds);
                UpdateLocales(item, itemModel);

                Services.EventPublisher.Publish(new ModelBoundEvent(itemModel, item, form));
                NotifySuccess(T("Admin.Common.DataSuccessfullySaved"));

                if (continueEditing)
                {
                    return(RedirectToAction("EditItem", new { id = item.Id }));
                }

                return(RedirectToAction("Edit", new { id = item.MenuId }));
            }

            PrepareModel(itemModel, null);

            return(View(itemModel));
        }
예제 #12
0
        public void CanMap1()
        {
            var from = new MapClass1
            {
                Prop1 = "Prop1",
                Prop2 = "Prop2",
                Prop3 = "Prop3",
                Prop4 = 99,
                Prop5 = new ConsoleKey[] { ConsoleKey.Backspace, ConsoleKey.Tab, ConsoleKey.Clear }
            };

            from.Address.FirstName = "John";
            from.Address.LastName  = "Doe";
            from.Address.Age       = 24;

            var to = MiniMapper.Map <MapClass1, MapClass2>(from);

            Assert.AreEqual(from.Prop1, to.Prop1);
            Assert.AreEqual(from.Prop2, to.Prop2);
            Assert.AreEqual(from.Prop3, to.Prop3);
            Assert.AreEqual(from.Prop4, to.Prop4);
            Assert.AreEqual(from.Prop5.Length, to.Prop5.Count);
            Assert.AreEqual((int)from.Prop5[0], to.Prop5[0]);
            Assert.AreEqual((int)from.Prop5[1], to.Prop5[1]);
            Assert.AreEqual((int)from.Prop5[2], to.Prop5[2]);

            var dict = to.Address;

            Assert.AreEqual(dict.Count, 3);
            Assert.AreEqual(dict["FirstName"], from.Address.FirstName);
            Assert.AreEqual(dict["LastName"], from.Address.LastName);
            Assert.AreEqual(dict["Age"], from.Address.Age);
        }
예제 #13
0
 public void Map(NewsItem from, NewsItemModel to)
 {
     MiniMapper.Map(from, to);
     to.SeName           = from.GetSeName(0, true, false);
     to.PictureId        = from.MediaFileId;
     to.PreviewPictureId = from.PreviewMediaFileId;
 }
예제 #14
0
        public ActionResult Configure(PayPalPlusPaymentSettings settings, int storeScope)
        {
            // It's better to also offer inactive methods here but filter them out in frontend.
            var paymentMethods = _paymentService.LoadAllPaymentMethods(storeScope);

            var model = new PayPalPlusConfigurationModel();

            MiniMapper.Map(settings, model);
            PrepareConfigurationModel(model, storeScope);

            model.AvailableThirdPartyPaymentMethods = paymentMethods
                                                      .Where(x =>
            {
                if (x.Value.RequiresInteraction)
                {
                    return(false);
                }
                if (x.Metadata.PluginDescriptor.SystemName == Plugin.SystemName)
                {
                    return(x.Metadata.SystemName == PayPalInstalmentsProvider.SystemName);
                }

                return(x.Metadata.PluginDescriptor.SystemName == "SmartStore.OfflinePayment" || x.Value.PaymentMethodType == PaymentMethodType.Redirection);
            })
                                                      .ToSelectListItems(_pluginMediator, model.ThirdPartyPaymentMethods.ToArray());

            return(View(model));
        }
        public ActionResult Edit(int id /* ruleSetId */)
        {
            var entity = _ruleStorage.GetRuleSetById(id, false, true);

            if (entity == null || entity.IsSubGroup)
            {
                return(HttpNotFound());
            }

            var model = MiniMapper.Map <RuleSetEntity, RuleSetModel>(entity);

            model.ScopeName = entity.Scope.GetLocalizedEnum(Services.Localization, Services.WorkContext);

            var provider = _ruleProvider(entity.Scope);

            model.ExpressionGroup      = _ruleFactory.CreateExpressionGroup(entity, provider, true);
            model.AvailableDescriptors = _targetGroupService.RuleDescriptors;

            model.AssignedToDiscounts = entity.Discounts
                                        .Select(x => new RuleSetModel.AssignedToEntityModel {
                Id = x.Id, Name = x.Name.NullEmpty() ?? x.Id.ToString()
            })
                                        .ToList();

            model.AssignedToShippingMethods = entity.ShippingMethods
                                              .Select(x => new RuleSetModel.AssignedToEntityModel {
                Id = x.Id, Name = x.GetLocalized(y => y.Name)
            })
                                              .ToList();

            var paymentMethods = entity.PaymentMethods;

            if (paymentMethods.Any())
            {
                var paymentProviders = _paymentService.Value.LoadAllPaymentMethods().ToDictionarySafe(x => x.Metadata.SystemName);

                model.AssignedToPaymentMethods = paymentMethods
                                                 .Select(x =>
                {
                    string friendlyName = null;
                    if (paymentProviders.TryGetValue(x.PaymentMethodSystemName, out var paymentProvider))
                    {
                        friendlyName = _pluginMediator.Value.GetLocalizedFriendlyName(paymentProvider.Metadata);
                    }

                    return(new RuleSetModel.AssignedToEntityModel
                    {
                        Id = x.Id,
                        Name = friendlyName.NullEmpty() ?? x.PaymentMethodSystemName,
                        SystemName = x.PaymentMethodSystemName
                    });
                })
                                                 .ToList();
            }

            PrepareExpressions(model.ExpressionGroup);
            PrepareTemplateViewBag(entity.Id);

            return(View(model));
        }
예제 #16
0
        public ActionResult Edit(int id)
        {
            if (!Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                return(AccessDeniedView());
            }

            var menu = _menuStorage.GetMenuById(id);

            if (menu == null)
            {
                return(HttpNotFound());
            }

            var model = MiniMapper.Map <MenuRecord, MenuRecordModel>(menu);

            model.WidgetZone = menu.WidgetZone.SplitSafe(",");

            PrepareModel(model, menu);
            AddLocales(_languageService, model.Locales, (locale, languageId) =>
            {
                locale.Title = menu.GetLocalized(x => x.Title, languageId, false, false);
            });

            return(View(model));
        }
예제 #17
0
        public ActionResult Configure(HelloWorldSettings settings)
        {
            var model = new ConfigurationModel();

            MiniMapper.Map(settings, model);

            return(View(model));
        }
예제 #18
0
        public IActionResult DataExchange(DataExchangeSettings settings)
        {
            var model = new DataExchangeSettingsModel();

            MiniMapper.Map(settings, model);

            return(View(model));
        }
예제 #19
0
        public ActionResult Configure(ClickatellSettings settings)
        {
            var model = new SmsClickatellModel();

            MiniMapper.Map(settings, model);

            return(View(model));
        }
예제 #20
0
 public void Map(Address from, AddressModel to)
 {
     MiniMapper.Map(from, to);
     to.CountryName       = from.Country?.Name;
     to.StateProvinceName = from.StateProvince?.Name;
     to.EmailMatch        = from.Email;
     to.FormattedAddress  = _addressService.FormatAddress(from, true);
 }
예제 #21
0
        public ActionResult Configure(AmazonPaySettings settings)
        {
            var model = new ConfigurationModel();

            MiniMapper.Map(settings, model);
            _apiService.SetupConfiguration(model);

            return(View(model));
        }
        private FileItemInfo Convert(MediaFileInfo file)
        {
            if (file != null)
            {
                var item = MiniMapper.Map <MediaFileInfo, FileItemInfo>(file, CultureInfo.InvariantCulture);
                return(item);
            }

            return(null);
        }
예제 #23
0
        public ActionResult Configure(HelloWorldSettings settings, ConfigurationModel model, FormCollection form)
        {
            if (!ModelState.IsValid)
            {
                return(Configure(settings));
            }

            MiniMapper.Map(model, settings);
            return(RedirectToConfiguration("SmartStore.HelloWorld"));
        }
예제 #24
0
        public ActionResult Edit(RuleSetModel model, bool continueEditing)
        {
            var ruleSet = _ruleStorage.GetRuleSetById(model.Id, true, true);

            MiniMapper.Map(model, ruleSet);

            _ruleStorage.UpdateRuleSet(ruleSet);

            return(continueEditing ? RedirectToAction("Edit", new { id = ruleSet.Id }) : RedirectToAction("List"));
        }
예제 #25
0
        public void Map(MediaSettingsModel from, MediaSettings to)
        {
            MiniMapper.Map(from, to);

            to.ImageTypes    = MapMediaType(from.ImageTypes, MediaType.Image);
            to.VideoTypes    = MapMediaType(from.VideoTypes, MediaType.Video);
            to.AudioTypes    = MapMediaType(from.AudioTypes, MediaType.Audio);
            to.DocumentTypes = MapMediaType(from.DocumentTypes, MediaType.Document);
            to.TextTypes     = MapMediaType(from.TextTypes, MediaType.Text);
            to.BinTypes      = MapMediaType(from.BinTypes, MediaType.Binary);
        }
예제 #26
0
 public void Map(QueuedEmail from, QueuedEmailModel to)
 {
     MiniMapper.Map(from, to);
     to.EmailAccountName = from.EmailAccount?.FriendlyName ?? string.Empty;
     to.AttachmentsCount = from.Attachments?.Count ?? 0;
     to.Attachments      = from.Attachments
                           .Select(x => new QueuedEmailModel.QueuedEmailAttachmentModel {
         Id = x.Id, Name = x.Name, MimeType = x.MimeType
     })
                           .ToList();
 }
예제 #27
0
        protected override void Map(QueuedEmail from, QueuedEmailModel to, dynamic parameters = null)
        {
            MiniMapper.Map(from, to);

            to.EmailAccountName = from.EmailAccount?.FriendlyName ?? string.Empty;
            to.AttachmentsCount = from.Attachments?.Count ?? 0;
            to.Attachments      = from.Attachments
                                  .Select(x => new QueuedEmailModel.QueuedEmailAttachmentModel {
                Id = x.Id, Name = x.Name, MimeType = x.MimeType
            })
                                  .ToList();
        }
예제 #28
0
 public void Copy(PayPalStandardPaymentSettings settings, bool fromSettings)
 {
     if (fromSettings)
     {
         MiniMapper.Map(settings, this);
     }
     else
     {
         MiniMapper.Map(this, settings);
         settings.BusinessEmail = BusinessEmail.TrimSafe();
     }
 }
예제 #29
0
        public IActionResult DataExchange(DataExchangeSettings settings, DataExchangeSettingsModel model)
        {
            if (!ModelState.IsValid)
            {
                return(DataExchange(settings));
            }

            ModelState.Clear();
            MiniMapper.Map(model, settings);

            return(NotifyAndRedirect("DataExchange"));
        }
예제 #30
0
        public ActionResult Configure(ConfigurationModel model, ProfilerSettings settings)
        {
            if (!ModelState.IsValid)
            {
                return(Configure(settings));
            }

            ModelState.Clear();
            MiniMapper.Map(model, settings);

            return(RedirectToConfiguration("SmartStore.DevTools"));
        }