public static WeekOrderDto GetMapDto(IUnitOfWorkAsync unitOfWork, WeekYearDto wyDto, bool needfact = true)
        {
            ApplicationDbContext context = unitOfWork.GetContext();

            MenuForWeek menuForWeek = unitOfWork.RepositoryAsync <MenuForWeek>().GetWeekMenuByWeekYear(wyDto);

            if (menuForWeek == null)
            {
                return(null);
            }

            List <WeekOrderMenu> weekOrderMenus = unitOfWork.RepositoryAsync <WeekOrderMenu>()
                                                  .OrdersMenuByWeekYear(wyDto).Where(word => word.User.IsExisting).OrderBy(wo => wo.User.LastName).ToList();


            return(new WeekOrderDto
            {
                WeekYearDto = wyDto,
                SuCanChangeOrder = menuForWeek.SUCanChangeOrder,
                UserWeekOrders =
                    weekOrderMenus.Select(woDto => UserWeekOrderDto.MapDto(context, woDto)).ToList(),
                DayNames = context.GetDayNames(wyDto, true).Result,
                WeekDishPrices = context.GetWeekDishPrices(wyDto).Result,
                SummaryDishQuantities = context.GetFactSumWeekUserCounts(wyDto).Result,
                AllDayNames = context.GetDayNames(wyDto).Result
            });
        }
Exemple #2
0
        public async Task <IHttpActionResult> WorkWeekCommit([FromBody] WorkDaysUpdateDto wwUpDto)
        {
            if (wwUpDto == null)
            {
                return(BadRequest());
            }

            WorkingWeek week = _weekmenuService.FindById(wwUpDto.MenuId).WorkingWeek;

            for (int i = 0; i < wwUpDto.WorkDays.Length; i++)
            {
                WorkingDay workday = week.WorkingDays.ElementAt(i);
                workday.IsWorking        = wwUpDto.WorkDays[i];
                _db.Entry(workday).State = EntityState.Modified;
            }

            MenuForWeek menu = _weekmenuService.FindById(wwUpDto.MenuId);

            menu.WorkingDaysAreSelected = true;
            _db.Entry(menu).State       = EntityState.Modified;

            week.CanBeChanged = false;
            await _db.SaveChangesAsync();

            return(Ok(true));
        }
        public async Task <IHttpActionResult> CanCreateOrderOnNextWeek()
        {
            WeekYearDto curWeekYearDto  = YearWeekHelp.GetCurrentWeekYearDto();
            WeekYearDto nextWeekYearDto = YearWeekHelp.GetNextWeekYear(curWeekYearDto);
            MenuForWeek nextWeekMenu    = _weekMenuService.GetWeekMenuByWeekYear(nextWeekYearDto);

            return(Ok(nextWeekMenu != null && nextWeekMenu.OrderCanBeCreated));
        }
