public ActionResult CopiarRoteiro(int id) { SalvarVM vm = new SalvarVM(_busLista.Setores, _busLista.Finalidades); vm.Roteiro = _bus.Obter(id) ?? new Roteiro(); vm.Roteiro.Padrao = false; preencheSalvarVM(vm); return(PartialView("RoteiroContentPartial", vm)); }
public MergeItens MergeItens(int checagemId) { MergeItens merge = new MergeItens(); try { int analiseId = _da.ExisteAnalise(checagemId); if (analiseId == 0) { return(merge); } AnaliseItem analise = _da.Obter(analiseId); merge.Itens = analise.Itens; merge.ItensAtuais.AddRange(analise.Itens.Where(item => !item.Avulso && item.Tipo != (int)eRoteiroItemTipo.ProjetoDigital).ToList()); List <Roteiro> roteirosAtuais = _busRoteiro.ObterRoteirosAtuais(analise); //Atualiza o TID do roteiro da análise com o TID do roteiro atual roteirosAtuais.ForEach(atual => { atual.IdRelacionamento = analise.Roteiros.SingleOrDefault(rot => rot.Id == atual.Id).IdRelacionamento; }); merge.Roteiros.AddRange(roteirosAtuais); #region Merge de Itens //Itens dos roteiros antigos List <Item> itensRoteirosAnalise = new List <Item>(); foreach (var item in analise.Roteiros) { itensRoteirosAnalise.AddRange(_busRoteiro.Obter(item.Id, item.Tid).Itens); } //Não duplicar linhas do historico foreach (Item item in merge.Itens) { item.Analista = string.Empty; item.DataAnalise = string.Empty; //item.SetorId = 0; } foreach (Item item in merge.Itens.Where(item => !item.Avulso && item.Tipo != (int)eRoteiroItemTipo.ProjetoDigital)) { if (itensRoteirosAnalise.Exists(itemRotAntigo => itemRotAntigo.Id == item.Id)) { item.StatusId = 3; item.StatusTela = "Removido do Roteiro"; } } foreach (Item itemAtual in roteirosAtuais.SelectMany(item => item.Itens)) { Item aux = merge.Itens.SingleOrDefault(x => x.Id == itemAtual.Id); int posicao = merge.Itens.IndexOf(aux); bool existiaRoteiroAntigo = itensRoteirosAnalise.Exists(itemRotAntigo => itemRotAntigo.Id == itemAtual.Id); if (aux != null && existiaRoteiroAntigo) { if (itemAtual.Tid != aux.Tid) { itemAtual.IdRelacionamento = aux.IdRelacionamento; itemAtual.Situacao = (int)eAnaliseItemSituacao.Recebido; itemAtual.IsAtualizado = true; itemAtual.Recebido = true; aux = itemAtual; aux.StatusId = 2; aux.StatusTela = "Atualizado"; } else { aux.StatusId = 1; aux.StatusTela = "Não Atualizado"; } if (aux.Avulso) { aux.IsAtualizado = true; aux.Avulso = false; aux.StatusId = 4; aux.StatusTela = "Adicionado no Roteiro"; aux.Situacao = (int)eAnaliseItemSituacao.Pendente; } merge.Itens[posicao] = aux; } else { if (existiaRoteiroAntigo || aux != null) { itemAtual.IdRelacionamento = aux.IdRelacionamento; } else { itemAtual.IdRelacionamento = 0; } itemAtual.Situacao = (int)eAnaliseItemSituacao.Pendente; itemAtual.IsAtualizado = true; itemAtual.StatusId = 4; itemAtual.StatusTela = "Adicionado no Roteiro"; merge.Itens.Add(itemAtual); } } #endregion } catch (Exception exc) { Validacao.AddErro(exc); } return(merge); }