protected void btnSalvar_Click(object sender, EventArgs e)
        {
            EmprestimosBL empBL = new EmprestimosBL();
            Emprestimos emp = new Emprestimos();

            emp.Id = utils.ComparaIntComZero(hfId.Value);

            emp.ExemplarId = utils.ComparaIntComZero(hfIdExemplar.Value);
            emp.PessoaId = utils.ComparaIntComZero(hfIdPessoa.Value);

            //a pessoa esta devendo?
            PessoasBL people = new PessoasBL();
            int fiado = people.EstaDevendo(emp.PessoaId);
            if (fiado > 0)
            {
                ExibirMensagem("Esta pessoa possui títulos em abeto com a Instituição e não pode emprestar este exemplar!");
                txtExemplar.Focus();
                return;  //throw new Exception(); //tem um jeito melhor de sair do metodo?
            }

            if (emp.Id > 0)
            { //editando == devolvendo
                if (this.Master.VerificaPermissaoUsuario("EDITAR"))
                {
                    empBL.EditarBL(emp);
                    //editar a movimentacao
                    EmprestimoMovBL emovBL = new EmprestimoMovBL();
                    EmprestimoMov mov = empBL.CarregaEmpNaoDevolvido(emp.Id);
                    if (mov.Id > 0)
                    {
                        DateTime hoje = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
                        mov.DataDevolucao = hoje;
                        if (hoje > mov.DataPrevistaEmprestimo)
                        { //entregou atrasado? I shall have your money...

                           DateTime diaD = mov.DataPrevistaEmprestimo ?? hoje; //convertendo DateTime? para DateTime com opcao de setar valor padrao
                            TimeSpan span = hoje - diaD;
                            int multa = this.LerParametro(1, "F");
                            double valor = multa * span.TotalDays;

                            //cadastrar titulo da multa
                            TitulosBL titBL = new TitulosBL();
                            Titulos titulos = new Titulos();

                            titulos.Numero = titBL.NovoNumero();
                            titulos.Parcela = 1;
                            titulos.Pessoaid = emp.PessoaId;
                            titulos.DataEmissao = hoje;

                            int prazo = this.LerParametro(6, "F");
                            prazo = (prazo < 1 ? 7: prazo);
                            titulos.DataVencimento = hoje.AddDays(prazo);
                            titulos.Valor = Convert.ToDecimal(valor);
                            titulos.TipoDocumentoId = this.LerParametro(4, "F");
                            ExemplaresBL exb = new ExemplaresBL();
                            Exemplares ex = exb.LerBL(emp.ExemplarId);

                            titulos.Obs = "Titulo gerado automaticamente, devido ao atraso de " + Convert.ToInt16(span.TotalDays).ToString()
                                + " dia(s) na devolução do exemplar " + emp.Id.ToString() + " - " + ex.Obras.Titulo;

                            titulos.Portadorid = this.LerParametro(5, "F");
                            titulos.Tipo = "R";

                            titBL.InserirBL(titulos);
                        }
                        emovBL.EditarBL(mov);
                    }
                }
                else
                    Response.Redirect("~/erroPermissao.aspx?nomeUsuario=" + ((Label)Master.FindControl("lblNomeUsuario")).Text + "&usuOperacao=operação", true);
            }
            else
            { //inserindo == emprestando
                if (this.Master.VerificaPermissaoUsuario("INSERIR"))
                {

                    //Quantidade máxima de exemplares emprestado:
                    int param = this.LerParametro(1, "B");
                    if (param >= 0)
                    {
                        if (empBL.QuantosLivrosEmprestados(emp.PessoaId) > param)
                        {

                            ExibirMensagem(lblDesPessoa.Text + " já atingiu o limite máximo de empréstimos simultâneos.");
                            txtPessoa.Focus();
                            return; //                            throw new Exception(); //tem um jeito melhor de sair do metodo?
                        }
                    }

                    int meuid = empBL.InserirBL(emp);
                    //inserir a movimentacao
                    EmprestimoMovBL emovBL = new EmprestimoMovBL();
                    EmprestimoMov mov = new EmprestimoMov();
                    mov.EmprestimoId = meuid;
                    mov.DataDevolucao = null;
                    mov.DataEmprestimo = Convert.ToDateTime(txtdataInicio.Text);
                    mov.DataPrevistaEmprestimo = Convert.ToDateTime(txtdataPrevisao.Text);
                    emovBL.InserirBL(mov);
                }
                else
                    Response.Redirect("~/erroPermissao.aspx?nomeUsuario=" + ((Label)Master.FindControl("lblNomeUsuario")).Text + "&usuOperacao=operação", true);
            }

            // usuarios.DtInicio = Convert.ToDateTime(txtDtInicio.Text);
            Response.Redirect("viewReserva.aspx");
        }
        protected void btnRenovar_Click(object sender, EventArgs e)
        {
            EmprestimosBL empBL = new EmprestimosBL();
            Emprestimos emp = new Emprestimos();

            emp.Id = utils.ComparaIntComZero(hfId.Value);
            emp.PessoaId = utils.ComparaIntComZero(hfIdPessoa.Value);

            //a pessoa esta devendo?
            PessoasBL people = new PessoasBL();
            int fiado = people.EstaDevendo(emp.PessoaId);
            if (fiado > 0)
            {
                ExibirMensagem("Esta pessoa possui títulos em abeto com a Instituição e não pode renovar este exemplar!");
                txtExemplar.Focus();
                return;  //throw new Exception(); //tem um jeito melhor de sair do metodo?
            }

            //Quantidade máxima de renovações:
            int param = this.LerParametro(2, "B");
            if (param >= 0)
            {
                if (empBL.QtdRenovacoes(emp.Id) > param)
                {
                    ExibirMensagem("Este exemplar não pode mais ser renovado para esta pessoa!");
                    txtExemplar.Focus();
                    return;  //throw new Exception(); //tem um jeito melhor de sair do metodo?
                }
            }

            //chegou aqui? vamos renovar!
            //renovar consiste em editar o atual e setar a data de devolucao, e inserir um novo
            EmprestimoMovBL emovBL = new EmprestimoMovBL();
            EmprestimoMov mov = empBL.CarregaEmpNaoDevolvido(emp.Id);
            if (mov.Id > 0)
            {
                DateTime hoje = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
                DateTime previsao = mov.DataPrevistaEmprestimo ?? hoje; //convertendo DateTime? para DateTime
                if (DateTime.Compare(previsao, hoje) > 0)
                {
                    mov.DataDevolucao = DateTime.Now;
                    emovBL.EditarBL(mov);
                    mov = new EmprestimoMov();
                    mov.EmprestimoId = emp.Id;
                    mov.DataEmprestimo = DateTime.Now;
                    param = this.LerParametro(4, "B");
                    DateTime lol = DateTime.Now;
                    if (param > 0)
                        lol = DateTime.Now.AddDays(param);
                    mov.DataPrevistaEmprestimo = lol;
                    mov.DataDevolucao = null;
                    emovBL.InserirBL(mov);
                }
                else
                {
                    ExibirMensagem("Exemplar atrasado não pode ser renovado!");
                    txtExemplar.Focus();
                    return;
                }
            }
            Response.Redirect("viewReserva.aspx");
        }