示例#1
0
        private async Task EnviarEmail(Int64 pessoaId, Int64 unidadeId)
        {
            try
            {
                //Obtem os destinatários dos emails
                var destinatarios = new List <string>();

                var servidor = await PessoaQuery.ObterPorChaveAsync(pessoaId);

                destinatarios.Add(servidor.Result.Email);

                var unidade = await UnidadeQuery.ObterPessoasAsync(unidadeId);

                var chefes = unidade.Result.Where(u => u.UnidadeId == unidadeId && u.TipoFuncaoId.HasValue);
                foreach (var chefe in chefes)
                {
                    if (!string.IsNullOrEmpty(chefe.Email))
                    {
                        destinatarios.Add(chefe.Email);
                    }
                }

                //Envia os emails
                EnviarEmail(destinatarios.ToArray());
            }
            catch { }
        }
示例#2
0
        private async Task EnviarEmail(Guid pactoTrabalhoId, Int64 pessoaId, Int64 unidadeId)
        {
            try
            {
                if (Configuration.Value.Notificacoes == null ||
                    Configuration.Value.Notificacoes.EnviarEmail)
                {
                    //Obtem os destinatários dos emails
                    var destinatarios = new List <string>();

                    var servidor = await PessoaQuery.ObterPorChaveAsync(pessoaId);

                    destinatarios.Add(servidor.Result.Email);

                    var unidade = await UnidadeQuery.ObterPessoasAsync(unidadeId);

                    var chefes = unidade.Result.Where(u => u.UnidadeId == unidadeId && u.TipoFuncaoId.HasValue);
                    foreach (var chefe in chefes)
                    {
                        if (!string.IsNullOrEmpty(chefe.Email))
                        {
                            destinatarios.Add(chefe.Email);
                        }
                    }

                    //Envia os emails
                    EnviarEmail(pactoTrabalhoId, Configuration.Value.Notificacoes.EmailPactoSolicitacaoAlteracaoPrazo, destinatarios.ToArray());
                }
            }
            catch { }
        }
        public async Task <IActionResult> Handle(AlterarSituacaoPactoTrabalhoCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <bool> result = new ApplicationResult <bool>(request);

            //Monta o objeto com os dados do catalogo
            var item = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId);

            //Obtém os dias não úteis da pessoa
            var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(item.PessoaId, item.DataInicio, item.DataFim);

            item.DiasNaoUteis = diasNaoUteis.Result.ToList();

            //Alterar a situação da atividade
            item.AlterarSituacao(request.SituacaoId, request.UsuarioLogadoId.ToString(), request.Observacoes);

            //Altera o item de catalogo no banco de dados
            PactoTrabalhoRepository.Atualizar(item);
            UnitOfWork.Commit(false);

            //Envia os emails aos envolvidos
            await EnviarEmail(item.PessoaId, item.UnidadeId);

            result.Result = true;
            result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso.");
            return(result);
        }
