Пример #1
0
        public ActionResult CreateWithCapacitado(int?id)
        {
            var jornadas = db.Jornada.Where(j => j.UsuarioModificacion == User.Identity.Name);

            ViewBag.JornadaID = new SelectList(jornadas.OrderByDescending(j => j.Fecha).ThenByDescending(j => j.Hora).ToList(), "JornadaID", "JornadaIdentificacionCompleta");

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            else
            {
                var capacitado = db.Capacitados.Find(id);

                if (capacitado != null)
                {
                    ViewBag.Capacitado   = capacitado;
                    ViewBag.CapacitadoID = capacitado.CapacitadoID;
                }
                else
                {
                    return(new HttpNotFoundResult());
                }
            }

            //se setean nota y fecha de vencimiento con un valor por defecto
            RegistroCapacitacion r = new RegistroCapacitacion();

            r.Nota = 0;

            return(View("Create", r));
        }
Пример #2
0
        public ActionResult Edit([Bind(Include = "RegistroCapacitacionID,Aprobado,Nota,NotaPrevia,Estado,JornadaID,CapacitadoID,FechaVencimiento,EnvioOVALEstado,DocumentacionAdicionalDatos")] RegistroCapacitacion registroCapacitacion,
                                 string PreviousUrl)
        {
            if (ModelState.IsValid)
            {
                registroCapacitacion.SetearAtributosControl();

                db.Entry(registroCapacitacion).State = EntityState.Modified;
                db.SaveChanges();

                if (!String.IsNullOrEmpty(PreviousUrl))
                {
                    return(Redirect(PreviousUrl));
                }
                else
                {
                    return(RedirectToAction("Details", new { id = registroCapacitacion.RegistroCapacitacionID }));
                }
            }
            ViewBag.CapacitadoID = new SelectList(db.Capacitados, "CapacitadoID", "Nombre", registroCapacitacion.CapacitadoID);

            var jornadas = db.Jornada.Where(j => j.UsuarioModificacion == User.Identity.Name);

            ViewBag.JornadaID = new SelectList(jornadas.OrderByDescending(j => j.Fecha).ThenByDescending(j => j.Hora).ToList(), "JornadaID", "JornadaIdentificacionCompleta");

            return(View(registroCapacitacion));
        }
Пример #3
0
        public bool EnviarEmailsNotificacionEliminacionInscripcion(RegistroCapacitacion registroCapacitacion)
        {
            if (registroCapacitacion != null)
            {
                var message = new MailMessage();

                foreach (var emailDestinatario in ConfiguracionHelper.GetInstance().GetValue("EmailEliminacionInscripcionEDestinatario", "Eliminacion_Inscripcion").Split(','))
                {
                    message.To.Add(new MailAddress(emailDestinatario));
                }

                message.From = new MailAddress(ConfiguracionHelper.GetInstance().GetValue("EmailUsuario", "Eliminacion_Inscripcion"));

                //en el subject del mail se agrega un valor randómico para evitar que los mensajes se muestren anidados en los clientes web mail
                message.Subject = string.Format(ConfiguracionHelper.GetInstance().GetValue("EmailEliminacionInscripcionEAsunto", "Eliminacion_Inscripcion"), registroCapacitacion.Jornada.JornadaIdentificacionCompleta, this.GenerateRandomicoSubjectMail());

                UrlHelper url = new UrlHelper(HttpContext.Current.Request.RequestContext);

                message.Body = string.Format(ConfiguracionHelper.GetInstance().GetValue("EmailEliminacionInscripcionECuerpo", "Eliminacion_Inscripcion"),
                                             System.Web.HttpContext.Current.User.Identity.Name,
                                             registroCapacitacion.Capacitado.NombreCompleto,
                                             registroCapacitacion.Capacitado.TipoDocumento.Abreviacion,
                                             registroCapacitacion.Capacitado.Documento,
                                             registroCapacitacion.Jornada.JornadaIdentificacionCompleta,
                                             url.Action("Details", "Jornadas", new { id = registroCapacitacion.JornadaID }, "http"));

                message.IsBodyHtml = true;

                using (var smtp = new SmtpClient())
                {
                    var credential = new NetworkCredential
                    {
                        UserName = ConfiguracionHelper.GetInstance().GetValue("EmailUsuario", "Eliminacion_Inscripcion"),
                        Password = ConfiguracionHelper.GetInstance().GetValue("PasswordUsuario", "Eliminacion_Inscripcion")
                    };

                    smtp.Credentials = credential;
                    smtp.Host        = ConfiguracionHelper.GetInstance().GetValue("SMPTHost", "Eliminacion_Inscripcion");
                    smtp.Port        = int.Parse(ConfiguracionHelper.GetInstance().GetValue("SMTPPort", "Eliminacion_Inscripcion"));
                    smtp.EnableSsl   = bool.Parse(ConfiguracionHelper.GetInstance().GetValue("SMTPSSL", "Eliminacion_Inscripcion"));

                    try
                    {
                        smtp.Send(message);
                        return(true);
                    }
                    catch (Exception e)
                    {
                        return(false);
                    }
                }
            }
            else
            {
                return(false);
            }
        }
