public static DishModelDto GetDishModelDto(this IRepositoryAsync <MfdDishPriceRelations> repository, Dish dish, int?menufordayid = null) { DishModelDto dto = null; double price = 0.00; if (menufordayid == null) { price = dish.CurrentPrice.Price; } else { MfdDishPriceRelations first = repository.Query() .Include(mp => mp.DishPrice) .Select() .FirstOrDefault(mfdpr => mfdpr.DishId == dish.DishID && mfdpr.MenuForDayId == menufordayid); if (first != null) { price = first.DishPrice.Price; } } dto = new DishModelDto { DishId = dish.DishID, Title = dish.Title /*?? "Блюдо не выбрано"*/, ProductImage = dish.ProductImage, Price = price, Category = dish.DishType.Category, Description = dish.Description, Deleted = dish.Deleted }; return(dto); }
public static int UpdateMfdDishes(this IRepositoryAsync <MfdDishPriceRelations> repository, MenuForDayDto menuforday) { MenuForDay menuFd = repository.GetRepositoryAsync <MenuForDay>() .Query() .Include(mfd => mfd.DishPriceMfdRelations.Select(dp => dp.DishPrice)) .Include(mfd => mfd.DishPriceMfdRelations.Select(dp => dp.Dish)) .Include(mfd => mfd.DishPriceMfdRelations.Select(dp => dp.Dish.DishType)) .Include(mfd => mfd.DayOrderMenus.Select(dp => dp.MenuForDay)) .Include(mfd => mfd.DayOrderMenus.Select(dp => dp.MenuForDay.WorkingDay.DayOfWeek)) .Include(mfd => mfd.DayOrderMenus.Select(dp => dp.WeekOrderMenu.DayOrderMenus)) .Include(mfd => mfd.WorkingDay.WorkingWeek.Year) .Include(mfd => mfd.DayOrderMenus.Select(dord => dord.WeekOrderMenu.MenuForWeek)) .Select() .FirstOrDefault(mfd => mfd.ID == menuforday.Id); if (menuFd != null) { int changedishid = menuforday.Dishes.Select(d => d.DishId) .FirstOrDefault(id => !menuFd.DishPriceMfdRelations.Select(dp => dp.DishId).Contains(id)); if (changedishid == 0) { for (int i = 0; i < menuFd.DishPriceMfdRelations.Count; i++) { if (menuFd.DishPriceMfdRelations.ElementAt(i).DishPrice != repository.GetDishPrice(menuforday.Dishes.ElementAt(i).Price)) { changedishid = menuFd.DishPriceMfdRelations.ElementAt(i).DishId; } } } menuFd.DishPriceMfdRelations = repository.MfdByMenuForDayDto(menuforday); Dish dish = repository.GetRepositoryAsync <Dish>() .Query() .Include(d => d.DishType) .Include(d => d.CurrentPrice) .Select() .FirstOrDefault(d => d.DishID == changedishid); MfdDishPriceRelations rel = menuFd.DishPriceMfdRelations.FirstOrDefault( mfd => dish != null && string.Equals(mfd.Dish.DishType.Category, dish.DishType.Category)); if (rel != null && dish != null) { rel.DishId = changedishid; var firstOrDefault = menuforday.Dishes.FirstOrDefault(d => d.DishId == changedishid); if (firstOrDefault != null) { dish.CurrentPrice = repository.GetDishPrice(firstOrDefault.Price); } rel.DishPrice = dish.CurrentPrice; repository.Context.Entry(rel).State = EntityState.Modified; repository.Context.Entry(dish).State = EntityState.Modified; menuFd.TotalPrice = menuforday.TotalPrice; repository.Context.Entry(menuFd).State = EntityState.Modified; return(dish.DishType.Id); } } return(0); }