예제 #1
0
 public void DeveCalcularDeTimeSpanOFormatoStringAQuantidadeDeHorasInformada()
 {
     Assert.AreEqual("24:50", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(24, 50, 0)));
     Assert.AreEqual("99:00", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(99, 0, 0)));
     Assert.AreEqual("99:00", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(98, 60, 0)));
     Assert.AreEqual("99:00", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(98, 60, 15)));
 }
예제 #2
0
 /// <summary>
 /// Método Responsável por realizar atualização da view
 /// </summary>
 private void AtualizarValoresHorariosDaView()
 {
     view.NbHoraFinal     = horaFinal.ToString(@"hh\:mm");
     view.NbHoraInicial   = horaInicial.ToString(@"hh\:mm");
     view.NbHoraRealizado = horaRealizada.ToString(@"hh\:mm");
     view.NbHoraRestante  = ConversorTimeSpan.CalcularStringHoras(horaRestante);
 }
예제 #3
0
 public void DeveCalcularDoFormatoStringParaOFormatoTimeSpanAQuantidadeDeHorasInformadas()
 {
     Assert.AreEqual(new TimeSpan(1, 0, 0), ConversorTimeSpan.CalcularHorasTimeSpan("01:00"));
     Assert.AreEqual(new TimeSpan(2, 30, 0), ConversorTimeSpan.CalcularHorasTimeSpan("02:30"));
     Assert.AreEqual(new TimeSpan(1, 1, 0, 0), ConversorTimeSpan.CalcularHorasTimeSpan("25:00"));
     Assert.AreEqual(new TimeSpan(35, 0, 0), ConversorTimeSpan.CalcularHorasTimeSpan("35:00"));
     Assert.AreEqual(new TimeSpan(99, 99, 0), ConversorTimeSpan.CalcularHorasTimeSpan("99:99"));
 }
예제 #4
0
 public void DeveDesconsiderarDoCalculoHorasAcimaDe9999()
 {
     //Tamanho máximo permitido 99:00
     Assert.AreEqual("99:99", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(200, 0, 0)));
     Assert.AreEqual("99:60", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(100, 0, 0)));
     Assert.AreEqual("99:99", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(99, 100, 0)));
     Assert.AreEqual("99:60", ConversorTimeSpan.CalcularStringHoras(new TimeSpan(99, 60, 0)));
 }
예제 #5
0
        /// <summary>
        /// Método responsável por calcular o valor da hora final
        /// </summary>
        public bool CalcularHoraFinal()
        {
            TimeSpan inicioPeriodo, fimPeriodo;

            horaFinal = horaInicial + horaRealizada;
            int  quantidadePeriodos = 0;
            long horasIntervalo     = 0;

            if (PeriodosDeTrabalho != null && PeriodosDeTrabalho.Length > 1)
            {
                foreach (var periodo in PeriodosDeTrabalho)
                {
                    inicioPeriodo = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(periodo.HoraInicial);
                    fimPeriodo    = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(periodo.HoraFinal);

                    if (horaInicial > fimPeriodo)
                    {
                        continue;
                    }

                    quantidadePeriodos++;
                    if (quantidadePeriodos > 1)
                    {
                        for (int i = 0; i < quantidadePeriodos; i++)
                        {
                            if (i + 1 < quantidadePeriodos)
                            {
                                TimeSpan _horaInicio = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(PeriodosDeTrabalho[i + 1].HoraInicial);
                                TimeSpan _horaFinal  = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(PeriodosDeTrabalho[i].HoraFinal);
                                horasIntervalo += _horaInicio.Ticks - _horaFinal.Ticks;
                            }
                        }
                    }

                    if (horaFinal <= fimPeriodo)
                    {
                        break;
                    }
                }
            }

            horaFinal += new TimeSpan(horasIntervalo);

            if (horaFinal.Days > 0)
            {
                //calculando a diferenca que será subtraída do esforço realizado restando apenas o esforço máximo atual
                TimeSpan diferenca = horaFinal - new TimeSpan(24, 0, 0);
                horaFinal     -= diferenca;
                horaRealizada -= diferenca;
                horaRestante  += diferenca;

                if (diferenca > TimeSpan.Zero)
                {
                    return(false);
                }
            }
            return(true);
        }
