protected async Task <RetourDeService <Utilisateur> > CréeUtilisateur(ICréeCompteVue vue) { RetourDeService <Utilisateur> retour = await UtilisateurService.CréeUtilisateur(vue); if (retour.Type == TypeRetourDeService.IdentityError) { IEnumerable <IdentityError> errors = (IEnumerable <IdentityError>)retour.Objet; foreach (IdentityError error in errors) { if (error.Code == IdentityErrorCodes.DuplicateUserName) { ErreurDeModel.AjouteAModelState(ModelState, "email", "nomPris"); } else { ErreurDeModel.AjouteAModelState(ModelState, error.Code); } } } return(retour); }
/// <summary> /// Ajoute à la bdd un nouvel Utilisateur à partir de son Email et de son mot de passe. /// </summary> /// <param name="vue">objet ayant l'Email et le Password de l'utilisateur à créer</param> /// <returns></returns> public async Task <RetourDeService <Utilisateur> > CréeUtilisateur(ICréeCompteVue vue) { Utilisateur applicationUser = new Utilisateur { UserName = vue.Email, Email = vue.Email, Etat = EtatUtilisateur.Nouveau }; try { IdentityResult identityResult = await _userManager.CreateAsync(applicationUser, vue.Password); if (!identityResult.Succeeded) { return(new RetourDeService <Utilisateur>(identityResult)); } ArchiveUtilisateur archive = new ArchiveUtilisateur { Id = applicationUser.Id, Email = applicationUser.Email, Etat = EtatUtilisateur.Nouveau, Date = DateTime.Now }; _context.ArchiveUtilisateur.Add(archive); await SaveChangesAsync(); return(new RetourDeService <Utilisateur>(applicationUser)); } catch (DbUpdateConcurrencyException) { return(new RetourDeService <Utilisateur>(TypeRetourDeService.ConcurrencyError)); } catch (Exception) { return(new RetourDeService <Utilisateur>(TypeRetourDeService.Indéterminé)); } }