Пример #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            RegistroCapacitacion registroCapacitacion = db.RegistroCapacitacion.Find(id);
            int capacitadoID = registroCapacitacion.CapacitadoID;

            db.RegistroCapacitacion.Remove(registroCapacitacion);
            db.SaveChanges();
            return(RedirectToAction("Details", "Capacitados", new { id = capacitadoID }));
        }
Пример #5
0
        public ActionResult EliminarRegistroCapacitacion(int registroCapacitacionId)
        {
            RegistroCapacitacion registroCapacitacion = db.RegistroCapacitacion.Find(registroCapacitacionId);

            //cuando se elimina un registro de capacitación, se envía un mail de notificación
            NotificacionesEMailHelper.GetInstance().EnviarEmailsNotificacionEliminacionInscripcion(registroCapacitacion);

            db.RegistroCapacitacion.Remove(registroCapacitacion);
            db.SaveChanges();

            return(Json(true, JsonRequestBehavior.AllowGet));
        }
Пример #6
0
        public ActionResult Create([Bind(Include = "RegistroCapacitacionID,Aprobado,Nota,NotaPrevia,JornadaID,CapacitadoID,FechaVencimiento")] RegistroCapacitacion registroCapacitacion)
        {
            if (ModelState.IsValid)
            {
                db.RegistroCapacitacion.Add(registroCapacitacion);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.CapacitadoID = new SelectList(db.Capacitados, "CapacitadoID", "Nombre", registroCapacitacion.CapacitadoID);
            ViewBag.JornadaID    = new SelectList(db.Jornada, "JornadaID", "JornadaID", registroCapacitacion.JornadaID);
            return(View(registroCapacitacion));
        }
Пример #7
0
        // GET: RegistrosCapacitacion/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RegistroCapacitacion registroCapacitacion = db.RegistroCapacitacion.Find(id);

            if (registroCapacitacion == null)
            {
                return(HttpNotFound());
            }
            return(View(registroCapacitacion));
        }
Пример #8
0
        public RespuestaOVAL EnviarDatosRegistro(RegistroCapacitacion r)
        {
            switch (r.Jornada.Curso.PuntoServicio.Tipo)
            {
            case TipoPuntoServicio.SOAP:
                return(EnviarDatosRegistroSOAP(r));

            case TipoPuntoServicio.Rest:
                return(EnviarDatosRegistroRest(r));
            }

            return(new RespuestaOVAL()
            {
                Codigo = -1, Mensaje = "Tipo de Punto de Servicio NO VÁLIDO"
            });
        }
