/// <summary> /// método responsável por buscar o ultimo esforço realizado pelo colaborador /// </summary> /// <param name="contexto">sessao atual do banco</param> /// <param name="login">login do colaborador</param> public static TarefaHistoricoTrabalho ConsultarUltimoEsforcoRealizadoColaborador(WexDb contexto, Guid oidColaborador) { TarefaHistoricoTrabalho ultimoHistorico = contexto.TarefaHistoricoTrabalho.Include(o => o.Colaborador.Usuario).Include(o => o.Tarefa).Where(o => o.Colaborador.Usuario.UserName.Equals(oidColaborador)). OrderByDescending(o => o.DtRealizado).OrderByDescending(o => o.NbHoraFinal).FirstOrDefault(); return(ultimoHistorico); }
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."); }
/// <summary> /// Método responsável por retornar se um historico de trabalho para a tarefa é valido /// </summary> /// <param name="historicoTrabalho"></param> /// <returns>True para válido e false para inválido</returns> public static bool ValidarTarefaHistoricoTrabalho(TarefaHistoricoTrabalho historicoTrabalho) { if (historicoTrabalho == null || historicoTrabalho.Oid.Equals(new Guid()) || historicoTrabalho.Tarefa.Oid.Equals(new Guid()) || historicoTrabalho.Tarefa.Oid.Equals(new Guid())) { return(false); } return(true); }
/// <summary> /// Método responsável por criar um histórico para uma determinada tarefa. /// </summary> /// /// <param name="oidTarefa">Oid da Tarefa</param> /// <param name="login">Login do usuário</param> /// <param name="nbHoraRealizado">Horas realizadas na atividade.</param> /// <param name="dtRealizado">Data de realização da atividade.</param> /// <param name="nbHoraInicial">Hora Inicial da atividade</param> /// <param name="nbHoraFinal">Hora Final da atividade</param> /// <param name="txComentario">Comentário da atividade</param> /// <param name="nbHoraRestante">Horas restantes da atividade</param> /// <param name="oidSituacaoPlanejamento">Oid da Situação Planejamento da atividade</param> /// <param name="txJustificativaReducao">Justificativa de redução da atividade</param> public static void CriarHistoricoTarefa(Guid oidTarefa, string login, TimeSpan nbHoraRealizado, DateTime dtRealizado, TimeSpan nbHoraInicial, TimeSpan nbHoraFinal, string txComentario, TimeSpan nbHoraRestante, Guid oidSituacaoPlanejamento, string txJustificativaReducao) { if (oidTarefa == new Guid() || String.IsNullOrEmpty(login)) { throw new ArgumentException("Os parâmetros Login e OidTarefa não podem ser nulos."); } TarefaHistoricoTrabalho historico = new TarefaHistoricoTrabalho(); Tarefa tarefa = TarefaDao.ConsultarTarefaPorOid(oidTarefa); Colaborador colaborador = ColaboradorDAO.ConsultarColaborador(login, o => o.Usuario.Person); if (tarefa == null) { return; } SituacaoPlanejamento situacaoPlanejamento = SituacaoPlanejamentoDAO.ConsultarSituacaoPlanejamentoPorOid(oidSituacaoPlanejamento); if (tarefa.NbEstimativaInicial <= 0 && (situacaoPlanejamento.CsTipo == CsTipoPlanejamento.Cancelamento || situacaoPlanejamento.CsTipo == CsTipoPlanejamento.Planejamento)) { TarefaBo.AtualizarDadosTarefa(tarefa.Oid, colaborador, situacaoPlanejamento, nbHoraRealizado, nbHoraRestante, tarefa.CsLinhaBaseSalva); return; } // Caso não possua estimativa inicial não deve salvar historico da tarefa if (tarefa.NbEstimativaInicial <= 0 && situacaoPlanejamento.CsTipo != CsTipoPlanejamento.Impedimento) { throw new EstimativaInicialInvalidaException("Histórico da Tarefa não pode ser salvo, pois não foi estimado um tempo inicial para realização da tarefa"); } if (!tarefa.CsLinhaBaseSalva) { TarefaBo.SalvarLinhaBaseTarefa(tarefa); } historico.OidTarefa = tarefa.Oid; historico.HoraRealizado = nbHoraRealizado; historico.DtRealizado = dtRealizado; historico.HoraInicio = nbHoraInicial; historico.HoraFinal = nbHoraFinal; historico.TxComentario = txComentario; historico.HoraRestante = nbHoraRestante; historico.TxJustificativaReducao = txJustificativaReducao; historico.OidColaborador = colaborador.Oid; historico.OidSituacaoPlanejamento = situacaoPlanejamento.Oid; historico.TxComentario = txComentario; historico.TxJustificativaReducao = txJustificativaReducao; using (WexDb contexto = ContextFactoryManager.CriarWexDb()) { contexto.TarefaHistoricoTrabalho.Add(historico); contexto.SaveChanges(); } //Atualiza os dados da tarefa a partir dos dados salvos no histórico. TarefaBo.AtualizarDadosTarefa(tarefa.Oid, colaborador, situacaoPlanejamento, historico.HoraRealizado, historico.HoraRestante, tarefa.CsLinhaBaseSalva); }
/// <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 consultar qual foi o último esforço realizado de um colaborador em uma determinada data. /// </summary> /// <param name="contexto">Conexão com o banco</param> /// <param name="dataUltimoEsforco">Data que se deseja obter o último histórico de trabalho do colaborador</param> /// <returns>Ultimo Histórico</returns> public static TarefaHistoricoTrabalho ConsultarUltimoEsforcoRealizadoColaborador(WexDb contexto, string login, DateTime dataUltimoEsforco) { TarefaHistoricoTrabalho ultimoHistorico = contexto.TarefaHistoricoTrabalho .Include(o => o.Colaborador.Usuario) .Include(o => o.Tarefa) .Where(o => o.DtRealizado == dataUltimoEsforco && o.Colaborador.Usuario.UserName.Equals(login)) .OrderByDescending(o => o.DtRealizado) .ThenByDescending(o => o.NbHoraFinal) .FirstOrDefault(o => !o.CsExcluido); return(ultimoHistorico); }
public void ExcluirTarefaQuandoExistirHistoricoELogAlteracao() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); 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", situacaoPlanejamento, dtInicio, colaborador1.Usuario.UserName, (string)"Criar método", responsaveis, 3); TarefaHistoricoTrabalho tarefaHistorico = new TarefaHistoricoTrabalho(); tarefaHistorico.OidTarefa = tarefa.Oid; tarefaHistorico.OidColaborador = colaborador1.Oid; tarefaHistorico.DtRealizado = DateTime.Now; tarefaHistorico.HoraFinal = new TimeSpan(10, 0, 0); tarefaHistorico.HoraInicio = new TimeSpan(5, 0, 0); tarefaHistorico.HoraRealizado = new TimeSpan(4, 0, 0); tarefaHistorico.HoraRestante = new TimeSpan(6, 0, 0); tarefaHistorico.TxComentario = "Comentario"; contexto.TarefaHistoricoTrabalho.Add(tarefaHistorico); contexto.SaveChanges(); List <Guid> oidTarefas = new List <Guid>(); oidTarefas.Add(tarefa.Oid); List <Guid> oidTarefasExcluidas = new List <Guid>(); oidTarefasExcluidas = TarefaBo.ExcluirTarefa(contexto, oidTarefas); Tarefa tarefaExcluida = TarefaDao.ConsultarTarefaPorOid(tarefa.Oid); TarefaHistoricoTrabalho tarefaHistoricoExcluido = contexto.TarefaHistoricoTrabalho.FirstOrDefault(o => o.OidTarefa == tarefa.Oid); TarefaLogAlteracao tarefaLogExcluido = contexto.TarefaLogAlteracao.FirstOrDefault(o => o.OidTarefa == tarefa.Oid); Assert.AreEqual(1, oidTarefasExcluidas.Count, "Deve ter excluido uma tarefa"); Assert.AreEqual(tarefa.Oid, oidTarefasExcluidas[0], "Deve ter excluido a tarefa com este oid"); Assert.IsNull(tarefaExcluida, "Deveria ser nulo, pois a tarefa deveria ter sido excluida."); Assert.IsNotNull(tarefaHistoricoExcluido, "Não deveria ser nulo, pois a tarefa deveria ter sido excluida, mas o historico permanece."); Assert.IsNotNull(tarefaLogExcluido, "Não deveria ser nulo, pois a tarefa deveria ter sido excluida, mas o Log permanece."); }
/// <summary> /// Resgata a hora final da ultima tarefa realizada no dia selecionado pelo colaborador /// </summary> /// <param name="contexto">Contexto do banco</param> /// <param name="login">Login do usuário do colaborador</param> /// <param name="data">Data selecionada pelo colaborador</param> /// <returns>Hora Final</returns> public static TimeSpan ConsultarHorarioUltimaTarefaDiaColaborador(WexDb contexto, string login, DateTime data) { TarefaHistoricoTrabalho ultimaTarefaColaborador = contexto.TarefaHistoricoTrabalho.Include(o => o.Colaborador.Usuario.Person).Include(o => o.Tarefa).OrderByDescending(o => o.DtRealizado). FirstOrDefault(o => o.Colaborador.Usuario.UserName.Equals(login) && o.DtRealizado.Year == data.Year && o.DtRealizado.Month == data.Month && o.DtRealizado.Day == data.Day && !o.Tarefa.CsExcluido); if (ultimaTarefaColaborador == null) { return(new TimeSpan(8, 0, 0)); } else { return(ultimaTarefaColaborador.HoraFinal); } }
/// <summary> /// Método responsável por criar um objeto de TarefaHistoricoDto e adicionar seus valores a partir de um TarefaHistoricoTrabalho. /// </summary> /// <param name="tarefaHistorico">Objeto TarefaHistoricoTrabalho</param> /// <returns>Objeto TarefaHistoricoDto</returns> public static TarefaHistoricoTrabalhoDto DtoFactory(TarefaHistoricoTrabalho tarefaHistorico) { if (tarefaHistorico == null) { return(new TarefaHistoricoTrabalhoDto()); } TarefaHistoricoTrabalhoDto tarefaHistoricoDto = new TarefaHistoricoTrabalhoDto() { OidTarefaHistorico = tarefaHistorico.Oid, NbRealizado = tarefaHistorico.HoraRealizado, DtRealizado = tarefaHistorico.DtRealizado, TxComentario = tarefaHistorico.TxComentario, NbRestante = tarefaHistorico.HoraRestante, OidSituacaoPlanejamento = (Guid)tarefaHistorico.OidSituacaoPlanejamento, TxJustificativaDeReducao = tarefaHistorico.TxJustificativaReducao, OidTarefa = (Guid)tarefaHistorico.OidTarefa, OidColaborador = (Guid)tarefaHistorico.OidColaborador, NbHoraInicio = tarefaHistorico.HoraInicio, NbHoraFinal = tarefaHistorico.HoraFinal }; return(tarefaHistoricoDto); }
/// <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); } }