/// <summary>
        /// Function for add menu schedule
        /// </summary>
        /// <param name="menuSchedule_VM"></param>
        /// <param name="loginUserId"></param>
        /// <returns></returns>
        public int Add(MenuSchedule_VM menuSchedule_VM, int loginUserId)
        {
            string[] dates     = menuSchedule_VM.DateRange.Split('-');
            var      startDate = DateTime.Parse(dates[0]);
            var      endDate   = DateTime.Parse(dates[1]);

            var isOnSameDate = _context.Emenu_MenuSchedules.
                               Where(x => x.ConceptId == menuSchedule_VM.ConceptId &&
                                     x.StoreId == menuSchedule_VM.StoreId &&
                                     x.Status && !x.IsDeleted &&
                                     ((x.StartDate >= startDate && x.StartDate <= endDate) || (x.EndDate >= startDate && x.EndDate <= endDate))
                                     )
                               .FirstOrDefault();

            if (isOnSameDate == null)
            {
                var menuSchedule = new Emenu_MenuSchedules();
                menuSchedule.ConceptId  = menuSchedule_VM.ConceptId;
                menuSchedule.Code       = menuSchedule_VM.Code;
                menuSchedule.MenuId     = menuSchedule_VM.MenuId;
                menuSchedule.StartDate  = startDate;
                menuSchedule.EndDate    = endDate;
                menuSchedule.Status     = menuSchedule_VM.Status;
                menuSchedule.CreatedOn  = DateTime.Now;
                menuSchedule.CreatedBy  = loginUserId;
                menuSchedule.UniqueCode = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 12);
                menuSchedule.StoreId    = menuSchedule_VM.StoreId;
                _context.Emenu_MenuSchedules.Add(menuSchedule);
                return(_context.SaveChanges());
            }
            else
            {
                return(Helper.onsamedate_code);
            }
        }
        public IActionResult Index(int Id = 0)
        {
            var menuSchedule = new MenuSchedule_VM();

            ViewBag.ConceptsList = new SelectList(conceptsList, "Id", "ConceptName");
            ViewBag.StoresList   = new SelectList(_storesRespository.GetStoresByUserId(this.loginUserId), "Id", "StoreName");
            if (Id > 0)
            {
                menuSchedule = _menuScheduleRepository.Get(Id, this.loginUserId, isAdmin);
                if (menuSchedule == null)
                {
                    return(RedirectToAction("List", "MenuSchedule"));
                }
                else
                {
                    menuSchedule.QRCode = Helper.GenerateQRCode(QRCodeUrl + Helper.Convert_StringvalueToHexvalue(menuSchedule.UniqueCode, System.Text.Encoding.Unicode));
                    menuList            = _menuRepository.GetList(this.loginUserId, isAdmin).Where(x => x.Status && x.ConceptId == menuSchedule.ConceptId).ToList();
                    ViewBag.Menus       = new SelectList((from x in menuList
                                                          select new
                    {
                        Id = x.Id,
                        MenuCode = x.Name + "(" + x.Code + ")"
                    }).ToList(), "Id", "MenuCode");
                    ViewData["Title"] = "Edit";
                    return(View(menuSchedule));
                }
            }
            else
            {
                if (conceptsList.Any())
                {
                    if (SelectedConceptId > 0)
                    {
                        menuList = _menuRepository.GetList(this.loginUserId, isAdmin).Where(x => x.ConceptId == SelectedConceptId).ToList();
                        menuSchedule.ConceptId = SelectedConceptId;
                    }
                    else
                    {
                        menuList = _menuRepository.GetList(this.loginUserId, isAdmin).Where(x => x.ConceptId == conceptsList[0].Id).ToList();
                    }
                }

                ViewBag.Menus = new SelectList((from x in menuList
                                                select new
                {
                    Id = x.Id,
                    MenuCode = x.Name + "(" + x.Code + ")"
                }).ToList(), "Id", "MenuCode");

                ViewData["Title"] = "Add";
                return(View(menuSchedule));
            }
        }
        /// <summary>
        /// Function for update menu schedule
        /// </summary>
        /// <param name="menuSchedule_VM"></param>
        /// <param name="loginUserId"></param>
        /// <returns></returns>
        public int Update(MenuSchedule_VM menuSchedule_VM, int loginUserId)
        {
            string[] dates     = menuSchedule_VM.DateRange.Split('-');
            var      startDate = DateTime.Parse(dates[0]);
            var      endDate   = DateTime.Parse(dates[1]);

            var isOnSameDate = _context.Emenu_MenuSchedules.
                               Where(x => x.ConceptId == menuSchedule_VM.ConceptId &&
                                     x.Id != menuSchedule_VM.Id &&
                                     x.StoreId == menuSchedule_VM.StoreId &&
                                     x.Status && !x.IsDeleted &&
                                     ((x.StartDate >= startDate && x.StartDate <= endDate) || (x.EndDate >= startDate && x.EndDate <= endDate))
                                     )
                               .FirstOrDefault();

            if (isOnSameDate == null)
            {
                var menuSchedule = _context.Emenu_MenuSchedules.Where(x => x.Id == menuSchedule_VM.Id && x.IsDeleted == false).FirstOrDefault();
                if (menuSchedule != null)
                {
                    menuSchedule.Code       = menuSchedule_VM.Code;
                    menuSchedule.ConceptId  = menuSchedule_VM.ConceptId;
                    menuSchedule.MenuId     = menuSchedule_VM.MenuId;
                    menuSchedule.Status     = menuSchedule_VM.Status;
                    menuSchedule.StartDate  = startDate;
                    menuSchedule.EndDate    = endDate;
                    menuSchedule.ModifiedBy = loginUserId;
                    menuSchedule.ModifiedOn = DateTime.Now;
                    menuSchedule.StoreId    = menuSchedule_VM.StoreId;
                    return(_context.SaveChanges());
                }
                else
                {
                    return(0);
                }
            }
            else
            {
                return(Helper.onsamedate_code);
            }
        }
 public IActionResult SaveAsync(MenuSchedule_VM menuSchedule_VM)
 {
     if (menuSchedule_VM != null)
     {
         if (menuSchedule_VM.Id > 0)
         {
             var result = _menuScheduleRepository.Update(menuSchedule_VM, this.loginUserId);
             if (result > 0)
             {
                 TempData["Status"]  = Helper.success_code;
                 TempData["Message"] = Message.menuScheduleUpdated;
             }
             else if (result == Helper.onsamedate_code)
             {
                 TempData["Message"] = Message.menuScheduleOnSameDateError;
             }
             else
             {
                 TempData["Message"] = Message.menuScheduleUpdatedError;
             }
         }
         else
         {
             var ret = _menuScheduleRepository.Add(menuSchedule_VM, this.loginUserId);
             if (ret > 0)
             {
                 TempData["Status"]  = Helper.success_code;
                 TempData["Message"] = Message.menuScheduleAdded;
             }
             else if (ret == Helper.onsamedate_code)
             {
                 TempData["Message"] = Message.menuScheduleOnSameDateError;
             }
             else
             {
                 TempData["Message"] = Message.menuScheduleAddedError;
             }
         }
     }
     return(RedirectToAction("List", "MenuSchedule"));
 }