Beispiel #1
0
        private List <Classi.Composizione.ComposizioneSquadre> FiltraSquadre(ComposizionePartenzaAvanzataQuery query, IEnumerable <Classi.Composizione.ComposizioneSquadre> lstCompSquadre, Tipologia tipologia90, Turno turnoCorrente, Turno turnoPrecedente, Turno turnoSuccessivo)
        {
            return(lstCompSquadre.Where(s =>
            {
                if (!string.IsNullOrEmpty(query.Filtro.RicercaSquadre))
                {
                    return s.Squadra.Codice.Contains(query.Filtro.RicercaSquadre);
                }
                return true;
            }).Where(s =>
            {
                if (query.Filtro.CodiceDistaccamento != null && query.Filtro.CodiceDistaccamento.All(c => c != ""))
                {
                    return query.Filtro.CodiceDistaccamento.Contains(s.Squadra.Distaccamento.Codice);
                }
                return true;
            }).Where(s =>
            {
                if (query.Filtro.Squadre != null && query.Filtro.Squadre.Count > 0 && query.Filtro.Squadre.FirstOrDefault().Distaccamento.Codice != null)
                {
                    return s.Squadra.Distaccamento.Codice == query.Filtro.Squadre.FirstOrDefault().Distaccamento.Codice;
                }
                return true;
            }).Where(s =>
            {
                if (query.Filtro.Mezzo != null && query.Filtro.Mezzo.Distaccamento.Codice != null)
                {
                    return s.Squadra.Distaccamento.Codice == query.Filtro.Mezzo.Distaccamento.Codice;
                }
                return true;
            }).Where(s => s.Squadra.DiEmergenza == query.Filtro.SquadreDiEmergenza)
                   .Where(s =>
            {
                if (!query.Richiesta.Tipologie.Contains(tipologia90.Codice))
                {
                    return s.Squadra.ColonnaMobile == query.Filtro.SquadreColonnaMobile;
                }
                return true;
            })

                   //FILTRO TURNO FUNZIONANTE SOLO IN TEST
#if !DEBUG
                   .Where(s =>
            {
                if (turnoPrecedente != null)
                {
                    return turnoPrecedente.Contains(s.Squadra.Turno);
                }
                else if (turnoPrecedente != null)
                {
                    return turnoSuccessivo.Contains(s.Squadra.Turno);
                }
                return turnoCorrente.Codice.Contains(s.Squadra.Turno);
            })
#endif
                   //QUI MASCHERO I RISULTATI MOSTRANDO, SEMPRE, ALMENO UNA SQUADRA PER TURNO
#if DEBUG
                   .Select(s =>
            {
                switch (query.Filtro.Turno)
                {
                case FiltroTurnoRelativo.Precedente: s.Squadra.Turno = turnoPrecedente.Codice; break;

                case FiltroTurnoRelativo.Successivo: s.Squadra.Turno = turnoSuccessivo.Codice; break;

                case null: s.Squadra.Turno = turnoCorrente.Codice; break;
                }

                return s;
            })
                   .Where(s => s != null)
#endif
                   .OrderByDescending(c => c.Squadra.IndiceOrdinamento)
                   .ToList());
        }