protected void btOkEnviar_Click(object sender, EventArgs e)
        {
            lblMsgEnviar.Text = "";
            if (DespachoListEnviar.SelectedIndex == 0)
            {
                lblMsgEnviar.Text = "Selecione um despacho!";
                return;
            }
            lblMsg.Text = "";
            Processo_bll processo_Class = new Processo_bll("GTIconnection");
            int          seq            = Convert.ToInt32(SeqEnviarLabel.Text);

            Tramitacao linha = processo_Class.Dados_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, seq);
            Tramitacao reg   = new Tramitacao()
            {
                Ano       = linha.Ano,
                Numero    = linha.Numero,
                Seq       = linha.Seq,
                Despacho  = Convert.ToInt16(DespachoListEnviar.SelectedValue),
                Datahora  = linha.Datahora,
                Userid    = linha.Userid,
                Ccusto    = linha.Ccusto,
                Dataenvio = DateTime.Now,
                Userid2   = gtiCore.pUserId
            };
            Exception ex = processo_Class.Enviar_Processo(reg);

            if (ex != null)
            {
                throw ex.InnerException;
            }
            divModalEnviar.Visible = false;
            Carrega_Grid();
        }
        private ProcessoViewModel Exibe_Tramite(string Numero_Ano, int Seq = 0)
        {
            Processo_bll      protocoloRepository = new Processo_bll(_connection);
            ProcessoViewModel processoViewModel   = new ProcessoViewModel();
            //int _userId = Functions.pUserId;
            int _userId = Convert.ToInt32(Session["hashid"]);

            if (_userId > 0)
            {
                List <UsuariocentroCusto> _listaCC = protocoloRepository.ListaCentrocustoUsuario(_userId);
                string Lista_CC = "";
                foreach (UsuariocentroCusto item in _listaCC)
                {
                    Lista_CC += item.Codigo + ",";
                }
                Lista_CC = Lista_CC.Substring(0, Lista_CC.Length - 1);


                List <Centrocusto> Lista_CentroCusto = protocoloRepository.Lista_Local(true, false);
                ViewBag.Lista_CentroCusto = new SelectList(Lista_CentroCusto, "Codigo", "Descricao");

                ProcessoNumero processoNumero = Functions.Split_Processo_Numero(Numero_Ano);
                ProcessoStruct _dados         = protocoloRepository.Dados_Processo(processoNumero.Ano, processoNumero.Numero);
                if (_dados != null)
                {
                    List <TramiteStruct> Lista_Tramite = protocoloRepository.DadosTramite((short)processoNumero.Ano, processoNumero.Numero, (int)_dados.CodigoAssunto);

                    if (Seq > 0)
                    {
                        Lista_Tramite = Lista_Tramite.Where(m => m.Seq == Seq).ToList();
                    }
                    TramiteStruct TramiteAtual = protocoloRepository.Dados_Tramite(processoNumero.Ano, processoNumero.Numero, Seq);


                    processoViewModel.Despacho_Codigo = TramiteAtual.DespachoCodigo;
                    processoViewModel.Ano             = processoNumero.Ano;
                    processoViewModel.Numero          = processoNumero.Numero;
                    processoViewModel.User_Id         = Convert.ToInt32(ViewBag.UserId);
                    processoViewModel.Data_Processo   = Convert.ToDateTime(_dados.DataEntrada).ToString("dd/MM/yyyy");
                    processoViewModel.Requerente      = _dados.NomeCidadao;
                    processoViewModel.Assunto_Nome    = _dados.Assunto;
                    processoViewModel.Lista_Tramite   = Lista_Tramite;
                    processoViewModel.Lista_CC        = Lista_CC;
                    processoViewModel.Numero_Ano      = Numero_Ano;
                    processoViewModel.ObsGeral        = Lista_Tramite[0].ObsGeral;
                    processoViewModel.ObsInterna      = Lista_Tramite[0].ObsInterna;
                }
                else
                {
                    ViewBag.Result = "Processo não cadastrado.";
                }
            }
            return(processoViewModel);
        }
        protected void btOkReceber_Click(object sender, EventArgs e)
        {
            lblMsg.Text = "";
            Processo_bll processo_Class = new Processo_bll("GTIconnection");
            int          ccusto;
            int          seq = Convert.ToInt32(SeqReceberLabel.Text);

            bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, seq);

            if (_existeTramite)
            {
                Tramitacao linha = processo_Class.Dados_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, seq);
                ccusto = linha.Ccusto;
            }
            else
            {
                ccusto = processo_Class.Retorna_CCusto_TramiteCC(_numeroProcesso.Ano, _numeroProcesso.Numero, seq);
            }
            Tramitacao reg = new Tramitacao()
            {
                Ano      = (short)_numeroProcesso.Ano,
                Numero   = _numeroProcesso.Numero,
                Seq      = Convert.ToByte(SeqReceberLabel.Text),
                Despacho = Convert.ToInt16(DespachoListReceber.SelectedValue),
                Datahora = DateTime.Now,
                Userid   = gtiCore.pUserId,
                Ccusto   = (short)ccusto
            };
            Exception ex = processo_Class.Receber_Processo(reg);

            if (ex != null)
            {
                throw ex.InnerException;
            }
            divModalReceber.Visible = false;
            Carrega_Grid();
        }
        protected void grdMain_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
        {
            short        ccusto                = 0;
            int          Seq                   = Convert.ToInt32(e.CommandArgument) + 1;
            Processo_bll processo_Class        = new Processo_bll("GTIconnection");
            int          _ccusto               = processo_Class.Retorna_CCusto_TramiteCC(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
            List <UsuariocentroCusto> _listaCC = processo_Class.ListaCentrocustoUsuario(Convert.ToInt32(gtiCore.pUserId));
            bool _find = false;

            foreach (UsuariocentroCusto item in _listaCC)
            {
                if (item.Codigo == _ccusto)
                {
                    _find = true;
                    break;
                }
            }
            if (!_find && e.CommandName != "cmdObs")
            {
                lblMsg.Text = "Você não tem permissão para tramitar neste local.";
                return;
            }

            if (e.CommandName == "cmdReceber")
            {
                if (Seq > 1)
                {
                    bool _existeTramiteAnterior = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq - 1);
                    if (!_existeTramiteAnterior)
                    {
                        lblMsg.Text = "Local anterior não tramitado.";
                        return;
                    }
                    else
                    {
                        Tramitacao linha = processo_Class.Dados_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq - 1);
                        if (linha.Dataenvio == null)
                        {
                            lblMsg.Text = "Local anterior não tramitado.";
                            return;
                        }
                    }
                    bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                    if (_existeTramite)
                    {
                        lblMsg.Text = "Este local já foi tramitado.";
                        return;
                    }
                }
                else
                {
                    bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                    if (_existeTramite)
                    {
                        lblMsg.Text = "Este local já foi tramitado.";
                        return;
                    }
                }
                List <Despacho> Lista = processo_Class.Lista_Despacho();
                DespachoListReceber.DataSource     = Lista;
                DespachoListReceber.DataTextField  = "Descricao";
                DespachoListReceber.DataValueField = "Codigo";
                DespachoListReceber.DataBind();

                SeqReceberLabel.Text    = Seq.ToString();
                divModalReceber.Visible = true;
            }
            else
            {
                if (e.CommandName == "cmdEnviar")
                {
                    bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                    if (!_existeTramite)
                    {
                        lblMsg.Text = "Este processo ainda não foi recebido neste local.";
                        return;
                    }
                    else
                    {
                        Tramitacao linha = processo_Class.Dados_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                        ccusto = (short)linha.Despacho;
                        if (linha.Datahora == null)
                        {
                            lblMsg.Text = "Este processo ainda não foi recebido neste local.";
                            return;
                        }
                        else
                        {
                            if (linha.Dataenvio != null)
                            {
                                lblMsg.Text = "Processo já enviado deste local.";
                                return;
                            }
                        }
                    }
                    List <Despacho> Lista = processo_Class.Lista_Despacho();
                    DespachoListEnviar.DataSource     = Lista;
                    DespachoListEnviar.DataTextField  = "Descricao";
                    DespachoListEnviar.DataValueField = "Codigo";
                    DespachoListEnviar.DataBind();
                    try {
                        DespachoListEnviar.SelectedValue = ccusto.ToString();
                    } catch (Exception) {
                    }

                    SeqEnviarLabel.Text    = Seq.ToString();
                    divModalEnviar.Visible = true;
                }
                else
                {
                    if (e.CommandName == "cmdAcima")
                    {
                        if (Seq == 1)
                        {
                            return;
                        }
                        else
                        {
                            bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                            if (_existeTramite)
                            {
                                lblMsg.Text = "Este local já foi tramitado.";
                                return;
                            }
                            else
                            {
                                _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq - 1);
                                if (_existeTramite)
                                {
                                    lblMsg.Text = "O local anterior já foi tramitado.";
                                    return;
                                }
                                else
                                {
                                    Exception ex = processo_Class.Move_Sequencia_Tramite_Acima(_numeroProcesso.Numero, _numeroProcesso.Ano, Seq);
                                    if (ex == null)
                                    {
                                        Response.Redirect(Request.RawUrl, true);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (e.CommandName == "cmdAbaixo")
                        {
                            if (Seq > grdMain.Rows.Count - 1)
                            {
                                return;
                            }
                            else
                            {
                                bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                                if (_existeTramite)
                                {
                                    lblMsg.Text = "Este local já foi tramitado.";
                                    return;
                                }
                                else
                                {
                                    Exception ex = processo_Class.Move_Sequencia_Tramite_Abaixo(_numeroProcesso.Numero, _numeroProcesso.Ano, Seq);
                                    if (ex == null)
                                    {
                                        Response.Redirect(Request.RawUrl, true);
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (e.CommandName == "cmdInserir")
                            {
                                if (Seq > grdMain.Rows.Count - 1)
                                {
                                    return;
                                }
                                else
                                {
                                    bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq + 1);
                                    if (_existeTramite)
                                    {
                                        lblMsg.Text = "O próximo local já foi tramitado.";
                                        return;
                                    }
                                    else
                                    {
                                        List <Centrocusto> Lista = processo_Class.Lista_Local(true, false);
                                        LocalListInserir.DataSource     = Lista;
                                        LocalListInserir.DataTextField  = "Descricao";
                                        LocalListInserir.DataValueField = "Codigo";
                                        LocalListInserir.DataBind();
                                        SeqInserirLabel.Text    = Seq.ToString();
                                        divModalInserir.Visible = true;
                                    }
                                }
                            }
                            else
                            {
                                if (e.CommandName == "cmdRemover")
                                {
                                    bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                                    if (_existeTramite)
                                    {
                                        lblMsg.Text = "Este local já foi tramitado e não pode ser removido.";
                                    }
                                    else
                                    {
                                        Exception ex = processo_Class.Remover_Local(_numeroProcesso.Numero, _numeroProcesso.Ano, Seq);
                                        Response.Redirect(Request.RawUrl, true);
                                    }
                                }
                                else
                                {
                                    if (e.CommandName == "cmdObs")
                                    {
                                        bool _existeTramite = processo_Class.Existe_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                                        if (!_existeTramite)
                                        {
                                            lblMsg.Text = "Este local ainda não foi tramitado.";
                                        }
                                        else
                                        {
                                            foreach (UsuariocentroCusto item in _listaCC)
                                            {
                                                if (item.Codigo == _ccusto)
                                                {
                                                    _find = true;
                                                    break;
                                                }
                                            }
                                            Tramitacao _tramite = processo_Class.Dados_Tramite(_numeroProcesso.Ano, _numeroProcesso.Numero, Seq);
                                            ObsGeralText.Text   = _tramite.Obs ?? "";
                                            ObsInternoText.Text = _tramite.Obsinterna ?? "";

                                            btOkObs.Enabled        = _find;
                                            SeqObsLabel.Text       = Seq.ToString();
                                            ObsGeralText.Visible   = true;
                                            ObsInternoText.Visible = false;
                                            divModalObs.Visible    = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }