예제 #1
0
        public async Task <IActionResult> PutFacture(int id, Facture facture)
        {
            if (id != facture.Id)
            {
                return(BadRequest("La facture passée en paramètre ne correspond pas au client demandé"));
            }

            //Attache au contexte la facture passée en paramètre, puis défini ses champs DateFacture et CodeModePaiement en tant que modifié
            _context.Attach(facture);
            _context.Entry(facture).Property("DateFacture").IsModified      = true;
            _context.Entry(facture).Property("CodeModePaiement").IsModified = true;

            try
            {
                await _context.SaveChangesAsync();

                _context.Entry(facture).Reload();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FactureExists(id))
                {
                    return(NotFound("La facture ayant pour id " + id + " n'a pas été trouvée"));
                }
                else
                {
                    return(BadRequest());
                }
            }

            return(Ok(facture));
        }
        public async Task <IActionResult> PostClient(int id, Telephone tel)
        {
            if (ClientExists(id))
            {
                if (tel.IdClient != id)
                {
                    tel.IdClient = id;
                }
                _context.Telephone.Add(tel);
            }
            else
            {
                return(NotFound("L'Id donné ne correspond à aucun de nos clients!"));
            }
            try
            {
                await _context.SaveChangesAsync();
            }

            catch (DbUpdateException)
            {
                return(BadRequest("Un conflit s'est produit lors de la mise à jour de la clé primaire. Celle-ci est déjà utilisée."));
            }
            return(Ok("Le numero du telephone a bien été rajouté"));
        }
예제 #3
0
        public async Task <IActionResult> PutReservation(Reservation reservation)
        {
            try
            {
                if (_context.Reservation.Find(reservation.NumChambre, reservation.Jour).IdClient != reservation.IdClient)
                {
                    return(Conflict("Réservation déjà existante pour un client différent."));
                }

                //On détache l'entité déjà sauvegardée en local,
                var local = _context.Reservation.Local.FirstOrDefault(r => r.NumChambre == reservation.NumChambre & r.Jour == reservation.Jour);
                _context.Entry(local).State = EntityState.Detached;

                _context.Entry(reservation).State = EntityState.Modified;

                await _context.SaveChangesAsync();

                await _context.Entry(reservation).ReloadAsync();
            }
            catch (Exception)
            {
                if (!ReservationExists(reservation.NumChambre, reservation.Jour))
                {
                    return(NotFound("Aucune réservation de cette chambre pour ce jour la."));
                }
                else
                {
                    return(BadRequest());
                }
            }

            return(Ok(reservation));
        }
예제 #4
0
        public async Task <IActionResult> PutClient(int id, Client client)
        {
            if (id != client.Id)
            {
                return(BadRequest("Le client demandé ne correspond pas à l'ID renseigné."));
            }

            _context.Entry(client).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();

                _context.Entry(client).Reload();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ClientExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    return(BadRequest());
                }
            }

            return(Ok(client));
        }
예제 #5
0
        public async Task <IActionResult> PutFacture(int id, Facture facture)
        {
            if (id != facture.Id)
            {
                return(BadRequest());
            }

            _context.Entry(facture).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FactureExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutClient(int id, Client client)
        {
            if (id != client.Id)
            {
                return(BadRequest());
            }


            _context.Entry(client).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ClientExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Ok());
        }