示例#4
0
        public async Task <IActionResult> Handle(CadastrarPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <bool> result = new ApplicationResult <bool>(request);

            request.AssuntosId = request.AssuntosId != null ? request.AssuntosId : new List <Guid>();
            request.ObjetosId  = request.ObjetosId != null ? request.ObjetosId : new List <Guid>();

            //Monta os dados do pacto de trabalho
            var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId);

            //Obtém os dias não úteis da pessoa
            var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, pacto.DataFim);

            pacto.DiasNaoUteis = diasNaoUteis.Result.ToList();

            //Obtem os dados do item
            var item = await ItemCatalogoRepository.ObterAsync(request.ItemCatalogoId);

            //Obtém o tempo previsto para o iem de acordo com a forma de execução e com o tipo do item
            var tempoPrevisto = item.TempoExecucaoPreviamenteDefinido ?
                                pacto.ModalidadeExecucaoId == (int)ModalidadeExecucaoEnum.Presencial ? item.TempoExecucaoPresencial.Value : item.TempoExecucaoRemoto.Value :
                                request.TempoPrevistoPorItem.Value;

            //Cria a atividade
            pacto.AdicionarAtividade(item, request.Quantidade, tempoPrevisto, request.Descricao, request.AssuntosId, request.ObjetosId);

            //Altera o pacto de trabalho no banco de dados
            PactoTrabalhoRepository.Atualizar(pacto);
            UnitOfWork.Commit(false);

            result.Result = true;
            result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso.");
            return(result);
        }
        //GET: PEGAR TODAS AS PESSOAS
        public IEnumerable <PessoaModel> Get(PessoaQuery pessoaQuery)
        {
            string where = pessoaQuery.Filtrar();
            IQueryable <PessoaModel> Pessoas = _context.Pessoas.FromSql(where);

            return(Pessoas.ToList());
        }
 public IActionResult GetPessoas(PessoaQuery query)
 {
     query = query ?? new PessoaQuery();
     try
     {
         IEnumerable <PessoaModel> Pessoas = _repository.Get(query);
         if (Pessoas.Count() > 0)
         {
             List <PessoaDTO> PessoaDTO = new List <PessoaDTO>();
             foreach (var pessoa in Pessoas)
             {
                 PessoaDTO.Add(new PessoaDTO()
                 {
                     Cpf        = pessoa.Cpf,
                     Email      = pessoa.Email,
                     Genero     = pessoa.Genero,
                     Nascimento = pessoa.Nascimento,
                     Id         = pessoa.Id,
                     Nome       = pessoa.Nome,
                     Sobrenome  = pessoa.Sobrenome
                 });
             }
             return(Ok(PessoaDTO));
         }
         else
         {
             return(NotFound("Nenhuma pessoa encontrada."));
         }
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
示例#7
0
        public async Task <IActionResult> Handle(CadastrarPactoTrabalhoCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <Guid> result = new ApplicationResult <Guid>(request);

            var dadosPessoa = await PessoaRepository.ObterAsync(request.PessoaId);

            if (dadosPessoa.PactosTrabalho.Any(p => p.DataFim >= request.DataInicio && p.DataInicio <= request.DataFim))
            {
                result.Validations = new List <string> {
                    "A pessoa já tem um plano de trabalho cadastrado para o período"
                };
                return(result);
            }

            //Obtém os dias que não são úteis (feriados, férias, etc)
            var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(dadosPessoa.PessoaId, request.DataInicio, request.DataFim);

            //Monta o objeto com os dados do item de catalogo
            Domain.AggregatesModel.PactoTrabalhoAggregate.PactoTrabalho item =
                Domain.AggregatesModel.PactoTrabalhoAggregate.PactoTrabalho.Criar(
                    request.PlanoTrabalhoId,
                    request.UnidadeId,
                    request.PessoaId,
                    dadosPessoa.CargaHoraria,
                    request.FormaExecucaoId,
                    request.DataInicio,
                    request.DataFim,
                    request.UsuarioLogadoId.ToString(),
                    diasNaoUteis.Result.ToList(),
                    request.TermoAceite);

            //Verifica se está criando ou copiando um pacto de trabalho
            if (request.PactoTrabalhoId.HasValue)
            {
                //Obtém os dados do pacto que está copiando
                var pactoCopiar = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId.Value);

                //Adiciona ao pacto novo as atividades do que está sendo copiado
                foreach (var atividade in pactoCopiar.Atividades)
                {
                    var assuntosId = atividade.Assuntos.Select(a => a.AssuntoId);
                    var objetosId  = atividade.Objetos.Select(o => o.PlanoTrabalhoObjetoId);
                    item.AdicionarAtividade(atividade.ItemCatalogo, atividade.Quantidade, atividade.TempoPrevistoPorItem, atividade.Descricao, assuntosId, objetosId);
                }
            }

            //Adiciona o catalogo no banco de dados
            await PactoTrabalhoRepository.AdicionarAsync(item);

            UnitOfWork.Commit(false);

            result.Result = item.PactoTrabalhoId;
            result.SetHttpStatusToOk("Plano de trabalho cadastrado com sucesso.");
            return(result);
        }
        public async Task <IActionResult> Handle(AlterarPeriodoPactoTrabalhoCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <bool> result = new ApplicationResult <bool>(request);

            try
            {
                //Monta o objeto com os dados do catalogo
                var item = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId);

                //Obtém os dias não úteis da pessoa
                var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(item.PessoaId, item.DataInicio, item.DataFim);

                item.DiasNaoUteis = diasNaoUteis.Result.ToList();

                //Verifica se a pessoa tem outros pactos cadastrados para o período
                var dadosPessoa = await PessoaRepository.ObterAsync(item.PessoaId);

                if (dadosPessoa.PactosTrabalho.Any(p =>
                                                   p.PactoTrabalhoId != item.PactoTrabalhoId &&
                                                   p.DataFim.Date >= request.DataInicio.Date &&
                                                   p.DataInicio.Date <= request.DataFim.Date))
                {
                    result.Validations = new List <string> {
                        "A pessoa já tem um plano de trabalho cadastrado para o período"
                    };
                    return(result);
                }

                //Altera a situação
                item.AlterarPeriodo(request.DataInicio.Date, request.DataFim.Date);

                //Altera o item de catalogo no banco de dados
                PactoTrabalhoRepository.Atualizar(item);
                UnitOfWork.Commit(false);

                result.Result = true;
                result.SetHttpStatusToOk("Plano de trabalho alterado com sucesso.");
            }
            catch (SISRH.Domain.Exceptions.SISRHDomainException ex)
            {
                result.Validations = new List <string>()
                {
                    ex.Message
                };
                result.Result = false;
                result.SetHttpStatusToBadRequest();
            }
            return(result);
        }
