protected void btngrabar_Click(object sender, EventArgs e)
        {
            try
            {
                if (Session["username"] == null)
                {
                    Session["error"] = "Primero debe iniciar sesión";
                    Response.Redirect("login.aspx");
                    return;
                }
                if (idP == 1 || idP == 2)
                {
                    DateTime hoy = DateTime.Now;
                    DateTime inicio;

                    cn.Conectar();
                    SqlCommand q2 = new SqlCommand("select t.fecAtendido from ticket t inner join usuario u on t.id=u.id" +
                                                   " inner join usuario u2 on t.idTecnico = u2.id where RIGHT('000000' + cast(t.idTicket AS varchar(6)), 6)=@tck", cn.getConexion());
                    q2.Parameters.AddWithValue("@tck", idTicket);
                    SqlDataReader dr2 = q2.ExecuteReader();
                    dr2.Read();
                    inicio = DateTime.Parse(dr2["fecAtendido"].ToString());

                    cn.Cerrar();

                    double minutos  = (hoy - inicio).TotalMinutes;
                    String minutosF = "";
                    if (minutos > 59)
                    {
                        if (minutos < 120)
                        {
                            double horas   = (hoy - inicio).TotalHours;
                            int    residuo = Convert.ToInt32(minutos % 60);
                            if (residuo == 1)
                            {
                                minutosF = horas.ToString("##") + " hora " + residuo + " minuto";
                            }
                            else if (residuo < 1)
                            {
                                minutosF = horas.ToString("##") + " hora";
                            }
                            else
                            {
                                minutosF = horas.ToString("##") + " hora " + residuo + " minutos";
                            }
                        }
                        else
                        {
                            double horas   = (hoy - inicio).TotalHours;
                            int    residuo = Convert.ToInt32(minutos % 60);
                            if (residuo == 1)
                            {
                                minutosF = horas.ToString("##") + " horas " + residuo + " minuto";
                            }
                            else if (residuo < 1)
                            {
                                minutosF = horas.ToString("##") + " horas";
                            }
                            else
                            {
                                minutosF = horas.ToString("##") + " horas " + residuo + " minutos";
                            }
                        }
                    }
                    else
                    {
                        minutosF = minutos.ToString("##") + " minutos";
                    }



                    cn.Conectar();
                    SqlCommand sc = new SqlCommand("update ticket set observaciones ='" + txtobs.Text + "', idEstado=4, tiempo = '" + minutosF +
                                                   "' where RIGHT('000000' + cast(idTicket AS varchar(6)), 6) = '" + idTicket + "'", cn.getConexion());
                    sc.ExecuteNonQuery();
                    cn.Cerrar();
                    cn.Conectar();
                    SqlCommand q = new SqlCommand("select u.username, u.email, u2.username as tecnico, t.requerimiento from ticket t inner join usuario u on t.id=u.id" +
                                                  " inner join usuario u2 on t.idTecnico = u2.id where RIGHT('000000' + cast(t.idTicket AS varchar(6)), 6)=@tck", cn.getConexion());
                    q.Parameters.AddWithValue("@tck", idTicket);
                    SqlDataReader dr = q.ExecuteReader();
                    dr.Read();
                    rqc     = dr["requerimiento"].ToString();
                    email   = dr["email"].ToString();
                    tecnico = dr["tecnico"].ToString();

                    //ConfigSMTP smtp = new ConfigSMTP();
                    //smtp.emailTecADM(tecnico, rqc);
                    //smtp.enviarTecUsu(email, rqc);
                    //cn.Cerrar();

                    Session["mensaje"] = "Se finalizó el ticket exitosamente.";
                    string cerrar = "window.close();";
                    Session.Remove("idTicket");
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "closewindows", cerrar, true);
                }
                else if (idP == 4 || idP == 5)
                {
                    cn.Conectar();

                    SqlCommand sc = new SqlCommand("update ticket set fecAtencion = GETDATE(), observaciones ='" + txtobs.Text + "', idEstado=4, tiempo = case " +
                                                   "when convert(varchar(8), fecAtendido, 108) <= getdate() " +
                                                   "then getdate() - convert(varchar(8), fecAtendido, 108)" +
                                                   " else convert(varchar(8), fecAtendido, 108) - getdate() end " +
                                                   "where RIGHT('000000' + cast(idTicket AS varchar(6)), 6) = '" + idTicket + "'", cn.getConexion());
                    sc.ExecuteNonQuery();
                    cn.Cerrar();
                    cn.Conectar();
                    SqlCommand q = new SqlCommand("select u.username, u.email, u2.username as tecnico, t.requerimiento from ticket t inner join usuario u on t.id=u.id" +
                                                  " inner join usuario u2 on t.idTecnico = u2.id where RIGHT('000000' + cast(t.idTicket AS varchar(6)), 6)=@tck", cn.getConexion());
                    q.Parameters.AddWithValue("@tck", idTicket);
                    SqlDataReader dr = q.ExecuteReader();
                    dr.Read();
                    rqc     = dr["requerimiento"].ToString();
                    email   = dr["email"].ToString();
                    tecnico = dr["tecnico"].ToString();

                    ConfigSMTP smtp = new ConfigSMTP();
                    smtp.emailTecADM(tecnico, rqc);
                    smtp.enviarTecUsu(email, rqc);
                    cn.Cerrar();

                    Session["mensaje"] = "Se finalizó el ticket exitosamente.";
                    string cerrar = "window.close();";
                    Session.Remove("idTicket");
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "closewindows", cerrar, true);
                }
            }
            catch (Exception x)
            {
                lblError.Text    = "Ha ocurrido un error inesperado.";
                lblError.Visible = true;
                if (Session["username"] != null)
                {
                    ConfigSMTP smtp = new ConfigSMTP();
                    smtp.enviarError(x.Message.ToString(), Request.UserHostAddress.ToString(), Session["username"].ToString(), "BTNGRABAR");
                }
                return;
            }
        }