/// <summary>
        /// Método responsável por converter as tarefas impactadas após uma movimentação e a data e hora da ação para um Dto.
        /// </summary>
        /// <param name="impactadas">Lista contendo as tarefas impactadas</param>
        /// <param name="dataHoraAcao">Data e hora da ação</param>
        /// <returns>Dto de TarefaMovidasDto</returns>
        public static TarefasMovidasDto TarefasMovidasDtoFactory(List <CronogramaTarefa> impactadas, DateTime dataHoraAcao, Guid oidCronogramaTarefaMovida, short nbIDAtualizadoTarefaMovida, Guid oidCronograma)
        {
            var tarefasMovidasDto = new TarefasMovidasDto
            {
                TarefasImpactadas         = impactadas.Distinct().ToDictionary(o => o.Oid.ToString(), o => o.NbID),
                DataHoraAcao              = dataHoraAcao,
                OidCronogramaTarefaMovida = oidCronogramaTarefaMovida,
                NbIDTarefaMovida          = nbIDAtualizadoTarefaMovida,
                OidCronograma             = oidCronograma
            };

            return(tarefasMovidasDto);
        }
 /// <summary>
 /// Método callback executado ao fim do processamento de mover tarefa no serviço
 /// </summary>
 /// <param name="resultado">resposta da consulta http assincrona</param>
 private void MoverTarefaCallBack(IRestResponse <TarefasMovidasDto> resultado, RestRequestAsyncHandle handler)
 {
     if (resultado.ResponseStatus == ResponseStatus.Completed)
     {
         TarefasMovidasDto tarefasMovidasDto = DeserializarResposta(resultado);
         if (tarefasMovidasDto != null && tarefasMovidasDto.TarefasImpactadas != null)
         {
             if (AoCompletarMovimentacaoTarefa != null)
             {
                 AoCompletarMovimentacaoTarefa(tarefasMovidasDto);
             }
         }
     }
 }
Example #3
0
        /// <summary>
        /// Método para teste simulando a movimentação das tarefas (Serviço)
        /// </summary>
        /// <param name="tarefas">lista de tarefas</param>
        /// <param name="oidTarefaMovida">oid da tarefa movimentada</param>
        /// <param name="posicaoFinal">posição desejada para a tarefa</param>
        /// <returns></returns>
        private static TarefasMovidasDto MoverTarefa(WexDb contexto, List <CronogramaTarefa> tarefas, Guid oidTarefaMovida, Int16 posicaoFinal, List <CronogramaTarefaDto> tarefasCronograma, string alias = null)
        {
            List <CronogramaTarefa> listaDeTarefasImpactadas;
            Int16    novoNbIdTarefaMovida = 0;
            DateTime dataHoraAcao         = new DateTime();
            Guid     oidCronograma        = new Guid();

            listaDeTarefasImpactadas = CronogramaTarefaBo.ReordenarTarefas(oidTarefaMovida, posicaoFinal, ref novoNbIdTarefaMovida, ref dataHoraAcao, ref oidCronograma);
            TarefasMovidasDto movidas = CronogramaTarefaDao.TarefasMovidasDtoFactory(listaDeTarefasImpactadas, DateTime.Now, oidTarefaMovida, novoNbIdTarefaMovida, oidCronograma);

            movidas.TarefasImpactadas.Add(movidas.OidCronogramaTarefaMovida.ToString(), movidas.NbIDTarefaMovida);
            TarefasImpactadasDebugUtil.ExibirLogTarefaMovida(movidas, tarefasCronograma, alias);
            return(movidas);
        }
        /// <summary>
        /// Método responsável por exibir em Debug o resultado da movimentação
        /// </summary>
        /// <param name="retornoMovimentacao"></param>
        public static void ExibirLogTarefaMovida(TarefasMovidasDto retornoMovimentacao, List <CronogramaTarefaDto> tarefas, string alias = "")
        {
            Debug.WriteLine(string.Format("\n***** Resultado Movimentação {0} *****\n", alias));
            Debug.WriteLine("Data e hora ação:{0}", retornoMovimentacao.DataHoraAcao.TimeOfDay);
            Debug.WriteLine("Oid Tarefa Movida: {0}", retornoMovimentacao.OidCronogramaTarefaMovida);
            CronogramaTarefaDto tarefa = tarefas.FirstOrDefault(o => o.OidCronogramaTarefa == retornoMovimentacao.OidCronogramaTarefaMovida);

            if (tarefa != null)
            {
                Debug.WriteLine("\nTarefa {0} movida para posição {1}", tarefa.TxDescricaoTarefa, retornoMovimentacao.NbIDTarefaMovida);
            }
            else
            {
                Debug.WriteLine("A tarefa correspondente ao Oid:{0} não foi encontrada na lista!");
            }
            ExibirLogTarefasImpactadas(retornoMovimentacao.TarefasImpactadas, tarefas, retornoMovimentacao.DataHoraAcao);
            Debug.WriteLine("\n*******************************************");
        }
