public async Task <IActionResult> GetWakes(int hotelId, [FromQuery] WakeParam wakeParam)
        {
            var wakes = await _repo.GetWakeups(wakeParam, hotelId);

            var wakeToReturn = _mapper.Map <IEnumerable <WakeForListDto> >(wakes);

            Response.AddPagination(wakes.CurrentPage, wakes.PageSize, wakes.TotalCount, wakes.TotalPages);

            return(Ok(wakeToReturn));
        }
        public async Task <PagedList <WakeUp> > GetWakeups(WakeParam wakeParam, int HotelID)
        {
            var wakeups = _context.WakeUps.Where(h => h.HotelId == HotelID && h.IsDeleted == false)
                          .OrderBy(b => b.Id).AsQueryable();

            if (!wakeParam.All)
            {
                if (!string.IsNullOrEmpty(wakeParam.Status))
                {
                    if (wakeParam.Status == "Pending,Processing")
                    {
                        wakeups = wakeups.Where(b => b.BookStatus == "Pending" || b.BookStatus == "Processing");
                    }
                    else
                    {
                        wakeups = wakeups.Where(b => b.BookStatus == wakeParam.Status);
                    }
                }
                if (!string.IsNullOrEmpty(wakeParam.RoomNumber))
                {
                    wakeups = wakeups.Where(b => b.RoomNumber == wakeParam.RoomNumber);
                }

                if (!string.IsNullOrEmpty(wakeParam.Fullname))
                {
                    wakeups = wakeups.Where(b => b.GuestName.Contains(wakeParam.Fullname));
                }

                if (!string.IsNullOrEmpty(wakeParam.Email))
                {
                    wakeups = wakeups.Where(b => b.Email.Contains(wakeParam.Email));
                }

                if (!string.IsNullOrEmpty(wakeParam.Phone))
                {
                    wakeups = wakeups.Where(b => b.Phone.Contains(wakeParam.Phone));
                }

                if (!string.IsNullOrEmpty(wakeParam.BookingDate))
                {
                    DateTime dt;
                    if (DateTime.TryParse(wakeParam.BookingDate, out dt))
                    {
                        wakeups = wakeups.Where(b => DateTime.Parse(b.ResDate).ToShortDateString() == dt.ToShortDateString());
                    }
                }
            }
            else
            {
                wakeups = wakeups.Where(b => b.CreatedOn > DateTime.Now.AddMonths(-1));
            }

            if (!string.IsNullOrEmpty(wakeParam.OrderBy))
            {
                switch (wakeParam.OrderBy)
                {
                case "Created":
                    wakeups = wakeups.OrderBy(b => b.CreatedOn);
                    break;

                default:
                    wakeups = wakeups.OrderBy(b => (DateTime.Parse(b.ResDate).ToShortDateString() + " " + b.ResTime));
                    break;
                }
            }

            return(await PagedList <WakeUp> .CreateAsync(wakeups, wakeParam.PageNumber, wakeParam.PageSize));
        }