예제 #6
0
        /// <summary>
        /// Método responsável por calcular o valor da hora final
        /// </summary>
        public void CalcularHoraFinal()
        {
            TimeSpan inicioPeriodo, fimPeriodo;

            horaFinal = horaInicial + horaRealizada;
            int  quantidadePeriodos = 0;
            long horasIntervalo     = 0;

            if (PeriodosDeTrabalho != null && PeriodosDeTrabalho.Length > 1)
            {
                foreach (var periodo in PeriodosDeTrabalho)
                {
                    inicioPeriodo = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(periodo.HoraInicial);
                    fimPeriodo    = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(periodo.HoraFinal);

                    if (horaInicial > fimPeriodo)
                    {
                        continue;
                    }

                    quantidadePeriodos++;
                    if (quantidadePeriodos > 1)
                    {
                        for (int i = 0; i < quantidadePeriodos; i++)
                        {
                            if (i + 1 < quantidadePeriodos)
                            {
                                TimeSpan hi = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(PeriodosDeTrabalho[i + 1].HoraInicial);
                                TimeSpan hf = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(PeriodosDeTrabalho[i].HoraFinal);
                                horasIntervalo += hi.Ticks - hf.Ticks;
                            }
                        }
                    }

                    if (horaFinal <= fimPeriodo)
                    {
                        break;
                    }
                }
            }
            horaFinal += new TimeSpan(horasIntervalo);
            if (horaFinal.Days > 0)
            {
                //calculando a diferenca que será subtraída do esforço realizado restando apenas o esforço máximo atual
                TimeSpan diferenca = horaFinal - new TimeSpan(24, 0, 0);
                horaFinal     -= diferenca;
                horaRealizada -= diferenca;
                horaRestante  += diferenca;
                if (diferenca > new TimeSpan(0))
                {
                    if (QuandoHoraFinalUltrapassarMeiaNoite != null)
                    {
                        QuandoHoraFinalUltrapassarMeiaNoite(diferenca);
                    }
                }
            }
            AtualizarValoresHorariosDaView();
        }
예제 #7
0
        public void DadoQueExistaATarefa(Table table)
        {
            TarefaEstimativaHelper tarefaHelper = table.CreateInstance <TarefaEstimativaHelper>();

            tarefaAtual = planejamentoServiceStub.CriarTarefa(tarefaHelper.Descricao);
            tarefaAtual.NbEstimativaInicial  = tarefaHelper.EstimativaInicial;
            tarefaAtual.NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks(tarefaHelper.Realizado);
            tarefaAtual.NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks(tarefaHelper.Restante);
        }
예제 #8
0
        /// <summary>
        /// Método responsável por calcular o valor da hora final
        /// </summary>
        public TimeSpan CalcularHoraFinal(PeriodoTrabalhoDto[] PeriodosDeTrabalho, TimeSpan horaInicio, ref TimeSpan esforcoRealizado, ref TimeSpan horaRestante, ref bool ultrapassouLimiteDia)
        {
            TimeSpan inicioPeriodo, fimPeriodo;
            TimeSpan horaFinal          = horaInicio + esforcoRealizado;
            int      quantidadePeriodos = 0;
            long     horasIntervalo     = 0;

            if (PeriodosDeTrabalho != null && PeriodosDeTrabalho.Length > 1)
            {
                foreach (var periodo in PeriodosDeTrabalho)
                {
                    inicioPeriodo = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(periodo.HoraInicial);
                    fimPeriodo    = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(periodo.HoraFinal);

                    if (horaInicio > fimPeriodo)
                    {
                        continue;
                    }

                    quantidadePeriodos++;
                    if (quantidadePeriodos > 1)
                    {
                        for (int i = 0; i < quantidadePeriodos; i++)
                        {
                            if (i + 1 < quantidadePeriodos)
                            {
                                TimeSpan hi = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(PeriodosDeTrabalho[i + 1].HoraInicial);
                                TimeSpan hf = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(PeriodosDeTrabalho[i].HoraFinal);
                                horasIntervalo += hi.Ticks - hf.Ticks;
                            }
                        }
                    }

                    if (horaFinal <= fimPeriodo)
                    {
                        break;
                    }
                }
            }

            horaFinal += new TimeSpan(horasIntervalo);

            if (horaFinal.Days > 0)
            {
                //calculando a diferenca que será subtraída do esforço realizado restando apenas o esforço máximo atual
                TimeSpan diferenca = horaFinal - new TimeSpan(24, 0, 0);
                horaFinal        -= diferenca;
                esforcoRealizado -= diferenca;
                horaRestante     += diferenca;

                if (diferenca > TimeSpan.Zero)
                {
                    ultrapassouLimiteDia = true;
                }
            }
            return(horaFinal);
        }
