public async Task <IActionResult> Handle(CadastrarItemCatalogoCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <Guid> result = new ApplicationResult <Guid>(request);

            request.Assuntos = request.Assuntos != null ? request.Assuntos : new System.Collections.Generic.List <AssuntoEdicaoViewModel>();

            //Monta o objeto com os dados do item de catalogo
            var itemCatalogo = Domain.AggregatesModel.CatalogoAggregate.ItemCatalogo.Criar(
                request.Titulo,
                request.Descricao,
                request.FormaCalculoTempoItemCatalogoId,
                request.PermiteTrabalhoRemoto,
                request.TempoExecucaoPresencial,
                request.TempoExecucaoRemoto,
                request.Complexidade,
                request.DefinicaoComplexidade,
                request.EntregasEsperadas);

            foreach (var assunto in request.Assuntos)
            {
                itemCatalogo.AdicionarAssunto(assunto.AssuntoId);
            }

            //Adiciona o catalogo no banco de dados
            await ItemCatalogoRepository.AdicionarAsync(itemCatalogo);

            UnitOfWork.Commit(false);

            result.Result = itemCatalogo.ItemCatalogoId;
            result.SetHttpStatusToOk("ItemCatalogo cadastrado com sucesso.");
            return(result);
        }
示例#2
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);
        }
        public async Task <IActionResult> Handle(AlterarItemCatalogoCommand request, CancellationToken cancellationToken)
        {
            ApplicationResult <bool> result = new ApplicationResult <bool>(request);

            request.Assuntos = request.Assuntos != null ? request.Assuntos : new List <AssuntoEdicaoViewModel>();

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

            //Altera os dados
            item.Alterar(request.Titulo,
                         request.Descricao,
                         request.FormaCalculoTempoItemCatalogoId,
                         request.PermiteTrabalhoRemoto,
                         request.TempoExecucaoPresencial,
                         request.TempoExecucaoRemoto,
                         request.Complexidade,
                         request.DefinicaoComplexidade,
                         request.EntregasEsperadas);

            //Atualiza a lista de assuntos
            atualizarListaAssuntos(item, request.Assuntos);

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

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

            //Adiciona o catalogo no banco de dados
            await ItemCatalogoRepository.ExcluirAsync(request.ItemCatalogoId);

            UnitOfWork.Commit(false);

            result.Result = true;
            result.SetHttpStatusToOk("Item de catálogo excluído 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);
        }