Пример #9
0
        public ActionResult CreateWithCapacitado([Bind(Include = "RegistroCapacitacionID,Aprobado,Nota,NotaPrevia,Estado,JornadaID,CapacitadoID,FechaVencimiento")] RegistroCapacitacion registroCapacitacion)
        {
            if (ModelState.IsValid)
            {
                registroCapacitacion.SetearAtributosControl();

                var jornada = db.Jornada.Where(j => j.JornadaID == registroCapacitacion.JornadaID).FirstOrDefault();

                if (jornada == null)
                {
                    return(HttpNotFound());
                }

                if (jornada.PermiteEnviosOVAL)
                {
                    registroCapacitacion.EnvioOVALEstado = EstadosEnvioOVAL.PendienteEnvio;
                }
                else
                {
                    registroCapacitacion.EnvioOVALEstado = EstadosEnvioOVAL.NoEnviar;
                }

                db.RegistroCapacitacion.Add(registroCapacitacion);
                db.SaveChanges();
                //return RedirectToAction("Index");
                return(RedirectToAction("Details", "Capacitados", new { id = registroCapacitacion.CapacitadoID }));
            }

            var capacitado = db.Capacitados.Find(registroCapacitacion.CapacitadoID);

            if (capacitado != null)
            {
                ViewBag.Capacitado   = capacitado;
                ViewBag.CapacitadoID = capacitado.CapacitadoID;
            }
            else
            {
                return(new HttpNotFoundResult());
            }

            var jornadas = db.Jornada.Where(j => j.UsuarioModificacion == User.Identity.Name);

            ViewBag.JornadaID = new SelectList(jornadas.OrderByDescending(j => j.Fecha).ThenByDescending(j => j.Hora).ToList(), "JornadaID", "JornadaIdentificacionCompleta", registroCapacitacion.JornadaID);

            return(View("Create"));
        }
Пример #10
0
        // GET: RegistrosCapacitacion/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RegistroCapacitacion registroCapacitacion = db.RegistroCapacitacion.Find(id);

            if (registroCapacitacion == null)
            {
                return(HttpNotFound());
            }
            if (registroCapacitacion.PuedeModificarse())
            {
                return(View(registroCapacitacion));
            }
            else
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Unauthorized));
            }
        }
Пример #11
0
        public void ObtenerImagenYTitulo(RegistroCapacitacion r, ref string srcImagen, ref string titleTexto)
        {
            if (r.FechaVencimiento < DateTime.Now) //si el regsitro ya está vencido
            {
                srcImagen  = "~/images/vencido_20x20.png";
                titleTexto = String.Format("Registro vencido el {0}", r.FechaVencimiento.ToShortDateString());
            }

            if (r.FechaVencimiento > DateTime.Now)                   //si el registro aún no se ha vencido
            {
                if (r.FechaVencimiento.AddMonths(-1) > DateTime.Now) //si aún sigue vigente por más de un mes
                {
                    srcImagen  = "~/images/vigente_20x20.png";
                    titleTexto = String.Format("Registro vigente. Vence el {0}", r.FechaVencimiento.ToShortDateString());
                }
                else
                {
                    srcImagen  = "~/images/porVencer_20x20.png";
                    titleTexto = String.Format("El registro vence el {0}", r.FechaVencimiento.ToShortDateString());
                }
            }
        }
Пример #12
0
        // GET: RegistrosCapacitacion/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            RegistroCapacitacion registroCapacitacion = db.RegistroCapacitacion.Where(r => r.RegistroCapacitacionID == id).Include(r => r.Capacitado).FirstOrDefault();

            if (registroCapacitacion == null)
            {
                return(HttpNotFound());
            }
            ViewBag.CapacitadoID = new SelectList(db.Capacitados, "CapacitadoID", "Nombre", registroCapacitacion.CapacitadoID);

            ViewBag.JornadaID = registroCapacitacion.JornadaID;
            ViewBag.JornadaIdentificacionCompleta = registroCapacitacion.Jornada.JornadaIdentificacionCompleta;

            // get the previous url and store it with view model
            ViewBag.PreviousUrl = System.Web.HttpContext.Current.Request.UrlReferrer;

            return(View(registroCapacitacion));
        }
