private String loadSolicitudes()
        {
            try
            {
                SqlDataContext sql = new SqlDataContext();
                StringBuilder sb = new StringBuilder();
                String labelEstado = "";

                Response.Write("USER="******"user"]);

                if (!String.IsNullOrEmpty(Request["user"]))
                {
                    var solicitudes = (from s in sql.solicitudes
                                       where s.user_id == Convert.ToInt64(Request["user"])
                                       select s);

                    sb.Append("<table class='table table-bordered table-striped table-condensed'><thead><tr><th>Titulo</th><th>Fecha Desde</th><th>Fecha Hasta</th><th>Estado</th></tr></thead><tbody>");

                    if (solicitudes.Count() > 0)
                    {
                        foreach (var solicitud in solicitudes)
                        {
                            switch (solicitud.estado)
                            {
                                case "PENDIENTE":
                                    labelEstado = "<span class='label label-warning'>PENDIENTE</span>";
                                    break;
                                case "APROBADO":
                                    labelEstado = "<span class='label label-warning'>APROBADO</span>";
                                    break;
                                case "DESAPROBADO":
                                    labelEstado = "<span class='label label-warning'>DESAPROBADO</span>";
                                    break;
                            }
                            sb.Append("<tr><td>" + solicitud.titulo.ToString() + "</td><td>" + solicitud.fecha_desde.ToString("dd/MM/yyyy") + "</td><td>" + solicitud.fecha_hasta.ToString("dd/MM/yyyy") + "</td><td>" + labelEstado + "</td></tr>");
                        }
                    }
                    else
                    {
                        sb.Append("<tr><td colspan='4'>No hay solicitudes realizadas</td></tr>");
                    }

                    sb.Append("</tbody></table>");
                }

                return sb.ToString();
            }
            catch (Exception ex)
            {
                _errorReporting.ReportError("loadSolicitudes - " + ex.ToString(), ErrorReporting.ERROR_DEVELOPMENT);
            }

            return "";
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(Request["user"]))
            {
                Response.Write("Debe estar logueado para poder ingresar a esta funcionalidad.");
                Response.End();
            }
            else
            {
                SqlDataContext sql = new SqlDataContext();
                var empleados = (from em in sql.relaciones
                                 where em.jefe == Convert.ToInt64(Request["user"])
                                 select em).Count();

                if (empleados > 0)
                {
                    Response.Write("Debe ser supervisor para poder ingresar a esta funcionalidad.");
                    Response.End();
                }
                else
                {
                    _errorReporting = ErrorReporting.getInstance;

                    if (!String.IsNullOrEmpty(Request["action"]))
                    {
                        Response.Expires = -1;
                        Response.ContentType = "text/plain";

                        switch (Request["action"])
                        {
                            case "loadInbox":
                                Response.Write(loadInbox());
                                break;
                            case "chageEstado":
                                Response.Write(chageEstado().ToString().ToLower());
                                break;
                        }

                        Response.End();
                    }
                }
            }
        }
        private Boolean chageEstado()
        {
            SqlDataContext sql = new SqlDataContext();

            try
            {
                String estado = Request["estado"];
                String id = Request["id"];

                var inbox = (from i in sql.inboxes
                             where i.id == Convert.ToInt64(id)
                             select i).First();
                var solicitud = (from s in sql.solicitudes
                                where s.id == inbox.solicitud_id
                                select s).First();
                var usuario = (from u in sql.registrados
                                where u.idRegistrado == solicitud.user_id
                                select u).First();

                solicitud.estado = estado;
                sql.SubmitChanges();

                Hashtable dataMail = new Hashtable();
                dataMail.Add("ESTADO", estado.ToLower());
                dataMail.Add("TITULO", solicitud.titulo);
                dataMail.Add("FECHA_DESDE", solicitud.fecha_desde.ToString("dd/MM/yyyy"));
                dataMail.Add("FECHA_HASTA", solicitud.fecha_hasta.ToString("dd/MM/yyyy"));
                dataMail.Add("MENSAJE", solicitud.mensaje);

                EmailSender emailSender = new EmailSender();
                emailSender.send(usuario.Mail, "Pedido de Fecha", "change-state.html", dataMail);
            }
            catch (Exception ex)
            {
                _errorReporting.ReportError("chageEstado - " + ex.ToString(), ErrorReporting.ERROR_DEVELOPMENT);
                return false;
            }
            return true;
        }
        private String loadInbox()
        {
            try
            {
                SqlDataContext sql = new SqlDataContext();
                StringBuilder sb = new StringBuilder();
                String labelEstado = "";

                var inbox = (from i in sql.inboxes
                             join s in sql.solicitudes
                             on i.solicitud_id equals s.id
                             join u in sql.registrados
                             on s.user_id equals u.idRegistrado
                             where i.user_id == Convert.ToInt64(Request["user"])
                             select new { i.id, i.solicitud_id, s.mensaje, s.titulo, s.user_id, s.estado, s.fecha_desde, s.fecha_hasta, u.Nombre, u.Apellido, u.Mail })
                                   .Distinct();

                sb.Append("<table class='table table-bordered table-striped table-condensed'><thead><tr><th>Titulo</th><th>Fecha Desde</th><th>Fecha Hasta</th><th>Usuario</th><th>Estado</th></tr></thead><tbody>");

                foreach (var i in inbox)
                {
                    switch (i.estado)
                    {
                        case "PENDIENTE":
                            labelEstado = "<span class='label label-warning'>PENDIENTE</span>";
                            break;
                        case "APROBADO":
                            labelEstado = "<span class='label label-warning'>APROBADO</span>";
                            break;
                        case "DESAPROBADO":
                            labelEstado = "<span class='label label-warning'>DESAPROBADO</span>";
                            break;
                    }

                    sb.Append("<script type='text/javascript'>solicitudes.push({id:" + i.id + ", solicitud_id:" + i.solicitud_id + ", mensaje:'" + i.mensaje + "', titulo:'" + i.titulo + "', user_id:" + i.user_id + ", fechaDesde:'" + i.fecha_desde.ToString("dd/MM/yyyy") + "', fechaHasta:'" + i.fecha_hasta.ToString("dd/MM/yyyy") + "', nombre:'" + i.Nombre + " " + i.Apellido + "', estado:'" + i.estado + "'});</script>");
                    sb.Append("<tr onclick='javascript:showSolicitud(" + i.id + ");' style='cursor:pointer;'><td>" + i.titulo.ToString() + "</td><td>" + i.fecha_desde.ToString("dd/MM/yyyy") + "</td><td>" + i.fecha_hasta.ToString("dd/MM/yyyy") + "</td><td>" + i.Nombre + " " + i.Apellido + "</td><td>" + labelEstado + "</td></tr>");
                }

                sb.Append("</tbody></table>");

                return sb.ToString();
            }
            catch (Exception ex)
            {
                _errorReporting.ReportError("loadInbox - " + ex.ToString(), ErrorReporting.ERROR_DEVELOPMENT);
            }

            return "";
        }
        private Boolean saveSolicitud()
        {
            try
            {
                SqlDataContext sql = new SqlDataContext();
                String[] splitFechaDesde = Request["fechaDesde"].Split('/');
                String[] splitFechaHasta = Request["fechaHasta"].Split('/');
                Int64 id = Convert.ToInt64(Request["user"]);

                var solicitud = new solicitude();
                solicitud.estado = "PENDIENTE";
                solicitud.titulo = Request["titulo"];
                solicitud.mensaje = Request["mensaje"];

                solicitud.fecha_desde = new DateTime(Convert.ToInt32(splitFechaDesde[2]), Convert.ToInt32(splitFechaDesde[1]), Convert.ToInt32(splitFechaDesde[0]));
                solicitud.fecha_hasta = new DateTime(Convert.ToInt32(splitFechaHasta[2]), Convert.ToInt32(splitFechaHasta[1]), Convert.ToInt32(splitFechaHasta[0]));
                solicitud.user_id = id;

                sql.solicitudes.InsertOnSubmit(solicitud);
                sql.SubmitChanges();

                var relacion = (from r in sql.relaciones
                                where r.empleado == id
                                select r).First();

                var inbox = new inbox();
                inbox.solicitud_id = solicitud.id;
                inbox.user_id = relacion.jefe;

                sql.inboxes.InsertOnSubmit(inbox);
                sql.SubmitChanges();

                var usuario = (from u in sql.registrados
                               where u.idRegistrado == id
                               select u).First();

                Hashtable dataMail = new Hashtable();
                dataMail.Add("TITULO", solicitud.titulo);
                dataMail.Add("FECHA_DESDE", solicitud.fecha_desde.ToString("dd/MM/yyyy"));
                dataMail.Add("FECHA_HASTA", solicitud.fecha_hasta.ToString("dd/MM/yyyy"));
                dataMail.Add("MENSAJE", solicitud.mensaje);

                EmailSender emailSender = new EmailSender();
                emailSender.send(usuario.Mail, "Pedido de Fecha", "sent-solicitud.html", dataMail);
            }
            catch (Exception ex)
            {
                _errorReporting.ReportError("saveSolicitud - " + ex.ToString(), ErrorReporting.ERROR_DEVELOPMENT);
                return false;
            }

            return true;
        }