Пример #1
0
 /// <param name="context"></param>
 /// <param name="planWeekOrderMenu"></param>
 /// <returns></returns>
 public static PlanUserWeekOrderDto MapDto(ApplicationDbContext context, PlannedWeekOrderMenu planWeekOrderMenu)
 {
     return(new PlanUserWeekOrderDto
     {
         UserId = planWeekOrderMenu.User.Id,
         UserName = string.Format("{0} {1}", planWeekOrderMenu.User.LastName, planWeekOrderMenu.User.FirstName),
         OrderId = planWeekOrderMenu.Id,
         DayOrdIdArray =
             planWeekOrderMenu.PlannedDayOrderMenus.Where(dord => dord.MenuForDay.WorkingDay.IsWorking)
             .Select(dord => dord.Id)
             .ToArray(),
         UserWeekOrderDishes = context.PlanDishQuantByWeekOrderId(planWeekOrderMenu.Id).Result
     });
 }
        public static void CreateOrders(ApplicationDbContext context)
        {
            var                         roleManager       = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context));
            IdentityRole                role              = roleManager.FindByName("Employee");
            List <User>                 users             = context.Users.Where(u => u.Roles.Select(r => r.RoleId).Contains(role.Id)).ToList();
            List <MenuForWeek>          weekmenus         = context.MenuForWeeks.ToList();
            List <DishQuantity>         dquaQuantities    = context.DishQuantities.ToList();
            List <WeekOrderMenu>        weekOrders        = new List <WeekOrderMenu>();
            List <PlannedWeekOrderMenu> plannedWeekOrders = new List <PlannedWeekOrderMenu>();
            int                         rnd;

            double[][] coursesnums =
            {
                new[] { 0, 0.5, 0.5, 1.0, 1.0, 1.0, 1.0, 1.5 },
                new[] { 0,   0, 1.0, 1.0, 1.0, 1.0,2.0 },
                new[] { 0,1.0 },
                new[] { 0, 1.0 }
            };
            int[] numsForCourses = new int[4];

            for (int i = 0; i < 4; i++)
            {
                numsForCourses[i] = coursesnums[i].Length;
            }
            List <DishQuantityRelations>     dquaList     = new List <DishQuantityRelations>();
            List <PlanDishQuantityRelations> plandquaList = new List <PlanDishQuantityRelations>();

            foreach (User user in users)
            {
                foreach (MenuForWeek mfw in weekmenus)
                {
                    WeekOrderMenu weekOrder = new WeekOrderMenu
                    {
                        User                  = user,
                        MenuForWeek           = mfw,
                        WeekOrderSummaryPrice = 0.0
                    };
                    PlannedWeekOrderMenu plannedWeekOrderMenu = new PlannedWeekOrderMenu
                    {
                        User                  = user,
                        MenuForWeek           = mfw,
                        WeekOrderSummaryPrice = 0.0
                    };

                    List <DayOrderMenu>        dayOrderMenus     = new List <DayOrderMenu>();
                    List <PlannedDayOrderMenu> plandayOrderMenus = new List <PlannedDayOrderMenu>();

                    List <DishType> dishTypes = context.DishTypes.ToList();
                    foreach (MenuForDay daymenu in mfw.MenuForDay)
                    {
                        DayOrderMenu dayOrderMenu = new DayOrderMenu
                        {
                            MenuForDay = daymenu,
                        };
                        PlannedDayOrderMenu plannedDayOrderMenu = new PlannedDayOrderMenu
                        {
                            MenuForDay = daymenu
                        };
                        foreach (MfdDishPriceRelations mdrs in context.MfdDishPriceRelations.Include("DishPrice").Include("Dish.DishType").Where(mdpr => mdpr.MenuForDayId == daymenu.ID).ToList())
                        {
                            DishType first = dishTypes.FirstOrDefault(dy => dy.Id == mdrs.Dish.DishType.Id);
                            if (first != null)
                            {
                                int catindex = first.Id - 1;

                                rnd = Rand.Next(numsForCourses[catindex]);
                                DishQuantity dqu = dquaQuantities.FirstOrDefault(
                                    dq => dq.Quantity == coursesnums[catindex][rnd]);
                                DishQuantityRelations dqrs = new DishQuantityRelations
                                {
                                    DishQuantity = dqu,
                                    DishType     = first,
                                    DayOrderMenu = dayOrderMenu
                                };
                                PlanDishQuantityRelations plandqrs = new PlanDishQuantityRelations
                                {
                                    DishQuantity        = dqu,
                                    DishType            = first,
                                    PlannedDayOrderMenu = plannedDayOrderMenu
                                };
                                if (dqu != null)
                                {
                                    dayOrderMenu.DayOrderSummaryPrice += dqu.Quantity * mdrs.DishPrice.Price;
                                }
                                dquaList.Add(dqrs);
                                plandquaList.Add(plandqrs);
                            }
                        }
                        //dayOrderMenu.DayOrderSummaryPrice=
                        plannedDayOrderMenu.DayOrderSummaryPrice = dayOrderMenu.DayOrderSummaryPrice;
                        dayOrderMenus.Add(dayOrderMenu);
                        plandayOrderMenus.Add(plannedDayOrderMenu);
                    }
                    weekOrder.DayOrderMenus = dayOrderMenus;
                    plannedWeekOrderMenu.PlannedDayOrderMenus = plandayOrderMenus;
                    weekOrder.WeekOrderSummaryPrice           =
                        weekOrder.DayOrderMenus.Where(dom => dom.MenuForDay.WorkingDay.IsWorking)
                        .Sum(dom => dom.DayOrderSummaryPrice);

                    plannedWeekOrderMenu.WeekOrderSummaryPrice = weekOrder.WeekOrderSummaryPrice;

                    weekOrders.Add(weekOrder);
                    plannedWeekOrders.Add(plannedWeekOrderMenu);
                }
            }
            List <WeekPaiment> weekPaiments = new List <WeekPaiment>();

            weekOrders.ForEach(x =>
            {
                weekPaiments.Add(new WeekPaiment
                {
                    Paiment       = x.WeekOrderSummaryPrice,
                    WeekIsPaid    = true,
                    WeekOrderMenu = x
                });
            });
            context.WeekPaiments.AddRange(weekPaiments);
            context.WeekOrderMenus.AddRange(weekOrders);
            context.PlannedWeekOrderMenus.AddRange(plannedWeekOrders);
            context.DQRelations.AddRange(dquaList);
            context.PlanDQRelations.AddRange(plandquaList);
            context.SaveChanges();
        }