예제 #7
0
        public async Task <IActionResult> PutFacture(int id, Facture newFacture)
        {
            if (!_context.Facture.Any(f => f.Id == id))
            {
                return(NotFound("La facture n'existe pas."));
            }

            if (newFacture.Id > 0 && id != newFacture.Id)
            {
                return(BadRequest("L'Id donné en paramètre ne correspond pas à celui de la facture renseigné."));
            }

            var facture = await _context.Facture.FindAsync(id);

            if (facture == null)
            {
                return(NotFound("L'Id donné ne correspond pas à aucune des factures!"));
            }
            facture.DateFacture      = newFacture.DateFacture;
            facture.CodeModePaiement = newFacture.CodeModePaiement;
            _context.Entry(facture).Property("DateFacture").IsModified      = true;
            _context.Entry(facture).Property("CodeModePaiement").IsModified = true;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                return(BadRequest("Une erreur s'est produite lors de la mise à jour.\nVeuillez vérifier les valeurs de date et codeModePaiement"));
            }

            return(Ok("La mise à jour a bien été effectuée."));
        }
        public async Task <IActionResult> PutReservation([FromQuery] int clientId, Reservation reservation)
        {
            if (clientId == 0)
            {
                return(BadRequest("Pas d'Id client renseigné"));
            }
            if (reservation.Jour == DateTime.MinValue || reservation.NumChambre == 0)
            {
                return(BadRequest("Le numero du chambre et la date doivent être renseignés"));
            }

            if (!_context.Client.Any(c => c.Id == clientId))
            {
                return(NotFound("Le client avec l'id : " + clientId + " n'est pas enregistré dans notre base de données!"));
            }

            var clientReservation = _context.Reservation.Where(r => r.Jour == reservation.Jour && r.NumChambre == reservation.NumChambre).FirstOrDefault();

            if (clientReservation == null)
            {
                return(NotFound("Le client n'a pas reservé la chambre " + reservation.NumChambre + " pour la date " + reservation.Jour));
            }
            clientReservation.NbPersonnes           = reservation.NbPersonnes;
            clientReservation.HeureArrivee          = reservation.HeureArrivee;
            clientReservation.Travail               = reservation.Travail;
            _context.Entry(clientReservation).State = EntityState.Modified;

            await _context.SaveChangesAsync();

            return(Ok("Les changements ont été pris en compte"));
        }
        public async Task <IActionResult> Create([Bind("Numero,Etage,Bain,Douche,Wc,NbLits,NumTel")] Chambre chambre)
        {
            if (ModelState.IsValid)
            {
                _context.Add(chambre);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(chambre));
        }
        public async Task <IActionResult> Create([Bind("Id,IdClient,DateFacture,DatePaiement,CodeModePaiement")] Facture facture)
        {
            if (ModelState.IsValid)
            {
                _context.Add(facture);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CodeModePaiement"] = new SelectList(_context.ModePaiement, "Code", "Code", facture.CodeModePaiement);
            ViewData["IdClient"]         = new SelectList(_context.Client, "Id", "Civilite", facture.IdClient);
            return(View(facture));
        }
예제 #11
0
        public async Task <bool> AjouterClient(ClientVM client)
        {
            Client clt  = new Client();
            bool   save = false;

            try
            {
                bool exist = grandhotel.Utilisateur.Any(x => x.Email == client.EmailUtilisateur);
                if (exist)
                {
                    bool emailexist = grandhotel.Email.Any(x => x.Adresse == client.EmailUtilisateur);
                    int  id         = grandhotel.Utilisateur
                                      .Where(x => x.Email == client.EmailUtilisateur)
                                      .Select(x => x.Id)
                                      .FirstOrDefault();
                    if (!emailexist)
                    {
                        clt.CarteFidelite = client.CarteFidelite;
                        clt.Societe       = client.Societe;
                        clt.UtilisateurId = id;
                        Adresse adresse = new Adresse();
                        adresse.Rue        = client.Rue;
                        adresse.Complement = client.Complement;
                        adresse.CodePostal = client.CodePostal;
                        adresse.Ville      = client.Ville;
                        clt.Adresse        = adresse;
                        List <Telephone> tel = new List <Telephone>();
                        tel           = client.Telephone;
                        clt.Telephone = tel;
                        Email mail = new Email();
                        mail.Adresse = client.EmailUtilisateur;
                        mail.Pro     = client.EmailPro;
                        clt.Email.Add(mail);
                        grandhotel.Client.Add(clt);
                        await grandhotel.SaveChangesAsync();

                        save = true;
                    }
                }
            }
            catch (Exception ex)
            {
            }

            await MiseAJourUtilisateur(client.EmailUtilisateur, clt.Id);

            return(save);
        }
        public async Task <IActionResult> Creates()
        {
            //je recupere l'email l'email de l'utilisateur
            var user = await _userManager.GetUserAsync(User);

            var email = user.Email;
            //je recupere l'id du client avec l'email
            var id = _context.Client.Where(c => c.Email == email).Select(c => c.Id).FirstOrDefault();
            //je recupere mon objet reservation de ma session
            var reservations = HttpContext.Session.GetObjectFromJson <Reservation>(SessionKeyReservationVM);

            reservations.IdClient = id;
            var duree = reservations.NbNuit;

            //je fais une boucle pour enregistrer la reservion sur la durée du sejour
            for (int i = 0; i < duree; i++)
            {
                reservations.Jour = reservations.Jour.AddDays(i);
                _context.Add(reservations);
                //j'enregistre la reservation
                await _context.SaveChangesAsync();
            }
            //je reinitialise la date d'arrivée pour pouvoir afficher la bonne date dans ma vue
            reservations.Jour = reservations.Jour.AddDays(-(duree - 1));
            //je vide ma session pour q'un client puisse accéder
            HttpContext.Session.Remove(SessionKeyReservationVM);
            return(View(reservations));
        }
예제 #13
0
        public async Task <int> AjouterUtilisateur(Utilisateur user)
        {
            int id     = 0;
            int roleid = 0;

            try
            {
                bool exist = grandhotel.Utilisateur.Any(x => x.Email == user.Email);
                if (!exist)
                {
                    string hotel = user.Email.ToUpper();

                    string motDePasseEncode = EncodeMD5(user.MotDePasse);
                    if (!hotel.Contains("grandhotel".ToUpper()))
                    {
                        roleid = grandhotel.Role.Where(x => x.Nom == "client").Select(x => x.Id).FirstOrDefault();
                    }
                    else
                    {
                        roleid = grandhotel.Role.Where(x => x.Nom == "administrateur").Select(x => x.Id).FirstOrDefault();
                    }

                    user.MotDePasse = motDePasseEncode;
                    user.RoleId     = roleid;
                    grandhotel.Utilisateur.Add(user);
                    await grandhotel.SaveChangesAsync();
                }
                else
                {
                    return(id);
                }
            }
            catch (Exception ex)
            {
            }
            id = user.Id;
            return(id);
        }
        public async Task <IActionResult> PostClient([FromBody] Client client)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Client testEmail = await _context.Client.Where(c => c.Email == client.Email).SingleOrDefaultAsync();

            if (testEmail == null)
            {
                _context.Client.Add(client);
                await _context.SaveChangesAsync();

                int id = await _context.Client.OrderBy(c => c.Id).Select(c => c.Id).LastOrDefaultAsync();

                string idClient = id.ToString();

                return(Ok(idClient));
            }
            string mail = "Mail";

            return(BadRequest(mail));
        }
