public async Task <IActionResult> Handle(AlterarPlanoTrabalhoAtividadeCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); IEnumerable <Guid> assuntosId = request.IdsAssuntos != null?request.IdsAssuntos.ToList() : new List <Guid>(); //Monta o objeto com os dados do catalogo var item = await PlanoTrabalhoRepository.ObterAsync(request.PlanoTrabalhoId); IEnumerable <int> criterios = new List <int>(); if (request.Criterios != null && request.Criterios.Any()) { criterios = request.Criterios.Select(c => c.CriterioId); } //Remove a atividade item.AlterarAtividade(request.PlanoTrabalhoAtividadeId, request.ModalidadeExecucaoId, request.QuantidadeColaboradores, request.Descricao, request.ItensCatalogo.Select(i => i.ItemCatalogoId), criterios, assuntosId); //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(CandidatarPlanoTrabalhoAtividadeCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); try { //Monta o objeto com os dados do catalogo var item = await PlanoTrabalhoRepository.ObterAsync(request.PlanoTrabalhoId); //Remove a atividade item.RegistrarCandidaturaAtividade(request.PlanoTrabalhoAtividadeId, request.UsuarioLogadoId); //Altera o item de catalogo no banco de dados PlanoTrabalhoRepository.Atualizar(item); UnitOfWork.Commit(false); //Envia email await EnviarEmail(request.PlanoTrabalhoAtividadeId, request.UsuarioLogadoId); result.Result = true; result.SetHttpStatusToOk("Candidatura registrada 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); 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(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(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(AtualizarCandidaturaPlanoTrabalhoAtividadeCommand 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); //Atualiza a candidatura item.AtualizarCandidaturaAtividade(request.PlanoTrabalhoAtividadeId, request.PlanoTrabalhoAtividadeCandidatoId, request.SituacaoId, request.UsuarioLogadoId.ToString(), request.Descricao); //Altera o item de catalogo no banco de dados PlanoTrabalhoRepository.Atualizar(item); UnitOfWork.Commit(false); result.Result = true; result.SetHttpStatusToOk("Candidatura registrada com sucesso."); return(result); }
public async Task <IActionResult> Handle(CadastrarPlanoTrabalhoReuniaoCommand 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); //Adiciona a reunião item.AdicionarReuniao(request.Data, request.Titulo, 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(AlterarPlanoTrabalhoCustoCommand 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); //Altera o objeto custo item.AlterarCusto(request.PlanoTrabalhoCustoId, decimal.Parse(request.Valor, System.Globalization.CultureInfo.InvariantCulture), request.Descricao); //Altera o custo 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(ExcluirPlanoTrabalhoObjetoCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); //Recupera o plano de trabalho var item = await PlanoTrabalhoRepository.ObterAsync(request.PlanoTrabalhoId); //Remove o objeto item.RemoverObjeto(request.PlanoTrabalhoObjetoId); //Altera o plano de trabalho 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(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(AlterarPlanoTrabalhoObjetoCommand 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); var assuntosId = request.Assuntos.Select(a => a.AssuntoId); var custosParaAdicionar = request.Custos .Where(c => c.PlanoTrabalhoCustoId == null) .Select(c => PlanoTrabalhoCusto.Criar(c.PlanoTrabalhoId, c.Valor, c.Descricao, request.PlanoTrabalhoObjetoId)); var idsCustos = request.Custos .Where(c => c.PlanoTrabalhoCustoId != null) .Select(c => c.PlanoTrabalhoCustoId.Value); var reunioesParaAdicionar = request.Reunioes .Where(c => c.PlanoTrabalhoReuniaoId == null) .Select(c => PlanoTrabalhoReuniao.Criar(c.PlanoTrabalhoId, c.Data, c.Titulo, c.Descricao, request.PlanoTrabalhoObjetoId)); var idsReunioes = request.Reunioes .Where(c => c.PlanoTrabalhoReuniaoId != null) .Select(c => c.PlanoTrabalhoReuniaoId.Value); //Recupera o PlanoTrabalho do banco var item = await PlanoTrabalhoRepository.ObterAsync(request.PlanoTrabalhoId); //Altera o objeto item.AlterarObjeto(request.PlanoTrabalhoObjetoId, assuntosId, custosParaAdicionar, idsCustos, reunioesParaAdicionar, idsReunioes); //Altera o objeto 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(AlterarPlanoTrabalhoCommand 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); //Altera os dados //item.Alterar(request.Titulo, // request.Descricao, // request.FormaCalculoTempoPlanoTrabalhoId, // request.PermiteTrabalhoRemoto, // request.TempoExecucaoPresencial, // request.TempoExecucaoRemoto); //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); }