private ChecagemRoteiro AtualizarItensRoteiro(ChecagemRoteiro check) { try { for (int i = 0; i < check.Roteiros.Count; i++) { List <Item> itensRoteiroAtual = null; Roteiro roteiro = null; //Busca o tid de quando o roteiro foi associado string tidDeRelacao = check.Roteiros[i].Tid.Clone().ToString(); if (check.Roteiros[i].Situacao.Equals(2)) { Validacao.Add(Mensagem.ChecagemRoteiro.RoteiroDesativado(check.Roteiros[i].Numero, eTipoMensagem.Informacao)); } //Buscar o roteiro atual roteiro = _busRoteiro.ObterSimplificado(check.Roteiros[i].Id); if (!_busRoteiro.VerificarTidAtual(check.Roteiros[i].Id, tidDeRelacao)) { Validacao.Add(Mensagem.ChecagemRoteiro.RoteiroAtualizado(roteiro.Numero, roteiro.Versao.ToString())); int idRelacao = (check.Roteiros[i].IdRelacionamento ?? 0); check.Roteiros[i] = roteiro; check.Roteiros[i].IdRelacionamento = idRelacao; } itensRoteiroAtual = roteiro.Itens; for (int j = 0; j < itensRoteiroAtual.Count; j++) { bool isNew = true; for (int k = 0; k < check.Itens.Count; k++) { if (check.Itens[k].Id == itensRoteiroAtual[j].Id) { if (!check.Itens[k].Tid.Equals(itensRoteiroAtual[j].Tid, StringComparison.InvariantCultureIgnoreCase)) { List <int> lstRoteiros = check.Itens[k].Roteiros; lstRoteiros.Add(check.Roteiros[i].Id); check.Itens[k] = itensRoteiroAtual[j]; check.Itens[k].Roteiros = lstRoteiros; } else { check.Itens[k].Roteiros.Add(check.Roteiros[i].Id); } isNew = false; break; } } if (isNew) { itensRoteiroAtual[j].Roteiros.Add(check.Roteiros[i].Id); itensRoteiroAtual[j].Situacao = (int)eChecagemItemSituacao.Pendente; itensRoteiroAtual[j].SituacaoTexto = eChecagemItemSituacao.Pendente.ToString(); check.Itens.Add(itensRoteiroAtual[j]); } } } } catch (Exception exc) { Validacao.AddErro(exc); } return(check); }