public IHttpActionResult GetSearchHostApartments(SearchApartment apartmentDetails) { ICollection <Apartman> apartments = GetFiltredHostApartments(apartmentDetails); List <ApartmentBM> apartmentsInfo = new List <ApartmentBM>(); foreach (var apartment in apartments) { ApartmentBM apartmentBM = GetApartmentInfo(apartment); apartmentsInfo.Add(apartmentBM); } return(Ok(apartmentsInfo)); }
public IHttpActionResult GetSearchApartments(SearchApartment apartmentDetails) { ICollection <Apartman> apartments = null; if (CheckRole("Admin")) { apartments = GetFiltredApartments(apartmentDetails, "Status"); } else { apartments = GetFiltredApartments(apartmentDetails, ""); } List <ApartmentBM> apartmentsInfo = new List <ApartmentBM>(); foreach (var apartment in apartments) { ApartmentBM apartmentBM = GetApartmentInfo(apartment); apartmentsInfo.Add(apartmentBM); } return(Ok(apartmentsInfo)); }
public ICollection <Apartman> GetFiltredHostApartments(SearchApartment searchApartment) //kada uradi search u home i za admina ulazi ovde { ICollection <Apartman> apartments = context.Apartmans.Where(x => x.Deleted == false && x.HostID == searchApartment.HostID).ToList(); if (searchApartment.ApartmentStatus != null && searchApartment.ApartmentStatus != "") { apartments = apartments.Where(x => x.Status.ToString() == searchApartment.ApartmentStatus).ToList(); } if (searchApartment.GuestNumber > 0) { apartments = apartments.Where(x => x.GuestNumber == searchApartment.GuestNumber).ToList(); } if (searchApartment.MaxPrice > 0) { apartments = apartments.Where(x => x.PricePerNight <= searchApartment.MaxPrice).ToList(); } if (searchApartment.MaxRooms > 0) { apartments = apartments.Where(x => x.RoomNumber <= searchApartment.MaxRooms).ToList(); } if (searchApartment.MinRooms > 0) { apartments = apartments.Where(x => x.RoomNumber >= searchApartment.MinRooms).ToList(); } if (searchApartment.Settlement != "" && searchApartment.Settlement != null) { apartments = apartments.Where(x => x.Location.Adress.Settlement == searchApartment.Settlement).ToList(); } if (searchApartment.ApartmentType != "" && searchApartment.ApartmentType != null) { apartments = apartments.Where(x => x.Type.ToString() == searchApartment.ApartmentType).ToList(); } if (searchApartment.Amenities.Count > 0) { ICollection <Apartman> helpApartments = new HashSet <Apartman>(); foreach (Apartman apartment in apartments) { helpApartments.Add(apartment); } foreach (string ammen in searchApartment.Amenities) { foreach (Apartman apar in helpApartments) { var helpApartment = apar.Amenities.Where(x => x.Name == ammen).FirstOrDefault(); if (helpApartment == null && apartments.Contains(apar)) { apartments.Remove(apar); } } } } //za godinu dobija 0001 kao godinu ako nije odabrao if (searchApartment.CheckIn.Year.ToString() != "1" && searchApartment.CheckOut.Year.ToString() != "1") { ICollection <Apartman> helpApartments = new HashSet <Apartman>(); foreach (Apartman apartment in apartments) { helpApartments.Add(apartment); } foreach (Apartman apar in helpApartments) { DateTime currentDate = searchApartment.CheckIn; while (currentDate <= searchApartment.CheckOut) { var helpApartment = apar.RentDates.Where(x => x.RentDate.Year == currentDate.Year && x.RentDate.Month == currentDate.Month && x.RentDate.Day == currentDate.Day && x.Available == true).FirstOrDefault(); if (helpApartment == null && apartments.Contains(apar)) { apartments.Remove(apar); break; } currentDate = currentDate.AddDays(1); } } } else if (searchApartment.CheckIn.Year.ToString() != "1") { ICollection <Apartman> helpApartments = new HashSet <Apartman>(); foreach (Apartman apartment in apartments) { helpApartments.Add(apartment); } foreach (Apartman apar in helpApartments) { var helpApartment = apar.RentDates.Where(x => x.RentDate.Year == searchApartment.CheckIn.Year && x.RentDate.Month == searchApartment.CheckIn.Month && x.RentDate.Day == searchApartment.CheckIn.Day && x.Available == true).FirstOrDefault(); if (helpApartment == null && apartments.Contains(apar)) { apartments.Remove(apar); } } } return(apartments); }