public ActionResult Edit(TableAvailability model, int[] selectedWeekDays, long[] selectedTables, int selectedAvailability)
        {
            model.CreatedOn = DateTime.UtcNow.ToClientTime();
            model.CreatedBy = User.Identity.GetUserId<long>();

            model.TableAvailabilityWeekDays = selectedWeekDays.Select(d => new TableAvailabilityWeekDay
            {
                DayId = d,
                TableAvailabilityId = model.TableAvailabilityId
            }).ToList();

            model.TableAvailabilityFloorTables = selectedTables.Select(t => new TableAvailabilityFloorTable
            {
                FloorTableId = t,
                TableAvailabilityId = model.TableAvailabilityId
            }).ToList();

            model.AvailablityStatusId = selectedAvailability;

            db.tabTableAvailabilities.Add(model);
            db.SaveChanges();

            this.ClearAvailabilityCache();

            return RedirectToAction("Index");
        }
        private bool CheckAvail(TableAvailability avail, DateTime startTime)
        {
            var TAstartTime = startTime.Date.AddTicks(Convert.ToDateTime(avail.StartTime).TimeOfDay.Ticks);
            var TAendTime = startTime.Date.AddTicks(Convert.ToDateTime(avail.EndTime).TimeOfDay.Ticks);

            TAstartTime = (TAstartTime.TimeOfDay.TotalMinutes < 240 && !(startTime.TimeOfDay.TotalMinutes < 240)) ? TAstartTime.AddDays(1) : ((startTime.TimeOfDay.TotalMinutes < 240) && !(TAstartTime.TimeOfDay.TotalMinutes < 240) ? TAstartTime.AddDays(-1) : TAstartTime);
            TAendTime = (TAendTime.TimeOfDay.TotalMinutes < 240 && !(startTime.TimeOfDay.TotalMinutes < 240)) ? TAendTime.AddDays(1) : ((startTime.TimeOfDay.TotalMinutes < 240) && !(TAendTime.TimeOfDay.TotalMinutes < 240) ? TAendTime.AddDays(-1) : TAendTime);

            if (!(TAstartTime <= startTime && startTime < TAendTime))
            {
                return false;
            }

            return true;
        }