Example #1
0
        private async Task GetSkinProblemsAsync(Procedure procedure, IList <SelectListItem> skinProblems)
        {
            var selectedSkinProblems = skinProblems
                                       .Where(sp => sp.Selected == true)
                                       .Select(sp => sp.Value)
                                       .ToList();

            foreach (var skinProblem in selectedSkinProblems)
            {
                var skinProblemProcedure = new SkinProblemProcedure()
                {
                    SkinProblemId = skinProblem,
                    ProcedureId   = procedure.Id,
                };

                await this.skinProblemProceduresRespository.AddAsync(skinProblemProcedure);
            }
        }
Example #2
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();
            }
        }