protected void gdvLista_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Visualizar")
            {
                OcultaDescSoli();
                // recupera a linha clicada no gridview
                int linha = Convert.ToInt32(e.CommandArgument);
                // recupera o id na linha clicada
                Int32 id = (Int32)gdvLista.DataKeys[linha].Value;
                //função que abre o registro em modo de edição
                Solicitacao_Model model = new Solicitacao_Model();

                solicitacao s = new solicitacao();

                s = model.Obter(id);

                txtId.Value              = id.ToString();
                txtNome.Value            = s.solicitante_nome;
                txtEmail.Value           = s.solicitante_email;
                txtEndereco.Value        = s.solicitante_endereco;
                txtTelefone.Value        = s.solicitante_telefone;
                txtDescricaoCaso.Value   = s.descricao_caso;
                txtDadosOutraParte.Value = s.detalhes_partes;
                txtPeriodo.Value         = s.solicitante_periodo_atendimento;
                txtDia.Value             = s.solicitante_dia_atendimento;

                List <agendamento> listaAgend = new List <agendamento>();
                listaAgend       = model.CarregaAgendamentos(s);
                pnlDados.Enabled = !(listaAgend.Count > 0);
                if (!pnlDados.Enabled)
                {
                    InsereDescSoli("Solicitação já agendada. " + listaAgend.First().data_inicial.ToString());
                }
            }
        }
        protected void btnExcluir_Click(object sender, EventArgs e)
        {
            if (ValidaSolicitacao())
            {
                Solicitacao_Model model = new Solicitacao_Model();

                solicitacao s = new solicitacao();

                int id_solicitacao;

                id_solicitacao = int.Parse(txtId.Value);

                s = model.Obter(id_solicitacao);

                if (model.Arquivar(s))
                {
                    LimparCampos();
                    Master.Sucesso("Solicitação arquivada com sucesso.");
                    PreencherGrid();
                }
                else
                {
                    Master.Alerta("Erro ao arquivar a solicitação. Erro:" + model.message);
                }
            }
        }
        protected void PreencherGrid()
        {
            Solicitacao_Model model = new Solicitacao_Model();

            if (ddTipoBusca.Text == "Nome")
            {
                gdvLista.DataSource = model.ListarPorTexto("Nome", txtBusca.Value, Master.GetAlcancePermissao());
            }
            else if (ddTipoBusca.Text == "Data")
            {
                DateTime data = new DateTime();
                if (DateTime.TryParse(txtBusca.Value, out data))
                {
                    gdvLista.DataSource = model.ListarPorData(data, Master.GetAlcancePermissao());
                }
                else
                {
                    Master.Alerta("Data inválida.");
                }
            }
            else if (ddTipoBusca.Text == "Cidade")
            {
                gdvLista.DataSource = model.ListarPorTexto("Cidade", txtBusca.Value, Master.GetAlcancePermissao());
            }
            else
            {
                gdvLista.DataSource = model.ListarPorTexto("Local", txtBusca.Value, Master.GetAlcancePermissao());
            }
            gdvLista.DataBind();

            if (gdvLista.Rows.Count > 0)
            {
                gdvLista.UseAccessibleHeader    = true;
                gdvLista.HeaderRow.TableSection = TableRowSection.TableHeader;
            }
        }
        protected void btnConfirmaTransferencia_Click(object sender, EventArgs e)
        {
            if (ValidaSolicitacao())
            {
                // confirma a transferência da solicitação para um local específico
                Solicitacao_Model model = new Solicitacao_Model();

                int id_local, id_solicitacao;

                id_local       = int.Parse(ddLocal.SelectedValue);
                id_solicitacao = int.Parse(txtId.Value);

                // transfere a solicitação para o local/núcleo definido
                if (model.TransferirSolicitacao(id_solicitacao, id_local))
                {
                    Master.Sucesso("Solicitação transferida.");
                    PreencherGrid();
                }
                else
                {
                    Master.Alerta("Erro ao transferir Erro:" + model.message);
                }
            }
        }
        protected void Finalizar()
        {
            try
            {
                Solicitacao_Model model            = new Solicitacao_Model();
                BackEnd.Controllers.solicitacao sl = new BackEnd.Controllers.solicitacao();

                sl.data = DateTime.Now;

                // passo 1
                sl.solicitante_nome     = txtNome.Value;
                sl.solicitante_endereco = txtEndereco.Value;
                sl.solicitante_telefone = txtTelefone.Value;
                sl.solicitante_email    = txtEmail.Value;

                // passo 2
                sl.descricao_caso  = txtDescCaso.Text;
                sl.detalhes_partes = txtDadosPartes.Text;

                // passo 3
                String sPeriodo = "";
                String sDia     = "";
                foreach (ListItem item in cbgPeriodo.Items)
                {
                    if (item.Selected)
                    {
                        sPeriodo = sPeriodo + item.Text + "; ";
                    }
                }
                foreach (ListItem item in cbgDia.Items)
                {
                    if (item.Selected)
                    {
                        sDia = sDia + item.Text + "; ";
                    }
                }

                sl.solicitante_periodo_atendimento = sPeriodo;
                sl.solicitante_dia_atendimento     = sDia;
                sl.id_local = int.Parse(ddLocal.SelectedValue);

                //PEGAR O ID SELECIONADO NO DDLOCAL E BUSCAR A CIDADE PARA ATRIBUIR NO CAMPO SL.CIDADE_ABERTURA
                local       l      = new local();
                Local_Model lmodel = new Local_Model();
                l = lmodel.Obter(int.Parse(ddLocal.SelectedValue));

                // ATRIBUI O ID DA CIDADE VINCULADA AO LOCAL
                sl.id_cidade_abertura = l.id_cidade;

                // insere a solicitação
                if (!model.Inserir(sl))
                {
                    Master.Alerta(model.message);
                }
                else
                {
                    Response.Redirect("solicitacao_concluido.aspx");
                }
            } catch (Exception E)
            {
                Master.Alerta(E.Message);
            }
        }