public async Task <OrcamentoItemAplicacaoViewModel> Handle(AdicionarOrcamentoItemAplicacaoCommand request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.EDITAR);

            var existeOrcamento = await _context.Orcamentos.AnyAsync(e => e.Id == request.IdOrcamento);

            if (!existeOrcamento)
            {
                throw new NotFoundException(nameof(Orcamento), request.IdOrcamento);
            }

            var existe = await _context.OrcamentoItemAplicacoes.AnyAsync(e => e.IdOrcamento == request.IdOrcamento && e.Nome.ToLower().Equals(request.Nome.ToLower()));

            if (existe)
            {
                throw new BusinessException(string.Format("Item já cadastrado com esse nome [{0}]", request.Nome));
            }

            var entity = _mapper.Map <OrcamentoItemAplicacao>(request);

            try
            {
                _context.OrcamentoItemAplicacoes.Add(entity);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(_mapper.Map <OrcamentoItemAplicacaoViewModel>(entity));
        }
Exemplo n.º 2
0
        public async Task <OrcamentoValorViewModel> Handle(AdicionarOrcamentoValorCommand request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.EDITAR);

            var existeOrcamento = await _context.Orcamentos.AnyAsync(e => e.Id == request.IdOrcamento);

            if (!existeOrcamento)
            {
                throw new NotFoundException(nameof(Orcamento), request.IdOrcamento);
            }

            var existe = await _context.OrcamentoValores.AnyAsync(e => e.IdOrcamento == request.IdOrcamento && e.ValorHora == request.ValorHora && e.Multiplicador == request.Multiplicador);

            if (existe)
            {
                throw new BusinessException(string.Format("Valor já cadastrado com esse valor hora [{0}] e multiplicador [{1}]", request.ValorHora, request.Multiplicador));
            }

            var entity = _mapper.Map <OrcamentoValor>(request);

            try
            {
                _context.OrcamentoValores.Add(entity);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(_mapper.Map <OrcamentoValorViewModel>(entity));
        }
