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); }
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); }
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); }