Esempio n. 1
0
        public async Task <Execute <TicketEntity> > SignUpAsync(SignUpEntity signUp)
        {
            var result = new Execute <TicketEntity>();

            if (!await ValidateSignUp.IsSatisfiedByAsync(signUp, result))
            {
                return(result);
            }

            var(person, user, provider) = await CastNewUser(signUp);

            using (var db = new Context.XCommonDbContext())
            {
                using (var transaction = await db.Database.BeginTransactionAsync())
                {
                    result.AddMessage(await PeopleBusiness.SaveAsync(person, db));
                    result.AddMessage(await UsersBusiness.SaveAsync(user, db));
                    result.AddMessage(await UsersProvidersBusiness.SaveAsync(provider, db));

                    if (!result.HasErro)
                    {
                        transaction.Commit();
                    }
                }
            }

            if (!result.HasErro)
            {
                result.Entity = new TicketEntity
                {
                    Culture = person.Culture,
                    Key     = person.IdPerson,
                    Name    = person.Name,
                    Roles   = await GetUserRolesAsync(user)
                };
            }

            return(result);
        }