Пример #13
0
        public bool EnviarEmailsNotificacionInscripcionExterna(RegistroCapacitacion registroCapacitacion, bool capacitadoCreado)
        {
            //var registroCapacitacion = db.RegistroCapacitacion.Where(r => r.RegistroCapacitacionID == registroCapacitacionId).FirstOrDefault();

            if (registroCapacitacion != null)
            {
                var message = new MailMessage();

                foreach (var emailDestinatario in ConfiguracionHelper.GetInstance().GetValue("EmailInscripcionEDestinatario", "Inscripciones_Externas").Split(','))
                {
                    message.To.Add(new MailAddress(emailDestinatario));
                }

                message.From = new MailAddress(ConfiguracionHelper.GetInstance().GetValue("EmailUsuario", "Inscripciones_Externas"));

                //en el subject del mail se agrega un valor randómico para evitar que los mensajes se muestren anidados en los clientes web mail
                message.Subject = string.Format(ConfiguracionHelper.GetInstance().GetValue("EmailInscripcionEAsunto", "Inscripciones_Externas"), registroCapacitacion.Jornada.JornadaIdentificacionCompleta, this.GenerateRandomicoSubjectMail());

                UrlHelper url = new UrlHelper(HttpContext.Current.Request.RequestContext);

                message.Body = string.Format(ConfiguracionHelper.GetInstance().GetValue("EmailInscripcionECuerpo", "Inscripciones_Externas"),
                                             System.Web.HttpContext.Current.User.Identity.Name,
                                             registroCapacitacion.Capacitado.NombreCompleto,
                                             registroCapacitacion.Capacitado.TipoDocumento.Abreviacion,
                                             registroCapacitacion.Capacitado.Documento,
                                             registroCapacitacion.Jornada.JornadaIdentificacionCompleta,
                                             url.Action("Details", "Jornadas", new { id = registroCapacitacion.JornadaID }, "http"));

                string datosCapacitado = string.Empty;

                if (capacitadoCreado)
                {
                    datosCapacitado = "<p style=\"color: red; font-weight: bold;\">ATENCIÓN - El capacitado fue agregado por el usuario. <a href=\"{0}\">Ver capacitado</a></p>";
                }
                else
                {
                    datosCapacitado = "<p>El capacitado ya existía en la base de datos. <a href=\"{0}\">Ver capacitado</a></p>";
                }

                message.Body += string.Format(datosCapacitado, url.Action("Details", "Capacitados", new { id = registroCapacitacion.CapacitadoID }, "http"));

                message.IsBodyHtml = true;

                using (var smtp = new SmtpClient())
                {
                    var credential = new NetworkCredential
                    {
                        UserName = ConfiguracionHelper.GetInstance().GetValue("EmailUsuario", "Inscripciones_Externas"),
                        Password = ConfiguracionHelper.GetInstance().GetValue("PasswordUsuario", "Inscripciones_Externas")
                    };

                    smtp.Credentials = credential;
                    smtp.Host        = ConfiguracionHelper.GetInstance().GetValue("SMPTHost", "Inscripciones_Externas");
                    smtp.Port        = int.Parse(ConfiguracionHelper.GetInstance().GetValue("SMTPPort", "Inscripciones_Externas"));
                    smtp.EnableSsl   = bool.Parse(ConfiguracionHelper.GetInstance().GetValue("SMTPSSL", "Inscripciones_Externas"));

                    try
                    {
                        smtp.Send(message);
                        return(true);
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }
            }
            else
            {
                return(false);
            }
        }
Пример #14
0
 public string ObtenerImagenEnvioOVALEstado(RegistroCapacitacion r)
 {
     return(ObtenerImagenEnvioOVALEstado(r.EnvioOVALEstado, r.ListoParaEnviarOVAL, r.EnvioOVALFechaHora, r.EnvioOVALMensaje, r.EnvioOVALUsuario));
 }
Пример #15
0
 public string ObtenerLabelEstado(RegistroCapacitacion r)
 {
     return(ObtenerLabelEstado(r.Estado));
 }
Пример #16
0
        public ActionResult Create([Bind(Include = "CapacitadoID,Nombre,Apellido,Documento,Fecha,Telefono,EmpresaID,TipoDocumentoID")] Capacitado capacitado, HttpPostedFileBase upload, int?jornadaId)
        {
            if (ModelState.IsValid)
            {
                capacitado.SetearAtributosControl();

                db.Capacitados.Add(capacitado);
                db.SaveChanges();

                if (upload != null && upload.ContentLength > 0)
                {
                    string nombreArchivo = PathArchivoHelper.GetInstance().ObtenerNombreFotoCapacitado(capacitado.CapacitadoID,
                                                                                                       System.IO.Path.GetExtension(upload.FileName));

                    string carpetaArchivo = PathArchivoHelper.GetInstance().ObtenerCarpetaFotoCapacitado(capacitado.CapacitadoID);

                    string pathDirectorio = Path.Combine(Server.MapPath("~/Images/FotosCapacitados/"), carpetaArchivo);

                    capacitado.PathArchivo = PathArchivoHelper.GetInstance().ObtenerPathArchivo(nombreArchivo,
                                                                                                carpetaArchivo,
                                                                                                pathDirectorio,
                                                                                                upload,
                                                                                                TiposArchivo.FotoCapacitado);

                    db.Entry(capacitado).State = EntityState.Modified;
                    db.SaveChanges();
                }

                //si durante la cración se recibe un id de jornada, el capacitado es agregado a esa jornada
                if (jornadaId != null)
                {
                    Jornada j = db.Jornada.Find(jornadaId);

                    if (j == null)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                    }

                    //se vuelve a cargar el capacitado para leer entidades asociadas
                    capacitado = db.Capacitados.Where(c => c.CapacitadoID == capacitado.CapacitadoID).Include(c => c.TipoDocumento).FirstOrDefault();

                    var nuevoRC = new RegistroCapacitacion();
                    nuevoRC.SetearAtributosControl();

                    nuevoRC.Jornada          = j;
                    nuevoRC.Capacitado       = capacitado;
                    nuevoRC.Nota             = 0;
                    nuevoRC.Aprobado         = true;
                    nuevoRC.FechaVencimiento = j.ObtenerFechaVencimiento(true);

                    if (j.PermiteEnviosOVAL)
                    {
                        nuevoRC.EnvioOVALEstado = EstadosEnvioOVAL.PendienteEnvio;
                    }
                    else
                    {
                        nuevoRC.EnvioOVALEstado = EstadosEnvioOVAL.NoEnviar;
                    }

                    db.RegistroCapacitacion.Add(nuevoRC);
                    db.SaveChanges();

                    //si la incripción fue registrada por un usuario con perfil para inscripciones externas, se notifica por email
                    if (System.Web.HttpContext.Current.User.IsInRole("InscripcionesExternas"))
                    {
                        NotificacionesEMailHelper.GetInstance().EnviarEmailsNotificacionInscripcionExterna(nuevoRC, true);
                    }

                    return(RedirectToAction("Details", "Jornadas", new { id = jornadaId }));
                }

                return(RedirectToAction("Details", "Capacitados", new { id = capacitado.CapacitadoID }));
            }

            ViewBag.TipoDocumentoID = new SelectList(db.TiposDocumento.ToList(), "TipoDocumentoID", "Descripcion", capacitado.TipoDocumentoID);
            ViewBag.EmpresaID       = new SelectList(db.Empresas.OrderBy(e => e.NombreFantasia).ToList(), "EmpresaID", "NombreFantasia", capacitado.EmpresaID);

            return(View(capacitado));
        }