Exemple #4
0
        public Task <bool> IsNexWeekMenuExist()
        {
            WeekYearDto curWeekYear     = YearWeekHelp.GetCurrentWeekYearDto();
            WeekYearDto nextWeekYearDto = YearWeekHelp.GetNextWeekYear(curWeekYear);
            MenuForWeek nextWeek        =
                _weekmenuService.GetWeekMenuByWeekYear(nextWeekYearDto);

            return(Task.FromResult(nextWeek != null));
        }
        public static WeekMenuDto MapWeekMenuDto(this IRepositoryAsync <MenuForWeek> repository, WeekYearDto wyDto)
        {
            MenuForWeek wmenu = repository.GetWeekMenuByWeekYear(wyDto);

            if (wmenu == null && YearWeekHelp.IsCurrentWeekYearDto(wyDto))
            {
                repository.Context.CreateNewWeekMenu(wyDto);
                wmenu = repository.GetWeekMenuByWeekYear(wyDto);
            }
            ;
            if (wmenu == null)
            {
                return(null);
            }
            WeekMenuDto dtoModel = new WeekMenuDto
            {
                Id           = wmenu.ID,
                SummaryPrice = wmenu.SummaryPrice,
                MfdModels    =
                    wmenu.MenuForDay
                    .Select(mfd => new MenuForDayDto
                {
                    Id         = mfd.ID,
                    TotalPrice = mfd.TotalPrice,
                    Dishes     =
                        mfd.DishPriceMfdRelations.Select(dp => dp.Dish).OrderBy(d => d.DishType.Id).Select(d =>
                    {
                        var mfdDishPriceRelations =
                            mfd.DishPriceMfdRelations.FirstOrDefault(dp => dp.DishId == d.DishID);
                        if (mfdDishPriceRelations != null)
                        {
                            return new DTO.SuperUser.Dishes.DishModelDto
                            {
                                DishId       = d.DishID,
                                Title        = d.Title,
                                ProductImage = d.ProductImage,
                                Price        =
                                    mfdDishPriceRelations
                                    .DishPrice.Price,
                                Category    = mfdDishPriceRelations.Dish.DishType.Category,
                                Description = mfdDishPriceRelations.Dish.Description
                            }
                        }
                        ;
                        return(null);
                    }).ToList(),
                    OrderCanBeChanged = mfd.OrderCanBeChanged,
                    OrderWasBooking   =
                        repository.GetRepositoryAsync <WeekOrderMenu>().GetUsersMadeOrder(mfd.ID).Any(),
                    DayMenuCanBeChanged = mfd.DayMenuCanBeChanged
                })
Exemple #6
0
        public async Task <IHttpActionResult> DeleteMenuForWeek(int menuid)
        {
            MenuForWeek mfw = _weekmenuService.FindById(menuid);

            if (mfw == null)
            {
                return(NotFound());
            }
            _db.MenuForWeeks.Remove(mfw);

            await _db.SaveChangesAsync();

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public static MenuForWeek GetMenuById(this IRepositoryAsync <MenuForWeek> repository, int menuid)
        {
            MenuForWeek mfw =
                repository.Query()
                .Include(wm => wm.MenuForDay.Select(dm => dm.DishPriceMfdRelations.Select(dp => dp.Dish.DishType)))
                .Include(wm => wm.MenuForDay.Select(dm => dm.DishPriceMfdRelations.Select(dp => dp.DishPrice)))
                .Include(wm => wm.MenuForDay.Select(dm => dm.DishPriceMfdRelations.Select(dp => dp.Dish.DishDetail)))
                .Include(wm => wm.Orders)
                .Include(wm => wm.WorkingWeek.Year)
                .Include(wm => wm.WorkingWeek.WorkingDays.Select(d => d.DayOfWeek))
                .Select()
                .FirstOrDefault(wm => wm.ID == menuid);

            return(mfw);
        }
        public static MenuForWeek GetWeekMenuByWeekYear(this IRepositoryAsync <MenuForWeek> repository, WeekYearDto wyDto)
        {
            MenuForWeek mfw =
                repository.Query()
                .Include(wm => wm.MenuForDay.Select(dm => dm.DishPriceMfdRelations.Select(dp => dp.Dish.DishType)))
                .Include(wm => wm.MenuForDay.Select(dm => dm.DishPriceMfdRelations.Select(dp => dp.DishPrice)))
                .Include(wm => wm.MenuForDay.Select(dm => dm.DishPriceMfdRelations.Select(dp => dp.Dish.DishDetail)))
                .Include(wm => wm.Orders)
                .Include(wm => wm.WorkingWeek.Year)
                .Include(wm => wm.WorkingWeek.WorkingDays.Select(d => d.DayOfWeek))
                .Select()
                .FirstOrDefault(
                    wm => wm.WorkingWeek.WeekNumber == wyDto.Week && wm.WorkingWeek.Year.YearNumber == wyDto.Year);

            return(mfw);
        }
        public static WeekMenuDto GetWeekMenuDto(this IRepositoryAsync <MfdDishPriceRelations> repository,
                                                 MenuForWeek mfw)
        {
            WeekYearDto wyDto = WeekYearDto.MapDto(mfw.WorkingWeek);

            return(new WeekMenuDto
            {
                Id = mfw.ID,
                SummaryPrice = mfw.SummaryPrice,
                MfdModels = mfw.MenuForDay.Select(repository.GetMenuForDayDto).ToList(),
                OrderCanBeCreated = mfw.OrderCanBeCreated,
                WorkWeekDays = mfw.WorkingWeek.WorkingDays.Select(wd => wd.IsWorking).ToArray(),
                WorkingDaysAreSelected = mfw.WorkingDaysAreSelected,
                DayNames = repository.Context.GetDayNames(wyDto).Result,
                WeekYear = wyDto
            });
        }
Exemple #10
0
        public async Task <IHttpActionResult> UpdateMenuForDay([FromBody] MenuForDayDto menuforday)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            int dishtypeid = _mfdDishPriceService.UpdateMenuForDay(menuforday);

            MenuForWeek mfw = _unitOfWork.RepositoryAsync <MenuForWeek>().GetWeekMenuMfdContains(menuforday.Id);

            mfw.SummaryPrice = mfw.MenuForDay.Sum(mw => mw.TotalPrice);

            _unitOfWork.GetContext().SaveChanges();

            _unitOfWork.GetContext().UpdateBalanceByDayMenuDishTypeId(menuforday.Id, dishtypeid);

            return(StatusCode(HttpStatusCode.OK));
        }
Exemple #11
0
        public async Task <IHttpActionResult> SetMenuAsCanMadeOrder([FromBody] MenuCanBeOrderedMessageDto messageDto)
        {
            if (messageDto == null)
            {
                return(BadRequest());
            }
            MenuForWeek menu = _weekmenuService.FindById(messageDto.WeekMenuId);

            menu.OrderCanBeCreated = true;
            _db.Entry(menu).State  = EntityState.Modified;
            await _db.SaveChangesAsync();

            ApplicationUserManager userManager = new ApplicationUserManager(new UserStore <User>(_unitOfWork.GetContext()));

            List <User> users = userManager.Users.ToList();

            MessageService.SendEmailAsync(users, MessageTopic.MenuCreated, messageDto.DateTime);

            return(Ok(true));
        }
Exemple #12
0
        public void TestWeekMenuDelete()
        {
            WeekMenuController weekMenuApi = new WeekMenuController(_unitOfWork);
            WeekYearDto        wyDto       = new WeekYearDto
            {
                Week = 18,
                Year = 2016
            };
            MenuForWeek weekmenu = _menuForWeekService.GetWeekMenuByWeekYear(wyDto);

            if (weekmenu == null)
            {
                WeekMenuDto dto = weekMenuApi.GetWeekMenu(wyDto).Result;
                weekmenu = _menuForWeekService.GetWeekMenuByWeekYear(wyDto);
            }
            var res = weekMenuApi.DeleteMenuForWeek(weekmenu.ID).Result;

            weekmenu = _menuForWeekService.GetWeekMenuByWeekYear(wyDto);

            Assert.IsNull(weekmenu);
        }
Exemple #13
0
        public static WeekPaimentDto GetMapDto(IRepositoryAsync <WeekPaiment> repository, WeekYearDto wyDto)
        {
            ApplicationDbContext context     = repository.Context;
            MenuForWeek          menuForWeek = repository.GetRepositoryAsync <MenuForWeek>().GetWeekMenuByWeekYear(wyDto);

            if (menuForWeek == null)
            {
                return(null);
            }
            List <WeekPaiment> weekPaiments = repository.WeekPaiments(wyDto).Where(word => word.WeekOrderMenu.User.IsExisting).OrderBy(wo => wo.WeekOrderMenu.User.LastName).ToList();

            return(new WeekPaimentDto
            {
                WeekYearDto = wyDto,
                UserWeekPaiments = weekPaiments.Select(updto => UserWeekPaimentDto.MapDto(context, updto)).ToList(),
                SummaryDishPaiments = context.SumWeekPaimentsByDishes(wyDto).Result,
                DayNames = context.GetDayNames(wyDto, true).Result,
                WeekDishPrices = context.GetWeekDishPrices(wyDto).Result,
                SuCanChangeOrder = menuForWeek.SUCanChangeOrder,
                AllDayNames = context.GetDayNames(wyDto).Result
            });
        }