示例#9
0
        public async Task <IActionResult> Handle(ResponderSolitacaoPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <bool> result = new ApplicationResult <bool>(request);

            if (!await validarPermissoes(request))
            {
                result.SetHttpStatusToForbidden("O usuário logado não possui permissão suficientes para executar a ação.");
                return(result);
            }

            //Monta os dados do pacto de trabalho
            var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId);

            if (request.AjustarPrazo)
            {
                //Obtém os dias não úteis da pessoa
                var dias = diasAumentoPrazo(pacto, request.PactoTrabalhoSolicitacaoId);

                if (dias == null)
                {
                    result.SetHttpStatusToBadRequest("Não foi possível recuperar os dias de aumento de prazo.");
                    return(result);
                }

                var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, pacto.DataFim.AddDays(Convert.ToDouble(Decimal.Round(dias.Value))));

                pacto.DiasNaoUteis = diasNaoUteis.Result.ToList();
            }

            //Responde a solicitação
            pacto.ResponderSolicitacao(request.PactoTrabalhoSolicitacaoId, request.UsuarioLogadoId.ToString(), request.Aprovado, request.AjustarPrazo, request.Descricao);

            //Altera o pacto de trabalho no banco de dados
            PactoTrabalhoRepository.Atualizar(pacto);
            UnitOfWork.Commit(false);

            //Envia os emails aos envolvidos
            await EnviarEmail(pacto.PessoaId, pacto.UnidadeId);

            result.Result = true;
            result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso.");
            return(result);
        }
