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);
        }
Example #2
0
        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);
        }
Example #6
0
        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);
        }
Example #8
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
        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);
        }