Пример #17
0
        private RespuestaOVAL EnviarDatosRegistroRest(RegistroCapacitacion r)
        {
            DateTime fechaJornada = r.Jornada.Fecha;

            string fotoCapacitadoAsBase64 = String.Empty;

            if (r.Capacitado.PathArchivo != null)
            {
                //se obtiene el path donde está almacenada la imagen que se enviará al web service
                string carpetaArchivo = PathArchivoHelper.GetInstance().ObtenerCarpetaFotoCapacitado(r.Capacitado.CapacitadoID);
                string pathDirectorio = Path.Combine(HttpContext.Current.Server.MapPath("~/Images/FotosCapacitados/"), carpetaArchivo);

                var pathArchivoImagen = Path.Combine(pathDirectorio, r.Capacitado.PathArchivo.NombreArchivo);

                //byte[] fotoCapacitadoAsArray = null;
                byte[] fotoCapacitadoAsArray = this.GetImageAsByteArray(pathArchivoImagen);
                fotoCapacitadoAsBase64 = Convert.ToBase64String(fotoCapacitadoAsArray);
            }

            PuntoServicio puntoServicioRest = r.Jornada.Curso.PuntoServicio;

            var client  = new RestClient(puntoServicioRest.Direccion);
            var request = new RestRequest(puntoServicioRest.DireccionRequest, Method.POST)
            {
                RequestFormat = DataFormat.Json
            };

            string tokenOAuthOVAL = ObtenerTokenOAuthOVAL(puntoServicioRest);

            if (tokenOAuthOVAL != null)
            {
                request.AddHeader("Authorization", "Bearer " + tokenOAuthOVAL);

                request.AddJsonBody(
                    new {
                    tipo_doc               = r.Capacitado.TipoDocumento.TipoDocumentoOVAL,
                    rut_trabajador         = r.Capacitado.Documento,
                    nombres_trabajador     = r.Capacitado.Nombre,
                    ape_paterno_trabajador = r.Capacitado.Apellido,
                    ape_materno_trabajador = string.Empty,
                    rut_contratista        = r.Capacitado.Empresa.RUT,
                    nombre_contratista     = r.Capacitado.Empresa.NombreFantasia,
                    tipo_induccion         = "CAP_SEG",
                    estado_induccion       = r.Estado == EstadosRegistroCapacitacion.Aprobado ? "APR" : "REC",
                    fecha_induccion        = string.Format("{0}-{1}-{2}", fechaJornada.Day.ToString().PadLeft(2, '0'), fechaJornada.Month.ToString().PadLeft(2, '0'), fechaJornada.Year.ToString()),
                    imagen = fotoCapacitadoAsBase64
                });

                var tResponse = client.Execute(request);

                if (tResponse.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    string respuestaServicio = ObtenerRespuestaServicioREST(tResponse.Content);
                    int    codigoRet         = 0; //0 es el código correspondiente a envío exitoso

                    if (respuestaServicio != "ok")
                    {
                        codigoRet = 1; //indica que hubo un error al invocar el servicio
                    }
                    return(new RespuestaOVAL()
                    {
                        Codigo = codigoRet, Mensaje = respuestaServicio
                    });
                }
                else
                {
                    return new RespuestaOVAL()
                           {
                               Codigo = -1, Mensaje = "Error al invocar el servicio"
                           }
                };
            }
            else
            {
                return new RespuestaOVAL()
                       {
                           Codigo = -1, Mensaje = "Error al invocar el servicio de autenticación (token)"
                       }
            };
        }
