public async Task <string> EditAsync <T>(EditFinishedModelViewModel editModel) { var finishedModel = this.finishedModelRepository.All().Where(f => f.Id == editModel.Id).FirstOrDefault(); if (finishedModel == null) { throw new NullReferenceException(string.Format(ExceptionsServices.Null_FinishedModel_Id_ErrorMessage, editModel.Id)); } var photoUrl = string.Empty; if (editModel.ImagePath == null) { photoUrl = finishedModel.ImagePath; } else { photoUrl = await this.cloudinaryService.UploadPhotoAsync( editModel.ImagePath, $"{editModel.Name}_{editModel.Id}", GlobalConstants.CloudFolderForFinishedModelPhotos); } var product = this.productService.GetById(finishedModel.ProductId); var typeOfProject = Enum.Parse <TypeProject>(editModel.TypeProject); product.Name = editModel.Name; finishedModel.TypeProject = typeOfProject; finishedModel.Description = editModel.Description; finishedModel.ImagePath = photoUrl; // To upload the new image and ad the new await this.finishedModelRepository.SaveChangesAsync(); return(finishedModel.Id); }
public async Task <IActionResult> Edit(EditFinishedModelViewModel model) { if (!this.ModelState.IsValid) { return(this.View(model)); } var viewModel = await this.finishedModelService.EditAsync <EditFinishedModelViewModel>(model); return(this.RedirectToAction("Details", "FinishedModels", new { name = model.Name, area = string.Empty })); }
public async Task EditFinishedModel_WithNonExistingFireplace_ShouldThrowException() { // Arrange var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var groupRepository = new EfDeletableEntityRepository <Product_Group>(context); var productRepository = new EfDeletableEntityRepository <Product>(context); var finishedModelsRepository = new EfDeletableEntityRepository <Finished_Model>(context); var groupService = new GroupService(groupRepository); var prodcutService = new ProductService(productRepository, groupService); var cloudinaryService = new FakeCloudinary(); var finishedModelsService = new FinishedModelService(finishedModelsRepository, prodcutService, groupService, cloudinaryService); var user = new ApplicationUser { Id = "abc", FirstName = "Nikolay", LastName = "Doychev", Email = "*****@*****.**", EmailConfirmed = true, }; var fileName = "Img"; IFormFile file = new FormFile( new MemoryStream(Encoding.UTF8.GetBytes("This is a dummy file")), 0, 0, fileName, "dummy.png"); var finishedModel = new EditFinishedModelViewModel { Id = "Test Id", Description = "Some description test 1", TypeProject = TypeProject.Classic.ToString(), Name = "Model 1", }; var seeder = new DbContextTestsSeeder(); await seeder.SeedUsersAsync(context); await seeder.SeedGroupAsync(context); await seeder.SeedProdcutAsync(context); await seeder.SeedFireplacesAsync(context); // Act AutoMapperConfig.RegisterMappings(typeof(EditFinishedModelViewModel).Assembly); await Assert.ThrowsAsync <NullReferenceException>(() => finishedModelsService.EditAsync <EditFinishedModelViewModel>(finishedModel)); }
public async Task EditFishedModel_WithCorrectData_ShouldSuccessfullyEdit() { // Arrange var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var groupRepository = new EfDeletableEntityRepository <Product_Group>(context); var productRepository = new EfDeletableEntityRepository <Product>(context); var finishedModelsRepository = new EfDeletableEntityRepository <Finished_Model>(context); var groupService = new GroupService(groupRepository); var prodcutService = new ProductService(productRepository, groupService); var cloudinaryService = new FakeCloudinary(); var finishedModelsService = new FinishedModelService(finishedModelsRepository, prodcutService, groupService, cloudinaryService); var user = new ApplicationUser { Id = "abc", FirstName = "Nikolay", LastName = "Doychev", Email = "*****@*****.**", EmailConfirmed = true, }; var fileName = "Img"; IFormFile file = new FormFile( new MemoryStream(Encoding.UTF8.GetBytes("This is a dummy file")), 0, 0, fileName, "dummy.png"); var fireplace = new EditFinishedModelViewModel { Id = "abc1", Description = "Some description test 1", ImagePath = file, TypeProject = TypeProject.Classic.ToString(), Name = "Модел 1 сменено", }; var seeder = new DbContextTestsSeeder(); await seeder.SeedUsersAsync(context); await seeder.SeedGroupAsync(context); await seeder.SeedFinishedModelssAsync(context); // Act AutoMapperConfig.RegisterMappings(typeof(EditFinishedModelViewModel).Assembly); var result = await finishedModelsService.EditAsync <EditFinishedModelViewModel>(fireplace); var actual = context.Finished_Models.FirstOrDefault(x => x.Product.Name == "Модел 1 сменено"); var expectedName = "Модел 1 сменено"; var expectedDescription = "Some description test 1"; var expectedTypeOfProject = TypeProject.Classic.ToString(); // Assert AssertExtension.EqualsWithMessage(expectedName, actual.Product.Name, string.Format(ErrorMessage, "EditFinishedModel returns correct Name")); AssertExtension.EqualsWithMessage(expectedDescription, actual.Description, string.Format(ErrorMessage, "EditFinishedModel returns correct Description")); AssertExtension.EqualsWithMessage(expectedTypeOfProject, actual.TypeProject.ToString(), string.Format(ErrorMessage, "EditFinishedModel returns correct TypeOfProject")); }