예제 #1
0
        public Hashtable EditarTarefa(CronogramaTarefaDto tarefaEditada)
        {
            Hashtable hash = new Hashtable();
            CronogramaTarefaGridItem tarefa = tarefas.FirstOrDefault(o => o.OidCronogramaTarefa.ToString().Equals(tarefaEditada.OidTarefa));

            if (tarefa != null)
            {
                hash.Add("EdicaoStatus", true);
                hash.Add("DtAtualizadoEm", DateTime.Now);
                hash.Add("TxAtualizadoPor", tarefaEditada.TxAtualizadoPor);
                tarefa.TxDescricaoTarefa             = tarefaEditada.TxDescricaoTarefa;
                tarefa.OidSituacaoPlanejamentoTarefa = tarefaEditada.OidSituacaoPlanejamentoTarefa;
                tarefa.TxAtualizadoPor        = tarefaEditada.TxAtualizadoPor;
                tarefa.TxObservacaoTarefa     = tarefaEditada.TxObservacaoTarefa;
                tarefa.TxDescricaoColaborador = tarefaEditada.TxDescricaoColaborador;
                tarefa.NbRealizado            = tarefaEditada.NbRealizado;
                tarefa.NbEstimativaRestante   = tarefaEditada.NbEstimativaRestante;
                tarefa.NbEstimativaInicial    = tarefaEditada.NbEstimativaInicial;
                tarefa.CsLinhaBaseSalva       = tarefaEditada.CsLinhaBaseSalva;
                tarefa.DtInicio = tarefaEditada.DtInicio;
            }
            else
            {
                hash.Add("EdicaoStatus", true);
            }
            return(hash);
        }
예제 #2
0
 /// <summary>
 /// Método que verifica se uma tarefa possui estimativa inicial
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 protected bool PossuiEstimativaInicial(CronogramaTarefaDto tarefa)
 {
     if (TarefaNula(tarefa))
     {
         return(false);
     }
     return(PossuiTempoEstimado(tarefa.NbEstimativaInicial));
 }
예제 #3
0
 /// <summary>
 /// Retorna se a tarefa possui horas restantes
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 protected bool PossuiHorasRestantes(CronogramaTarefaDto tarefa)
 {
     if (TarefaNula(tarefa))
     {
         return(false);
     }
     return(PossuiTempoEstimado(tarefa.NbEstimativaRestante));
 }
        /// <summary>
        /// Executar a movimentação da tarefa
        /// </summary>
        public override void Executar()
        {
            gerenciador.EsperarLeituraDataSource();
            CronogramaTarefaDto tarefaAtual = gerenciador.Datasource.FirstOrDefault(o => o.OidCronogramaTarefa == tarefaMovida.OidTarefa);

            gerenciador.LiberarLeituraDataSource();
            tarefaAtual.NbID = tarefaMovida.PosicaoFinal;
        }
