public void ExcluirCronogramaQuandoExistirTarefasComHistoricoNoCronogramaTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamentoNaoIniciado = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Não Iniciado", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Planejamento, CsPadraoSistema.Sim, true); SituacaoPlanejamento situacaoPlanejamentoEmAndamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Em Andamento", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Planejamento, CsPadraoSistema.Sim, true); Colaborador colaborador = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); Cronograma cronograma1 = CronogramaFactoryEntity.CriarCronograma(contexto, "Cronograma 01", situacaoPlanejamentoNaoIniciado, new DateTime(), new DateTime(), true); List <CronogramaTarefa> tarefasReordenadas = new List <CronogramaTarefa>(); DateTime dataHoraDaAcao = new DateTime(); CronogramaTarefa cronogramaTarefa = CronogramaBo.CriarTarefa(cronograma1.Oid, (string)"Tarefa 01", situacaoPlanejamentoNaoIniciado.Oid.ToString(), DateTime.Today, colaborador.Usuario.UserName, "", "", out tarefasReordenadas, ref dataHoraDaAcao, 5); TarefaHistoricoTrabalhoBo.CriarHistoricoTarefa((Guid)cronogramaTarefa.OidTarefa, colaborador.Usuario.UserName, new TimeSpan(3, 0, 0), DateTime.Now, new TimeSpan(8, 0, 0), new TimeSpan(11, 0, 0), "comentário", new TimeSpan(2, 0, 0), situacaoPlanejamentoEmAndamento.Oid, ""); TarefaHistoricoTrabalho historicoCriado = TarefaHistoricoTrabalhoDao.ConsultarTarefaHistoricoAtualPorOidTarefa((Guid)cronogramaTarefa.OidTarefa); bool cronogramaExcluido = CronogramaBo.ExcluirCronograma(contexto, cronograma1.Oid); Assert.IsNotNull(historicoCriado, "Deveria ter criado um histórico pra tarefa"); Assert.IsTrue(cronogramaExcluido, "Deveria ser true, pois o cronograma exclui quaisquer tarefas associadas a ele."); }
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 responsável por retornar a ultima hora trabalhada pelo colaborador /// </summary> /// <param name="contexto"></param> /// <param name="login"></param> /// <returns></returns> public static TarefaHistoricoTrabalhoDto ConsultarUltimoEsforcoRealizadoColaboradorDto(WexDb contexto, string login) { TarefaHistoricoTrabalho historicoAtual = TarefaHistoricoTrabalhoDao.ConsultarUltimoEsforcoRealizadoColaborador(contexto, login); if (historicoAtual == null) { return(new TarefaHistoricoTrabalhoDto()); } return(DtoFactory(historicoAtual)); }
/// <summary> /// Método responsável por buscar o histórico mais atual de uma tarefa. /// </summary> /// <param name="contexto">Sessão Corrente</param> /// <param name="oidTarefa">Oid da Tarefa</param> /// <returns>Objeto TarefaHistoricoTrabalhoDto</returns> public static TarefaHistoricoTrabalhoDto ConsultarTarefaHistoricoAtualPorOidTarefaDto(Guid oidTarefa) { TarefaHistoricoTrabalho historicoAtual = TarefaHistoricoTrabalhoDao.ConsultarTarefaHistoricoAtualPorOidTarefa(oidTarefa); if (historicoAtual == null) { return(new TarefaHistoricoTrabalhoDto()); } return(DtoFactory(historicoAtual)); }
/// <summary> /// Método responsável por buscar a ultima hora trabalhada em um dia especifico /// </summary> /// <param name="contexto">Sessão atual do banco</param> /// <param name="login">login do colaborador atual</param> /// <param name="dataEspecifica"> data selecionada pelo colaborador</param> /// <returns>inicializador de estimativa</returns> public static InicializadorEstimativaDto SelecionarInicializadorEstimativaColaboradorParaDataEspecifica(string login, DateTime dataEspecifica) { using (WexDb contexto = ContextFactoryManager.CriarWexDb()) { TimeSpan ultimaHoraTrabalhada = TarefaHistoricoTrabalhoDao.ConsultarHorarioUltimaTarefaDiaColaborador(contexto, login, dataEspecifica); return(new InicializadorEstimativaDto() { DataEstimativa = dataEspecifica.Date, HoraInicialEstimativa = ultimaHoraTrabalhada, DiaAtual = TarefaHistoricoTrabalhoDao.ConsultarDiaAtualDeTrabalhoDtoDaSemanaPadrao(dataEspecifica.DayOfWeek) }); } }
public void ConsultarHorarioUltimaTarefaDiaColaboradorQuandoColaboradorTiverRealizadoTarefaNoDia() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamentoNaoIniciado = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Não Iniciado", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Planejamento, CsPadraoSistema.Sim, true); SituacaoPlanejamento situacaoPlanejamentoEmAndamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Em Andamento", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Planejamento, CsPadraoSistema.Sim, true); //colaborador1 Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dtInicio = new DateTime(); //cria tarefa Tarefa tarefa = new Tarefa(); tarefa = TarefaBo.CriarTarefa((string)"Tarefa 01", situacaoPlanejamentoNaoIniciado, dtInicio, colaborador1.Usuario.UserName, (string)"Criar método", responsaveis, 5); //Salvando linha base tarefa tarefa.CsLinhaBaseSalva = true; contexto.Entry <Tarefa>(tarefa).State = System.Data.EntityState.Modified; contexto.SaveChanges(); TarefaHistoricoTrabalhoBo.CriarHistoricoTarefa(tarefa.Oid, colaborador1.Usuario.UserName, new TimeSpan(3, 0, 0), DateTime.Now, new TimeSpan(8, 0, 0), new TimeSpan(11, 0, 0), "comentário", new TimeSpan(2, 0, 0), situacaoPlanejamentoEmAndamento.Oid, ""); //colaborador2 Colaborador colaborador2 = ColaboradorFactoryEntity.CriarColaborador(contexto, "gabriel.matos", true); TarefaHistoricoTrabalhoBo.CriarHistoricoTarefa(tarefa.Oid, colaborador2.Usuario.UserName, new TimeSpan(1, 0, 0), DateTime.Now, new TimeSpan(13, 0, 0), new TimeSpan(14, 0, 0), "comentário historico 2", new TimeSpan(1, 0, 0), situacaoPlanejamentoEmAndamento.Oid, ""); TimeSpan nbHoraFinal = TarefaHistoricoTrabalhoDao.ConsultarHorarioUltimaTarefaDiaColaborador(contexto, colaborador1.Usuario.UserName, DateTime.Now); Assert.AreEqual(new TimeSpan(11, 0, 0), nbHoraFinal, "Deveria ser o mesmo horário, pois o colaborador 1 realizou uma tarefa de 8 às 11 no dia."); }
/// <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 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 void ConsultarHorarioUltimaTarefaDiaColaboradorQuandoColaboradorTiverRealizadoTarefasEmDiferentesCronogramas() { #region Construção Cenário SituacaoPlanejamento situacaoPlanejamentoNaoIniciado = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Não Iniciado", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Planejamento, CsPadraoSistema.Sim, true); SituacaoPlanejamento situacaoPlanejamentoEmAndamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Em Andamento", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Planejamento, CsPadraoSistema.Sim, true); Cronograma cronograma1 = new Cronograma() { DtInicio = new DateTime(2013, 02, 1), DtFinal = new DateTime(2013, 02, 15), TxDescricao = "WexCronograma1", SituacaoPlanejamento = situacaoPlanejamentoEmAndamento }; contexto.Cronograma.Add(cronograma1); contexto.SaveChanges(); Cronograma cronograma2 = new Cronograma() { DtInicio = new DateTime(2013, 02, 1), DtFinal = new DateTime(2013, 02, 16), TxDescricao = "WexCronograma2", SituacaoPlanejamento = situacaoPlanejamentoEmAndamento }; contexto.Cronograma.Add(cronograma2); contexto.SaveChanges(); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; Tarefa tarefa1 = new Tarefa() { DtInicio = new DateTime(2013, 02, 25), CsLinhaBaseSalva = true, TxDescricao = "Cria método Cadastro", TxResponsaveis = colaborador1.NomeCompleto, NbEstimativaInicial = 8, SituacaoPlanejamento = situacaoPlanejamentoNaoIniciado, AtualizadoPor = colaborador1 }; contexto.Tarefa.Add(tarefa1); contexto.SaveChanges(); Tarefa tarefa2 = new Tarefa() { DtInicio = new DateTime(2013, 02, 25), CsLinhaBaseSalva = true, TxDescricao = "Criar método Exclusão", TxResponsaveis = colaborador1.NomeCompleto, NbEstimativaInicial = 4, SituacaoPlanejamento = situacaoPlanejamentoNaoIniciado, AtualizadoPor = colaborador1 }; contexto.Tarefa.Add(tarefa2); contexto.SaveChanges(); #endregion CronogramaTarefa cronogramaTarefa = new CronogramaTarefa() { Cronograma = cronograma1, NbID = 1, Tarefa = tarefa1 }; contexto.CronogramaTarefa.Add(cronogramaTarefa); contexto.SaveChanges(); CronogramaTarefa cronogramaTarefa2 = new CronogramaTarefa() { Cronograma = cronograma2, NbID = 1, Tarefa = tarefa2 }; contexto.CronogramaTarefa.Add(cronogramaTarefa2); contexto.SaveChanges(); TarefaHistoricoTrabalhoBo.CriarHistoricoTarefa(tarefa1.Oid, colaborador1.Usuario.UserName, new TimeSpan(2, 0, 0), DateTime.Now, new TimeSpan(8, 0, 0), new TimeSpan(10, 0, 0), "comentário", new TimeSpan(6, 0, 0), situacaoPlanejamentoEmAndamento.Oid, ""); TarefaHistoricoTrabalhoBo.CriarHistoricoTarefa(tarefa2.Oid, colaborador1.Usuario.UserName, new TimeSpan(1, 0, 0), DateTime.Now, new TimeSpan(10, 0, 0), new TimeSpan(11, 0, 0), "comentário", new TimeSpan(3, 0, 0), situacaoPlanejamentoEmAndamento.Oid, ""); TimeSpan nbHoraFinal = TarefaHistoricoTrabalhoDao.ConsultarHorarioUltimaTarefaDiaColaborador(contexto, colaborador1.Usuario.UserName, DateTime.Now); Assert.AreEqual(new TimeSpan(11, 0, 0), nbHoraFinal, "A hora final deveria ser igual a 11:00 pois o colaborador investiu esforço realizado " + " em outra tarefa independente do cronograma em que está lançando a hora realizada"); }