public async Task <IActionResult> Edit(int?id) { string[] allCategories = Context.Items.Select(i => i.Category).Distinct().ToArray(); if (id == null) { return(NotFound()); } Item item = await Context.Items.FindAsync(id); if (item == null) { return(NotFound()); } item.Manufacturer = item.Manufacturer.Trim().FirstCharToUpper(); var viewModel = new CreateEditItemViewModel() { Item = item, Categories = allCategories, }; return(View(viewModel)); }
public async Task <IActionResult> Create(CreateEditItemViewModel model) { try { model.Item.Manufacturer = model.Item.Manufacturer.Trim().FirstCharToUpper(); string uploadFolder = await UploadImages(model); await Context.Items.AddAsync(model.Item); await Context.SaveChangesAsync(); #region TwitterPost if (model.PublishItemFlag) { PublishTweet(model.Item, uploadFolder); } #endregion _flashMessage.Confirmation($"Product '{model.Item.Title}' created with price of ${model.Item.Price}"); } catch (Exception e) { _flashMessage.Danger("Product could not be created"); _logger.LogError($"Product# '{model.Item.Title}' could not be created, ex: {e}"); } return(RedirectToAction("ListItems", "Administration")); }
private static async Task CopyImage(CreateEditItemViewModel model, string uploadFolder, int imageNumber) { Directory.CreateDirectory(uploadFolder); string uniqueFileName = $"{imageNumber}.jpg"; string filePath = Path.Combine(uploadFolder, uniqueFileName); var fileStream = new FileStream(filePath, FileMode.Create); await model.File1.CopyToAsync(fileStream); fileStream.Close(); }
public ActionResult Edit(CreateEditItemViewModel item) { if (!this.ModelState.IsValid) { return(this.View(item)); } this.storeService.EditItem(item.Id, item.ItemName, item.Description, item.DestinationFor, item.ImageUrl, item.Brand, item.Price.ToString()); return(this.RedirectToAction("Details", new { id = item.Id })); }
public ActionResult Create(CreateEditItemViewModel item) { if (!this.ModelState.IsValid) { return(this.View(item)); } this.storeService.AddNewItem(item.ItemName, item.Description, item.DestinationFor, item.ImageUrl, item.Brand, item.Price.ToString()); return(this.RedirectToAction("Index")); }
public void RedirectToIndexAction_WhenParamsAreValid() { // Arrange var storeServiceMock = new Mock <IStoreService>(); var mappingServiceMock = new Mock <IMappingService>(); var utilsMock = new Mock <IUtilitiesService>(); var controller = new StoreItemsController(storeServiceMock.Object, mappingServiceMock.Object, utilsMock.Object); var model = new CreateEditItemViewModel(); // Act & Assert controller.WithCallTo(x => x.Create(model)) .ShouldRedirectTo(x => x.Index(null, null)); }
public void RedirectToAction_WhenParamsAreValid() { // Arrange var storeServiceMock = new Mock <IStoreService>(); var mappingServiceMock = new Mock <IMappingService>(); var utilsMock = new Mock <IUtilitiesService>(); var controller = new StoreItemsController(storeServiceMock.Object, mappingServiceMock.Object, utilsMock.Object); var model = new CreateEditItemViewModel(); storeServiceMock.Setup(x => x.EditItem(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())); // Act & Assert controller.WithCallTo(x => x.Edit(model)) .ShouldRedirectTo(x => x.Details(model.Id)); }
public async Task <IActionResult> Edit(CreateEditItemViewModel model) { Item itemOnDb = await Context.Items.FirstOrDefaultAsync(i => i.Id == model.Item.Id); if (itemOnDb == null) { _flashMessage.Danger("Item could not be found on DB"); return(RedirectToAction("ListItems", "Administration")); } var currentUser = await GetCurrentUserAsync(); IList <string> userRoles = await UserManager.GetRolesAsync(currentUser); if (!userRoles.Any(r => r.Equals("Admin"))) { _flashMessage.Danger("Your changes were not saved.\n You do not have the right permissions to edit items."); return(RedirectToAction("ListItems", "Administration")); } try { itemOnDb.Title = model.Item.Title; itemOnDb.Description = model.Item.Description; itemOnDb.Manufacturer = model.Item.Manufacturer.Trim().FirstCharToUpper(); itemOnDb.Price = model.Item.Price; itemOnDb.Category = model.Item.Category; itemOnDb.Active = model.Item.Active; await UploadImages(model); Context.Update(itemOnDb); await Context.SaveChangesAsync(); _flashMessage.Confirmation("Item information has been updated"); } catch (Exception e) { _flashMessage.Danger("Product could not be updated"); _logger.LogError($"Product# '{model.Item.Id}' could not be updated, ex: {e}"); } return(RedirectToAction("ListItems", "Administration")); }
public void CallAddNewItemMethod_WhenParamsAreValid() { // Arrange var storeServiceMock = new Mock <IStoreService>(); var mappingServiceMock = new Mock <IMappingService>(); var utilsMock = new Mock <IUtilitiesService>(); var controller = new StoreItemsController(storeServiceMock.Object, mappingServiceMock.Object, utilsMock.Object); storeServiceMock.Setup(x => x.AddNewItem(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())); var model = new CreateEditItemViewModel(); // Act controller.Create(model); // Assert storeServiceMock.Verify(x => x.AddNewItem(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public void ReturnDefaultView_WhenModelStateIsInvalid() { // Arrange var storeServiceMock = new Mock <IStoreService>(); var mappingServiceMock = new Mock <IMappingService>(); var utilsMock = new Mock <IUtilitiesService>(); var controller = new StoreItemsController(storeServiceMock.Object, mappingServiceMock.Object, utilsMock.Object); controller.ViewData.ModelState.AddModelError("adasd", "asda"); var model = new CreateEditItemViewModel(); // Act & Assert controller.WithCallTo(x => x.Create(model)) .ShouldRenderDefaultView() .WithModel <CreateEditItemViewModel>(x => x == model); }
public void ReturnDefualtViewWithRespectiveViewModel_WhenParamsAreValid() { // Arrange var storeServiceMock = new Mock <IStoreService>(); var mappingServiceMock = new Mock <IMappingService>(); var utilsMock = new Mock <IUtilitiesService>(); var controller = new StoreItemsController(storeServiceMock.Object, mappingServiceMock.Object, utilsMock.Object); var item = new StoreItem(); storeServiceMock.Setup(x => x.GetStoreItemById(It.IsAny <Guid>())).Returns(item); var model = new CreateEditItemViewModel(); mappingServiceMock.Setup(x => x.Map <CreateEditItemViewModel>(item)).Returns(model); // Act & Assert controller.WithCallTo(x => x.Edit(Guid.NewGuid())) .ShouldRenderDefaultView() .WithModel <CreateEditItemViewModel>(x => x == model); }
private async Task <string> UploadImages(CreateEditItemViewModel model) { string directoryName = model.Item.Title.Trim().Replace(" ", string.Empty); string uploadFolder = Path.Combine(_hostingEnvironment.WebRootPath, "images", "items", directoryName); if (model.File1 != null) { await CopyImage(model, uploadFolder, 1); model.Item.ImageUrl = $"images/items/{directoryName}"; } if (model.File2 != null) { await CopyImage(model, uploadFolder, 1); } if (model.File3 != null) { await CopyImage(model, uploadFolder, 1); } return(uploadFolder); }