public async Task <bool> AddProductToProcedureAsync(string id, string productId) { var isAlreadyAdded = await this.procedureProductsRepository .All() .AnyAsync(pp => pp.ProductId == productId && pp.ProcedureId == id); if (isAlreadyAdded) { return(false); } var procedureProduct = new ProcedureProduct() { ProductId = productId, ProcedureId = id, }; await this.procedureProductsRepository.AddAsync(procedureProduct); await this.procedureProductsRepository.SaveChangesAsync(); return(true); }
public async Task CheckDeletingProcedureAsync() { ApplicationDbContext db = GetDb(); var repository = new EfDeletableEntityRepository <Procedure>(db); var skinProblemProceduresRepository = new EfRepository <SkinProblemProcedure>(db); var procedureStylistsRepository = new EfRepository <ProcedureStylist>(db); var procedureProductsRepository = new EfRepository <ProcedureProduct>(db); var service = new ProceduresService( repository, this.procedureReviewsRepository.Object, procedureProductsRepository, procedureStylistsRepository, skinProblemProceduresRepository, this.appointmentsRepository.Object, this.categoriesService.Object); var procedure = await PrepareProcedureAsync(db, service); var firstStylist = new ApplicationUser() { Id = "1" }; var secondStylist = new ApplicationUser() { Id = "2" }; var firstStylistProcedure = new ProcedureStylist() { ProcedureId = procedure.Id, StylistId = firstStylist.Id, }; var secondStylistProcedure = new ProcedureStylist() { ProcedureId = procedure.Id, StylistId = secondStylist.Id, }; var product = new Product() { Id = "1" }; var procedureProduct = new ProcedureProduct() { ProcedureId = procedure.Id, ProductId = product.Id, }; await db.Users.AddAsync(firstStylist); await db.Users.AddAsync(secondStylist); await db.ProcedureStylists.AddAsync(firstStylistProcedure); await db.ProcedureStylists.AddAsync(secondStylistProcedure); await db.Products.AddAsync(product); await db.ProcedureProducts.AddAsync(procedureProduct); await db.SaveChangesAsync(); await service.DeleteAsync(procedure.Id); Assert.True(procedure.IsDeleted); Assert.Empty(procedureProductsRepository.All()); Assert.Empty(procedureStylistsRepository.All()); Assert.Empty(procedureProductsRepository.All()); }
public async Task CheckGettingProcedureProductsAsync() { ApplicationDbContext db = GetDb(); var repository = new EfDeletableEntityRepository <Procedure>(db); var procedureProductsRepository = new EfRepository <ProcedureProduct>(db); var service = new ProceduresService( repository, this.procedureReviewsRepository.Object, procedureProductsRepository, this.procedureStylistsRepository.Object, this.skinProblemProceduresRepository.Object, this.appointmentsRepository.Object, this.categoriesService.Object); var procedure = new Procedure() { Id = "1" }; var firstProduct = new Product() { Id = "1" }; var secondProduct = new Product() { Id = "2" }; var thirdProduct = new Product() { Id = "3" }; var firstProcedureProduct = new ProcedureProduct() { ProcedureId = procedure.Id, ProductId = firstProduct.Id, }; var secondProcedureProduct = new ProcedureProduct() { ProcedureId = procedure.Id, ProductId = secondProduct.Id, }; await db.Procedures.AddAsync(procedure); await db.Products.AddAsync(firstProduct); await db.Products.AddAsync(secondProduct); await db.Products.AddAsync(thirdProduct); await db.ProcedureProducts.AddAsync(firstProcedureProduct); await db.ProcedureProducts.AddAsync(secondProcedureProduct); await db.SaveChangesAsync(); var procedures = await service.GetProcedureProductsAsync <TestProcedureProductModel>(procedure.Id); Assert.Equal(2, procedures.Count()); }
public async Task SeedAsync(ApplicationDbContext dbContext, IServiceProvider serviceProvider) { if (!dbContext.Procedures.Any()) { var proceduresData = JsonConvert .DeserializeObject <List <ProcedureDto> >(File.ReadAllText(GlobalConstants.ProcedureSeederPath)) .ToList(); List <Procedure> procedures = new List <Procedure>(); List <ProcedureProduct> procedureProducts = new List <ProcedureProduct>(); List <SkinProblemProcedure> skinProblemProcedures = new List <SkinProblemProcedure>(); foreach (var currentProcedureData in proceduresData) { var procedure = new Procedure() { Name = currentProcedureData.Name, Description = currentProcedureData.Description, Price = currentProcedureData.Price, }; var category = await dbContext.Categories .FirstOrDefaultAsync(c => c.Name == currentProcedureData.Category); if (category != null) { procedure.CategoryId = category.Id; } var skinType = await dbContext.SkinTypes .FirstOrDefaultAsync(s => s.Name == currentProcedureData.SkinType); if (skinType != null) { procedure.SkinTypeId = skinType.Id; procedure.IsSensitive = currentProcedureData.IsSensitive; } if (currentProcedureData.SkinType != null) { foreach (var currentProblem in currentProcedureData.SkinProblems) { var skinProblem = await dbContext.SkinProblems .FirstOrDefaultAsync(sp => sp.Name == currentProblem); var skinProblemProcedure = new SkinProblemProcedure() { SkinProblemId = skinProblem.Id, ProcedureId = procedure.Id, }; skinProblemProcedures.Add(skinProblemProcedure); } } if (currentProcedureData.Products != null) { foreach (var currentProduct in currentProcedureData.Products) { var product = await dbContext.Products .FirstOrDefaultAsync(sp => sp.Name == currentProduct); var procedureProduct = new ProcedureProduct() { ProductId = product.Id, ProcedureId = procedure.Id, }; procedureProducts.Add(procedureProduct); } } procedures.Add(procedure); } await dbContext.ProcedureProducts.AddRangeAsync(procedureProducts); await dbContext.SkinProblemProcedures.AddRangeAsync(skinProblemProcedures); await dbContext.Procedures.AddRangeAsync(procedures); await dbContext.SaveChangesAsync(); } }