public override EsteiraViewModel Run(Repository value)
        {
            EsteiraViewModel r = (EsteiraViewModel)value;

            try
            {
                EsteiraModel model     = new EsteiraModel(this.db, this.seguranca_db);
                int          esteiraId = this.db.Esteiras.Where(info => info.propostaId == ((EsteiraViewModel)value).propostaId).OrderByDescending(info => info.esteiraId).FirstOrDefault().esteiraId;
                ((EsteiraViewModel)value).esteiraId = esteiraId;
                EsteiraViewModel esteiraViewModel = model.getObject((EsteiraViewModel)value);

                // Se estiver na etapa original não pode voltar à etapa anterior
                if (db.Etapas.Find(esteiraViewModel.etapaId).etapa_antId.HasValue)
                {
                    #region Reprovar Etapa
                    esteiraViewModel.observacao      = ((EsteiraViewModel)value).observacao;
                    esteiraViewModel.ind_aprovacao   = "R";
                    esteiraViewModel.dt_manifestacao = Funcoes.Brasilia();
                    esteiraViewModel.uri             = ((EsteiraViewModel)value).uri;
                    esteiraViewModel = model.Update(esteiraViewModel);
                    if (esteiraViewModel.mensagem.Code > 0)
                    {
                        r = esteiraViewModel;
                        throw new ArgumentException(esteiraViewModel.mensagem.MessageBase);
                    }
                    #endregion

                    #region Incluir a proposta na etapa anterior
                    EsteiraViewModel etapaAnterior = new EsteiraViewModel()
                    {
                        propostaId      = esteiraViewModel.propostaId,
                        etapaId         = db.Etapas.Find(esteiraViewModel.etapaId).etapa_antId.Value,
                        descricao_etapa = db.Etapas.Find(db.Etapas.Find(esteiraViewModel.etapaId).etapa_antId).descricao,
                        dt_ocorrencia   = ((EsteiraViewModel)value).dt_ocorrencia,
                        uri             = ((EsteiraViewModel)value).uri
                    };
                    etapaAnterior = model.Insert(etapaAnterior);
                    #endregion

                    r = etapaAnterior;
                }
                else
                {
                    throw new Exception("Esta etapa não pode ser recusada");
                }
            }
            catch (Exception ex)
            {
                r.mensagem = new Validate()
                {
                    Code = 999, MessageBase = ex.Message, Message = "Ocorreu um erro na aprovação da etapa"
                };
            }
            return(r);
        }
Exemple #2
0
        public virtual EsteiraViewModel Run(Repository value)
        {
            EsteiraViewModel r = (EsteiraViewModel)value;

            r.mensagem = new Validate()
            {
                Code = 0, Message = "Registro incluído com sucesso!!"
            };
            try
            {
                EsteiraModel model     = new EsteiraModel(this.db, this.seguranca_db);
                int          esteiraId = this.db.Esteiras.Where(info => info.propostaId == ((EsteiraViewModel)value).propostaId).OrderByDescending(info => info.esteiraId).FirstOrDefault().esteiraId;
                ((EsteiraViewModel)value).esteiraId = esteiraId;
                EsteiraViewModel esteiraViewModel = model.getObject((EsteiraViewModel)value);

                if (esteiraViewModel.ind_aprovacao == null || esteiraViewModel.ind_aprovacao == "")
                {
                    #region Aprovar Etapa
                    esteiraViewModel.observacao      = ((EsteiraViewModel)value).observacao;
                    esteiraViewModel.ind_aprovacao   = "A";
                    esteiraViewModel.dt_manifestacao = Funcoes.Brasilia();
                    esteiraViewModel.uri             = ((EsteiraViewModel)value).uri;
                    esteiraViewModel = model.Update(esteiraViewModel);
                    if (esteiraViewModel.mensagem.Code > 0)
                    {
                        r = esteiraViewModel;
                        throw new Exception(esteiraViewModel.mensagem.MessageBase);
                    }
                    #endregion

                    if (db.Etapas.Find(esteiraViewModel.etapaId).etapa_proxId.HasValue)
                    {
                        #region Incluir a proposta na próxima etapa
                        EsteiraViewModel proximaEtapa = new EsteiraViewModel()
                        {
                            propostaId      = esteiraViewModel.propostaId,
                            etapaId         = db.Etapas.Find(esteiraViewModel.etapaId).etapa_proxId.Value,
                            descricao_etapa = db.Etapas.Find(db.Etapas.Find(esteiraViewModel.etapaId).etapa_proxId).descricao,
                            dt_ocorrencia   = ((EsteiraViewModel)value).dt_ocorrencia,
                            uri             = ((EsteiraViewModel)value).uri
                        };

                        #region Incluir o comissionamento
                        if (db.Etapas.Find(proximaEtapa.etapaId).ind_comissao == "S")
                        {
                            IList <EsteiraComissaoViewModel> listComissao = new List <EsteiraComissaoViewModel>();
                            foreach (ComissaoDefault comdef in db.ComissaoDefaults)
                            {
                                EsteiraComissaoViewModel com = new EsteiraComissaoViewModel()
                                {
                                    grupoId    = comdef.grupoId,
                                    nome_grupo = comdef.nome_grupo,
                                    valor      = comdef.vr_comissao * db.Propostas.Find(esteiraViewModel.propostaId).valor
                                };
                                listComissao.Add(com);
                            }

                            proximaEtapa.Comissaos = listComissao;
                        }
                        #endregion

                        proximaEtapa = model.Insert(proximaEtapa);
                        #endregion

                        r = proximaEtapa;
                    }
                }
                else
                {
                    throw new Exception("Esta etapa não pode ser aprovada");
                }
            }
            catch (Exception ex)
            {
                r.mensagem = new Validate()
                {
                    Code = 999, MessageBase = ex.Message, Message = "Ocorreu um erro na aprovação da etapa"
                };
            }
            return(r);
        }