예제 #9
0
        public void DeveConverterParaStringEDepoisRetornarParaTimeSpanUmValorTimesPan()
        {
            TimeSpan tempo = new TimeSpan(99, 99, 0);
            TimeSpan tempoConvertido;
            string   tempoEmString = ConversorTimeSpan.CalcularStringHoras(tempo);

            tempoConvertido = ConversorTimeSpan.CalcularHorasTimeSpan(tempoEmString);
            Assert.AreEqual(tempo, tempoConvertido, "Deveria totalizar o mesmo valor");
            Assert.AreEqual("99:99", tempoEmString);
        }
        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.");
        }
예제 #11
0
        public void ConverterHorasDeStringParaTicksTest()
        {
            long estimativaAtual, estimativaEsperada;

            estimativaEsperada = 361200000000;
            estimativaAtual    = ConversorTimeSpan.ConverterHorasDeStringParaTicks("10:02");
            Assert.AreEqual(estimativaEsperada, estimativaAtual, "A estimativa convertida deveria ser a mesma da estimativaAtual");

            estimativaEsperada = 180000000000;
            estimativaAtual    = ConversorTimeSpan.ConverterHorasDeStringParaTicks("5:00");
            Assert.AreEqual(estimativaEsperada, estimativaAtual, "A estimativa convertida deveria ser a mesma da estimativaAtual");
        }
예제 #12
0
        public void DeveConverterOsMinutosInformadosParaHorasQuandoMinutosNaoUltrapassaremUmaHora()
        {
            const int quantidade1 = 0;
            const int quantidade2 = 1;
            const int quantidade3 = 30;
            const int quantidade4 = 59;

            Assert.AreEqual(0, ConversorTimeSpan.ConverterMinutosParaHorasInteiras(quantidade1), string.Format("Deveria ter convertido {0} minuto(s) para 0(zero) horas.", quantidade1));
            Assert.AreEqual(0, ConversorTimeSpan.ConverterMinutosParaHorasInteiras(quantidade2), string.Format("Deveria ter convertido {0} minuto(s) para 0(zero) horas.", quantidade2));
            Assert.AreEqual(0, ConversorTimeSpan.ConverterMinutosParaHorasInteiras(quantidade3), string.Format("Deveria ter convertido {0} minuto(s) para 0(zero) horas.", quantidade3));
            Assert.AreEqual(0, ConversorTimeSpan.ConverterMinutosParaHorasInteiras(quantidade4), string.Format("Deveria ter convertido {0} minuto(s) para 0(zero) horas.", quantidade4));
        }
        public void HouveMudancasEsforcoRealizadoModificadaTest()
        {
            CronogramaTarefaGridItem tarefaAtual;
            Guid oidCronograma           = Guid.NewGuid();
            Guid oidSituacaoPlanejamento = Guid.NewGuid();

            tarefaAtual = CriarTarefa(oidCronograma, oidSituacaoPlanejamento);
            TarefaEditada tarefaEmEdicao = new TarefaEditada(tarefaAtual);

            tarefaAtual.NbRealizado = 0;
            Assert.IsFalse(tarefaEmEdicao.HouveMudancas(tarefaAtual), "As mudanças nulas não devem ser registradas");
            tarefaAtual.NbRealizado = ConversorTimeSpan.ConverterHorasDeStringParaTicks("12:00");
            Assert.IsTrue(tarefaEmEdicao.HouveMudancas(tarefaAtual), "Deveria alertar que houve mudança, pois foi modificado esforço realizado da tarefa");
        }
예제 #14
0
        /// <summary>
        /// Méetodo responsável por retornar ocorrencia da primeira hora de trabalho dos periodos de trabalho atuais
        /// </summary>
        /// <returns>hora de inicio do dia de trabalho</returns>
        public TimeSpan GetHoraInicioPrimeiroPeriodoDeTrabalho()
        {
            TimeSpan horaInicioDiaDeTrabalho;

            if (PeriodosDeTrabalho != null && PeriodosDeTrabalho.Length > 0)
            {
                horaInicioDiaDeTrabalho = PeriodosDeTrabalho.Min(o => ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(o.HoraInicial));
            }
            else
            {
                horaInicioDiaDeTrabalho = new TimeSpan(0);
            }
            return(horaInicioDiaDeTrabalho);
        }