示例#10
0
        private async Task EnviarEmail(Guid planoTrabalhoId, Int64 pessoaId)
        {
            try
            {
                if (Configuration.Value.Notificacoes == null ||
                    Configuration.Value.Notificacoes.EnviarEmail)
                {
                    //Obtém os dados do usuário logado
                    var dadosPessoa = await PessoaQuery.ObterPorChaveAsync(pessoaId);

                    if (!String.IsNullOrEmpty(dadosPessoa.Result.Email))
                    {
                        //Obtem os destinatários dos emails
                        var destinatarios = new List <string>();
                        destinatarios.Add(dadosPessoa.Result.Email);

                        //Envia os emails
                        EnviarEmail(planoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoCandidaturaRegistrada, destinatarios.ToArray());
                    }
                }
            }
            catch { }
        }
        public async Task <IActionResult> Handle(AlterarAndamentoPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <bool> result = new ApplicationResult <bool>(request);

            //Monta os dados do pacto de trabalho
            var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId);

            //Obtém os dias não úteis da pessoa
            var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, pacto.DataFim);

            pacto.DiasNaoUteis = diasNaoUteis.Result.ToList();

            //Altera a atividade
            pacto.AlterarAndamentoAtividade(request.PactoTrabalhoAtividadeId, request.SituacaoId, request.DataInicio, request.DataFim, request.TempoRealizado, consideracoes: request.Consideracoes);

            //Altera o pacto de trabalho no banco de dados
            PactoTrabalhoRepository.Atualizar(pacto);
            UnitOfWork.Commit(false);

            result.Result = true;
            result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso.");
            return(result);
        }
        public async Task <IActionResult> Handle(ResponderSolitacaoPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken)
        {
            var result = new ApplicationResult <PactoTrabalhoViewModel>(request);

            try
            {
                if (!await validarPermissoes(request))
                {
                    result.SetHttpStatusToForbidden("O usuário logado não possui permissão suficientes para executar a ação.");
                    return(result);
                }

                //Monta os dados do pacto de trabalho
                var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId);

                //Obtém os dados da solicitação
                var solicitacao = pacto.Solicitacoes.Where(s => s.PactoTrabalhoSolicitacaoId == request.PactoTrabalhoSolicitacaoId).FirstOrDefault();

                var dataFim = pacto.DataFim;

                Susep.SISRH.Domain.AggregatesModel.CatalogoAggregate.ItemCatalogo itemCatalogo = null;
                if (request.AjustarPrazo)
                {
                    //Obtém os dias não úteis da pessoa
                    var dias = diasAumentoPrazo(pacto, solicitacao);

                    if (dias == null)
                    {
                        result.SetHttpStatusToBadRequest("Não foi possível recuperar os dias de aumento de prazo.");
                        return(result);
                    }

                    dataFim = pacto.DataFim.AddDays(Convert.ToDouble(Decimal.Round(dias.Value)));
                }

                dynamic dadosSolicitacao = JsonConvert.DeserializeObject(solicitacao.DadosSolicitacao);
                switch (solicitacao.TipoSolicitacaoId)
                {
                case (int)SISRH.Domain.Enums.TipoSolicitacaoPactoTrabalhoEnum.AlterarPrazo:
                    dataFim = (DateTime)dadosSolicitacao.dataFim;
                    break;

                case (int)SISRH.Domain.Enums.TipoSolicitacaoPactoTrabalhoEnum.NovaAtividade:
                    Guid itemCatalogoId = dadosSolicitacao.itemCatalogoId;
                    itemCatalogo = await ItemCatalogoRepository.ObterAsync(itemCatalogoId);

                    break;
                }

                var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, dataFim);

                pacto.DiasNaoUteis = diasNaoUteis.Result.ToList();

                //Responde a solicitação
                pacto.ResponderSolicitacao(request.PactoTrabalhoSolicitacaoId, request.UsuarioLogadoId.ToString(), request.Aprovado, request.AjustarPrazo, request.Descricao, itemCatalogo);

                //Altera o pacto de trabalho no banco de dados
                PactoTrabalhoRepository.Atualizar(pacto);
                UnitOfWork.Commit(false);

                //Envia os emails aos envolvidos
                await EnviarEmail(request.PactoTrabalhoId, pacto.PessoaId, pacto.UnidadeId);

                var dadosPacto = await PactoTrabalhoQuery.ObterPorChaveAsync(request.PactoTrabalhoId);

                result.Result = dadosPacto.Result;
                result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso.");
            }
            catch (SISRH.Domain.Exceptions.SISRHDomainException ex)
            {
                result.Validations = new List <string>()
                {
                    ex.Message
                };
                result.Result = null;
                result.SetHttpStatusToBadRequest();
            }
            return(result);
        }