예제 #15
0
        public async Task <IActionResult> PutReservation(short id, Reservation reservation)
        {
            if (id != reservation.IdClient)
            {
                return(BadRequest("Il y a une erreur entre les paramètre passer dans l'URL et dans le corps de la requête"));
            }

            //On récupère la potentiel réservation pour s'assurer qu'elle existe
            var reservationAModifer = await _context.Reservation.Where(r => r.IdClient == id && r.NumChambre == reservation.NumChambre && r.Jour == reservation.Jour).FirstOrDefaultAsync();

            if (reservationAModifer == null)
            {
                return(NotFound("Aucune réservation n'est enregistrée pour cette chambre à cette date"));
            }
            else
            {
                reservationAModifer.NbPersonnes  = reservation.NbPersonnes;
                reservationAModifer.HeureArrivee = reservation.HeureArrivee;
                reservationAModifer.Travail      = reservation.Travail;

                _context.Entry(reservationAModifer).State = EntityState.Modified;

                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateException e)
                {
                    var sqle = e.InnerException as SqlException;

                    return(BadRequest("Erreur lors de la modification de la reservation : " + sqle.Number));
                }

                return(Ok("Votre reservation a été modifiée avec succès"));
            }
        }
예제 #16
0
        public async Task <int> AjouterReservation(Reservation reserv)
        {
            int i = 0;

            try
            {
                grandhotel.Reservation.Add(reserv);
                await grandhotel.SaveChangesAsync();

                i = 1;
            }
            catch (Exception ex)
            {
            }
            return(i);
        }