Exemplo n.º 3
0
        public async Task <OrcamentoViewModel> Handle(EditarOrcamentoCommand request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.Id, OrcamentoPermissaoEnum.EDITAR);

            var entidade = await _context.Orcamentos.FindAsync(request.Id);

            if (entidade == null)
            {
                throw new NotFoundException(nameof(Orcamento), request.Id);
            }

            try
            {
                _mapper.Map(request, entidade);

                _context.Orcamentos.Update(entidade);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(_mapper.Map <OrcamentoViewModel>(entidade));
        }
        public async Task <List <OrcamentoItemAplicacaoViewModel> > Handle(SearchOrcamentoItemAplicacaoQuery request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.VISUALIZAR);

            var query = _context.OrcamentoItemAplicacoes.Where(e => e.IdOrcamento == request.IdOrcamento);

            var data = await query.ToListAsync();

            return(_mapper.Map <List <OrcamentoItemAplicacaoViewModel> >(data));
        }
        public async Task <OrcamentoUsuarioViewModel> Handle(AdicionarOrcamentoUsuarioCommand request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.ADMIN);

            var existeOrcamento = await _context.Orcamentos.AnyAsync(e => e.Id == request.IdOrcamento);

            if (!existeOrcamento)
            {
                throw new NotFoundException(nameof(Orcamento), request.IdOrcamento);
            }

            var existeUsuario = await _context.Usuarios.AnyAsync(e => e.Id == request.IdUsuario);

            if (!existeUsuario)
            {
                throw new NotFoundException("Usuário não encontrado");
            }

            var existe = await _context.OrcamentoUsuarios.AnyAsync(e => e.IdOrcamento == request.IdOrcamento && e.IdUsuario == request.IdUsuario);

            if (existe)
            {
                throw new BusinessException("Usuário já adicionado ao orçamento");
            }

            var permissoes = (request.Permissoes ?? new List <int>()).Distinct().ToList();

            var permissoesInvalidas = permissoes.Except(OrcamentoPermissaoSeed.Seeds.Select(e => e.Id).ToList()).ToList();

            if (permissoesInvalidas.Count() > 0)
            {
                throw new BusinessException(string.Format("Permissões ([{0}]) inválidas", string.Join(", ", permissoesInvalidas)));
            }

            var entidade = new OrcamentoUsuario();

            try
            {
                _context.OrcamentoUsuarios.Add(entidade);

                var lista = MontarListaPermissoes(permissoes, entidade);
                _context.OrcamentoUsuarioPermissoes.AddRange(lista);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(_mapper.Map <OrcamentoUsuarioViewModel>(entidade));
        }
        public async Task <OrcamentoViewModel> Handle(GetOrcamentoQuery request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.Id, OrcamentoPermissaoEnum.VISUALIZAR);

            var orcamentoData = await _context.Orcamentos.FindAsync(request.Id);

            if (orcamentoData == null)
            {
                throw new NotFoundException(nameof(Orcamento), request.Id);
            }

            var data = _mapper.Map <OrcamentoViewModel>(orcamentoData);

            return(data);
        }
        public async Task <OrcamentoUsuarioViewModel> Handle(EditarOrcamentoUsuarioCommand request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.ADMIN);

            var entidade = await _context.OrcamentoUsuarios.FindAsync(request.Id);

            if (entidade == null)
            {
                throw new NotFoundException("Orçamento usuário", request.Id);
            }

            if (entidade.IdOrcamento != request.IdOrcamento)
            {
                throw new BusinessException("Item não pertence ao orçamento");
            }

            var permissoes = (request.Permissoes ?? new List <int>()).Distinct().ToList();

            var permissoesInvalidas = permissoes.Except(OrcamentoPermissaoSeed.Seeds.Select(e => e.Id).ToList()).ToList();

            if (permissoesInvalidas.Count() > 0)
            {
                throw new BusinessException(string.Format("Permissões ([{0}]) inválidas", string.Join(", ", permissoesInvalidas)));
            }

            var permissoesEntidades = await _context.OrcamentoUsuarioPermissoes.Where(e => e.IdOrcamentoUsuario == request.Id).ToListAsync();

            try
            {
                permissoesEntidades.ForEach(x => x.Permite = permissoes.Contains(x.IdPermissao));

                _context.OrcamentoUsuarioPermissoes.UpdateRange(permissoesEntidades);

                _context.OrcamentoUsuarios.Update(entidade);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(_mapper.Map <OrcamentoUsuarioViewModel>(entidade));
        }
Exemplo n.º 8
0
        public async Task <OrcamentoItemAplicacaoViewModel> Handle(EditarOrcamentoItemAplicacaoCommand request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.EDITAR);

            var entidade = await _context.OrcamentoItemAplicacoes.FindAsync(request.Id);

            if (entidade == null)
            {
                throw new NotFoundException("Item", request.Id);
            }

            if (entidade.IdOrcamento != request.IdOrcamento)
            {
                throw new BusinessException("Item não pertence ao orçamento");
            }

            var existe = await _context.OrcamentoItemAplicacoes.AnyAsync(e => e.Id != entidade.Id && e.IdOrcamento == request.IdOrcamento && e.Nome.ToLower().Equals(request.Nome.ToLower()));

            if (existe)
            {
                throw new BusinessException(string.Format("Item já cadastrado com esse nome [{0}]", request.Nome));
            }

            try
            {
                _mapper.Map(request, entidade);

                _context.OrcamentoItemAplicacoes.Update(entidade);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(_mapper.Map <OrcamentoItemAplicacaoViewModel>(entidade));
        }
