/// <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); } } } }
/// <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*******************************************"); }
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"); }