Example #1
0
        /// <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.");
        }
Example #3
0
 /// <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);
 }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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));
        }
Example #6
0
        /// <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));
        }
Example #7
0
        /// <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.");
        }
Example #9
0
        /// <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);
            }
        }
Example #10
0
        /// <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);
        }
Example #11
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);
            }
        }