public ActionResult PlaceArrangements(string placeName, bool isLogged) { BusinessLogic logic = new BusinessLogic(); MainPageViewModel model = new MainPageViewModel(); SearchArrangements criteria = new SearchArrangements() { PlaceName = placeName }; model.IsLogged = isLogged; model.Destinations = logic.GetFirstNDestinations(7); List <Arrangement> searchedArrangements = new List <Arrangement>(); searchedArrangements = logic.SearchArrangements(criteria); List <Arrangement> topArrangements = logic.TopArrangements(); foreach (var topArrangement in topArrangements) { ArrangementDestinationViewModel arrangement = new ArrangementDestinationViewModel(); arrangement.Arrangement = topArrangement; arrangement.Destination = logic.GetArrangementDestination(topArrangement); model.TopArrangements.Add(arrangement); } foreach (var searched in searchedArrangements) { ArrangementDestinationViewModel arrangement = new ArrangementDestinationViewModel(); arrangement.Arrangement = searched; arrangement.Destination = logic.GetArrangementDestination(searched); model.SearchedArrangements.Add(arrangement); } return(View(model)); }
public ActionResult CountryArrangements(String country, bool isLogged) { BusinessLogic logic = new BusinessLogic(); MainPageViewModel model = new MainPageViewModel(); model.Destinations = logic.GetDestinations(); model.IsLogged = isLogged; List <Arrangement> topArrangements = logic.TopArrangements(); foreach (var topArrangement in topArrangements) { ArrangementDestinationViewModel arrangement = new ArrangementDestinationViewModel(); arrangement.Arrangement = topArrangement; arrangement.Destination = logic.GetArrangementDestination(topArrangement); model.TopArrangements.Add(arrangement); } List <Arrangement> arrangements = logic.GetArrangementsForDestination(country); foreach (var arrangement in arrangements) { ArrangementDestinationViewModel arrangementVM = new ArrangementDestinationViewModel(); arrangementVM.Arrangement = arrangement; arrangementVM.Destination = logic.GetArrangementDestination(arrangement); model.Arrangements.Add(arrangementVM); } SearchArrangements searchArrangements = new SearchArrangements() { Country = country }; List <Arrangement> searchedArrangements = logic.SearchArrangements(searchArrangements); foreach (var searched in searchedArrangements) { ArrangementDestinationViewModel arrangement = new ArrangementDestinationViewModel(); arrangement.Arrangement = searched; arrangement.Destination = logic.GetArrangementDestination(searched); model.SearchedArrangements.Add(arrangement); } return(View("Arrangements", model)); }
public List <Arrangement> SearchArrangements(SearchArrangements criterias) { if (criterias.Country == null && criterias.PlaceName == null) { return(new List <Arrangement>()); } string criteria = criterias.Country != null ? criterias.Country : criterias.PlaceName; List <Destination> destinations = this.SearchDestinations(criteria); destinations.OrderBy(x => x.Country); List <Arrangement> arrangements = new List <Arrangement>(); foreach (var destination in destinations) { arrangements.AddRange(arrangementRepository.GetArrangementsByDestinationId(destination.Id)); } RemoveUnsuitableArrangements(ref arrangements, criterias); return(arrangements); }
private void RemoveUnsuitableArrangements(ref List <Arrangement> arrangements, SearchArrangements criteria) { string price = SearchArrangementsPropertiesNames.PriceProperty; string type = SearchArrangementsPropertiesNames.TypeProperty; string numberOfPassangers = SearchArrangementsPropertiesNames.MaxNumberOfPassengersProperty; string duration = SearchArrangementsPropertiesNames.DurationProperty; string startDate = SearchArrangementsPropertiesNames.StartDateProperty; removeFunctionsDictionary[price].Invoke(ref arrangements, criteria.Price); removeFunctionsDictionary[numberOfPassangers].Invoke(ref arrangements, criteria.MaxNumberOfPassengers); removeFunctionsDictionary[duration].Invoke(ref arrangements, criteria.Duration); removeFunctionsDictionary[startDate].Invoke(ref arrangements, criteria.StartDate); removeFunctionsDictionary[type].Invoke(ref arrangements, criteria.Type); }