예제 #17
0
        public async Task <IActionResult> Create(CreationClientVM clientVM)
        {
            if (ModelState.IsValid)
            {
                //Verification
                #region
                var user = await _userManager.GetUserAsync(User);

                string teldomi = await _context.Telephone.Where(t => t.Numero == clientVM.TelephoneDom).Select(t => t.Numero).SingleOrDefaultAsync();

                string telport = await _context.Telephone.Where(t => t.Numero == clientVM.TelephonePort).Select(t => t.Numero).SingleOrDefaultAsync();

                if (teldomi != null)
                {
                    clientVM.StatusMessage = "Numéro de telephone déja existant";
                    return(View(clientVM));
                }

                if (telport != null)
                {
                    clientVM.StatusMessage = "Numéro de telephone déja existant";
                    return(View(clientVM));
                }

                //Test si email unique

                Client clientAncien = _context.Client.Where(c => c.Email == user.Email).FirstOrDefault();
                if (clientAncien != null)
                {
                    clientVM.StatusMessage = "Erreur : Adresse Mail deja utilisée pour un compte...";
                    return(View(clientVM));
                }
                #endregion

                //Création du client
                #region
                Client client = new Client
                {
                    Civilite      = clientVM.Civilite,
                    Nom           = clientVM.Nom.ToUpper(),
                    Prenom        = clientVM.Prenom[0].ToString().ToUpper() + clientVM.Prenom.Substring(1),
                    Email         = user.Email,
                    CarteFidelite = false
                };
                _context.Add(client);
                await _context.SaveChangesAsync();

                int id = _context.Client.OrderBy(c => c.Id).Select(c => c.Id).LastOrDefault();
                clientVM.id = id;
                #endregion

                //Création adresse
                #region
                if (clientVM.AdresseVille != null && clientVM.AdresseRue != null && clientVM.AdresseCodePostal != null)
                {
                    Adresse Adresse = new Adresse()
                    {
                        IdClient   = clientVM.id,
                        Rue        = clientVM.AdresseRue,
                        CodePostal = clientVM.AdresseCodePostal,
                        Ville      = clientVM.AdresseVille.ToUpper()
                    };

                    _context.Add(Adresse);
                    await _context.SaveChangesAsync();
                }
                #endregion

                //Création/MAJ Telephone Domilcile
                #region
                if (clientVM.TelephoneDom.Length == 10)
                {
                    Telephone telDom = new Telephone()
                    {
                        IdClient = clientVM.id,
                        CodeType = "F",
                        Numero   = clientVM.TelephoneDom,
                        Pro      = clientVM.ProDom
                    };

                    if (teldomi == null)
                    {
                        _context.Add(telDom);
                        await _context.SaveChangesAsync();
                    }
                }
                ;
                #endregion

                //Création Telephone Portable
                #region
                if (clientVM.TelephonePort.Length == 10)
                {
                    Telephone telPort = new Telephone()
                    {
                        IdClient = clientVM.id,
                        CodeType = "M",
                        Numero   = clientVM.TelephonePort,
                        Pro      = clientVM.ProPort
                    };

                    if (telport == null)
                    {
                        _context.Add(telPort);
                        await _context.SaveChangesAsync();
                    }
                }
                ;
                #endregion

                var reservations = HttpContext.Session.GetObjectFromJson <Reservation>(SessionKeyReservationVM);

                //Si réussi, redirect vers change Account
                if (reservations != null)
                {
                    return(RedirectToAction("Creates", "Reservations"));
                }
                else
                {
                    return(RedirectToAction("Index", "Manage"));
                }
            }
            return(View(clientVM));
        }