Exemplo n.º 9
0
        public async Task <OrcamentoValorViewModel> Handle(EditarOrcamentoValorCommand request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.EDITAR);

            var entidade = await _context.OrcamentoValores.FindAsync(request.Id);

            if (entidade == null)
            {
                throw new NotFoundException("Valor", request.Id);
            }

            if (entidade.IdOrcamento != request.IdOrcamento)
            {
                throw new BusinessException("Valor não pertence ao orçamento");
            }

            var existe = await _context.OrcamentoValores.AnyAsync(e => e.Id != request.Id && e.IdOrcamento == request.IdOrcamento && e.ValorHora == request.ValorHora && e.Multiplicador == request.Multiplicador);

            if (existe)
            {
                throw new BusinessException(string.Format("Valor já cadastrado com esse valor hora [{0}] e multiplicador [{1}]", request.ValorHora, request.Multiplicador));
            }

            try
            {
                _mapper.Map(request, entidade);

                _context.OrcamentoValores.Update(entidade);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(_mapper.Map <OrcamentoValorViewModel>(entidade));
        }
        public async Task <List <UsuarioViewModel> > Handle(SearchUsuarioOrcamentoUsuarioQuery request, CancellationToken cancellationToken)
        {
            await _orcamentoAuthBaseApplication.VerificarPermissao(request.IdOrcamento, OrcamentoPermissaoEnum.ADMIN);

            var query = _context.Usuarios.AsQueryable();

            query = query.Where(e => !e.OrcamentoUsuarios.Any(f => f.IdOrcamento == request.IdOrcamento) && !e.Orcamentos.Any(f => f.Id == request.IdOrcamento));

            var termo = (request.Termo ?? string.Empty).ToLower();

            if (!string.IsNullOrEmpty(termo))
            {
                query = query.Where(e =>
                                    (e.Nome + " " + e.Sobrenome).ToLower().Contains(termo) ||
                                    e.Login.ToLower().Contains(termo) ||
                                    e.Email.ToLower().Contains(termo) ||
                                    e.Codigo.ToString().ToLower().Contains(termo));
            }


            var resultado = await query.Skip(0).Take(ConstantsHelper.QtdFiltro).ToListAsync();

            return(_mapper.Map <List <UsuarioViewModel> >(resultado));
        }
        public async Task <Unit> Handle(ExcluirOrcamentoUsuarioCommand request, CancellationToken cancellationToken)
        {
            var entidade = await _context.OrcamentoUsuarios.FindAsync(request.Id);

            if (entidade == null)
            {
                throw new NotFoundException("Orçamento Usuario", request.Id);
            }

            await _orcamentoAuthBaseApplication.VerificarPermissao(entidade.IdOrcamento, OrcamentoPermissaoEnum.ADMIN);

            try
            {
                _context.OrcamentoUsuarios.Remove(entidade);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw new PersistenceException(ex);
            }

            return(Unit.Value);
        }
Exemplo n.º 12
0
        public async Task <string> Handle(ExcluirOrcamentosCommand request, CancellationToken cancellationToken)
        {
            var ids = (request.Ids ?? new List <int>()).Distinct().ToList();

            var mensagem = string.Empty;

            int countErrors = 0;

            foreach (var id in ids)
            {
                Orcamento item = null;
                try
                {
                    await _orcamentoAuthBaseApplication.VerificarPermissao(id, OrcamentoPermissaoEnum.EXCLUIR);

                    item = _context.Orcamentos.Find(id);
                    if (item == null)
                    {
                        throw new NotFoundException(nameof(Orcamento), id);
                    }

                    _context.Orcamentos.Remove(item);

                    await _context.SaveChangesAsync();
                }
                catch (AuthorizationException)
                {
                    throw;
                }
                catch (ForbiddenException)
                {
                    mensagem += Environment.NewLine + string.Format("Você não tem permissão para excluir o orçamento [{0}]", id);
                    countErrors++;
                }
                catch (NotFoundException ex)
                {
                    mensagem += Environment.NewLine + ex.Message;
                    countErrors++;
                }
                catch (Exception)
                {
                    countErrors++;
                    if (item != null)
                    {
                        mensagem += Environment.NewLine + string.Format("Não foi possível excluir o orçamento [{0}]", item.Nome);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            if (countErrors == ids.Count())
            {
                throw new BusinessException("Ocorreu um erro ao tentar excluir os orçamentos.");
            }

            if (!string.IsNullOrEmpty(mensagem))
            {
                return("Orçamentos excluidos com sucesso, contudo:" + mensagem);
            }

            return(mensagem);
        }