示例#1
0
        public void DeveRetornarUmaDiariaDeOitoAsDezoitoQuandoODiaAtualNaoPossuirPeriodosDeTrabalhoCadastrados()
        {
            SemanaTrabalho semana = SemanaTrabalhoBo.SemanaTrabalhoPadraoFactory();
            DiaTrabalhoDto diaDto = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDto(DayOfWeek.Saturday, semana);

            Assert.AreEqual(1, diaDto.PeriodosTrabalho.Count, "So deveria conter 1 periodo de 8:00 as 18:00");
            Assert.AreEqual("8:00", diaDto.PeriodosTrabalho[0].HoraInicial, "O horario inicial deveria ser as 8:00");
            Assert.AreEqual("18:00", diaDto.PeriodosTrabalho[0].HoraFinal, "O horario inicial deveria ser as 8:00");
        }
示例#2
0
 /// <summary>
 /// Método para buscar uma semana de trabalho
 /// </summary>
 /// <returns></returns>
 public static SemanaTrabalho ConsultarSemanaTrabalho()
 {
     if (SemanaTrabalho == null)
     {
         return(SemanaTrabalhoBo.SemanaTrabalhoPadraoFactory());
     }
     else
     {
         return(SemanaTrabalho);
     }
 }
示例#3
0
        /// <summary>
        /// Método que seleciona o proximo dia util do colaborador
        /// </summary>
        /// <param name="semanaTrabalho"></param>
        /// <param name="dataSelecionada"></param>
        private static void SelecionarDataDiaUtilInicial(SemanaTrabalho semanaTrabalho, ref DateTime dataSelecionada)
        {
            if (!ValidarSemanaTrabalho(semanaTrabalho))
            {
                return;
            }

            if (!SemanaTrabalhoBo.DiaAtualPossuiPeriodoTrabalho(semanaTrabalho, dataSelecionada.DayOfWeek))
            {
                dataSelecionada = SelecionarDataProximoDiaUtil(semanaTrabalho, dataSelecionada);
            }
        }
示例#4
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);
        }
示例#5
0
        /// <summary>
        /// Método que busca o proximo dia util do colaborador baseado na semana de trabalho cadastrada
        /// </summary>
        /// <param name="semanaTrabalho">semana de trabalho</param>
        /// <param name="dataSelecionada">data selecionada</param>
        public static DateTime SelecionarDataProximoDiaUtil(SemanaTrabalho semanaTrabalho, DateTime dataSelecionada)
        {
            if (!ValidarSemanaTrabalho(semanaTrabalho))
            {
                return(dataSelecionada);
            }

            DateTime dataSelecionadaOriginal = new DateTime(dataSelecionada.Ticks);

            dataSelecionada = dataSelecionada.AddDays(1);
            DayOfWeek diaSemana = dataSelecionada.DayOfWeek;

            while (!SemanaTrabalhoBo.DiaAtualPossuiPeriodoTrabalho(semanaTrabalho, diaSemana))
            {
                dataSelecionada = dataSelecionada.AddDays(1);
                diaSemana       = dataSelecionada.DayOfWeek;
                if (dataSelecionadaOriginal.DayOfWeek.Equals(diaSemana))
                {
                    dataSelecionada = dataSelecionadaOriginal;
                    break;
                }
            }
            return(dataSelecionada);
        }
示例#6
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 = SemanaTrabalhoBo.SemanaTrabalhoPadraoFactory();

            return(SelecionarInicializadorEstimativaDto(loginColaborador, dataSolicitacao, semanaTrabalho));
        }
示例#7
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);
            }
        }
示例#8
0
        public ActionResult Index()
        {
            SemanaTrabalhoDto semanaTrabalho = SemanaTrabalhoBo.DtoFactory(new SemanaTrabalho());

            return(Json(semanaTrabalho, JsonRequestBehavior.AllowGet));
        }
示例#9
0
 /// <summary>
 /// Método responsável por retornar o dia de trabalho atual baseado na dia da semana
 /// </summary>
 /// <param name="diaDaSemana">dia da semana (DayOfWeek)</param>
 /// <returns></returns>
 public static DiaTrabalhoDto ConsultarDiaAtualDeTrabalhoDtoDaSemanaPadrao(DayOfWeek diaDaSemana)
 {
     return(ConsultarDiaAtualDeTrabalhoDto(diaDaSemana, SemanaTrabalhoBo.SemanaTrabalhoPadraoFactory()));
 }