public static ViaggioSearch getViaggioSearchParams(ViaggioSearchViewModel searchViewModelParams) { ViaggioSearch searchModelParams = null; if (searchViewModelParams != null) { searchModelParams = new ViaggioSearch() { SearchString = searchViewModelParams.SearchString, DataPartenzaMin = searchViewModelParams.DataPartenzaMin, DataPartenzaMax = searchViewModelParams.DataPartenzaMax, PrezzoMin = searchViewModelParams.PrezzoMin, PrezzoMax = searchViewModelParams.PrezzoMax, PassaDa = getGeoLocationModelFromViewModel(searchViewModelParams.PassaDa), ArrivaA = getGeoLocationModelFromViewModel(searchViewModelParams.ArrivaA), PassaDaTipoSearch = searchViewModelParams.PassaDaTipoSearch, ArrivaATipoSearch = searchViewModelParams.ArrivaATipoSearch, idAgenzia = searchViewModelParams.idAgenzia, searchApproved = searchViewModelParams.searchApproved, searchUnapproved = searchViewModelParams.searchUnapproved, searchMine = searchViewModelParams.searchMine, searchTheirs = searchViewModelParams.searchTheirs }; } return searchModelParams; }
public List<Viaggio> Search(ViaggioSearch searchParams) { using (var om = new OperationManager()) { try { var session = om.BeginOperation(); var viaggiFound = getAll<Viaggio>(); if (searchParams != null) { if ( !(searchParams.searchApproved && searchParams.searchUnapproved) ) { if (searchParams.searchApproved) viaggiFound = viaggiFound.Where(v => v.Approvato == true); if (searchParams.searchUnapproved) viaggiFound = viaggiFound.Where(v => v.Approvato == false); } if (!(searchParams.searchMine && searchParams.searchTheirs)) { if (searchParams.searchMine) viaggiFound = viaggiFound.Where(v => v.Agenzia.Id == searchParams.idAgenzia); if (searchParams.searchTheirs) viaggiFound = viaggiFound.Where(v => v.Agenzia.Id != searchParams.idAgenzia); } if (!String.IsNullOrEmpty(searchParams.SearchString)) viaggiFound = viaggiFound.Where(v => v.Nome.ToUpper().StartsWith(searchParams.SearchString.ToUpper())); if (searchParams.DataPartenzaMin != null) viaggiFound = viaggiFound.Where(v => v.DataPartenza >= searchParams.DataPartenzaMin); if (searchParams.DataPartenzaMax != null) viaggiFound = viaggiFound.Where(v => v.DataPartenza <= searchParams.DataPartenzaMax); if (searchParams.PrezzoMin != null) viaggiFound = viaggiFound.Where(v => v.PrezzoStandard >= searchParams.PrezzoMin); if (searchParams.PrezzoMax != null) viaggiFound = viaggiFound.Where(v => v.PrezzoStandard <= searchParams.PrezzoMax); if (searchParams.PassaDa != null) viaggiFound = AddTappaSearchFilter(viaggiFound, searchParams.PassaDa, searchParams.PassaDaTipoSearch, TipoTappa.PICK_UP_POINT); if (searchParams.ArrivaA != null) viaggiFound = AddTappaSearchFilter(viaggiFound, searchParams.ArrivaA, searchParams.ArrivaATipoSearch, TipoTappa.DESTINAZIONE); } var result = viaggiFound.ToList(); om.CommitOperation(); return result; } catch (Exception ex) { om.RollbackOperation(); string msg = String.Format("Errore nella ricerca viaggio"); logger.ErrorException(msg, ex); throw new Exception(msg, ex); } } }