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"); }
/// <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); } }
/// <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); } }
/// <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); }
/// <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); }
/// <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)); }
/// <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); } }
public ActionResult Index() { SemanaTrabalhoDto semanaTrabalho = SemanaTrabalhoBo.DtoFactory(new SemanaTrabalho()); return(Json(semanaTrabalho, JsonRequestBehavior.AllowGet)); }
/// <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())); }