예제 #15
0
        public void DeveConverterOsMinutosInformadosParaHorasQuandoMinutosUltrapassaremUmaHora()
        {
            const int quantidade1 = 60;
            const int quantidade2 = 120;
            const int quantidade3 = 1200;

            const int resultado1 = 1;
            const int resultado2 = 2;
            const int resultado3 = 20;

            Assert.AreEqual(resultado1, ConversorTimeSpan.ConverterMinutosParaHorasInteiras(quantidade1), string.Format("Deveria ter convertido {0} minuto(s) para {1} hora(s).", quantidade1, resultado1));
            Assert.AreEqual(resultado2, ConversorTimeSpan.ConverterMinutosParaHorasInteiras(quantidade2), string.Format("Deveria ter convertido {0} minuto(s) para {1} hora(s).", quantidade2, resultado2));
            Assert.AreEqual(resultado3, ConversorTimeSpan.ConverterMinutosParaHorasInteiras(quantidade3), string.Format("Deveria ter convertido {0} minuto(s) para {1} hora(s).", quantidade3, resultado3));
        }
예제 #16
0
 /// <summary>
 /// Método responsável por selecionar o periodo de trabalho do dia atual
 /// </summary>
 public void SelecionarPeriodoTrabalhoDiaAtual()
 {
     if (DiaTrabalhoAtual != null)
     {
         PeriodosDeTrabalho   = DiaTrabalhoAtual.PeriodosTrabalho.OrderBy(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraInicial)).ToArray();
         HoraInicioExpediente = new TimeSpan(PeriodosDeTrabalho.Min(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraInicial)));
         HoraFinalExpediente  = new TimeSpan(PeriodosDeTrabalho.Max(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraFinal)));
     }
     else
     {
         PeriodoTrabalhoDto periodo = new PeriodoTrabalhoDto("08:00", "18:00");
         PeriodosDeTrabalho    = new PeriodoTrabalhoDto[1];
         PeriodosDeTrabalho[0] = periodo;
     }
 }
예제 #17
0
        public void ConverterHorasDeTicksParaStringTest()
        {
            string estimativaAtual, estimativaEsperada;

            estimativaEsperada = "05:00";
            estimativaAtual    = ConversorTimeSpan.ConverterHorasDeTicksParaString(180000000000);
            Assert.AreEqual(estimativaEsperada, estimativaAtual, "A estimativa convertida deveria ser a mesma da estimativaAtual");

            estimativaEsperada = "10:02";
            estimativaAtual    = ConversorTimeSpan.ConverterHorasDeTicksParaString(361200000000);
            Assert.AreEqual(estimativaEsperada, estimativaAtual, "A estimativa convertida deveria ser a mesma da estimativaAtual");

            estimativaEsperada = "05:00";
            estimativaAtual    = ConversorTimeSpan.ConverterHorasDeTicksParaString(180000000000);
            Assert.AreEqual(estimativaEsperada, estimativaAtual, "A estimativa convertida deveria ser a mesma da estimativaAtual pois foi arredondado");
        }
        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.");
        }
예제 #19
0
 /// <summary>
 /// Método responsável por selecionar o periodo de trabalho do dia atual
 /// </summary>
 public PeriodoTrabalhoDto[] SelecionarPeriodoTrabalhoDiaAtual(DiaTrabalhoDto diaTrabalho, out TimeSpan horaInicioExpediente, out TimeSpan horaFimExpediente)
 {
     PeriodoTrabalhoDto[] periodos;
     if (diaTrabalho != null)
     {
         periodos             = diaTrabalho.PeriodosTrabalho.OrderBy(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraInicial)).ToArray();
         horaInicioExpediente = new TimeSpan(periodos.Min(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraInicial)));
         horaFimExpediente    = new TimeSpan(periodos.Max(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraFinal)));
     }
     else
     {
         PeriodoTrabalhoDto periodo = new PeriodoTrabalhoDto("08:00", "18:00");
         horaInicioExpediente = new TimeSpan(8, 0, 0);
         horaFimExpediente    = new TimeSpan(18, 0, 0);
         periodos             = new PeriodoTrabalhoDto[] { periodo };
     }
     return(periodos);
 }
