private void MenuRechercher() { string villeHotel = SaisieHelper.SaisirChaine(CHAINE_VILLE, false); DateTime dateArrivee = SaisieHelper.SaisirDate(CHAINE_DATE_ARRIVEE, true); DateTime dateDepart = DateTime.MaxValue; if (dateArrivee != default) { dateDepart = SaisieHelper.SaisirDate(CHAINE_DATE_DEPART, true); } else { dateArrivee = DateTime.MinValue; } if (dateArrivee > dateDepart) { throw new PeriodeInvalideException(dateArrivee, dateDepart); } int nbPersonne = SaisieHelper.SaisirEntierPositif(CHAINE_NOMBRE_PERSONNE, true); int nombreEtoiles = SaisieHelper.SaisirEntierPositif(CHAINE_NOMBRE_ETOILES, true); List <Offre> offres = new List <Offre>(); foreach (ClientRechercheHotelService client in Services) { RequeteRecherche requete = new RequeteRecherche(); requete.IdentifiantAgence = identifiantAgence; requete.MotDePasseAgence = motDePasseAgence; requete.VilleHotel = villeHotel; requete.NombrePersonnes = nbPersonne; requete.DateArrivee = dateArrivee; requete.DateDepart = dateDepart; requete.NombreEtoiles = nombreEtoiles; offres.AddRange(client.Rechercher(requete).Result); } foreach (Offre offre in offres) { AfficherResultat(offre); Offres.Add(offre); } }
public List <OffreAgence> PostAsync([FromBody] RequeteOffreAgence requete) { List <ClientRechercheHotelService> clients = new List <ClientRechercheHotelService>(); clients.Add(new ClientRechercheHotelService("https://localhost:44393/hotel1/Recherche")); clients.Add(new ClientRechercheHotelService("https://localhost:44309/hotel2/Recherche")); List <OffreAgence> offres = new List <OffreAgence>(); foreach (ClientRechercheHotelService client in clients) { RequeteRecherche requeteRecherche = new RequeteRecherche { IdentifiantAgence = "abcd", MotDePasseAgence = "efgh", NombrePersonnes = requete.NombrePersonnes, DateArrivee = requete.DateArrivee, DateDepart = requete.DateDepart, VilleHotel = requete.Ville, NombreEtoiles = requete.NombreEtoiles }; foreach (Offre offre in client.Rechercher(requeteRecherche).Result) { offres.Add(new OffreAgence { NomHotel = offre.NomHotel, VilleHotel = offre.VilleHotel, AdresseHotel = offre.AdresseHotel, NombreEtoiles = offre.NombreEtoiles, NombreDeLits = offre.NombreDeLits, Prix = offre.Prix, NomAgence = "Agence Francis", HotelId = offre.HotelId, ChambreId = offre.ChambreId }); } } return(offres); }
public async Task <List <Offre> > Rechercher(RequeteRecherche requete) { var uri = string.Format(Url, string.Empty); var requeteJson = JsonConvert.SerializeObject(requete); var buffer = System.Text.Encoding.UTF8.GetBytes(requeteJson); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await Client.PostAsync(uri, byteContent); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); List <Offre> offres = JsonConvert.DeserializeObject <List <Offre> >(content); return(offres); } throw new ClientRechercheHotelServiceException(response.StatusCode, response.ReasonPhrase, Url); }
public async Task <ActionResult <IEnumerable <HotelModel.Offre> > > Recherche([FromBody] RequeteRecherche requete) { List <HotelModel.Offre> resultat = new List <HotelModel.Offre>(); List <HotelModel.Agence> agences = await _context.Agences.ToListAsync(); HotelModel.Agence agence = null; foreach (HotelModel.Agence a in agences) { if (a.IdentifiantAgence == requete.IdentifiantAgence && a.MotDePasseAgence == requete.MotDePasseAgence) { agence = a; } } List <HotelModel.Chambre> chambres = await _context.Chambres.ToListAsync(); List <HotelModel.Reservation> reservations = await _context.Reservations.ToListAsync(); foreach (HotelModel.Chambre c in chambres) { bool litOk = c.NombreDeLits >= requete.NombrePersonnes; bool dateOk = c.estDisponible(requete.DateArrivee, requete.DateDepart, reservations); bool villeOk = requete.VilleHotel == _context.VilleHotel(); bool etoilesOk = requete.NombreEtoiles <= _context.NombreEtoiles(); if (litOk && dateOk && villeOk && etoilesOk) { HotelModel.Offre offre = new HotelModel.Offre { NombreDeLits = c.NombreDeLits, DateArrivee = requete.DateArrivee, DateDepart = requete.DateDepart, Prix = c.PrixCalcule(agence), ChambreId = c.Id, HotelId = _context.IdentifiantHotel(), UrlReservation = Request.Scheme + "://" + Request.Host + Request.PathBase + Url.Action("Reserver", "Reservation"), ImageChambreUrl = c.ImageUrl, NomHotel = _context.NomHotel(), VilleHotel = _context.VilleHotel(), AdresseHotel = _context.AdresseHotel(), NombreEtoiles = _context.NombreEtoiles() }; _context.Offres.Add(offre); _context.SaveChanges(); resultat.Add(offre); } } return(resultat); }