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);
        }
        public ActionResult ConfirmarEditar(int id)
        {
            Roteiro roteiro = _bus.ObterSimplificado(id);

            return(View(roteiro));
        }
예제 #3
0
        private bool VerificarChecagem(ChecagemRoteiro checkListRoteiro)
        {
            if (String.IsNullOrWhiteSpace(checkListRoteiro.Interessado))
            {
                Validacao.AddAdvertencia(Msg.NomeInteressadoObrigatorio.Texto);
            }

            if (checkListRoteiro.Roteiros == null || checkListRoteiro.Roteiros.Count <= 0)
            {
                Validacao.AddAdvertencia(Msg.RoteiroObrigatorio.Texto);
            }

            // checa se as atividades dos roteiros estão no mesmo setor
            // apenas está checando os setor de cada roteiro pois isto já basta
            if (!_daRoteiro.RoteirosMesmoSetor(checkListRoteiro.Roteiros))
            {
                Validacao.Add(Mensagem.ChecagemRoteiro.RoteiroSetorDiferente);
            }

            int ri = 0;

            foreach (var item in checkListRoteiro.Roteiros)
            {
                ri++;
                Roteiro roteiro = _bus.ObterSimplificado(item.Id, item.Tid);

                if (roteiro == null)
                {
                    Validacao.AddAdvertencia(Msg.RoteiroInvalidoNaoEncontrado.Texto);
                    return(Validacao.EhValido);
                }

                if (_daRoteiro.RoteiroDesativado(roteiro.Id))
                {
                    Validacao.Add(Msg.RoteiroDesativado(roteiro.Numero, eTipoMensagem.Advertencia));
                    return(Validacao.EhValido);
                }

                if (!VerificarAtividadesAtivadas(roteiro.Id))
                {
                    return(Validacao.EhValido);
                }

                if (!_daRoteiro.VerificarTidAtual(roteiro.Id, roteiro.Tid))
                {
                    Validacao.AddAdvertencia(Msg.RoteiroAtualizado(roteiro.Numero, roteiro.VersaoAtual.ToString()).Texto);
                    return(Validacao.EhValido);
                }

                var existe = false;

                foreach (var itemRoteiro in roteiro.Itens)
                {
                    foreach (var itemCheckList in checkListRoteiro.Itens)
                    {
                        if (itemCheckList.Nome.ToUpper().Trim().Equals(itemRoteiro.Nome.ToUpper().Trim()))
                        {
                            existe = true;
                            break;
                        }

                        if (itemCheckList.Situacao == 3 && string.IsNullOrWhiteSpace(itemCheckList.Motivo))
                        {
                            Validacao.Add(Mensagem.ChecagemRoteiro.MotivoObrigatorio(itemCheckList.Nome));
                            break;
                        }
                    }

                    if (!existe)
                    {
                        Validacao.AddAdvertencia(Msg.ItemRoteiroNaoAssociado(roteiro.Numero, itemRoteiro.Nome).Texto);
                        return(Validacao.EhValido);
                    }
                }

                foreach (var itemCheckList in checkListRoteiro.Itens)
                {
                    if (itemCheckList.Situacao == 3 && string.IsNullOrWhiteSpace(itemCheckList.Motivo))
                    {
                        Validacao.Add(Mensagem.ChecagemRoteiro.MotivoObrigatorio(itemCheckList.Nome));
                        break;
                    }
                }
            }
            return(Validacao.EhValido);
        }