예제 #20
0
        /// <summary>
        /// Método para preencher uma inicialização do dia selecionado
        /// </summary>
        /// <param name="semanaTrabalho">semana de trabalho do colaborador</param>
        /// <param name="dataSelecionada">data de selecao</param>
        /// <returns></returns>
        private static InicializadorEstimativaDto PreencherInicializacaoDiaSelecionado(SemanaTrabalho semanaTrabalho, DateTime dataSelecionada)
        {
            InicializadorEstimativaDto inicializadorDto = new InicializadorEstimativaDto();

            if (SemanaTrabalhoBo.DiaAtualPossuiPeriodoTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek))
            {
                inicializadorDto.DataEstimativa = dataSelecionada;
                DiaTrabalho dia   = SemanaTrabalhoDao.SelecionarDiaTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek);
                long        ticks = dia.PeriodosDeTrabalho.Min(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraInicial));
                inicializadorDto.HoraInicialEstimativa = new TimeSpan(ticks);
            }
            else
            {
                inicializadorDto = new InicializadorEstimativaDto()
                {
                    DataEstimativa = dataSelecionada, HoraInicialEstimativa = new TimeSpan(8, 0, 0)
                }
            };

            inicializadorDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSelecionada.DayOfWeek, semanaTrabalho);
            return(inicializadorDto);
        }
예제 #21
0
 /// <summary>
 /// Método responsável por capturar a horaInicial da view
 /// </summary>
 /// <returns>Estrutura timespan com o tempo atual da view</returns>
 public virtual TimeSpan GetValorHoraInicialView()
 {
     return(ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(view.NbHoraInicial));
 }
예제 #22
0
 public void DadoQueOUltimoEsforcoEstimadoPeloColaboradorSejaNoDiaAs(DateTime dataAtual, string horaInicio)
 {
     inicializadorDeEstimativa = new InicializadorEstimativaDto()
     {
         DataEstimativa = dataAtual, DiaAtual = diaTrabalhoAtual, HoraInicialEstimativa = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(horaInicio)
     };
     planejamentoServiceStub.RetornoInicializadorEstimativa = inicializadorDeEstimativa;
 }
