public async Task <IActionResult> EditCategoryPage(string pageName) { var model = new CreateCategoryPageViewModel(); model.Pages = await this.service.GetAllPageNamesAsync(); if (!string.IsNullOrEmpty(pageName) && await this.service.PageAlreadyExistsAsync(pageName)) { model.PageName = pageName; var page = await this.service.GetPageAsync(pageName); model.IsDeleted = page.IsDeleted; var pageCategory = page.Categories.FirstOrDefault(); model.PageCategory.AllHref = pageCategory.AllHref; model.PageCategory.AllName = pageCategory.AllName; model.PageCategory.CategoryName = pageCategory.CategoryName; model.PageCategory.Pictures.Add(pageCategory.Pictures.FirstOrDefault().Url); var itemCategories = pageCategory.ItemsCategories; var index = 0; foreach (var ic in itemCategories) { var items = new List <PageCategoryItemsViewModel>(); foreach (var item in ic.Items) { items.Add(new PageCategoryItemsViewModel { Href = item.Href, Text = item.Text }); } model.PageCategory.ItemsCategories[index] = new CategoryPageItemsCategoryViewModel { Category = ic.Category, Items = items }; index++; } } return(this.View(model)); }
public async Task <IActionResult> EditCategoryPage(CreateCategoryPageViewModel form, List <IFormFile> files) { Console.WriteLine(); if (!string.IsNullOrEmpty(form.PageName) && this.ModelState.IsValid) { bool filesIncluded = false; if (files.Count > 0) { filesIncluded = true; form.PageCategory.Pictures.Add(await this.cloudinary.UploadPictureAsync(files[0], files[0].FileName + "CategoryPicture")); } await this.service.EditPageAsync(form, filesIncluded); return(this.RedirectToAction("Success", "Blacksmith", new { message = "Successfully Edited Page" })); } return(this.View(form)); }
public async Task <IActionResult> CreateCategoryPage(CreateCategoryPageViewModel form, List <IFormFile> files) { if (await this.service.PageAlreadyExistsAsync(form.PageName)) { this.ModelState.AddModelError("Page Name", "Page Name already exists"); } if (this.ModelState.IsValid) { var picture = await this.cloudinary.UploadPictureAsync(files[0], form.PageCategory + "CategoryPicture"); form.PageCategory.Pictures.Add(picture); await this.service.CreateCategoryPageAsync(form); return(this.RedirectToAction("Success", "Blacksmith", new { message = $"Category page with name: {form.PageName} has been created!" })); } return(View(form)); }
public async Task EditPageAsync(CreateCategoryPageViewModel form, bool filesIncluded) { var page = await this.context.Pages.FirstOrDefaultAsync(x => x.PageName == form.PreviousPageName); page.PageName = form.PageName; page.IsDeleted = form.IsDeleted; page.ModificationDate = DateTime.UtcNow; var pageCategory = page.Categories.FirstOrDefault(); pageCategory.AllHref = form.PageCategory.AllHref; pageCategory.AllName = form.PageCategory.AllName; pageCategory.ModificationDate = DateTime.UtcNow; pageCategory.CategoryName = form.PageCategory.CategoryName; if (filesIncluded) { pageCategory.Pictures.FirstOrDefault().ModificationDate = DateTime.UtcNow; pageCategory.Pictures.FirstOrDefault().Url = form.PageCategory.Pictures[0]; } for (int i = 0; i < pageCategory.ItemsCategories.Count; i++) { var cat = pageCategory.ItemsCategories.ToList()[i]; var formCat = form.PageCategory.ItemsCategories[i]; cat.Category = formCat.Category; cat.ModificationDate = DateTime.UtcNow; for (int z = 0; z < cat.Items.Count; z++) { var item = cat.Items.ToList()[z]; var formItem = formCat.Items[z]; item.Href = formItem.Href; item.Text = formItem.Text; item.ModificationDate = DateTime.UtcNow; } } await this.context.SaveChangesAsync(); }
public async Task CreateCategoryPageAsync(CreateCategoryPageViewModel form) { var page = new Data.Models.Page { PageName = form.PageName }; var pictures = new List <Picture>(); foreach (var pictureUrl in form.PageCategory.Pictures) { pictures.Add(new Picture { Url = pictureUrl, Name = "Categories", CreatedOn = DateTime.UtcNow, ModificationDate = DateTime.UtcNow }); } var pageCategory = new PageCategory { CategoryName = form.PageCategory.CategoryName, AllHref = form.PageCategory.AllHref, AllName = form.PageCategory.AllName, Pictures = pictures, }; var itemCategories = new List <ItemsCategory>(); foreach (var ic in form.PageCategory.ItemsCategories) { var pageCategoryItems = new List <PageCategoryItems>(); if (string.IsNullOrEmpty(ic.Category)) { continue; } foreach (var item in ic.Items) { if (string.IsNullOrEmpty(item.Text) || string.IsNullOrEmpty(item.Href)) { } else { pageCategoryItems.Add(new PageCategoryItems { Href = item.Href, Text = item.Text, }); } } itemCategories.Add(new ItemsCategory { Category = ic.Category, Items = pageCategoryItems }); } pageCategory.ItemsCategories = itemCategories; page.Categories.Add(pageCategory); await this.context.Pages.AddAsync(page); await this.context.SaveChangesAsync(); }
public IActionResult CreateCategoryPage() { var model = new CreateCategoryPageViewModel(); return(View(model)); }
public async Task TestIfCreateCategoryPageWorksAccordingly() { var context = PCHUBDbContextInMemoryInitializer.InitializeContext(); var categoryPagesService = new Areas.Administration.Services.AdminCategoryPagesServices(context); var model = new CreateCategoryPageViewModel(); var items = new List <PageCategoryItemsViewModel> { new PageCategoryItemsViewModel { Href = "Href", Text = "Text", }, new PageCategoryItemsViewModel { Href = "HrefTest", Text = "TextTest", }, new PageCategoryItemsViewModel { Href = "HrefTestNext", Text = "TextTestNext", }, }; var itemCategories = new List <CategoryPageItemsCategoryViewModel> { new CategoryPageItemsCategoryViewModel { Category = "Price", Items = items, } }; model.PageCategory = new PageCategoryViewModel { CategoryName = "Laptops", Pictures = new List <string> { "Url1", "Ur2", "Url3", }, AllHref = "AllHref", AllName = "AllName", ItemsCategories = itemCategories, }; model.PageName = "Laptops"; await categoryPagesService.CreateCategoryPageAsync(model); var pageResult = await context.Pages.FirstOrDefaultAsync(x => x.PageName == "Laptops"); Assert.NotNull(pageResult); Assert.Contains(pageResult.Categories, (x) => x.CategoryName == "Laptops"); var resultItemsCategories = pageResult.Categories.SelectMany(x => x.ItemsCategories); Assert.NotEmpty(resultItemsCategories); var resultItems = resultItemsCategories.SelectMany(x => x.Items); Assert.Contains(resultItems, x => x.Text == "Text" && x.Href == "Href"); }