public async Task <IActionResult> Handle(CadastrarPlanoTrabalhoObjetoCommand request, CancellationToken cancellationToken) { request.Assuntos = request.Assuntos != null ? request.Assuntos : new List <PlanoTrabalhoObjetoAssuntoViewModel>(); request.Custos = request.Custos != null ? request.Custos : new List <PlanoTrabalhoCustoViewModel>(); request.Reunioes = request.Reunioes != null ? request.Reunioes : new List <PlanoTrabalhoReuniaoViewModel>(); ApplicationResult <bool> result = new ApplicationResult <bool>(request); //Monta o objeto com os dados do catalogo var item = await PlanoTrabalhoRepository.ObterAsync(request.PlanoTrabalhoId); var custos = request.Custos.Select(c => PlanoTrabalhoCusto.Criar(c.PlanoTrabalhoId, c.Valor, c.Descricao)).ToList(); var reunioes = request.Reunioes.Select(r => PlanoTrabalhoReuniao.Criar(r.PlanoTrabalhoId, r.Data, r.Titulo, r.Descricao)).ToList(); var assuntos = request.Assuntos.Select(a => PlanoTrabalhoObjetoAssunto.Criar(a.PlanoTrabalhoObjetoId, a.AssuntoId)).ToList(); //Adiciona o objeto item.AdicionarObjeto(request.ObjetoId, reunioes, custos, assuntos); //Altera o item de catalogo no banco de dados PlanoTrabalhoRepository.Atualizar(item); UnitOfWork.Commit(false); result.Result = true; result.SetHttpStatusToOk("Plano de trabalho alterado com sucesso."); return(result); }
public async Task <IActionResult> Handle(AlterarAssuntoCommand request, CancellationToken cancellationToken) { ApplicationResult <Guid> result = new ApplicationResult <Guid>(request); //Recupera o objeto assunto var assunto = await AssuntoRepository.ObterAsync(request.AssuntoId); var alterouPai = assunto.AssuntoPaiId != request.AssuntoPaiId; //Monta o objeto com os dados do assunto assunto.Alterar(request.Valor, request.AssuntoPaiId, request.Ativo); try { await validarAssunto(assunto, alterouPai); } catch (SISRHDomainException e) { result.SetHttpStatusToBadRequest(e.Message); return(result); } //Altera o assunto no banco de dados AssuntoRepository.Atualizar(assunto); UnitOfWork.Commit(false); result.Result = assunto.AssuntoId; result.SetHttpStatusToOk("Assunto 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(CadastrarAssuntoCommand request, CancellationToken cancellationToken) { ApplicationResult <Guid> result = new ApplicationResult <Guid>(request); //Monta o objeto com os dados do assunto var assunto = Domain.AggregatesModel.AssuntoAggregate.Assunto.Criar( request.Valor, request.AssuntoPaiId, true); try { await validarAssunto(assunto); } catch (SISRHDomainException e) { result.SetHttpStatusToBadRequest(e.Message); return(result); } //Adiciona o assunto no banco de dados await AssuntoRepository.AdicionarAsync(assunto); UnitOfWork.Commit(false); result.Result = assunto.AssuntoId; result.SetHttpStatusToOk("Assunto cadastrado com sucesso."); return(result); }
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); }
public async Task <IActionResult> Handle(CadastrarPlanoTrabalhoCommand request, CancellationToken cancellationToken) { ApplicationResult <Guid> result = new ApplicationResult <Guid>(request); var unidade = await UnidadeQuery.ObterPorChaveAsync(request.UnidadeId); //Monta o objeto com os dados do item de catalogo Domain.AggregatesModel.PlanoTrabalhoAggregate.PlanoTrabalho item = Domain.AggregatesModel.PlanoTrabalhoAggregate.PlanoTrabalho.Criar( request.UnidadeId, request.DataInicio, request.DataFim, request.TempoComparecimento, request.TempoFaseHabilitacao, unidade.Result.QuantidadeServidores, request.UsuarioLogadoId.ToString(), request.TermoAceite); //Adiciona o catalogo no banco de dados await PlanoTrabalhoRepository.AdicionarAsync(item); UnitOfWork.Commit(false); result.Result = item.PlanoTrabalhoId; result.SetHttpStatusToOk("Plano de trabalho cadastrado com sucesso."); return(result); }
public async Task <IActionResult> Handle(AvaliarAtividadePactoTrabalhoCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); try { //Monta os dados do pacto de trabalho var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); //Altera a atividade pacto.AvaliarAtividade(request.PactoTrabalhoAtividadeId, request.Nota, request.Justificativa); //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); result.Result = true; result.SetHttpStatusToOk("Atividade avaliada com sucesso."); } catch (SISRH.Domain.Exceptions.SISRHDomainException ex) { result.Validations = new List <string>() { ex.Message }; result.Result = false; result.SetHttpStatusToBadRequest(); } return(result); }
public async Task <IActionResult> Handle(CadastrarPlanoTrabalhoCommand request, CancellationToken cancellationToken) { ApplicationResult <Guid> result = new ApplicationResult <Guid>(request); try { var unidade = await UnidadeQuery.ObterQuantidadeServidoresPorChaveAsync(request.UnidadeId); var tempoComparecimento = request.TempoComparecimento; var termosAceite = request.TermoAceite; if (Configuration.Value.TempoComparecimento > 0) { tempoComparecimento = Configuration.Value.TempoComparecimento; } if (!String.IsNullOrEmpty(Configuration.Value.TermoAceite)) { termosAceite = Configuration.Value.TermoAceite; } //Monta o objeto com os dados do item de catalogo Domain.AggregatesModel.PlanoTrabalhoAggregate.PlanoTrabalho item = Domain.AggregatesModel.PlanoTrabalhoAggregate.PlanoTrabalho.Criar( request.UnidadeId, request.DataInicio, request.DataFim, tempoComparecimento, request.TempoFaseHabilitacao, unidade.Result.QuantidadeServidores, request.UsuarioLogadoId.ToString(), termosAceite); //Adiciona o catalogo no banco de dados await PlanoTrabalhoRepository.AdicionarAsync(item); UnitOfWork.Commit(false); result.Result = item.PlanoTrabalhoId; result.SetHttpStatusToOk("Plano de trabalho cadastrado com sucesso."); } catch (SISRHDomainException ex) { result.Validations = new List <string>() { ex.Message }; result.SetHttpStatusToBadRequest(ex.Message); } 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(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); }
public async Task <IActionResult> Handle(ProporExcluirAtividadeCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); try { //Monta os dados do pacto de trabalho var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); if (pacto.ExisteSolicitacaoPendenteExclusaoMesmaAtividade(request.PactoTrabalhoAtividadeId)) { throw new SISRH.Domain.Exceptions.SISRHDomainException(@" Já existe solicitação ainda não analisada de exclusão da mesma atividade. Aguarde até que a solicitação anterior tenha sido analisada para que possa fazer nova solicitação de exclusão da mesma atividade. "); } //Armazena o id do item de catálogo para poder mostrar na tela caso ele seja excluído var atividade = pacto.Atividades.FirstOrDefault(p => p.PactoTrabalhoAtividadeId == request.PactoTrabalhoAtividadeId); request.ItemCatalogo = atividade.ItemCatalogo.TituloCompletoComTempos; //Serializa a requisição var dados = JsonConvert.SerializeObject(request); //Cria a solicitação pacto.AdicionarSolicitacao(TipoSolicitacaoPactoTrabalhoEnum.ExcluirAtividade, request.UsuarioLogadoId.ToString(), dados, request.Justificativa); //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); result.Result = true; result.SetHttpStatusToOk("Pacto 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); }
public async Task <IActionResult> Handle(ExcluirCatalogoItemCatalogoCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); var catalogo = await CatalogoRepository.ObterAsync(request.CatalogoId); catalogo.RemoverItem(request.ItemCatalogoId); //Adiciona o catalogo no banco de dados CatalogoRepository.Atualizar(catalogo); UnitOfWork.Commit(false); result.Result = true; result.SetHttpStatusToOk("Item excluído com sucesso."); return(result); }
public async Task <IActionResult> Handle(CadastrarCatalogoCommand request, CancellationToken cancellationToken) { ApplicationResult <Guid> result = new ApplicationResult <Guid>(request); //Monta o objeto com os dados do catalogo var catalogo = Domain.AggregatesModel.CatalogoAggregate.Catalogo.Criar(request.UnidadeId); //Adiciona o catalogo no banco de dados await CatalogoRepository.AdicionarAsync(catalogo); UnitOfWork.Commit(false); result.Result = catalogo.CatalogoId; result.SetHttpStatusToOk("Catálogo cadastrado com sucesso."); return(result); }
public async Task <IActionResult> Handle(ExcluirPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); //Monta o objeto com os dados do catalogo var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); //Remove a atividade pacto.RemoverAtividade(request.PactoTrabalhoAtividadeId); //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(AlterarPactoTrabalhoCommand 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); //Altera a situação //item.AlterarSituacao(request.SituacaoId, request.UsuarioLogado, request.Observacoes); //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."); return(result); }
public async Task <IActionResult> Handle(AlterarPlanoTrabalhoMetaCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); //Monta o objeto com os dados do catalogo var item = await PlanoTrabalhoRepository.ObterAsync(request.PlanoTrabalhoId); //Remove a atividade item.AlterarMeta(request.PlanoTrabalhoMetaId, request.Meta, request.Indicador, request.Descricao); //Altera o item de catalogo no banco de dados PlanoTrabalhoRepository.Atualizar(item); UnitOfWork.Commit(false); result.Result = true; result.SetHttpStatusToOk("Plano de trabalho alterado com sucesso."); return(result); }
public async Task <IActionResult> Handle(AlterarSituacaoPlanoTrabalhoCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); //Monta o objeto com os dados do catalogo var item = await PlanoTrabalhoRepository.ObterAsync(request.PlanoTrabalhoId); try { //Altera a situação do plano if (request.Deserto) { item.AlterarSituacao((int)SituacaoPlanoTrabalhoEnum.Concluido, request.UsuarioLogadoId.ToString(), request.Observacoes, true); } else if (request.SituacaoId == (int)SituacaoPlanoTrabalhoEnum.EmExecucao) { item.ConcluirHabilitacao(request.UsuarioLogadoId.ToString(), request.Observacoes, request.Aprovados); } else { item.AlterarSituacao(request.SituacaoId, request.UsuarioLogadoId.ToString(), request.Observacoes); } //Altera o item de catalogo no banco de dados PlanoTrabalhoRepository.Atualizar(item); UnitOfWork.Commit(false); //Notifica os envolvidos await EnviarEmails(item); 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); }
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); }