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