예제 #5
0
 /// <summary>
 /// Retorna se a tarefa possui esforço realizado
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 protected bool PossuiEsforcoRealizado(CronogramaTarefaDto tarefa)
 {
     if (TarefaNula(tarefa))
     {
         return(false);
     }
     return(PossuiTempoEstimado(tarefa.NbRealizado));
 }
        /// <summary>
        /// Método responsável por solicitar ao serviço a edição de uma tarefa.
        /// </summary>
        /// <param name="oidTarefa">Oid (Guid) da tarefa a ser editada</param>
        /// <param name="txDescricao">Descrição da tarefa alterada</param>
        /// <param name="oidSituacaoPlanejamento">Oid (Guid) da tarefa editada</param>
        /// <param name="dataInicio">Data de Inicio da tarefa editada</param>
        /// <param name="login">Login do usuário que editou a tarefa</param>
        /// <param name="txObservacao">Observação da tarefa editada</param>
        /// <param name="responsaveis">responsáveis pela tarefa</param>
        /// <param name="nbEstimativaInicial">Estimativa inicial da tarefa</param>
        /// <param name="nbEstimativaRestante">Estimativa restante da tarefa</param>
        /// <param name="nbRealizado">Horas realizadas da tarefa</param>
        /// <param name="csLinhaBaseSalva">Boolean afirmando se a tarefa foi salva a linda de base</param>
        /// <returns>Retorna dados da edicao como atualizado em, atualizado por e confirmação da edicao</returns>
        public Hashtable EditarTarefa(CronogramaTarefaDto tarefa)
        {
            //PUT: {base_url}/Cronogramas/Tarefas/
            RestRequest requisicao = new RestRequest("Cronogramas/Tarefas");

            requisicao.RequestFormat = DataFormat.Json;
            requisicao.AddBody(tarefa);
            return(DeserializarResposta(restClient.Put <Hashtable>(requisicao)));
        }
        public void DevePermitirEdicaoSituacaoPlanejamentoParaAndamentoApenasQuandoPossuirHorasParaConsumir()
        {
            CronogramaTarefaDto novaTarefa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 0,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto novaTarefaComEstimativa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaConsumidaParcialmente = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
            };

            CronogramaTarefaDto tarefaPronta = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
            };

            CronogramaTarefaDto tarefaCancelada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            string mensagem;

            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefa, CsTipoPlanejamento.Execução, out mensagem), "Não deveria permitir setar a situação como execução pois não foi estimada uma quantidade de horas a ser realizada a tarefa.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefaComEstimativa, CsTipoPlanejamento.Execução, out mensagem), "Deveria permitir setar a situação como execução pois foi estimada uma quantidade de horas a ser realizada a tarefa.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaConsumidaParcialmente, CsTipoPlanejamento.Execução, out mensagem), "Deveria permitir setar a situação como execução pois ainda há horas restantes para executar a tarefa.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaPronta, CsTipoPlanejamento.Execução, out mensagem), "Não deveria permitir setar a situação como execução pois foram consumidas todas as horas de execução da tarefa.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCancelada, CsTipoPlanejamento.Execução, out mensagem), "Não deveria permitir setar a situação como execução pois após o cancelamento não há horas restantes para trabalhar na tarefa.");
        }
예제 #8
0
        /// <summary>
        /// Método utilizado para atualizar o nbid das tarefas (Simulando a atualização de tarefas do CronogramaPresenter)
        /// </summary>
        /// <param name="novoNbId">novo nbid</param>
        /// <param name="oidTarefa">oid da tarefa a ser atualizada</param>
        /// <param name="tarefas">lista de tarefas armazenadas(View)</param>
        public static void AtualizarNbIdTarefa(short novoNbId, Guid oidTarefa, List <CronogramaTarefaDto> tarefas)
        {
            if (tarefas == null)
            {
                return;
            }

            CronogramaTarefaDto tarefa = tarefas.FirstOrDefault(o => o.OidCronogramaTarefa == oidTarefa);

            if (tarefa != null)
            {
                tarefa.NbID = novoNbId;
            }
        }
