コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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();
            }
        }