public JsonResult GrabarPublicacion(PublicacionViewModel model)
        {
            try
            {
                var publicacion = this.modeloEntity.SAF_PUBLICACION.Where(c => c.CODPUB == model.CodigoPublicacion).FirstOrDefault();
                publicacion.FECMAXCRECON = Convert.ToDateTime(model.FechaMaximaPublicacionConcurso);
                publicacion.FECMAXCONS = Convert.ToDateTime(model.FechaMaximaCreacionConsulta);
                publicacion.FECMAXRESCONS = Convert.ToDateTime(model.FechaMaximaResponderConsultas);
                publicacion.FECMAXPREPROP = Convert.ToDateTime(model.FechaMaximaPresentacionPropuestas);

                var noti = new Helper.NotificacionAdmin();
                string mensaje = string.Empty;
                mensaje = "Se realizaron los siguientes cambios en la publicacion, debe tener en cuenta que las fechas mostradas son los limites para realizar cada accion: <br /><br />";
                mensaje = mensaje + "*) Fecha publicacion concurso : <strong>" + model.FechaMaximaPublicacionConcurso + "</strong><br/>";
                mensaje = mensaje + "*) Fecha elaboracion consultas : <strong>" + model.FechaMaximaCreacionConsulta + "</strong><br/>";
                mensaje = mensaje + "*) Fecha elaboracion absolucion de consultas : <strong>" + model.FechaMaximaResponderConsultas + "</strong><br/>";
                mensaje = mensaje + "*) Fecha elaboracion de propuestas : <strong>" + model.FechaMaximaPresentacionPropuestas + "</strong><br/>";
                noti.grabarNotificacionTodosUsuarios(Notificacion.asuntoCambiosConcurso, mensaje);

                this.modeloEntity.SaveChanges();
                return Json(new MensajeRespuesta("Se grabo la publicacion satisfactoriamente", true));
            }
            catch (Exception)
            {
                return Json(new MensajeRespuesta("No se pudo grabar la publicacion", false));
            }
        }
        public JsonResult CancelarInvitacion(int id)
        {
            try
            {
                var invitacion = this.modelEntity.SAF_INVITACION.Where(c => c.CODINV == id).FirstOrDefault();

                var noti = new Helper.NotificacionAdmin();
                var mensaje = "El auditor <strong>" + Session["sessionNombreCompletoUsuario"].ToString() + "</strong> identificado con el DNI " + Session["sessionUsuario"].ToString() + " CANCELO su invitacion";
                noti.grabarNotificacionSOA((int)invitacion.CODSOA, Notificacion.asuntoInvitacionCancelado, mensaje);

                invitacion.ESTINV = (int)Estado.Invitacion.Cancelada;
                invitacion.INDCANINV = "A";
                modelEntity.SaveChanges();
                return Json(new MensajeRespuesta("Se cancelo la invitacion satisfactoriamente", true));
            }
            catch (Exception)
            {
                return Json(new MensajeRespuesta("No se pudo cancelar la invitacion", false));
            }
        }
        public JsonResult AceptarInvitacion(int id)
        {
            try
            {
                var invitacion = this.modelEntity.SAF_INVITACION.Where(c => c.CODINV == id).FirstOrDefault();
                var noti = new Helper.NotificacionAdmin();
                var mensaje = "El auditor <strong>" + Session["sessionNombreCompletoUsuario"].ToString() + "</strong> identificado con el DNI " + Session["sessionUsuario"].ToString() + " ACEPTO su invitacion";

               // this.modelEntity.SP_SAF_ACEPTARINVITACION(id);
                this.modelEntity.SP_SAF_ACEPTARINVITACION(id);
                noti.grabarNotificacionSOA((int)invitacion.CODSOA, Notificacion.asuntoInvitacionAceptada, mensaje);

                //invitacion.ESTINV = (int)Estado.Invitacion.Aceptado;
                //invitacion.FECACEPINV = DateTime.Now;
                //modelEntity.SaveChanges();
                return Json(new MensajeRespuesta("Se acepto la invitacion satisfactoriamente", true));
            }
            catch (Exception)
            {
                return Json(new MensajeRespuesta("No se pudo aceptar la invitacion", false));
            }
        }
        public ActionResult observarSolicitudSoa(SoaModel model)
        {
            var infoSolicitud = modelEntity.SAF_SOLICITUD.Where(c => c.CODSOL == model.codSolicitud).FirstOrDefault();

            Helper.NotificacionAdmin noti = new Helper.NotificacionAdmin();
            noti.grabarNotificacionSOA(infoSolicitud.CODSOA.Value, Notificacion.asuntoSolicitudObservada, Notificacion.bodySolicitudObservada);

            infoSolicitud.OBSSOL = model.observacionSolicitud;
            infoSolicitud.ESTSOL = (int)Estado.Solicitud.Observada;
            modelEntity.SaveChanges();
            return RedirectToAction("Index", "SolicitudAdmin"); //View("revisarSolicitudSOA", infoSolicitud);
        }
        public JsonResult EnviarInvitacionAuditor(int id)
        {
            try
            {
                var invitacion = this.modelEntity.SAF_INVITACION.ToList().Where(c => c.CODINV == id).FirstOrDefault();

                var detalleInvitacion = this.modelEntity.SAF_INVITACIONDETALLE.ToList().Where(c => c.CODINV == id);
                if (!detalleInvitacion.Any())
                {
                    return Json(new MensajeRespuesta("Debe asignar al menos una fecha", false));
                }

                var noti = new Helper.NotificacionAdmin();
                var mensaje = "La sociedad <strong>" + Session["sessionNombreCompletoUsuario"].ToString() + "</strong> identificado con el RUC " + Session["sessionUsuario"].ToString() + " le ha enviado una invitacion para pertenecer a su equipo de Auditoria";
                noti.grabarNotificacionAuditor((int)invitacion.CODAUD, Notificacion.asuntoInvitacion, mensaje);

                invitacion.ESTINV = (int)Estado.Invitacion.Enviada;
                this.modelEntity.SaveChanges();
                return Json(new MensajeRespuesta("Se envio la invitacion satisfactoriamente", true));
            }
            catch (Exception)
            {
                return Json(new MensajeRespuesta("No se pudo enviar la invitacion", false));
            }
        }