/// <summary> /// Método responsável por buscar uma tarefa pelo Oid e Converter para Dto /// </summary> /// <param name="oidCronogramaTarefa">Oid da tarefa a ser procurada</param> /// <returns>Tarefa encontrada</returns> public static CronogramaTarefaDto ConsultarCronogramaTarefaPorOidDto(Guid oidCronogramaTarefa) { CronogramaTarefa cronogramaTarefa = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(oidCronogramaTarefa, o => o.Tarefa.AtualizadoPor.Usuario.Person, o => o.Tarefa.SituacaoPlanejamento, o => o.Cronograma); DateTime dataHoraAcao = DateTime.Now; return(CronogramaTarefaBo.DtoFactory(cronogramaTarefa, dataHoraAcao)); }
public void DeveCriarUmRespectivoItemDeTrabalhoParaAsTarefasQueForemCriadas() { Assert.Inconclusive("Falta correção de ItemDeTrabalho"); Cronograma cronograma = new Cronograma(); cronograma.TxDescricao = "Cronograma1"; contexto.Cronograma.Add(cronograma); SituacaoPlanejamento situacao = new SituacaoPlanejamento(); situacao.CsTipo = CsTipoPlanejamento.Planejamento; situacao.TxDescricao = "Nao iniciado"; contexto.SituacaoPlanejamento.Add(situacao); Colaborador colaborador = ColaboradorFactoryEntity.CriarColaborador(contexto, "gabriel.matos", true); contexto.SaveChanges(); DateTime dat2 = DateTime.Now; List <CronogramaTarefa> tarefasList = new List <CronogramaTarefa>(); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "T1", situacao, DateTime.Now, "", "gabriel.matos", out tarefasList, ref dat2, ""); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "T2", situacao, DateTime.Now, "", "gabriel.matos", out tarefasList, ref dat2, ""); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "T3", situacao, DateTime.Now, "", "gabriel.matos", out tarefasList, ref dat2, ""); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "T4", situacao, DateTime.Now, "", "gabriel.matos", out tarefasList, ref dat2, ""); List <Tarefa> tarefas = contexto.Tarefa.ToList(); //List<ItemDeTrabalho> itens = new XPCollection<ItemDeTrabalho>( contexto ).ToList(); //List<Guid> oidTarefas = new List<Guid>( tarefas.Select( o => o.Oid ) ); //List<Guid> itensTrabalhoOid = new List<Guid>( itens.Select( o => o.Oid ) ); //CollectionAssert.AreEquivalent( itensTrabalhoOid, oidTarefas, "Itens de trabalho deveria conter o oid de todas as tarefas criadas" ); }
public void DeveCalcularDadosDoPlanejadoQuandoExistirTarefasNoCronogramaConsiderandoFolgaPorDiaMesNoCalendario() { DateTime dataInicio = DateTime.Parse("01/05/2014"), dataTermino = DateTime.Parse("05/05/2014"); DateUtil.CurrentDateTime = dataInicio; AdicionarCalendario("Folga", CsCalendarioDomain.Folga, CsVigenciaDomain.PorDiaMes, DateTime.Parse("02/05/2014")); EditarDataCronograma(dataInicio, dataTermino, Cronograma); CronogramaTarefaBo.CriarCronogramaTarefa(Cronograma.Oid, (string)"Tarefa 01", situacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out _tarefasImpactadas, ref _dataAcao, (string)"Criar método", 5, 0); CronogramaTarefaBo.CriarCronogramaTarefa(Cronograma.Oid, (string)"Tarefa 02", situacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out _tarefasImpactadas, ref _dataAcao, (string)"Criar método", 5, 0); var dadosEsperadosGrafico = new List <BurndownDadosDto>(); dadosEsperadosGrafico.Add(new BurndownDadosDto { Dia = new DateTime(2014, 05, 01), QtdeHoras = 10, CsTipo = CsTipoBurndown.Planejado }); dadosEsperadosGrafico.Add(new BurndownDadosDto { Dia = new DateTime(2014, 05, 05), QtdeHoras = 0, CsTipo = CsTipoBurndown.Planejado }); dadosEsperadosGrafico.Add(new BurndownDadosDto { Dia = new DateTime(2014, 05, 01), QtdeHoras = 10, CsTipo = CsTipoBurndown.Realizado }); var dadosGrafico = GraficoBurndownBO.Instancia.CalcularDadosGraficoBurndown(Cronograma.Oid); Assert.IsNotNull(dadosGrafico, "Deveria ter retornado o resultado com os dias planejados do cronograma"); Assert.IsTrue(dadosGrafico.DadosBurndown.Count > 0, "Deveria conter os dias planejados da sprint"); foreach (var dadosAtuais in dadosGrafico.DadosBurndown) { Assert.IsTrue(dadosEsperadosGrafico.Any(o => CompararDadosGrafico(o, dadosAtuais)), "O resultado deveria conter os resultados para o dia esperado."); } }
public void EditarTarefaQuandoLinhaBaseNaoEstiverSalvaTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Cronograma cronogramaPadrao1 = CronogramaBo.CriarCronogramaPadrao(contexto); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dataInicio = DateTime.Now; List <CronogramaTarefa> tarefaImpactadas; DateTime dataHoraAcao = new DateTime(); CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(cronogramaPadrao1.Oid, (string)"Tarefa 01", situacaoPlanejamento, dataInicio, responsaveis, colaborador1.Usuario.UserName, out tarefaImpactadas, ref dataHoraAcao, (string)"Criar método", 3, 0); //busca tarefa criada CronogramaTarefa tarefaCriada = contexto.CronogramaTarefa.FirstOrDefault(o => o.Oid == novaTarefa.Oid); //Alterando responsaveis Colaborador colaborador2 = ColaboradorFactoryEntity.CriarColaborador(contexto, "pedro.lins", true); colaborador2.Usuario.UserName = "******"; Colaborador colaborador3 = ColaboradorFactoryEntity.CriarColaborador(contexto, "joao.lins", true); colaborador3.Usuario.UserName = "******"; string responsaveisAlterado = String.Format("{0},{1}", colaborador2.NomeCompleto, colaborador3.NomeCompleto); //cria situação planejamento alterada SituacaoPlanejamento situacaoPlanejamento2 = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S2", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Cancelamento, CsPadraoSistema.Sim, true); string txDescricaoAlterada = "Tarefa 01 alterada"; string txObservacaoAlterada = "Criar método alterado"; Int16 EstimativaInicialHoraAlterada = 4; TarefaBo.EditarTarefa(tarefaCriada.Oid.ToString(), txDescricaoAlterada, situacaoPlanejamento2.Oid.ToString(), colaborador1.Usuario.UserName, txObservacaoAlterada, responsaveisAlterado, EstimativaInicialHoraAlterada, new TimeSpan(0), new TimeSpan(0), false, dataInicio); //busca tarefa criada CronogramaTarefa tarefaAlterada = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(tarefaCriada.Oid, o => o.Tarefa.SituacaoPlanejamento, o => o.Tarefa.TarefaResponsaveis); DateUtil.CurrentDateTime = (DateTime)tarefaAlterada.Tarefa.DtAtualizadoEm; Assert.AreEqual(DateUtil.CurrentDateTime, tarefaAlterada.Tarefa.DtAtualizadoEm, "As datas devem ser iguais."); Assert.AreEqual(txDescricaoAlterada, tarefaAlterada.Tarefa.TxDescricao, "Devem ser as mesmas, pois a descrição foi alterada."); Assert.AreEqual(txObservacaoAlterada, tarefaAlterada.Tarefa.TxObservacao, "Devem ser as mesmas, pois a data foi alterada."); Assert.AreEqual(EstimativaInicialHoraAlterada, tarefaAlterada.Tarefa.NbEstimativaInicial, ""); Assert.AreEqual(situacaoPlanejamento2.Oid, tarefaAlterada.Tarefa.OidSituacaoPlanejamento, ""); Assert.AreEqual(responsaveisAlterado, tarefaAlterada.Tarefa.TxResponsaveis); }
/// <summary> /// Método auxiliar para criar tarefas no cronograma /// </summary> private void CriarTarefasNoCronograma() { _cronogramaTarefas = new List <CronogramaTarefa>(); for (var i = 0; i < 5; i++) { _cronogramaTarefas.Add(CronogramaTarefaBo.CriarCronogramaTarefa(Cronograma.Oid, "Tarefa 01", SituacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out _tarefasImpactadas, ref _dataAcao, "Criar método", 3)); } }
/// <summary> /// Método responsável por criar uma tarefa dependente de projeto e cronograma. /// É acessado pelo serviço de planejamento quando solicitado pela tela de cronograma. /// </summary> /// <param name="contexto">Contexto do banco</param> /// <param name="login">Login do usuario</param> /// <param name="oidCronograma"> oid cronograma</param> /// <param name="txDescricaoTarefa"> descrição da tarefa </param> /// <param name="txObservacaoTarefa">observações da tarefa</param> /// <param name="oidSituacao">oid situação da tarefa</param> /// <param name="responsaveis">responsáveis pela tarefa</param> /// <param name="nbEstimativaInicial"> horas estimadas inicialmente</param> /// <param name="dtInicio"> data de inicio da tarefa</param> /// <param name="oidTarefaSelecionada">oid da tarefa</param> /// <param name="salvar"> condição para indicar se irá salvar ou não a tarefa dentro da classe tarefa</param> /// <returns>hash contendo informações sobre a tarefa e lista das tarefas impactadas</returns> public static CronogramaTarefa CriarTarefa(Guid oidCronograma, string txDescricaoTarefa, string oidSituacao, DateTime dtInicio, string login, string txObservacaoTarefa, string responsaveis, out List <CronogramaTarefa> tarefasImpactadas, ref DateTime dataHoraAcao, Int16 nbEstimativaInicial = 0, short nbIDReferencia = 0) { if (oidCronograma == null || oidCronograma == new Guid() || String.IsNullOrEmpty(oidSituacao)) { throw new ArgumentException("Os parametros session, oidCronograma sao obrigatorios."); } SituacaoPlanejamento situacaoPlanejamento = SituacaoPlanejamentoDAO.ConsultarSituacaoPlanejamentoPorOid(Guid.Parse(oidSituacao)); CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(oidCronograma, txDescricaoTarefa, situacaoPlanejamento, dtInicio, responsaveis, login, out tarefasImpactadas, ref dataHoraAcao, txObservacaoTarefa, nbEstimativaInicial, nbIDReferencia); return(novaTarefa); }
/// <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); }
public void EditarTarefaQuandoAlterarHorasRestantesEHorasRealizadoTarefaTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Cronograma cronogramaPadrao1 = CronogramaBo.CriarCronogramaPadrao(contexto); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dataInicio = DateTime.Now; List <CronogramaTarefa> tarefasImpactadas; DateTime dataHoraAcao = new DateTime(); CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(cronogramaPadrao1.Oid, (string)"Tarefa 01", situacaoPlanejamento, dataInicio, responsaveis, colaborador1.Usuario.UserName, out tarefasImpactadas, ref dataHoraAcao, (string)"Criar método", 3, 0); //busca tarefa criada CronogramaTarefa tarefaCriada = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(novaTarefa.Oid, o => o.Tarefa.SituacaoPlanejamento); //Salvando a linha de base bool salvarLinhaBaseTarefa = true; TimeSpan estimativaRestante = tarefaCriada.Tarefa.EstimativaInicialHora; string responsaveisAlterado = colaborador1.NomeCompleto; TarefaBo.EditarTarefa(tarefaCriada.Oid.ToString(), tarefaCriada.Tarefa.TxDescricao, tarefaCriada.Tarefa.SituacaoPlanejamento.Oid.ToString(), colaborador1.Usuario.UserName, tarefaCriada.Tarefa.TxObservacao, responsaveisAlterado, tarefaCriada.Tarefa.NbEstimativaInicial, estimativaRestante, new TimeSpan(0), salvarLinhaBaseTarefa, dataInicio); //busca tarefa criada CronogramaTarefa tarefaAlterada = contexto.CronogramaTarefa.FirstOrDefault(o => o.Oid == tarefaCriada.Oid); //Alterando Estimativa Restante da tarefa TimeSpan estimativaRestanteAlterada = new TimeSpan(1, 0, 0); TimeSpan horasRealizado = new TimeSpan(2, 0, 0); TarefaBo.EditarTarefa(tarefaCriada.Oid.ToString(), tarefaCriada.Tarefa.TxDescricao, tarefaCriada.Tarefa.SituacaoPlanejamento.Oid.ToString(), colaborador1.Usuario.UserName, tarefaCriada.Tarefa.TxObservacao, responsaveisAlterado, tarefaCriada.Tarefa.NbEstimativaInicial, estimativaRestanteAlterada, horasRealizado, salvarLinhaBaseTarefa, DateTime.Now); //busca tarefa criada CronogramaTarefa tarefaAlteradaHorario = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(tarefaCriada.Oid, o => o.Tarefa.SituacaoPlanejamento); Assert.AreEqual(new TimeSpan(3, 0, 0), tarefaCriada.Tarefa.EstimativaInicialHora, "Deve ser a mesma estimativa inicial."); Assert.AreEqual(estimativaRestanteAlterada, tarefaAlteradaHorario.Tarefa.EstimativaRestanteHora, "Deve ter alterado a estimativa restante."); Assert.AreEqual(horasRealizado, tarefaAlteradaHorario.Tarefa.EstimativaRealizadoHora, "Deve ter alterado as horas realizado."); }
public ActionResult ListarTarefas(Guid?id, Guid?oidCronogramaTarefa) { if (id.HasValue) { return(Json(CronogramaTarefaBo.ConsultarCronogramaTarefasPorOidCronogramaDto(id.Value), JsonRequestBehavior.AllowGet)); } if (oidCronogramaTarefa.HasValue) { return(RetornarActionResult(CronogramaTarefaBo.ConsultarCronogramaTarefaPorOidDto(oidCronogramaTarefa.Value), JsonRequestBehavior.AllowGet)); } return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Deveria ser informado o Oid de identificação do cronograma ou da tarefa selecionada") { }); }
public void DeveRetornarOSomatorioDeHorasPlanejadasDoCronogramaQuandoHouverTarefasTest() { //TODO: MIGRAR TESTE PARA TarefaHistoricoEstimativaDao Cronograma cronograma = CronogramaBo.CriarCronogramaPadrao(); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "Tarefa 01", situacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out tarefasImpactadas, ref dataAcao, "Criar método", 3); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "Tarefa 02", situacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out tarefasImpactadas, ref dataAcao, "Criar método", 3); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "Tarefa 03", situacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out tarefasImpactadas, ref dataAcao, "Criar método", 3); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "Tarefa 04", situacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out tarefasImpactadas, ref dataAcao, "Criar método", 3); CronogramaTarefaBo.CriarCronogramaTarefa(cronograma.Oid, "Tarefa 05", situacoesPlanejamento.FirstOrDefault(o => o.CsTipo == CsTipoPlanejamento.Planejamento), DateTime.MinValue, "", colaboradorPadrao.Usuario.UserName, out tarefasImpactadas, ref dataAcao, "Criar método", 3); double horasPlanejadas = TarefaHistoricoEstimativaDao.ConsultarTotalHorasPlanejadasCronograma(cronograma.Oid); Assert.AreEqual(15, horasPlanejadas.ToTimeSpan().Hours, "Deve ter 0 horas planejadas, pois não existem tarefas cadastradas."); }
/// <summary>CronogramaTarefaBo.ControlarCriacaoCronogramaTarefas( contexto, /// Método usado para buscar todas as tarefas a partir da descrição de um cronograma, é usado pelo serviço e acionado pela tela de cronograma. /// </summary> /// <param name="oidCronograma">oid do cronograma</param> /// <returns>Lista das tarefas consultadas e convertidas para dto</returns> public static List <CronogramaTarefaDto> ConsultarCronogramaTarefasPorOidCronogramaDto(Guid oidCronograma) { List <CronogramaTarefaDto> cronogramaTarefasDto = new List <CronogramaTarefaDto>(); List <CronogramaTarefa> cronogramaTarefas = CronogramaTarefaDao.ConsultarCronogramaTarefasPorOidCronograma(oidCronograma, o => o.Cronograma, o => o.Tarefa.AtualizadoPor.Usuario.Person, o => o.Tarefa.SituacaoPlanejamento); DateTime dataHoraAcao = DateTime.Now; if (cronogramaTarefas == null) { return(cronogramaTarefasDto); } for (int i = 0; i < cronogramaTarefas.Count; i++) { cronogramaTarefasDto.Add(CronogramaTarefaBo.DtoFactory(cronogramaTarefas[i], dataHoraAcao)); } return(cronogramaTarefasDto); }
public ActionResult MoverTarefa(Guid?oidTarefaSelecionada, short nbIdDestino) { try { if (!oidTarefaSelecionada.HasValue) { throw new ArgumentException("o oid da tarefa selecionada é obrigatório"); } short nbIDAtualizadoTarefaMovida = 0; DateTime dataHoraAcao = new DateTime(); Guid oidCronograma = new Guid(); List <CronogramaTarefa> tarefasImpactadas = CronogramaTarefaBo.ReordenarTarefas(oidTarefaSelecionada.Value, nbIdDestino, ref nbIDAtualizadoTarefaMovida, ref dataHoraAcao, ref oidCronograma); return(Json(CronogramaTarefaBo.TarefasMovidasDtoFactory(tarefasImpactadas, DateTime.Now, oidTarefaSelecionada.Value, nbIDAtualizadoTarefaMovida, oidCronograma))); } catch (Exception e) { Exception novaException = new Exception(String.Format("Messagem: {0} /n \n - StackTrace: {1} /n \n -", e.Message, e.StackTrace)); throw novaException; } }
public void EditarTarefaQuandoSalvarLinhaBaseTarefaTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Cronograma cronogramaPadrao1 = CronogramaBo.CriarCronogramaPadrao(contexto); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dataInicio = DateTime.Now; List <CronogramaTarefa> tarefasImpactadas; DateTime dataHoraAcao = new DateTime(); CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(cronogramaPadrao1.Oid, (string)"Tarefa 01", situacaoPlanejamento, dataInicio, responsaveis, colaborador1.Usuario.UserName, out tarefasImpactadas, ref dataHoraAcao, (string)"Criar método", 3, 0); //busca tarefa criada CronogramaTarefa tarefaCriada = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(novaTarefa.Oid, o => o.Tarefa.SituacaoPlanejamento, o => o.Cronograma, o => o.Tarefa.AtualizadoPor.Usuario.Person, o => o.Tarefa); bool salvarLinhaBaseTarefa = true; TimeSpan estimativaRestante = TarefaDao.ConsultarTarefaPorOid((Guid)tarefaCriada.OidTarefa).EstimativaRestanteHora; string responsaveisTarefaEdicao = colaborador1.NomeCompleto; TarefaBo.EditarTarefa(tarefaCriada.Oid.ToString(), tarefaCriada.Tarefa.TxDescricao, tarefaCriada.Tarefa.SituacaoPlanejamento.Oid.ToString(), colaborador1.Usuario.UserName, tarefaCriada.Tarefa.TxObservacao, responsaveisTarefaEdicao, tarefaCriada.Tarefa.NbEstimativaInicial, estimativaRestante, new TimeSpan(0), salvarLinhaBaseTarefa, dataInicio); //busca tarefa criada CronogramaTarefa tarefaAlterada = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(tarefaCriada.Oid, o => o.Tarefa.SituacaoPlanejamento, o => o.Cronograma, o => o.Tarefa.AtualizadoPor.Usuario.Person, o => o.Tarefa.LogsAlteracao, o => o.Tarefa.TarefaHistoricoTrabalhos, o => o.Tarefa.TarefaResponsaveis); Assert.AreEqual(salvarLinhaBaseTarefa, tarefaAlterada.Tarefa.CsLinhaBaseSalva, "Deveria ter salvo a linha de base"); Assert.AreEqual(estimativaRestante, tarefaAlterada.Tarefa.NbEstimativaRestante.ToTimeSpan(), "Deveria ter mudado a estimativa restando, pois salvou a linha de base"); }
public ActionResult ExcluirTarefa(TarefaExclusaoDto dto) { try { if (!dto.OidCronograma.HasValue || dto.OidsCronogramaTarefas == null || dto.OidsCronogramaTarefas.Count < 1) { return(new EmptyResult()); } List <CronogramaTarefa> tarefasImpactadas = new List <CronogramaTarefa>(); List <Guid> oidsTarefasNaoExcluidas = new List <Guid>(); DateTime dataHoraAcao = new DateTime(); List <CronogramaTarefa> tarefasExcluidas; tarefasExcluidas = CronogramaTarefaBo.ExcluirCronogramaTarefas(dto.OidsCronogramaTarefas, dto.OidCronograma.Value, ref tarefasImpactadas, ref oidsTarefasNaoExcluidas, ref dataHoraAcao); return(Json(CronogramaTarefaBo.TarefasExcluidasDtoFactory(tarefasImpactadas, oidsTarefasNaoExcluidas, tarefasExcluidas, DateTime.Now, dto.OidCronograma.Value))); } catch (Exception e) { Exception novaException = new Exception(String.Format("Messagem: {0} /n \n - StackTrace: {1} /n \n -", e.Message, e.StackTrace)); throw novaException; } }
/// <summary> /// Método responsável por buscar as tarefas que serão impactadas /// </summary> /// <param name="oidCronograma">Oid do cronograma em que será pesquisado</param> /// <param name="nbIdInicio">ID início</param> /// <param name="nbIdFinal">ID final</param> /// <returns>Lista de tarefas que serão impactadas na reordenação e/ou recalculo</returns> public static List <CronogramaTarefa> ConsultarTarefasImpactadas(Guid oidCronograma, short nbIdInicio, short nbIdFinal = 0) { if (oidCronograma == new Guid() || oidCronograma == null || nbIdInicio < 0) { throw new ArgumentException("Os parâmetros são inválidos."); } using (WexDb contexto = ContextFactoryManager.CriarWexDb()) { if (nbIdFinal > 0) { CronogramaTarefaBo.ValidarValoresNbID(ref nbIdInicio, ref nbIdFinal); return(contexto.CronogramaTarefa.MultiploInclude( o => o.Cronograma, o => o.Tarefa.SituacaoPlanejamento ).Where(o => o.NbID >= nbIdInicio && o.NbID <= nbIdFinal && o.OidCronograma == oidCronograma && !o.CsExcluido).OrderBy(o => o.NbID).ToList()); } else { return(contexto.CronogramaTarefa.MultiploInclude(o => o.Cronograma, o => o.Tarefa.SituacaoPlanejamento).Where(o => o.NbID >= nbIdInicio && o.OidCronograma == oidCronograma && !o.CsExcluido).OrderBy(o => o.NbID).ToList()); } } }
public ActionResult ListarTarefas(List <Guid> oids) { return(RetornarActionResult(CronogramaTarefaBo.ConsultarCronogramasTarefaPorOidDto(oids), JsonRequestBehavior.DenyGet)); }
/// <summary> /// Responsável por buscar uma lista de CronogramaTarefas converter para Dto /// </summary> /// <param name="oidCronogramaTarefas">Lista de oids das tarefas para pesquisar</param> /// <returns>retorna lista das tarefas convertidas para Dto</returns> public static List <CronogramaTarefaDto> ConsultarCronogramaTarefaPorOidDto(List <Guid> oidCronogramaTarefas) { List <CronogramaTarefa> cronogramaTarefas = ConsultarCronogramaTarefasPorOid(oidCronogramaTarefas, o => o.Cronograma, o => o.Tarefa.AtualizadoPor.Usuario.Person.Party, o => o.Tarefa.SituacaoPlanejamento); DateTime dataHoraAcao = DateTime.Now; return(cronogramaTarefas == null ? new List <CronogramaTarefaDto>() : cronogramaTarefas.Select(cronogramaTarefa => CronogramaTarefaBo.DtoFactory(cronogramaTarefa, dataHoraAcao)).ToList()); }
public void ConsultarTarefasPorOidCronogramaTarefaQuandoReceberUmaListaDeOidCronogramaTarefaTest() { SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); //cria cronograma Cronograma cronograma1 = CronogramaFactoryEntity.CriarCronograma(contexto, "Cronograma 01", situacaoPlanejamento, new DateTime(), new DateTime(), true); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); //nova tarefa CronogramaTarefa novaTarefa1 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa2 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa3 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa4 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa5 = new CronogramaTarefa() { Tarefa = new Tarefa() }; novaTarefa1.OidCronograma = cronograma1.Oid; novaTarefa2.OidCronograma = cronograma1.Oid; novaTarefa3.OidCronograma = cronograma1.Oid; novaTarefa4.OidCronograma = cronograma1.Oid; novaTarefa5.OidCronograma = cronograma1.Oid; //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa1, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa2, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa3, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa4, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa5, 0); novaTarefa1.Tarefa.TxDescricao = "Tarefa 01"; novaTarefa1.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa1.Tarefa.AtualizadoPor = colaborador1; novaTarefa2.Tarefa.TxDescricao = "Tarefa 02"; novaTarefa2.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa2.Tarefa.AtualizadoPor = colaborador1; novaTarefa3.Tarefa.TxDescricao = "Tarefa 03"; novaTarefa3.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa3.Tarefa.AtualizadoPor = colaborador1; novaTarefa4.Tarefa.TxDescricao = "Tarefa 04"; novaTarefa4.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa4.Tarefa.AtualizadoPor = colaborador1; novaTarefa5.Tarefa.TxDescricao = "Tarefa 05"; novaTarefa5.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa5.Tarefa.AtualizadoPor = colaborador1; contexto.CronogramaTarefa.Add(novaTarefa1); contexto.CronogramaTarefa.Add(novaTarefa2); contexto.CronogramaTarefa.Add(novaTarefa3); contexto.CronogramaTarefa.Add(novaTarefa4); contexto.CronogramaTarefa.Add(novaTarefa5); contexto.SaveChanges(); List <Guid> oidCronogramaTarefas = new List <Guid>(); oidCronogramaTarefas.Add(novaTarefa1.Oid); oidCronogramaTarefas.Add(novaTarefa2.Oid); List <CronogramaTarefa> tarefas = CronogramaTarefaDao.ConsultarCronogramaTarefasPorOid(oidCronogramaTarefas, o => o.Cronograma, o => o.Tarefa.SituacaoPlanejamento, o => o.Tarefa.AtualizadoPor.Usuario.Person.Party); Assert.AreEqual(2, tarefas.Count, "Deveria possuir 2 tarefas armazenadas!"); CronogramaTarefa tarefaEsperada1 = tarefas.FirstOrDefault(o => o.Oid.Equals(novaTarefa1.Oid)); CronogramaTarefa tarefaEsperada2 = tarefas.FirstOrDefault(o => o.Oid.Equals(novaTarefa2.Oid)); Assert.IsNotNull(tarefaEsperada1, "Deveria ter recebido a tarefas esperada"); Assert.IsNotNull(tarefaEsperada2, "Deveria ter recebido a tarefas esperada"); Assert.AreEqual(novaTarefa1.Oid, tarefaEsperada1.Oid, "Deveria ser o mesmo CronogramaTarefa"); Assert.AreEqual(novaTarefa1.OidCronograma, tarefaEsperada1.OidCronograma, "Deveriam estar no mesmo cronograma"); Assert.AreEqual(novaTarefa1.OidTarefa, tarefaEsperada1.OidTarefa, "Deveriam estar relacionadas a mesma tarefa"); Assert.AreEqual(novaTarefa1.NbID, tarefaEsperada1.NbID, "Deveria estar com o mesmo NbId"); Assert.AreEqual(novaTarefa1.CsExcluido, tarefaEsperada1.CsExcluido, "Deveriam estar com o mesmo estado de exclusão"); Assert.AreEqual(novaTarefa2.Oid, tarefaEsperada2.Oid, "Deveria ser o mesmo CronogramaTarefa"); Assert.AreEqual(novaTarefa2.OidCronograma, tarefaEsperada2.OidCronograma, "Deveriam estar no mesmo cronograma"); Assert.AreEqual(novaTarefa2.OidTarefa, tarefaEsperada2.OidTarefa, "Deveriam estar relacionadas a mesma tarefa"); Assert.AreEqual(novaTarefa2.NbID, tarefaEsperada2.NbID, "Deveria estar com o mesmo NbId"); Assert.AreEqual(novaTarefa2.CsExcluido, tarefaEsperada2.CsExcluido, "Deveriam estar com o mesmo estado de exclusão"); //Assert.IsTrue( tarefas.Contains( novaTarefa1 ), "Deveria conter a tarefa na lista" ); //Assert.IsTrue( tarefas.Contains( novaTarefa2 ), "Deveria conter a tarefa na lista" ); }
public void ConsultarCronogramaTarefasCarregandoASituacaoPlanejamento() { contexto = ContextFactoryManager.CriarWexDb(); SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); //cria cronograma Cronograma cronograma1 = CronogramaFactoryEntity.CriarCronograma(contexto, "Cronograma 01", situacaoPlanejamento, new DateTime(), new DateTime(), true); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); //nova tarefa CronogramaTarefa novaTarefa1 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa2 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa3 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa4 = new CronogramaTarefa() { Tarefa = new Tarefa() }; CronogramaTarefa novaTarefa5 = new CronogramaTarefa() { Tarefa = new Tarefa() }; novaTarefa1.OidCronograma = cronograma1.Oid; novaTarefa2.OidCronograma = cronograma1.Oid; novaTarefa3.OidCronograma = cronograma1.Oid; novaTarefa4.OidCronograma = cronograma1.Oid; novaTarefa5.OidCronograma = cronograma1.Oid; //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa1, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa2, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa3, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa4, 0); //Atribui um Id inexistente para tarefa CronogramaTarefaBo.AtribuirId(novaTarefa5, 0); novaTarefa1.Tarefa.TxDescricao = "Tarefa 01"; novaTarefa1.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa1.Tarefa.AtualizadoPor = colaborador1; novaTarefa2.Tarefa.TxDescricao = "Tarefa 02"; novaTarefa2.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa2.Tarefa.AtualizadoPor = colaborador1; novaTarefa3.Tarefa.TxDescricao = "Tarefa 03"; novaTarefa3.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa3.Tarefa.AtualizadoPor = colaborador1; novaTarefa4.Tarefa.TxDescricao = "Tarefa 04"; novaTarefa4.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa4.Tarefa.AtualizadoPor = colaborador1; novaTarefa5.Tarefa.TxDescricao = "Tarefa 05"; novaTarefa5.Tarefa.SituacaoPlanejamento = situacaoPlanejamento; novaTarefa5.Tarefa.AtualizadoPor = colaborador1; contexto.CronogramaTarefa.Add(novaTarefa1); contexto.CronogramaTarefa.Add(novaTarefa2); contexto.CronogramaTarefa.Add(novaTarefa3); contexto.CronogramaTarefa.Add(novaTarefa4); contexto.CronogramaTarefa.Add(novaTarefa5); contexto.SaveChanges(); List <Guid> oidCronogramaTarefas = new List <Guid>(); oidCronogramaTarefas.Add(novaTarefa1.Oid); oidCronogramaTarefas.Add(novaTarefa2.Oid); List <CronogramaTarefa> tarefas = CronogramaTarefaDao.ConsultarCronogramaTarefasPorOid(oidCronogramaTarefas, o => o.Tarefa.SituacaoPlanejamento, o => o.Cronograma.SituacaoPlanejamento, o => o.Tarefa.AtualizadoPor.Usuario.Person); Assert.AreEqual(2, tarefas.Count, "Deveria possuir 2 tarefas armazenadas!"); var t1 = tarefas.FirstOrDefault(o => o.Oid.Equals(novaTarefa1.Oid)); var t2 = tarefas.FirstOrDefault(o => o.Oid.Equals(novaTarefa2.Oid)); Assert.IsTrue(tarefas.Contains(t1), "Deveria encontrar a tarefa na lista"); Assert.IsTrue(tarefas.Contains(t2), "Deveria encontrar a tarefa na lista"); }
public void RnValidarTarefaEditadaQuandoEstimativaInicialSejaAlteradaTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento1 = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); //cria cronograma Cronograma cronograma1 = CronogramaFactoryEntity.CriarCronograma(contexto, "Cronograma 01", situacaoPlanejamento1, new DateTime(), new DateTime(), true); //cria colaborador Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); //adiciona colaborador como responsável pela tarefa string responsaveis = colaborador1.NomeCompleto; List <CronogramaTarefa> tarefasImpactadas; DateTime dataHoraAcao = new DateTime(); //cria tarefa a partir da RnIncluirTarefa em CronogramaTarefa CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(cronograma1.Oid, "Tarefa 01", situacaoPlanejamento1, DateTime.Now, responsaveis, colaborador1.Usuario.UserName, out tarefasImpactadas, ref dataHoraAcao, "Criar método1", 3, 0); //recupera a tarefa criada CronogramaTarefa tarefa = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(novaTarefa.Oid, o => o.Tarefa.SituacaoPlanejamento); //criar um Dto da tarefa e repassa as informações para poder utilizar o método que está sendo testado CronogramaTarefaGridItem tarefaDto = new CronogramaTarefaGridItem(); tarefaDto.OidCronogramaTarefa = tarefa.Oid; tarefaDto.TxDescricaoSituacaoPlanejamentoTarefa = tarefa.Tarefa.SituacaoPlanejamento.TxDescricao; tarefaDto.NbEstimativaInicial = tarefa.Tarefa.NbEstimativaInicial; tarefaDto.NbEstimativaRestante = tarefa.Tarefa.NbEstimativaRestante; //adiciona tarefa na lista de tarefas antigas (antes de serem alteradas) List <CronogramaTarefaGridItem> tarefasAntigas = new List <CronogramaTarefaGridItem>(); tarefasAntigas.Add(tarefaDto); //cria uma tarefa Dto alterada e modifica o campo situação de planejamento CronogramaTarefaGridItem tarefaDtoAlterada = new CronogramaTarefaGridItem(); tarefaDtoAlterada.OidCronogramaTarefa = tarefaDto.OidCronogramaTarefa; tarefaDtoAlterada.TxDescricaoSituacaoPlanejamentoTarefa = tarefaDto.TxDescricaoSituacaoPlanejamentoTarefa; tarefaDtoAlterada.NbEstimativaInicial = 5; tarefaDtoAlterada.NbEstimativaRestante = tarefaDto.NbEstimativaRestante; //adiciona a tarefa na lista de tarefas modificadas. List <CronogramaTarefaGridItem> tarefasAtualizadas = new List <CronogramaTarefaGridItem>(); tarefasAtualizadas.Add(tarefaDtoAlterada); //valida os campos alterados Hashtable camposAlterados = TarefaEditada.ValidarCamposRelevantesAlterados(tarefasAntigas, tarefasAtualizadas); List <int> campos = new List <int>(); campos = (List <int>)camposAlterados[tarefaDto.OidCronogramaTarefa]; Assert.AreEqual(1, campos.Count, "Deveria ter sido alterado apenas um campo."); Assert.AreEqual((int)CsTipoCampoEditado.EstimativaInicial, campos[0], "O campo alterado deveria ser do mesmo Tipo"); Assert.AreNotEqual(tarefaDto.NbEstimativaInicial, tarefaDtoAlterada.NbEstimativaInicial, "Não deveriam ser iguais, pois o campo foi alterado."); }
public void EditarTarefaQuandoOutroUsuarioAlterarTarefaTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Cronograma cronogramaPadrao1 = CronogramaBo.CriarCronogramaPadrao(contexto); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dataInicio = DateTime.Now; DateTime dataHoraAcao = new DateTime(); List <CronogramaTarefa> tarefasImpactadas; CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(cronogramaPadrao1.Oid, (string)"Tarefa 01", situacaoPlanejamento, dataInicio, responsaveis, colaborador1.Usuario.UserName, out tarefasImpactadas, ref dataHoraAcao, (string)"Criar método", 3, 0); //busca tarefa criada CronogramaTarefa tarefaCriada = contexto.CronogramaTarefa.FirstOrDefault(o => o.Oid == novaTarefa.Oid); Colaborador colaborador2 = ColaboradorFactoryEntity.CriarColaborador(contexto, "pedro.lins", true); Colaborador colaborador3 = ColaboradorFactoryEntity.CriarColaborador(contexto, "joao.lins", true); List <Colaborador> responsaveisAlterados = new List <Colaborador>(); responsaveisAlterados.Add(colaborador2); responsaveisAlterados.Add(colaborador3); //cria situação planejamento alterada SituacaoPlanejamento situacaoPlanejamento2 = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S2", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Cancelamento, CsPadraoSistema.Sim, true); Colaborador colaborador4 = ColaboradorFactoryEntity.CriarColaborador(contexto, "gabriel.matos", true); string txDescricaoAlterada = "Tarefa 01 alterada"; DateTime dataInicioAlterada = new DateTime(2013, 12, 10); string txObservacaoAlterada = "Criar método alterado"; Int16 EstimativaInicialHoraAlterada = 4; string responsaveisAlterado = colaborador1.NomeCompleto; TarefaBo.EditarTarefa(tarefaCriada.Oid.ToString(), txDescricaoAlterada, situacaoPlanejamento2.Oid.ToString(), colaborador2.Usuario.UserName, txObservacaoAlterada, responsaveisAlterado, EstimativaInicialHoraAlterada, new TimeSpan(0), new TimeSpan(0), false, DateTime.Now); //busca tarefa criada CronogramaTarefa tarefaAlterada = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(tarefaCriada.Oid, o => o.Tarefa.SituacaoPlanejamento); DateUtil.CurrentDateTime = (DateTime)tarefaAlterada.Tarefa.DtAtualizadoEm; Assert.AreEqual(DateUtil.CurrentDateTime, tarefaAlterada.Tarefa.DtAtualizadoEm, "As datas devem ser iguais."); Assert.AreEqual(txDescricaoAlterada, tarefaAlterada.Tarefa.TxDescricao, "Devem ser as mesmas, pois a descrição foi alterada."); Assert.AreEqual(txObservacaoAlterada, tarefaAlterada.Tarefa.TxObservacao, "Devem ser as mesmas, pois a data foi alterada."); Assert.AreEqual(EstimativaInicialHoraAlterada, tarefaAlterada.Tarefa.NbEstimativaInicial, "Devem ser iguais, pois foi alterada"); Assert.AreEqual(situacaoPlanejamento2.Oid, tarefaAlterada.Tarefa.OidSituacaoPlanejamento, "Devem ser iguais, pois foi alterada"); Assert.AreEqual(colaborador2.Oid, tarefaAlterada.Tarefa.OidAtualizadoPor, "Deve ser o mesmo, pois foi outro usuário que alterou a tarefa"); }
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"); }