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()); }