//-------------------------------------------------------------------- /** * Retourne la liste de chambre en fonction des paramètres: * Type de chambre, Date_start, date_end */ public List <bedroom> GetBedrooms(DateTime date_start, DateTime date_end, bedroom_type b_type = null) { // Récupération de toutes les chambres disponibles en fonction du type et List <int> temp_bedroom_number = entities.Database.SqlQuery <int>("SELECT bedroom_number " + "FROM bedroom " + "WHERE bedroom_number NOT IN(SELECT br.bedroom_number " + "FROM bedroom br " + "LEFT JOIN booking bk ON br.bedroom_number = bk.bedroom_number " + "WHERE bk.booking_start >= '" + date_start.ToString("yyyy-MM-dd") + "' " + "AND bk.booking_end <= '" + date_end.ToString("yyyy-MM-dd") + "' " + "ORDER BY bedroom_number ASC) ORDER BY bedroom_number").ToList <int>(); /** * Filtre les chambres disponibles en fonction des dates en paramètre. * temp_bedroom_number.Contains( x.bedroom_number ) représente le where IN */ var query = entities.bedroom.Select(x => x).Where(x => temp_bedroom_number.Contains(x.bedroom_number)); /** * Filtre le type de chambre * Si le type de chambre est différent de null alors on récupère * toutes les chambres de ce type */ if (b_type != null) { query = query.Where(x => x.bedroom_type.bedroom_type1 == b_type.bedroom_type1); } return(query.ToList()); }
//-------------------------------------------------------------------- /** * Récupère toutes les chambres selons les filtres */ public List <bedroom> GetBedrooms(string statut = "", int floor = 0, bedroom_type b_type = null) { // Récupère toutes les chambres var query = entities.bedroom.Select(x => x); // Si un statut est mis dans les filtres de recherche if (!statut.Equals("")) { query = query.Where(x => x.bedroom_status.Equals(statut)); } // Si un étage est mis dans les filtres de recherche if (floor > 0) { query = query.Where(x => x.bedroom_floor == floor); } // Si un type de chambre est mis dans les filtres if (b_type != null) { query = query.Where(x => x.bedroom_type.bedroom_type1 == b_type.bedroom_type1); } return(query.ToList()); }