Exemplo n.º 1
0
        /// <summary>
        /// Atualiza grupo
        /// </summary>
        public async Task Atualizar(int id, GrupoRequest model)
        {
            Grupo entidade = this.mapper.Map <Grupo>(model);

            entidade.Id = id;

            IdentityUser usuarioAtual = await RecuperaUsuarioAtualAsync();

            // Verifica permissao do usuario atual
            GrupoUsuario grupoUsuario = await this.repositorioGrupoUsuario.ObterAsync(x => x.UsuarioId == usuarioAtual.Id &&
                                                                                      x.GrupoId == id &&
                                                                                      x.Excluido == false);

            if (grupoUsuario == null)
            {
                throw new ApiExcecao(403, "Usuario não pode excluir permissao pois não é membro do grupo");
            }
            if (grupoUsuario.PermissaoId != (int)API.Permissao.Dono &&
                grupoUsuario.PermissaoId != (int)API.Permissao.Moderador)    // Apenas o dono ou moderador pode alterar o grupo
            {
                throw new ApiExcecao(403, "Usuario não pode alterar o grupo pois não é dono ou moderador do grupo");
            }

            await this.repositorio.AtualizarAsync(entidade);
        }
Exemplo n.º 2
0
        public IHttpActionResult Insert([FromBody] GrupoRequest request)
        {
            try
            {
                //Valida objeto
                if (!ModelState.IsValid)
                {
                    return(BadRequest("Dados inválidos."));
                }

                var entity = Mapper.Map <GrupoRequest, Grupo>(request);

                _business.Insert(ref entity);

                if (entity.Id > 0)
                {
                    //Monta response
                    _result = Ok(Retorno <GrupoResponse> .Criar(true, "Inclusão Realizada Com Sucesso", Mapper.Map <Grupo, GrupoResponse>(entity)));
                }

                //Retorna o response
                return(_result);
            }
            catch (Exception)
            {
                throw new HttpResponseException(HttpStatusCode.InternalServerError);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Criar
        /// </summary>
        /// <returns>Grupo criado</returns>
        public async Task <GrupoResponse> Criar(GrupoRequest model)
        {
            Grupo entidade = this.mapper.Map <Grupo>(model);

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

            entidade = await entidadeTask;

            // Adiciona o usuario no proprio grupo que está sendo criando
            await this.repositorioGrupoUsuario.InserirAsync(new GrupoUsuario(entidade.Id, usuario.Id, (int)API.Permissao.Dono));

            return(this.mapper.Map <GrupoResponse>(entidade));
        }
Exemplo n.º 4
0
        public IHttpActionResult Update(int id, [FromBody] GrupoRequest request)
        {
            try
            {
                //Valida objeto
                if (!ModelState.IsValid)
                {
                    return(BadRequest("Dados inválidos."));
                }

                var entityInDb = _business.GetById(id);

                //Verifica se objeto existe
                if (entityInDb == null)
                {
                    return(NotFound());
                }

                //Mapeio os dados do dto para o objeto recuperado do banco, atualizando os dados do objeto do banco
                Mapper.Map(request, entityInDb);

                if (_business.Update(entityInDb))
                {
                    //Monta response
                    _result = Ok(Retorno <Grupo> .Criar(true, "Atualização Realizada Com Sucesso", entityInDb));

                    //Retorna o response
                    return(_result);
                }
                else
                {
                    return(BadRequest("Nenhum registro atualizado. Verifique os dados enviados."));
                }
            }
            catch (Exception)
            {
                throw new HttpResponseException(HttpStatusCode.InternalServerError);
            }
        }
Exemplo n.º 5
0
 public async Task <GrupoResponse> Criar([FromBody] GrupoRequest model)
 => await this.negocioGrupo.Criar(model);
Exemplo n.º 6
0
 public async Task Atualizar([FromRoute] int grupoId, [FromBody] GrupoRequest model)
 => await this.negocioGrupo.Atualizar(grupoId, model);