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