public ActionResult Currency(string tab, ExchangeRateViewModel exchangeRateViewModel) { var currencies = this.repository.GetCurrencies(); this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Currency); this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["Currencies"] = currencies; this.ViewData["Tab"] = tab; this.ViewData["CurrenciesSelectList"] = currencies.Select(c => new SelectListItem { Text = c.Text, Value = c.Id.ToString() }).ToList(); if (exchangeRateViewModel == null) { exchangeRateViewModel = new ExchangeRateViewModel(this.repository); } else { exchangeRateViewModel.Initialize(this.repository); } return(this.View("Currency", exchangeRateViewModel)); }
public new ActionResult User(Guid id, bool?activate, bool?unblock, bool?block) { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Users); this.ViewData["UsersListViewModel"] = new UsersListViewModel(this.repository, id); var user = this.repository.GetUser(id); if (user == null) { return(this.HttpNotFound()); } if (activate != null && activate.Value) { this.repository.ActivateUser(id); EmailManager.Send(user, this.repository, EmailType.EmailNewUserActivation); return(this.RedirectToAction("Users")); } if (unblock != null && unblock.Value) { this.repository.UnblockUser(id); EmailManager.Send(user, this.repository, EmailType.EmailNewUserActivation); return(this.RedirectToAction("Users")); } if (block != null && block.Value) { this.repository.BlockUser(id); EmailManager.Send(user, this.repository, EmailType.EmailUserBlocked); return(this.RedirectToAction("Users")); } return(this.View(new UserProfileViewModel(this.repository, id))); }
public ActionResult Template(TemplateViewModel templateViewModel, string a, Guid?id) { if (templateViewModel == null || string.IsNullOrWhiteSpace(templateViewModel.Name)) { return(this.HttpNotFound()); } if (templateViewModel.Id == Guid.Empty) { templateViewModel.Id = this.repository.AddNewTemplate(new PropertyTemplate() { Name = templateViewModel.Name }); } else { var propertyTemplate = this.repository.GetTemplateById(templateViewModel.Id); propertyTemplate.Name = templateViewModel.Name; this.repository.UpdateTemplate(propertyTemplate, templateViewModel.Properties, false); } this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Templates); this.ViewData["TemplatesList"] = this.repository.GetTemplates().Select(x => new TemplateViewModel() { Id = x.Id, Name = x.Name }).ToList(); return(this.View(templateViewModel)); }
public ActionResult Pages(Guid?treeSelection) { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Pages); this.ViewData["CategoryTreeRootViewModel"] = CategoryTreeItemViewModel.CreateNavigationTree(repository); this.ViewData["TreeSelection"] = treeSelection; return(this.View(new PageViewModel())); }
protected virtual void Initialize(Guid pageId, PageIdentity pageIdentity = PageIdentity.Unknown, bool promoteProducts = true) { this.currentUser = this.HttpContext.CurrentUser() ?? UserIdentityManager.GetActiveUser(this.Request, this.repository); this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateDefaultMenu(this.repository, pageId, currentUser, pageIdentity); this.ViewData["ShowLeftRailLogin"] = currentUser == null; //this.ViewData["MediaListViewModel"] = promoteProducts ? CategoryViewModelFactory.CreatePopularProducts(this.repository, null) : null; this.ViewData["HttpReferrer"] = this.Request.UrlReferrer != null?this.Request.UrlReferrer.ToString() : null; }
public ActionResult Orders(char t = 'p', int o = 0, int c = 50) { var user = this.HttpContext.CurrentUser(); this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Orders); this.ViewData["SettingsViewModel"] = this.settingsViewModel; OrderStatus status; if (!statusMap.TryGetValue(t, out status)) { status = OrderStatus.Placed; } using (var context = new InstantStoreDataContext()) { Func <Order, bool> selector = (Order order) => (int)status == order.Status; Func <OrderUpdate, bool> orderSortDateSelector = (OrderUpdate update) => update.Status == (int)status; this.ViewData["OrdersTableViewModel"] = new TableViewModel { Header = new List <TableCellViewModel> { new TableCellViewModel(StringResource.user_HistoryListHeaderTime), new TableCellViewModel(StringResource.user_HistoryListHeaderUserName), new TableCellViewModel(StringResource.user_HistoryListHeaderItemCount), new TableCellViewModel(StringResource.user_HistoryListHeaderTotalPrice), new TableCellViewModel(StringResource.user_HistoryListHeaderProcessTime) }, Rows = context.Orders .Where(selector) .OrderByDescending(order => order.OrderUpdates .Where(orderSortDateSelector) .OrderByDescending(u => u.DateTime) .First().DateTime) .Skip(o) .Take(c) .Select(ConvertOrderToTableRow) .ToList(), RowClickAction = new NavigationLink("Order"), Pagination = new PaginationViewModel(c, o, context.Orders.Count(selector)) { Link = new NavigationLink("Orders", "Admin") { Parameters = new { t = t } } } }; this.ViewData["OrdersHeaderViewModel"] = new TabControlViewModel { Tabs = statusMap.Select(key => CreateOrderStatusHeader(key, t)).ToList() }; } return(this.View()); }
public ActionResult Category(Guid?id, Guid?parentId) { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Pages); this.ViewData["CategoryTreeRootViewModel"] = CategoryTreeItemViewModel.CreateNavigationTree(repository); var categoryViewModel = id != null ? new CategoryViewModel(this.repository, id.Value) : new CategoryViewModel(); categoryViewModel.Content.ParentCategoryId = parentId ?? Guid.Empty; return(this.View("Category", categoryViewModel)); }
public ActionResult Order(OrderDetailsViewModel orderViewModel) { var user = UserIdentityManager.GetActiveUser(this.Request, repository); if (user == null || !user.IsAdmin || orderViewModel == null) { return(this.HttpNotFound()); } this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Orders); this.ViewData["SettingsViewModel"] = this.settingsViewModel; using (var context = new InstantStoreDataContext()) { var order = context.Orders.FirstOrDefault(x => x.Id == orderViewModel.Id); if (order == null) { return(this.HttpNotFound()); } if (order.Comment != orderViewModel.Description || order.Status != (int)orderViewModel.Status) { order.Comment = orderViewModel.Description; if (order.Status != (int)orderViewModel.Status) { order.Status = (int)orderViewModel.Status; context.OrderUpdates.InsertOnSubmit(new OrderUpdate { Status = (int)orderViewModel.Status, DateTime = DateTime.Now, Id = Guid.NewGuid(), OrderId = order.Id }); } var orderSubmitDate = order.OrderUpdates.FirstOrDefault(x => x.Status == (int)OrderStatus.Placed); context.SubmitChanges(); EmailManager.Send( order.User, this.repository, EmailType.EmailOrderHasBeenUpdated, new Dictionary <string, string> { { "%order.id%", order.Id.ToString() }, { "%order.user%", order.User.Name }, { "%order.date%", orderSubmitDate != null ? orderSubmitDate.DateTime.ToString("F", russianCulture) : string.Empty } }); } } return(this.RedirectToAction("Orders")); }
public ActionResult Offers(char t = 'a', int o = 0, int c = 50) { var user = UserIdentityManager.GetActiveUser(this.Request, repository); this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Offers); this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["OffersHeaderViewModel"] = new TabControlViewModel { Tabs = offerStatusMap.Select(key => CreateOfferStatusHeader(key, t)).ToList() }; bool showActive; if (!offerStatusMap.TryGetValue(t, out showActive)) { showActive = true; } using (var context = new InstantStoreDataContext()) { Func <Offer, bool> selector = showActive ? (Func <Offer, bool>)((Offer offer) => offer.IsActive) : (Func <Offer, bool>)((Offer offer) => !offer.IsActive); this.ViewData["OffersTableViewModel"] = new TableViewModel { Header = new List <TableCellViewModel> { new TableCellViewModel(StringResource.offerTableHeaderName), new TableCellViewModel(StringResource.offerTableHeaderThreshold), new TableCellViewModel(StringResource.offerTableHeaderDiscount), new TableCellViewModel(string.Empty) }, Rows = context.Offers .Where(selector) .OrderByDescending(offer => offer.Name) .Skip(o) .Take(c) .Select(ConvertOfferToTableRow) .ToList(), RowClickAction = new NavigationLink("Offer"), Pagination = new PaginationViewModel(c, o, context.Offers.Count(selector)) { Link = new NavigationLink("Offers", "Admin") { Parameters = new { t = t } } } }; } return(this.View()); }
public ActionResult Templates() { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Templates); var templates = this.repository.GetTemplates().Select(x => new TemplateViewModel() { Id = x.Id, Name = x.Name }).ToList(); return(this.View(templates)); }
public ActionResult Product(Guid?id, Guid?parentId) { var viewModel = id != null && id != Guid.Empty ? new ProductViewModel(this.repository, id.Value, parentId, null) : new ProductViewModel(this.repository, parentId); viewModel.InitializeRootCategory(this.repository); this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Pages); this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["CategoryTreeRootViewModel"] = CategoryTreeItemViewModel.CreateNavigationTree(repository); return(this.View("Product", viewModel)); }
public ActionResult Users(char t = 'n', int o = 0, int c = 50) { UserStatus status; if (!userTabMap.TryGetValue(t, out status)) { status = UserStatus.Active; } using (var context = new InstantStoreDataContext()) { bool hasNewUsers = context.Users.Any(user => !user.IsActivated); status = status == UserStatus.New && !hasNewUsers ? UserStatus.Active : status; Func <User, bool> selector = (User user) => (status == UserStatus.New ? !user.IsActivated : (status == UserStatus.Blocked ? user.IsBlocked : (user.IsActivated && !user.IsBlocked))) && !user.IsAdmin; this.ViewData["UsersTableViewModel"] = new TableViewModel { Header = new List <TableCellViewModel> { new TableCellViewModel(StringResource.form_Contact_Name), new TableCellViewModel(StringResource.form_Reg_Region), new TableCellViewModel(StringResource.form_Reg_CompanyName) }, Rows = context.Users .Where(selector) .OrderBy(user => user.Name) .Skip(o) .Take(c) .Select(ConvertUserToTableRow) .ToList(), RowClickAction = new NavigationLink("User"), Pagination = new PaginationViewModel(c, o, context.Users.Count(selector)) { Link = new NavigationLink("Users", "Admin") { Parameters = new { t = t } } } }; this.ViewData["UsersHeaderViewModel"] = new TabControlViewModel { Tabs = userTabMap .Where(x => hasNewUsers || x.Value != UserStatus.New) .Select(key => CreateUserStatusHeader(key, t)).ToList() }; } this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Users); return(View()); }
private ActionResult ContentPage(ContentPage page, Guid id, User user, int c, int o) { // Page/Category view this.ViewData["BreadcrumbViewModel"] = MenuViewModelFactory.CreateBreadcrumb(repository, id); this.ViewData["NavigationMenuViewModel"] = MenuViewModelFactory.CreateNavigationMenu(repository, id, this.Request); var viewModel = new PageViewModel(page, this.repository); this.ViewData["ProductItemsViewModel"] = CategoryViewModelFactory.CreateCategoryViewModel(user, page, c, o, ListingViewProductSettings.User); this.ViewData["IsPage"] = !viewModel.ContentPage.IsCategory(); return(this.View(viewModel)); }
/// <summary> /// Asynchronously builds menu. /// </summary> /// <returns></returns> public Task <IViewComponentResult> InvokeAsync() { MenuViewModelFactory factory = new MenuViewModelFactory(this, LoggerFactory); Stopwatch watch = new Stopwatch(); watch.Start(); MenuViewModel menu = factory.Create(); watch.Stop(); LoggerFactory.CreateLogger <MenuViewComponent>().LogInformation("Time to build menu content by MenuViewModelFactory: " + watch.ElapsedMilliseconds + " ms"); return(Task.FromResult <IViewComponentResult>(View(menu))); }
public ActionResult Page(Guid?id, Guid?parentId, string a, string c = null) { if (!string.IsNullOrEmpty(a) && id != null && id != Guid.Empty) { if (string.Equals("delete", a, StringComparison.OrdinalIgnoreCase)) { this.repository.DeletePage(id.Value); return(this.RedirectToAction("Pages", new { treeSelection = parentId != null ? parentId.Value : Guid.Empty })); } if (string.Equals("moveup", a, StringComparison.OrdinalIgnoreCase)) { this.repository.ChangePagePosition(id.Value, false); return(this.RedirectToAction("Pages", new { treeSelection = id.Value })); } if (string.Equals("movedown", a, StringComparison.OrdinalIgnoreCase)) { this.repository.ChangePagePosition(id.Value, true); return(this.RedirectToAction("Pages", new { treeSelection = id.Value })); } } if (id == Guid.Empty) { return(this.RedirectToAction("Settings", new { t = "main" })); } if (c == "p") { return(this.Product(id, parentId)); } var pageViewModel = id != null ? new PageViewModel(this.repository, id.Value) : new PageViewModel() { ParentCategoryId = parentId ?? Guid.Empty }; if (pageViewModel.ContentPage != null && pageViewModel.ContentPage.IsCategory()) { return(this.Category(id, parentId ?? pageViewModel.ParentCategoryId)); } else { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Pages); this.ViewData["CategoryTreeRootViewModel"] = CategoryTreeItemViewModel.CreateNavigationTree(repository); return(this.View(pageViewModel)); } }
/// <summary> /// Asynchronously builds menu. /// </summary> /// <returns>IViewComponentResult object.</returns> public Task <IViewComponentResult> InvokeAsync() { MenuViewModelFactory factory = new MenuViewModelFactory(Storage, LoggerFactory); #if DEBUG Stopwatch watch = new Stopwatch(); watch.Start(); #endif MenuViewModel menu = factory.Create(); #if DEBUG watch.Stop(); _logger.LogInformation("Time to build menu content by MenuViewModelFactory: " + watch.ElapsedMilliseconds + " ms"); #endif return(Task.FromResult <IViewComponentResult>(View(menu))); }
public ActionResult Order(Guid id) { var user = this.HttpContext.CurrentUser(); this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Orders); this.ViewData["SettingsViewModel"] = this.settingsViewModel; using (var context = new InstantStoreDataContext()) { var order = context.Orders.FirstOrDefault(x => x.Id == id); if (order == null) { return(this.HttpNotFound()); } this.ViewData["OrderStatusList"] = new[] { OrderStatus.Placed, OrderStatus.InProcess, OrderStatus.Completed } .Select(status => new SelectListItem { Text = orderStatusMap[status], Selected = (OrderStatus)order.Status == status, Value = status.ToString() }).ToList(); var submittedUpdate = order.OrderUpdates.FirstOrDefault(update => update.Status == (int)OrderStatus.Placed); var completeUpdate = order.OrderUpdates.FirstOrDefault(update => update.Status == (int)OrderStatus.Completed); return(this.View(new OrderDetailsViewModel { Id = order.Id, Status = (OrderStatus)order.Status, Products = order.OrderProducts.Select(CreateProductOrderViewModel).ToList(), ItemsCount = order.OrderProducts.Sum(orderItem => orderItem.Count), Total = order.TotalPrice != null ? new CurrencyString(order.TotalPrice.Value, order.Currency.Text) : null, Description = order.Comment, UserName = string.Concat(order.User.Name, ", ", order.User.City), SubmitDate = submittedUpdate != null ? (DateTime?)submittedUpdate.DateTime : null, ProcessedDate = completeUpdate != null ? (DateTime?)completeUpdate.DateTime : null, Offer = order.Offer != null ? new OfferViewModel { Name = order.Offer.Name, Type = (OfferDiscountType)order.Offer.DiscountType, Discount = order.Offer.DiscountValue, CurrencyText = order.Offer.Currency.Text } : null })); } }
public ActionResult Page(PageViewModel pageViewModel) { Guid?parentId = pageViewModel.ParentCategoryId == Guid.Empty ? (Guid?)null : pageViewModel.ParentCategoryId; if (parentId != null && pageViewModel.Id != null && pageViewModel.Id != Guid.Empty && ValidateParentId(parentId.Value, pageViewModel.Id)) { this.ModelState.AddModelError("ParentCategoryId", StringResource.admin_CantAddPageToItselfParent); } var attachmentIds = pageViewModel.Attachments != null && pageViewModel.Attachments.Any() ? pageViewModel.Attachments.Select(x => x.AttachmentId.Value).ToList() : null; if (this.ModelState.IsValid) { var contentPage = pageViewModel.Id != Guid.Empty ? this.repository.GetPageById(pageViewModel.Id) : null; if (contentPage == null) { contentPage = new ContentPage { Name = pageViewModel.Name, Text = pageViewModel.Text, ParentId = parentId, ShowInMenu = pageViewModel.ShowInMenu, Position = repository.GetPages(parentId, null).Count, }; repository.NewPage(contentPage, attachmentIds); } else { contentPage.Name = pageViewModel.Name; contentPage.Text = pageViewModel.Text; contentPage.ParentId = parentId; contentPage.ShowInMenu = pageViewModel.ShowInMenu; this.repository.UpdateContentPage(contentPage, attachmentIds); } return(this.RedirectToAction("Pages", new { treeSelection = contentPage.Id })); } else { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Pages); this.ViewData["CategoryTreeRootViewModel"] = CategoryTreeItemViewModel.CreateNavigationTree(repository); return(this.View(pageViewModel ?? new PageViewModel())); } }
public ActionResult Template(string a, Guid?id) { PropertyTemplate template; if (id == null || id == Guid.Empty || (template = this.repository.GetTemplateById(id.Value)) == null) { return(this.RedirectToAction("Templates")); } if (string.Equals("delete", a)) { this.repository.DeleteTemplate(id.Value); return(this.RedirectToAction("Templates")); } this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Templates); return(this.View(new TemplateViewModel(template, repository))); }
public ActionResult Page(Guid?id, Guid?parentId, int c = 200, int o = 0) { if (id == null || id == Guid.Empty) { return(this.RedirectToAction("Index")); } this.Initialize(id.Value); Product product; var user = UserIdentityManager.GetActiveUser(this.Request, repository); this.ViewData["Id"] = id.Value; this.ViewData["IsAdmin"] = user != null && user.IsAdmin; var contentPage = this.repository.GetPageById(id.Value); if (contentPage != null) { return(this.ContentPage(contentPage, id.Value, user, c, o)); } else if ((product = repository.GetProductById(id.Value)) != null) { this.ViewData["BreadcrumbViewModel"] = MenuViewModelFactory.CreateBreadcrumb(repository, parentId); this.ViewData["NavigationMenuViewModel"] = MenuViewModelFactory.CreateNavigationMenu(repository, parentId, this.Request); //this.ViewData["MediaListViewModel"] = CategoryViewModelFactory.CreateSimilarProducts(repository, parentId); var productViewModel = new ProductViewModel(this.repository, id.Value, parentId, user); return(this.View("Product", productViewModel)); } else { return(this.HttpNotFound()); } }
public MenuViewComponent(MenuViewModelFactory viewmodelFactory) { this.viewmodelFactory = viewmodelFactory; }
public ActionResult Settings(Guid?i = null, Guid?id = null, int c = 25, int o = 0) { if (i == null) { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Settings); this.ViewData["SettingsMenuViewModel"] = settingsNavigationTree; this.ViewData["SettingsMenuSelection"] = id; return(View()); } else { CustomViewModel settingsViewModel = null; var item = i != null?this.GetItemById(i.Value, settingsNavigationTree) : null; if (item == null || item.Id == Guid.Empty) { } else { if (item.Key.StartsWith("Email")) { settingsViewModel = this.CreateEmailSettingsViewModel(item); } else { switch (item.Key) { case "PagesHeader": settingsViewModel = this.CreateContentSettingsViewModel( StringResource.Settings_HeaderLabel, SettingsKey.HeaderHtml); break; case "PagesFooter": settingsViewModel = this.CreateContentSettingsViewModel( StringResource.Settings_FooterLabel, SettingsKey.FooterHtml); break; case "MainContent": settingsViewModel = this.CreateContentSettingsViewModel( StringResource.Settings_MainTextLabel, SettingsKey.MainPageHtml); break; case "Feedback": using (var context = new InstantStoreDataContext()) { settingsViewModel = new TableViewModel { Title = StringResource.admin_SettingsNode_FeedbackGroup, Rows = context.Feedbacks .OrderByDescending(feedback => feedback.Submitted) .Skip(o) .Take(c) .ToList() .Select(feedback => new TableRowViewModel { Cells = new List <TableCellViewModel> { new TableCellViewModel(string.Format(StringResource.admin_FeedbackNameFormat, feedback.Name, feedback.Email, feedback.Submitted.ToString("F", new CultureInfo("ru-RU")))), new TableCellViewModel(feedback.Message) } }) .ToList(), Pagination = new PaginationViewModel(c, o, context.Feedbacks.Count()), ViewName = "TableView" }; } break; case "GroupEmail": settingsViewModel = this.CreatePropertyListViewModel( StringResource.admin_Settings_EmailConfiguration, new List <PropertyInfo> { new PropertyInfo( SettingsKey.EmailSettings_SmtpServer.ToString(), StringResource.admin_Settings_EmailSettings_SmtpServer, this.repository.GetSettings(SettingsKey.EmailSettings_SmtpServer)), new PropertyInfo( SettingsKey.EmailSettings_EnableSSL.ToString(), StringResource.admin_Settings_EnableSSL, this.repository.GetSettings(SettingsKey.EmailSettings_EnableSSL)), new PropertyInfo( SettingsKey.EmailSettings_SmtpServerPort.ToString(), StringResource.admin_Settings_SmtpServerPort, this.repository.GetSettings(SettingsKey.EmailSettings_SmtpServerPort)), new PropertyInfo( SettingsKey.EmailSettings_SmtpServerLogin.ToString(), StringResource.admin_Settings_SmtpLogin, this.repository.GetSettings(SettingsKey.EmailSettings_SmtpServerLogin)), new PropertyInfo( SettingsKey.EmailSettings_SmtpServerPassword.ToString(), StringResource.admin_Settings_SmtpPassword, this.repository.GetSettings(SettingsKey.EmailSettings_SmtpServerPassword)), new PropertyInfo( SettingsKey.EmailSettings_EmailFrom.ToString(), StringResource.admin_Settings_EmailSettings_EmailFrom, this.repository.GetSettings(SettingsKey.EmailSettings_EmailFrom)), new PropertyInfo( SettingsKey.EmailSettings_EmailAdmin.ToString(), StringResource.admin_Settings_EmailAdmin, this.repository.GetSettings(SettingsKey.EmailSettings_EmailAdmin)), }); break; case "LostPages": settingsViewModel = this.CreatePageRecoveryViewModel(this.repository, c, o, i.Value); break; } } } if (settingsViewModel != null) { //settingsViewModel.Id = i ?? Guid.Empty; return(View(settingsViewModel.ViewName, settingsViewModel)); } else { return(null); } } }
protected override void Initialize(Guid pageId, PageIdentity pageIdentity = PageIdentity.Unknown, bool promoteProducts = true) { base.Initialize(pageId); this.ViewData["NavigationMenuViewModel"] = MenuViewModelFactory.CreateNavigationMenu(repository, null, this.Request); this.ViewData["BreadcrumbViewModel"] = MenuViewModelFactory.CreateBreadcrumb(repository, null); }
public ActionResult Offer(Guid?id) { var user = UserIdentityManager.GetActiveUser(this.Request, repository); if (user == null || !user.IsAdmin) { return(this.HttpNotFound()); } this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Offers); this.ViewData["SettingsViewModel"] = this.settingsViewModel; OfferViewModel viewModel; using (var context = new InstantStoreDataContext()) { if (id != null && id != Guid.Empty) { var offer = context.Offers.FirstOrDefault(x => x.VersionId == id.Value); if (offer == null) { return(this.HttpNotFound()); } viewModel = new OfferViewModel { Id = offer.VersionId, IsActive = offer.IsActive, Name = offer.Name, IsMultiApply = offer.MultiApply, Priority = offer.Priority, Type = (OfferDiscountType)offer.DiscountType, CurrencyId = offer.CurrencyId, ThresholdPrice = offer.ThresholdPriceValue, Discount = offer.DiscountValue }; } else { viewModel = new OfferViewModel { IsActive = true }; } this.ViewData["CurrencyList"] = context.Currencies.Select( currency => new SelectListItem { Text = currency.Text, Value = currency.Id.ToString() }).ToList(); this.ViewData["DiscountTypeList"] = new[] { OfferDiscountType.Percent, OfferDiscountType.LumpSum }.Select( type => new SelectListItem { Text = type == OfferDiscountType.Percent ? StringResource.offerDetailsDiscountType_Percent : StringResource.offerDetailsDiscountType_LumpSum, Value = type.ToString() }).ToList(); } return(this.View(viewModel)); }
public ActionResult Offer(OfferViewModel viewModel) { var user = UserIdentityManager.GetActiveUser(this.Request, repository); if (user == null || !user.IsAdmin) { return(this.HttpNotFound()); } if (this.ModelState.IsValid) { if (viewModel.Type == OfferDiscountType.Percent && viewModel.Discount >= 100) { this.ModelState.AddModelError(string.Empty, StringResource.offer_ErrorDiscountPercentRange); } else { using (var context = new InstantStoreDataContext()) { if (viewModel.Id == Guid.Empty) { context.Offers.InsertOnSubmit(new Offer { Id = Guid.NewGuid(), Name = viewModel.Name, IsActive = viewModel.IsActive, MultiApply = viewModel.IsMultiApply, Priority = viewModel.Priority, CurrencyId = viewModel.CurrencyId, DiscountType = (int)viewModel.Type, DiscountValue = viewModel.Discount, ThresholdPriceValue = viewModel.ThresholdPrice, Version = 1, VersionId = Guid.NewGuid() }); context.SubmitChanges(); } else { // check if offer is being used in any order. var offer = context.Offers.FirstOrDefault(o => o.VersionId == viewModel.Id); if (offer == null) { return(this.HttpNotFound()); } bool increaseVersion = context.Orders.Any(order => order.OfferId == viewModel.Id); if (increaseVersion) { context.Offers.InsertOnSubmit(new Offer { Id = offer.Id, Name = viewModel.Name, IsActive = viewModel.IsActive, MultiApply = viewModel.IsMultiApply, Priority = viewModel.Priority, CurrencyId = viewModel.CurrencyId, DiscountType = (int)viewModel.Type, DiscountValue = viewModel.Discount, ThresholdPriceValue = viewModel.ThresholdPrice, Version = offer.Version + 1, VersionId = Guid.NewGuid() }); } else { offer.Name = viewModel.Name; offer.IsActive = viewModel.IsActive; offer.MultiApply = viewModel.IsMultiApply; offer.Priority = viewModel.Priority; offer.CurrencyId = viewModel.CurrencyId; offer.DiscountType = (int)viewModel.Type; offer.DiscountValue = viewModel.Discount; offer.ThresholdPriceValue = viewModel.ThresholdPrice; } context.SubmitChanges(); } } return(this.RedirectToAction("Offers")); } } this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Offers); this.ViewData["SettingsViewModel"] = this.settingsViewModel; using (var context = new InstantStoreDataContext()) { this.ViewData["CurrencyList"] = context.Currencies.Select( currency => new SelectListItem { Text = currency.Text, Value = currency.Id.ToString() }).ToList(); } this.ViewData["DiscountTypeList"] = new[] { OfferDiscountType.Percent, OfferDiscountType.LumpSum }.Select( type => new SelectListItem { Text = type == OfferDiscountType.Percent ? StringResource.offerDetailsDiscountType_Percent : StringResource.offerDetailsDiscountType_LumpSum, Value = type.ToString() }).ToList(); return(this.View(viewModel)); }
public ActionResult Category(CategoryViewModel categoryViewModel) { Guid?parentId = categoryViewModel.Content.ParentCategoryId == Guid.Empty ? (Guid?)null : categoryViewModel.Content.ParentCategoryId; if (parentId != null && categoryViewModel.Content.Id != null && categoryViewModel.Content.Id != Guid.Empty && ValidateParentId(parentId.Value, categoryViewModel.Content.Id)) { this.ModelState.AddModelError("ParentCategoryId", StringResource.admin_CantAddPageToItselfParent); } if (this.ModelState.IsValid) { Guid pageId = categoryViewModel.Content.Id; if (categoryViewModel.Content.Id != Guid.Empty) { var contentPage = repository.GetPageById(categoryViewModel.Content.Id); if (contentPage == null || contentPage.CategoryId == null) { throw new InvalidOperationException(string.Format("Model is invalid state. Category for guid {0} has not been found.", categoryViewModel.Content.Id)); } contentPage.Name = categoryViewModel.Content.Name; contentPage.Text = categoryViewModel.Content.Text; contentPage.ShowInMenu = categoryViewModel.Content.ShowInMenu; contentPage.ParentId = parentId; repository.UpdateContentPage(contentPage, null); var category = repository.GetCategoryById(contentPage.CategoryId.Value); category.Name = categoryViewModel.Content.Name; category.ListType = categoryViewModel.ListType; category.Description = categoryViewModel.Content.Text; category.ImageId = categoryViewModel.CategoryImage; category.IsImportant = categoryViewModel.IsImportant; repository.UpdateCategory(category); } else { var categoryId = repository.NewCategory(new Category() { Name = categoryViewModel.Content.Name, ListType = categoryViewModel.ListType, Description = categoryViewModel.Content.Text, ImageId = categoryViewModel.CategoryImage, }); pageId = repository.NewPage(new ContentPage { Name = categoryViewModel.Content.Name, Text = categoryViewModel.Content.Text, ShowInMenu = categoryViewModel.Content.ShowInMenu, ParentId = parentId, Position = repository.GetPages(parentId, null).Count + 1, CategoryId = categoryId, }, null); } return(this.RedirectToAction("Pages", new { treeSelection = pageId })); } else { this.ViewData["SettingsViewModel"] = this.settingsViewModel; this.ViewData["MainMenuViewModel"] = MenuViewModelFactory.CreateAdminMenu(repository, ControlPanelPage.Pages); this.ViewData["CategoryTreeRootViewModel"] = CategoryTreeItemViewModel.CreateNavigationTree(repository); return(this.View(categoryViewModel ?? new CategoryViewModel())); } }