예제 #9
0
        public ActionResult EditarTarefa(CronogramaTarefaDto tarefa)
        {
            if (tarefa == null)
            {
                return(Json(new { }));
            }

            Hashtable dadosEdicaoTarefa = null;

            dadosEdicaoTarefa = TarefaBo.EditarTarefa(tarefa.OidCronogramaTarefa.ToString(), tarefa.TxDescricaoTarefa, tarefa.OidSituacaoPlanejamentoTarefa.ToString(),
                                                      tarefa.TxAtualizadoPor, tarefa.TxObservacaoTarefa, tarefa.TxDescricaoColaborador, tarefa.NbEstimativaInicial,
                                                      tarefa.NbEstimativaRestante.ToTimeSpan(), tarefa.NbRealizado.ToTimeSpan(), tarefa.CsLinhaBaseSalva, tarefa.DtInicio);

            return(new JsonNetResult(TarefaBo.EdicaoDtoFactory(dadosEdicaoTarefa)));
        }
        public void DevePermitirEdicaoSituacaoPlanejamentoParaProntoSePossuirEstimativaInicial()
        {
            CronogramaTarefaDto novaTarefa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 0,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto novaTarefaComEstimativa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaConsumidaParcialmente = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
            };

            CronogramaTarefaDto tarefaCanceladaParcialmenteRealizada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("6:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("2:00"),
            };

            string mensagem;

            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefa, CsTipoPlanejamento.Encerramento, out mensagem), "Não deve permitir ir para o estado de pronto pois não possui uma estimativa inicial de duração");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefaComEstimativa, CsTipoPlanejamento.Encerramento, out mensagem), "Deve permitir pois a tarefa já possui uma estimativa inicial de duração.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaConsumidaParcialmente, CsTipoPlanejamento.Encerramento, out mensagem), "Deve permitir pois a tarefa já possui uma estimativa inicial de duração");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCanceladaParcialmenteRealizada, CsTipoPlanejamento.Encerramento, out mensagem), "Deve permitir a edição pois a tarefa já possui uma estimativa inicial de duração.");
        }
        /// <summary>
        /// Método responsável por exibir em Debug o resultado da movimentação
        /// </summary>
        /// <param name="retornoMovimentacao"></param>
        public static void ExibirLogTarefaMovida(TarefasMovidasDto retornoMovimentacao, List <CronogramaTarefaDto> tarefas, string alias = "")
        {
            Debug.WriteLine(string.Format("\n***** Resultado Movimentação {0} *****\n", alias));
            Debug.WriteLine("Data e hora ação:{0}", retornoMovimentacao.DataHoraAcao.TimeOfDay);
            Debug.WriteLine("Oid Tarefa Movida: {0}", retornoMovimentacao.OidCronogramaTarefaMovida);
            CronogramaTarefaDto tarefa = tarefas.FirstOrDefault(o => o.OidCronogramaTarefa == retornoMovimentacao.OidCronogramaTarefaMovida);

            if (tarefa != null)
            {
                Debug.WriteLine("\nTarefa {0} movida para posição {1}", tarefa.TxDescricaoTarefa, retornoMovimentacao.NbIDTarefaMovida);
            }
            else
            {
                Debug.WriteLine("A tarefa correspondente ao Oid:{0} não foi encontrada na lista!");
            }
            ExibirLogTarefasImpactadas(retornoMovimentacao.TarefasImpactadas, tarefas, retornoMovimentacao.DataHoraAcao);
            Debug.WriteLine("\n*******************************************");
        }
예제 #12
0
        /// <summary>
        /// Método que verifica se tarefa atual pode receber um tipo de situacaoPlanejamento
        /// </summary>
        /// <param name="tarefa">instancia da tarefa</param>
        /// <param name="tipo">tipo de planejamento que irá receber</param>
        protected bool ValidarEdicaoSituacaoPlanejamento(CronogramaTarefaDto tarefa, CsTipoPlanejamento tipo, out string motivo)
        {
            motivo = null;
            if (tarefa == null)
            {
                return(false);
            }

            switch (tipo)
            {
            case CsTipoPlanejamento.Encerramento:
                if (PossuiEstimativaInicial(tarefa))
                {
                    return(true);
                }

                motivo = Resources.Alerta_DevePossuirDuracaoTarefa;
                return(false);

            case CsTipoPlanejamento.Execução:

                if (PossuiHorasRestantes(tarefa))
                {
                    return(true);
                }

                motivo = Resources.Alerta_DevePossuirDuracaoTarefa;
                return(false);

            case CsTipoPlanejamento.Planejamento:
                if (!PossuiEsforcoRealizado(tarefa))
                {
                    return(true);
                }

                motivo = Resources.Alerta_PossuiEsforcoRealizadoCadastrado;
                return(false);

            default:
                return(true);
            }
        }
예제 #13
0
 /// <summary>
 /// Método para verificar se uma tarefa é nula
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 protected bool TarefaNula(CronogramaTarefaDto tarefa)
 {
     return(tarefa == null);
 }