예제 #18
0
        public async Task <IActionResult> ChangeAccount(CreationClientVM clientVM)
        {
            if (!ModelState.IsValid)
            {
                clientVM.StatusMessage = "Erreur : Veuillez rensignez toutes les coordonnées correctement";
                return(View(clientVM));
            }

            var user = await _userManager.GetUserAsync(User);

            try
            {
                //Update Client
                #region
                Client clientAncien = await _context.Client.Where(c => c.Email == user.Email).SingleOrDefaultAsync();

                clientAncien.Civilite = clientVM.Civilite;
                clientAncien.Nom      = clientVM.Nom.ToUpper();
                // Le nom et la premiere lettre du prénom en majuscule
                clientAncien.Prenom = clientVM.Prenom[0].ToString().ToUpper() + clientVM.Prenom.Substring(1);
                clientAncien.Email  = user.Email;

                clientVM.id = clientAncien.Id;
                _context.Update(clientAncien);
                await _context.SaveChangesAsync();

                #endregion

                //Update Adresse
                if (clientVM.AdresseVille != null && clientVM.AdresseRue != null && clientVM.AdresseCodePostal != null)
                {
                    Adresse adresseAncienne = await _context.Adresse.Where(a => a.IdClient == clientVM.id).SingleOrDefaultAsync();

                    adresseAncienne.IdClient   = clientVM.id;
                    adresseAncienne.Rue        = clientVM.AdresseRue;
                    adresseAncienne.CodePostal = clientVM.AdresseCodePostal;
                    adresseAncienne.Ville      = clientVM.AdresseVille.ToUpper();

                    _context.Update(adresseAncienne);
                    await _context.SaveChangesAsync();
                }

                //Update Telephones
                #region
                //Si numéro non identique
                if (clientVM.TelephoneDom != clientVM.TelephonePort)
                {
                    //Domicile
                    if (clientVM.TelephoneDom.Length == 10)
                    {
                        string telClient = await _context.Telephone.Where(t => t.IdClient == clientVM.id && t.CodeType == "F").Select(t => t.Numero).SingleOrDefaultAsync();

                        string telExistDeja = await _context.Telephone.Where(t => t.Numero == clientVM.TelephoneDom).Select(t => t.Numero).SingleOrDefaultAsync();

                        Telephone telDom = await _context.Telephone.Where(t => t.IdClient == clientVM.id && t.CodeType == "F").SingleOrDefaultAsync();

                        // Si le client n'avait pas de numéro
                        if (telClient == null)
                        {
                            Telephone telNouveau = new Telephone()
                            {
                                IdClient = clientVM.id,
                                CodeType = "F",
                                Numero   = clientVM.TelephoneDom,
                                Pro      = clientVM.ProDom
                            };

                            _context.Telephone.Add(telNouveau);
                            await _context.SaveChangesAsync();
                        }
                        // si le numéro n'existe pas dans la BDD ET que le client a déja un numéro
                        else if (telExistDeja == null)
                        {
                            _context.Remove(telDom);
                            await _context.SaveChangesAsync();

                            telDom.IdClient = clientVM.id;
                            telDom.Numero   = clientVM.TelephoneDom;
                            telDom.Pro      = clientVM.ProDom;
                            telDom.CodeType = "F";

                            _context.Add(telDom);
                            await _context.SaveChangesAsync();
                        }
                        else if (clientVM.TelephoneDom != telDom.Numero)
                        {
                            clientVM.TelephonePort = "";
                            ViewBag.statutmssg     = "Erreur : Numero de telephone Portable déja utilisé..";
                            return(View());
                        }
                    }
                    // Si veut simplement supprimer un telephone
                    else
                    {
                        Telephone telDom = await _context.Telephone.Where(t => t.IdClient == clientVM.id && t.CodeType == "F").SingleOrDefaultAsync();

                        _context.Remove(telDom);
                        await _context.SaveChangesAsync();
                    }

                    //Portable
                    if (clientVM.TelephonePort.Length == 10)
                    {
                        string telClient = await _context.Telephone.Where(t => t.IdClient == clientVM.id && t.CodeType == "M").Select(t => t.Numero).SingleOrDefaultAsync();

                        string telExist = await _context.Telephone.Where(t => t.Numero == clientVM.TelephonePort).Select(t => t.Numero).SingleOrDefaultAsync();

                        Telephone telPort = await _context.Telephone.Where(t => t.IdClient == clientVM.id && t.CodeType == "M").SingleOrDefaultAsync();


                        // Si le client n'avait pas de numéro
                        if (telClient == null)
                        {
                            Telephone telNouveau = new Telephone()
                            {
                                IdClient = clientVM.id,
                                CodeType = "M",
                                Numero   = clientVM.TelephonePort,
                                Pro      = clientVM.ProPort
                            };

                            _context.Telephone.Add(telNouveau);
                            await _context.SaveChangesAsync();
                        }
                        // si le numéro n'existe pas dans la BDD ET que le client a déja un numéro
                        else if (telExist == null)
                        {
                            _context.Remove(telPort);
                            await _context.SaveChangesAsync();

                            telPort.IdClient = clientVM.id;
                            telPort.Numero   = clientVM.TelephonePort;
                            telPort.Pro      = clientVM.ProPort;
                            telPort.CodeType = "M";

                            _context.Add(telPort);
                            await _context.SaveChangesAsync();
                        }
                        else if (clientVM.TelephonePort != telPort.Numero)
                        {
                            clientVM.TelephonePort = "";
                            ViewBag.statutmssg     = "Erreur : Numero de telephone Portable déja utilisé..";
                            return(View());
                        }
                    }
                    // Si veut simplement supprimer un telephone
                    else
                    {
                        Telephone telPort = await _context.Telephone.Where(t => t.IdClient == clientVM.id && t.CodeType == "M").SingleOrDefaultAsync();

                        _context.Remove(telPort);
                        await _context.SaveChangesAsync();
                    }
                }

                else
                {
                    ViewBag.statutmssg = "Erreur : Numeros identiques...";
                    return(View());
                }
                #endregion
            }
            catch (Exception e)
            {
                ViewBag.statutmssg = "Erreur : " + e.Message;
                return(View());
            }

            ViewBag.statutmssg = "Compte modifié avec succés";
            return(View());
        }