Example #5
0
        public void QuandoReceberVariasAtualizacoesDeTelaForaDeOrdem()
        {
            Colaborador colaborador = ColaboradorFactoryEntity.CriarColaborador(contexto, "gabriel.matos", true);
            Cronograma  cronograma  = new Cronograma();

            cronograma.DtInicio = DateTime.Now;
            cronograma.DtFinal  = DateTime.Now.AddDays(30);
            SituacaoPlanejamento situacao = new SituacaoPlanejamento();

            situacao.CsPadrao    = CsPadraoSistema.Sim;
            situacao.CsSituacao  = CsTipoSituacaoPlanejamento.Ativo;
            situacao.CsTipo      = CsTipoPlanejamento.Planejamento;
            situacao.TxDescricao = "S1";
            contexto.SituacaoPlanejamento.Add(situacao);
            cronograma.SituacaoPlanejamento = situacao;
            contexto.Cronograma.Add(cronograma);
            contexto.SaveChanges();
            List <CronogramaTarefa> tarefas = new List <CronogramaTarefa>();
            List <CronogramaTarefa> listaDeTarefasImpactadas = new List <CronogramaTarefa>();
            DateTime         data;
            CronogramaTarefa tarefaTemp;

            for (Int16 i = 0; i < 6; i++)
            {
                data       = DateTime.Now;
                tarefaTemp = CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, string.Format("T{0}", (i + 1)), situacao, data, "", "gabriel.matos", out listaDeTarefasImpactadas, ref data);
                tarefas.Add(tarefaTemp);
            }

            List <CronogramaTarefaDto> tarefasCronograma = new List <CronogramaTarefaDto>(tarefas.Select(o => CronogramaTarefaBo.DtoFactory(o)));
            Guid oidT1 = tarefas[0].Oid;
            Guid oidT2 = tarefas[1].Oid;
            Guid oidT3 = tarefas[2].Oid;
            Guid oidT4 = tarefas[3].Oid;
            Dictionary <string, short> listaAtualizacao;

            //Movimentação 1
            TarefasMovidasDto movidas = MoverTarefa(contexto, tarefas, oidT3, 1, tarefasCronograma, "Movimento 1");

            //Movimentação 2
            TarefasMovidasDto movidas2 = MoverTarefa(contexto, tarefas, oidT2, 4, tarefasCronograma, "Movimento 2");

            //Movimentação 3
            TarefasMovidasDto movidas3 = MoverTarefa(contexto, tarefas, oidT3, 3, tarefasCronograma, "Movimento 3");

            //Movimentação 4
            TarefasMovidasDto movidas4 = MoverTarefa(contexto, tarefas, oidT2, 2, tarefasCronograma, "Movimento 4");

            //Movimentação 5
            TarefasMovidasDto movidas5 = MoverTarefa(contexto, tarefas, oidT4, 4, tarefasCronograma, "Movimento 5");

            //Movimentação 5
            TarefasMovidasDto movidas6 = MoverTarefa(contexto, tarefas, oidT2, 1, tarefasCronograma, "Movimento 6");

            listaAtualizacao  = gerenciador.ListarAtualizacoesValidas(movidas5.TarefasImpactadas, movidas5.DataHoraAcao);
            tarefasCronograma = AtualizarTarefaImpactadas(listaAtualizacao, tarefasCronograma, "Atualização 5");

            listaAtualizacao  = gerenciador.ListarAtualizacoesValidas(movidas2.TarefasImpactadas, movidas2.DataHoraAcao);
            tarefasCronograma = AtualizarTarefaImpactadas(listaAtualizacao, tarefasCronograma, "Atualização 2");

            listaAtualizacao  = gerenciador.ListarAtualizacoesValidas(movidas.TarefasImpactadas, movidas.DataHoraAcao);
            tarefasCronograma = AtualizarTarefaImpactadas(listaAtualizacao, tarefasCronograma, "Atualização 1");

            listaAtualizacao  = gerenciador.ListarAtualizacoesValidas(movidas4.TarefasImpactadas, movidas4.DataHoraAcao);
            tarefasCronograma = AtualizarTarefaImpactadas(listaAtualizacao, tarefasCronograma, "Atualização 4");

            listaAtualizacao  = gerenciador.ListarAtualizacoesValidas(movidas6.TarefasImpactadas, movidas6.DataHoraAcao);
            tarefasCronograma = AtualizarTarefaImpactadas(listaAtualizacao, tarefasCronograma, "Atualização 6");

            listaAtualizacao  = gerenciador.ListarAtualizacoesValidas(movidas3.TarefasImpactadas, movidas3.DataHoraAcao);
            tarefasCronograma = AtualizarTarefaImpactadas(listaAtualizacao, tarefasCronograma, "Atualização 3");



            Assert.AreEqual(6, tarefasCronograma.Select(o => o.NbID).Distinct().Count(), "Deveria possuir 6 números, pois nenhum deveria ter se repetido!");
            Dictionary <Guid, short> ordem_Oid_E_NbID_BaseDeDados = CronogramaTarefaDao.ConsultarCronogramaTarefasPorOidCronograma(cronograma.Oid).ToDictionary(o => o.Oid, o => o.NbID);
            Dictionary <Guid, short> ordem_Oid_E_NbID_Tela        = tarefasCronograma.ToDictionary(o => o.OidCronogramaTarefa, o => (short)o.NbID);

            CollectionAssert.AreEquivalent(ordem_Oid_E_NbID_BaseDeDados, ordem_Oid_E_NbID_Tela, "A ordem das tarefas na tela deveria estar em sicronia com o base, após as atualizações");
        }