Пример #1
0
        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);
        }
Пример #4
0
        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);
        }