Пример #18
0
        private RespuestaOVAL EnviarDatosRegistroSOAP(RegistroCapacitacion r)
        {
            const string module = "enviosOVAL";

            DateTime fechaJornada = r.Jornada.Fecha;

            ServiceEnviarDatosFotoOVAL.WebServiceResponse rOVAL;

            try
            {
                string mensajelog = string.Format("Iniciando envío de datos\r\n\t{0}\r\n\t{1}\r\n\t{2}\r\n\t{3}",
                                                  r.Capacitado.DocumentoCompleto,
                                                  r.Capacitado.NombreCompleto,
                                                  r.Jornada.JornadaIdentificacionCompleta,
                                                  r.Estado.ToString());

                LogHelper.GetInstance().WriteMessage(module, mensajelog);

                string direccionServicioEnviarDatosOVAL = r.Jornada.Curso.PuntoServicio.Direccion;

                LogHelper.GetInstance().WriteMessage(module, string.Format("Conectándose al servicio ubicado en {0}", direccionServicioEnviarDatosOVAL));

                BasicHttpsBinding binding = new BasicHttpsBinding();
                EndpointAddress   address = new EndpointAddress(direccionServicioEnviarDatosOVAL);

                ServiceEnviarDatosFotoOVAL.ServiceSoapClient sOVAL = new ServiceEnviarDatosFotoOVAL.ServiceSoapClient(binding, address);
                ServiceEnviarDatosFotoOVAL.TokenSucurity     token = new ServiceEnviarDatosFotoOVAL.TokenSucurity
                {
                    Username = r.Jornada.Curso.PuntoServicio.Usuario,
                    Password = r.Jornada.Curso.PuntoServicio.Password
                };

                //Se invoca el método para validar las credenciaes del usuario (devuelve un string)
                string responseToken = sOVAL.AuthenticationUser(token);

                token.AuthenToken = responseToken;

                byte[] fotoCapacitadoAsArray = null;

                if (r.Capacitado.PathArchivo != null)
                {
                    if (r.Capacitado.PathArchivo.NombreArchivo.ToLower().Contains(".jpeg"))
                    {
                        if (bool.Parse(ConfiguracionHelper.GetInstance().GetValue("ForzarExtensionArchivoImagenJPG", "EnvioOVAL")))
                        {
                            if (CapacitadoHelper.GetInstance().CambiarExtensionFotoAJPG(r.Capacitado, this.db))
                            {
                                LogHelper.GetInstance().WriteMessage(module, string.Format("Se modificó la extensión del archivo {0}", r.Capacitado.PathArchivo.NombreArchivo));
                            }
                            else
                            {
                                LogHelper.GetInstance().WriteMessage(module, string.Format("No se pudo modificar la extensión del archivo {0}", r.Capacitado.PathArchivo.NombreArchivo));
                            }
                        }
                        else
                        {
                            LogHelper.GetInstance().WriteMessage(module, string.Format("No se modificará la extensión del archivo {0} porque está deshabilitada por configuración", r.Capacitado.PathArchivo.NombreArchivo));
                        }
                    }

                    //se obtiene el path donde está almacenada la imagen que se enviará al web service
                    string carpetaArchivo = PathArchivoHelper.GetInstance().ObtenerCarpetaFotoCapacitado(r.Capacitado.CapacitadoID);
                    string pathDirectorio = Path.Combine(HttpContext.Current.Server.MapPath("~/Images/FotosCapacitados/"), carpetaArchivo);

                    var pathArchivoImagen = Path.Combine(pathDirectorio, r.Capacitado.PathArchivo.NombreArchivo);

                    fotoCapacitadoAsArray = this.GetImageAsByteArray(pathArchivoImagen);
                }

                rOVAL = sOVAL.get_induccion(token,
                                            r.Capacitado.TipoDocumento.TipoDocumentoOVAL,
                                            r.Capacitado.Documento,
                                            r.Capacitado.Nombre,
                                            r.Capacitado.Apellido,
                                            string.Empty,
                                            r.Capacitado.Empresa.RUT,
                                            r.Capacitado.Empresa.NombreFantasia,
                                            "CAP_SEG",
                                            r.Estado == EstadosRegistroCapacitacion.Aprobado ? "APR" : "REC",
                                            string.Format("{0}-{1}-{2}", fechaJornada.Day.ToString().PadLeft(2, '0'), fechaJornada.Month.ToString().PadLeft(2, '0'), fechaJornada.Year.ToString()),
                                            string.Empty,
                                            fotoCapacitadoAsArray);

                LogHelper.GetInstance().WriteMessage(module, string.Format("Conexión finalizada\r\n\tResult: {0}\r\n\tErrorMessage: {1}", rOVAL.Result, rOVAL.ErrorMessage));

                //si la propiedad Result tiene contenido, el registro se recibió correctamente
                if (rOVAL.Result != string.Empty)
                {
                    LogHelper.GetInstance().WriteMessage(module, "El registro fue recibido por el sistema OVAL");
                    return(new RespuestaOVAL()
                    {
                        Codigo = 0, Mensaje = rOVAL.Result
                    });
                }
                else
                {
                    LogHelper.GetInstance().WriteMessage(module, string.Format("El registro fue rechazado por el sistema OVAL ({0})", rOVAL.ErrorMessage));
                    return(new RespuestaOVAL()
                    {
                        Codigo = 1, Mensaje = rOVAL.ErrorMessage
                    });
                }
            }
            catch (Exception e)
            {
                LogHelper.GetInstance().WriteMessage(module, e.Message);
                return(new RespuestaOVAL()
                {
                    Codigo = -1, Mensaje = e.Message
                });
            }
        }