Example #1
0
        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);
                }
            }
        }