예제 #23
0
        /// <summary>
        /// Método responsável por efetuar a seleção da hora de inicio da estimativa de uma tarefa para o colaborador
        /// </summary>
        /// <param name="contexto">sessão atual do banco</param>
        /// <param name="loginColaborador">login do colaborador atual</param>
        /// <returns>tarefaHistorico preenchida com</returns>
        public static InicializadorEstimativaDto SelecionarInicializadorEstimativaDto(string loginColaborador, DateTime dataSolicitacao, SemanaTrabalho semanaTrabalho)
        {
            WexDb contexto = ContextFactoryManager.CriarWexDb();

            TarefaHistoricoTrabalho ultimoHistoricoTrabalho = TarefaHistoricoTrabalhoDao.ConsultarUltimoEsforcoRealizadoColaborador(contexto, loginColaborador, dataSolicitacao);

            InicializadorEstimativaDto inicializadorEstimativaDto = new InicializadorEstimativaDto();

            DateTime dataSelecionada;

            if (!ValidarTarefaHistoricoTrabalho(ultimoHistoricoTrabalho))
            {
                dataSelecionada = dataSolicitacao.Date;
                SelecionarDataDiaUtilInicial(semanaTrabalho, ref dataSelecionada);
                return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada));
            }

            bool ultrapassouLimiteDia = ultimoHistoricoTrabalho.HoraFinal.Days > 0;

            dataSelecionada = new DateTime(ultimoHistoricoTrabalho.DtRealizado.Ticks);
            if (ultrapassouLimiteDia)
            {
                dataSelecionada = SelecionarDataProximoDiaUtil(semanaTrabalho, dataSelecionada);
                return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada));
            }

            SelecionarDataDiaUtilInicial(semanaTrabalho, ref dataSelecionada);
            if (dataSelecionada.Equals(dataSolicitacao.Date))
            {
                if (dataSelecionada.Equals(ultimoHistoricoTrabalho.DtRealizado))
                {
                    inicializadorEstimativaDto.DataEstimativa        = dataSelecionada;
                    inicializadorEstimativaDto.HoraInicialEstimativa = ultimoHistoricoTrabalho.HoraFinal;
                    inicializadorEstimativaDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSelecionada.DayOfWeek, semanaTrabalho);
                    return(inicializadorEstimativaDto);
                }
                return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada));
            }
            else
            {
                if (SemanaTrabalhoBo.DiaAtualPossuiPeriodoTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek))
                {
                    DiaTrabalho dia   = SemanaTrabalhoDao.SelecionarDiaTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek);
                    long        ticks = dia.PeriodosDeTrabalho.Max(o => ConversorTimeSpan.ConverterHorasDeStringParaTicks(o.HoraFinal));
                    TimeSpan    horaFinalExpediente = new TimeSpan(ticks);
                    if (ultimoHistoricoTrabalho.HoraFinal >= horaFinalExpediente)
                    {
                        dataSelecionada = SelecionarDataProximoDiaUtil(semanaTrabalho, dataSelecionada);
                        return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada));
                    }
                    if (dataSelecionada.Equals(ultimoHistoricoTrabalho.DtRealizado))
                    {
                        inicializadorEstimativaDto.DataEstimativa        = dataSelecionada;
                        inicializadorEstimativaDto.HoraInicialEstimativa = ultimoHistoricoTrabalho.HoraFinal;
                        inicializadorEstimativaDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSelecionada.DayOfWeek, semanaTrabalho);
                        return(inicializadorEstimativaDto);
                    }
                    return(PreencherInicializacaoDiaSelecionado(semanaTrabalho, dataSelecionada));
                }
                else
                {
                    inicializadorEstimativaDto.DataEstimativa        = dataSolicitacao.Date;
                    inicializadorEstimativaDto.HoraInicialEstimativa = new TimeSpan(8, 0, 0);
                    inicializadorEstimativaDto.DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(dataSolicitacao.DayOfWeek, semanaTrabalho);
                }
                return(inicializadorEstimativaDto);
            }
        }
예제 #24
0
 public TarefaHistoricoTrabalhoDtoDataBuilder Restaram(string horaRestante)
 {
     historico.NbRestante = ConversorTimeSpan.CalcularHorasTimeSpan(horaRestante);
     return(this);
 }
예제 #25
0
 public TarefaHistoricoTrabalhoDtoDataBuilder Realizou(string horaRealizado)
 {
     historico.NbRealizado = ConversorTimeSpan.ConverterHorasDeStringParaTimeSpan(horaRealizado);
     return(this);
 }
예제 #26
0
 /// <summary>
 /// Método para verificar se  a hora inicial informada é a mesma que a sugerida pelo serviço
 /// </summary>
 /// <param name="horaInicial"></param>
 /// <returns></returns>
 public bool HoraInicialForAHoraInicialSugerida(string horaInicial)
 {
     return(!string.IsNullOrEmpty(horaInicial) && HoraInicialSugerida == ConversorTimeSpan.CalcularHorasTimeSpan(horaInicial));
 }
예제 #27
0
 /// <summary>
 /// Método responsável por capturar o NbHoraRealizado da view
 /// </summary>
 /// <returns>Estrutura timespan com o tempo atual da view</returns>
 public virtual TimeSpan GetValorHoraRealizadoView()
 {
     return(ConversorTimeSpan.CalcularHorasTimeSpan(view.NbHoraRealizado));
 }