예제 #14
0
 /// <summary>
 /// Retorna se a tarefa possuir ou não esforço realizado
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 protected bool NaoPossuiEsforcoRealizado(CronogramaTarefaDto tarefa)
 {
     return(!PossuiEsforcoRealizado(tarefa));
 }
예제 #15
0
        /// <summary>
        /// Método para converter um objeto CronogramaTarefaDto em CronogramaTarefaDecorator
        /// </summary>
        /// <param name="dto">Instancia do objeto CronogramaTarefaDto</param>
        /// <returns></returns>
        public static CronogramaTarefaDecorator ToDecorator(this CronogramaTarefaDto dto)
        {
            string dtoString = JsonConvert.SerializeObject(dto);

            return(JsonConvert.DeserializeObject <CronogramaTarefaDecorator>(dtoString));
        }
예제 #16
0
 /// <summary>
 /// Verifica se uma tarefa não possui estimativa inicial
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 protected bool NaoPossuiHorasRestantes(CronogramaTarefaDto tarefa)
 {
     return(!PossuiHorasRestantes(tarefa));
 }
예제 #17
0
 /// <summary>
 /// Verifica se uma tarefa não possui estimativa inicial
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 protected bool NaoPossuiEstimativaInicial(CronogramaTarefaDto tarefa)
 {
     return(!PossuiEstimativaInicial(tarefa));
 }
 /// <summary>
 /// Verifica se uma tarefa não possui estimativa inicial
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 public static bool NaoPossuiEstimativaInicial(CronogramaTarefaDto tarefa)
 {
     return(!PossuiEstimativaInicial(tarefa));
 }
        public void DevePermitirEdicaoSituacaoPlanejamentoParaNaoIniciadoApenasQuandoNaoFoiRealizadoNenhumEsforco()
        {
            CronogramaTarefaDto novaTarefa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 0,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto novaTarefaComEstimativa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaConsumidaParcialmente = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
            };

            CronogramaTarefaDto tarefaPronta = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
            };

            CronogramaTarefaDto tarefaCancelada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaCanceladaParcialmenteRealizada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("6:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("2:00"),
            };

            string mensagem;

            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefa, CsTipoPlanejamento.Planejamento, out mensagem), "Deve poder estar na situação de não iniciado pois não foi realizado nenhum esforço");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefaComEstimativa, CsTipoPlanejamento.Planejamento, out mensagem), "Deve poder estar na situação de não iniciado pois não foi realizado nenhum esforço.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaConsumidaParcialmente, CsTipoPlanejamento.Planejamento, out mensagem), "Não deve poder estar na situação de não iniciado pois foi estimado um esforço realizado.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaPronta, CsTipoPlanejamento.Planejamento, out mensagem), "Não deve poder estar na situação de não iniciado pois a tarefa já foi executada.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCancelada, CsTipoPlanejamento.Planejamento, out mensagem), "Deve poder estar na situação de não iniciado pois não foi realizado nenhum esforço.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCanceladaParcialmenteRealizada, CsTipoPlanejamento.Planejamento, out mensagem), "Não deve poder estar na situação de não iniciado pois foi realizado um esforço parcial na tarefa.");
        }
 /// <summary>
 /// Verifica se uma tarefa não possui estimativa inicial
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 public static bool NaoPossuiHorasRestantes(CronogramaTarefaDto tarefa)
 {
     return(!PossuiHorasRestantes(tarefa));
 }
 /// <summary>
 /// Método para verificar se uma tarefa é nula
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 private static bool TarefaNula(CronogramaTarefaDto tarefa)
 {
     return(tarefa == null);
 }
 /// <summary>
 /// Retorna se a tarefa possuir ou não esforço realizado
 /// </summary>
 /// <param name="tarefa"></param>
 /// <returns></returns>
 public static bool NaoPossuiEsforcoRealizado(CronogramaTarefaDto tarefa)
 {
     return(!PossuiEsforcoRealizado(tarefa));
 }