Beispiel #1
0
        /// <summary>
        /// Criar grupo com usuarios
        /// </summary>
        /// <returns>Grupo criado</returns>
        public async Task <GrupoResponse> CriarComUsuarios(GrupoComUsuariosRequest model)
        {
            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                Grupo entidadeGrupo = this.mapper.Map <Grupo>(model.Grupo);
                List <IdentityUser> entidadeUsuarios = this.mapper.Map <List <IdentityUser> >(model.Usuarios);

                // Cria um novo grupo e recupera o usuario atual
                Task <IdentityUser> usuarioTask  = RecuperaUsuarioAtualAsync();
                Task <Grupo>        entidadeTask = this.repositorio.InserirAsync(entidadeGrupo);
                IdentityUser        usuario      = await usuarioTask;
                entidadeGrupo = await entidadeTask;

                entidadeUsuarios = RecuperaUsuarios(entidadeUsuarios, usuario);

                foreach (IdentityUser item in entidadeUsuarios)
                {
                    GrupoUsuario relacionamento;
                    if (item.UserName.ToUpper() == usuario.UserName.ToUpper())
                    {
                        relacionamento = new GrupoUsuario(entidadeGrupo.Id, item.Id, (int)API.Permissao.Dono); // usuario Dono
                    }
                    else
                    {
                        relacionamento = new GrupoUsuario(entidadeGrupo.Id, item.Id, (int)API.Permissao.Membro); // Usuario contribuidor
                    }
                    // Adiciona o usuario no proprio grupo que está sendo criando
                    await this.repositorioGrupoUsuario.InserirAsync(relacionamento);
                }

                scope.Complete();
                return(this.mapper.Map <GrupoResponse>(entidadeGrupo));
            }
        }
 public async Task <GrupoResponse> CriarComUsuarios([FromBody] GrupoComUsuariosRequest model)
 => await this.negocioGrupo.CriarComUsuarios(model);