Пример #1
0
        private async Task <IActionResult> Enregistre(string type, VueBase vue)
        {
            RésultatEnregistrement résultat = null;

            try
            {
                résultat = await CréeUtilisateur(type, vue);

                if (résultat.ActionResult != null)
                {
                    return(résultat.ActionResult);
                }

                résultat.Role = await _roleService.CréeRole(résultat.Utilisateur);

                CréeEntité(résultat, type, vue);

                await ValideEntité(résultat, type);

                if (!ModelState.IsValid)
                {
                    if (résultat.ACréé)
                    {
                        await _service.Supprime(résultat.Utilisateur);
                    }
                    return(BadRequest(ModelState));
                }

                _roleService.AjouteSansSauver(résultat.Role);
                AjouteEntitéSansSauver(résultat, type);

                RetourDeService retour = await _service.SaveChangesAsync();

                if (retour.Type != TypeRetourDeService.Ok && résultat.ACréé)
                {
                    await _service.Supprime(résultat.Utilisateur);

                    return(SaveChangesActionResult(retour));
                }
            }
            catch (Exception ex)
            {
                if (résultat != null && résultat.ACréé)
                {
                    await _service.Supprime(résultat.Utilisateur);
                }
                throw ex;
            }

            return(await Connecte(résultat.applicationUser, true));
        }