예제 #28
0
        public void RnValidarTarefaEditadaQuandoSituacaoEEstimativasSejamAlteradasTest()
        {
            //cria situação planejamento
            SituacaoPlanejamento situacaoPlanejamento1 = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1",
                                                                                                           CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução,
                                                                                                           CsPadraoSistema.Sim, true);

            //cria situação planejamento
            SituacaoPlanejamento situacaoPlanejamento2 = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S2",
                                                                                                           CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Cancelamento,
                                                                                                           CsPadraoSistema.Não, true);

            //cria cronograma
            Cronograma cronograma1 = CronogramaFactoryEntity.CriarCronograma(contexto, "Cronograma 01", situacaoPlanejamento1, new DateTime(),
                                                                             new DateTime(), true);

            //cria colaborador
            Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true);

            //adiciona colaborador como responsável pela tarefa
            string responsaveis = colaborador1.NomeCompleto;

            List <CronogramaTarefa> tarefasImpactadas;
            DateTime dataHoraAcao = new DateTime();
            //cria tarefa a partir da RnIncluirTarefa em CronogramaTarefa
            CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(cronograma1.Oid, "Tarefa 01", situacaoPlanejamento1, DateTime.Now, responsaveis, colaborador1.Usuario.UserName, out tarefasImpactadas, ref dataHoraAcao, "Criar método1", 3, 0);

            //recupera a tarefa criada
            CronogramaTarefa tarefa = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(novaTarefa.Oid, o => o.Tarefa.SituacaoPlanejamento);

            //criar um Dto da tarefa e repassa as informações para poder utilizar o método que está sendo testado
            CronogramaTarefaGridItem tarefaDto = new CronogramaTarefaGridItem();

            tarefaDto.OidCronogramaTarefa = tarefa.Oid;
            tarefaDto.TxDescricaoSituacaoPlanejamentoTarefa = tarefa.Tarefa.SituacaoPlanejamento.TxDescricao;
            tarefaDto.NbEstimativaInicial  = tarefa.Tarefa.NbEstimativaInicial;
            tarefaDto.NbEstimativaRestante = tarefa.Tarefa.NbEstimativaRestante;

            //adiciona tarefa na lista de tarefas antigas (antes de serem alteradas)
            List <CronogramaTarefaGridItem> tarefasAntigas = new List <CronogramaTarefaGridItem>();

            tarefasAntigas.Add(tarefaDto);

            //cria uma tarefa Dto alterada e modifica o campo situação de planejamento
            CronogramaTarefaGridItem tarefaDtoAlterada = new CronogramaTarefaGridItem();

            tarefaDtoAlterada.OidCronogramaTarefa = tarefaDto.OidCronogramaTarefa;
            tarefaDtoAlterada.TxDescricaoSituacaoPlanejamentoTarefa = situacaoPlanejamento2.TxDescricao;
            tarefaDtoAlterada.NbEstimativaInicial  = 18;
            tarefaDtoAlterada.NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("5:00");

            //adiciona a tarefa na lista de tarefas modificadas.
            List <CronogramaTarefaGridItem> tarefasAtualizadas = new List <CronogramaTarefaGridItem>();

            tarefasAtualizadas.Add(tarefaDtoAlterada);

            //valida os campos alterados
            Hashtable camposAlterados = TarefaEditada.ValidarCamposRelevantesAlterados(tarefasAntigas, tarefasAtualizadas);

            List <int> campos = new List <int>();

            campos = (List <int>)camposAlterados[tarefaDto.OidCronogramaTarefa];

            Assert.AreEqual(3, campos.Count, "Deveriam ter sido alterados 3 campos.");
            Assert.AreEqual((int)CsTipoCampoEditado.SituacaoPlanejamento, campos[0], "O campo alterado deveria ser do mesmo Tipo");
            Assert.AreEqual((int)CsTipoCampoEditado.EstimativaInicial, campos[1], "O campo alterado deveria ser do mesmo Tipo");
            Assert.AreEqual((int)CsTipoCampoEditado.EstimativaRestante, campos[2], "O campo alterado deveria ser do mesmo Tipo");
            Assert.AreNotEqual(tarefaDto.TxDescricaoSituacaoPlanejamentoTarefa, tarefaDtoAlterada.TxDescricaoSituacaoPlanejamentoTarefa, "Não deveriam ser iguais, pois o campo foi alterado.");
            Assert.AreNotEqual(tarefaDto.NbEstimativaInicial, tarefaDtoAlterada.NbEstimativaInicial, "Não deveriam ser iguais, pois o campo foi alterado.");
            Assert.AreNotEqual(tarefaDto.NbEstimativaRestante, tarefaDtoAlterada.NbEstimativaRestante, "Não deveriam ser iguais, pois o campo foi alterado.");
        }
예제 #29
0
 /// <summary>
 /// Método responsável por capturar o NbHoraRealizado da view
 /// </summary>
 /// <returns>Estrutura timespan com o tempo atual da view</returns>
 public virtual TimeSpan GetValorHoraRestanteView()
 {
     return(ConversorTimeSpan.CalcularHorasTimeSpan(view.NbHoraRestante));
 }
        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.");
        }