public IHttpActionResult GetReservationRequests(int hostId, Helper.Enums.ReservationStatus status)
        {
            if (CheckRole("Host"))
            {
                return(StatusCode(HttpStatusCode.Unauthorized));
            }
            List <ReservationBM> reservationInfo = new List <ReservationBM>();
            List <Apartman>      apps            = context.Apartmans.Where(x => x.HostID == hostId && x.Deleted != true).ToList();

            if (apps != null)
            {
                foreach (var apartment in apps)
                {
                    if (apartment.Reservations != null)
                    {
                        foreach (var reservation in apartment.Reservations.Where(x => x.Stauts == status))
                        {
                            ReservationBM reservationBM = GetReservationInfo(reservation);
                            reservationInfo.Add(reservationBM);
                        }
                    }
                }
            }

            return(Ok(reservationInfo));
        }
        public IHttpActionResult ChageReservationRequests(int reservationId, Helper.Enums.ReservationStatus status)
        {
            if (CheckRole("Host"))
            {
                if (CheckRole("Guest"))
                {
                    return(StatusCode(HttpStatusCode.Unauthorized));
                }
            }

            Reservation reservation = context.Reservations.Where(x => x.ID == reservationId && x.Deleted == false).FirstOrDefault();

            if (reservation == null)
            {
                return(NotFound());
            }

            DateTime currentDate = reservation.SingUpDate;

            if (status == ReservationStatus.Rejected || status == ReservationStatus.Canceled)
            {
                for (int i = 0; i < reservation.NumberOfNights; i++)
                {
                    DatesModel datesModel = context.DatesModels.Where(x => x.ApartmanID == reservation.ApartmanID && x.RentDate == currentDate && x.Deleted == false).FirstOrDefault();
                    if (datesModel == null)
                    {
                        continue;
                    }
                    datesModel.Available = true;
                    context.SaveChanges();
                    currentDate = currentDate.AddDays(1);
                }
            }

            if (status == ReservationStatus.Done)
            {
                DateTime checkIfDateIsDone = reservation.SingUpDate.AddDays(reservation.NumberOfNights);
                if (checkIfDateIsDone >= DateTime.Now)
                {
                    return(Ok("Date is not done"));
                }
            }

            reservation.Stauts = status;
            context.SaveChanges();


            return(Ok());
        }
        public IHttpActionResult GetGuestReservationRequest(int guestId, Helper.Enums.ReservationStatus status)
        {
            if (CheckRole("Guest"))
            {
                return(StatusCode(HttpStatusCode.Unauthorized));
            }
            List <ReservationBM> reservationInfo = new List <ReservationBM>();
            List <Reservation>   ress            = context.Reservations.Where(x => x.GuestID == guestId && x.Deleted != true).ToList();

            if (ress != null && ress.Count > 0)
            {
                foreach (var reservation in ress)
                {
                    if (reservation.Stauts == status)
                    {
                        ReservationBM reservationBM = GetReservationInfo(reservation);
                        reservationInfo.Add(reservationBM);
                    }
                }
            }
            return(Ok(reservationInfo));
        }