/// <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(); }