Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }