public async Task<Mensaje> editInstitution([FromBody]UtilsJson.AInstitucion institution) { Mensaje mensaje = new Mensaje(); try { if (institution != null) { if (!string.IsNullOrWhiteSpace(institution.token_string)) { if (AutenticacionToken.validateToken(institution.token_string) == 1 && AutenticacionToken.validateUserToken(institution.token_string, institution.logueo.correo_electronico)) { string n_correo_electronico_l = string.Empty; string n_password1 = string.Empty; string n_password2 = string.Empty; string contrasena = string.Empty; if (institution.logueo != null) { n_correo_electronico_l = institution.logueo.correo_electronico; n_password1 = institution.logueo.contrasena1; n_password2 = institution.logueo.contrasena2; if (!string.IsNullOrWhiteSpace(n_password1) && !string.IsNullOrWhiteSpace(n_password2)) { contrasena = CifradoDatos.cifrarPassword(n_password1); } } //datos representante string nombre_r = institution.representante.nombre; string apellido_r = institution.representante.nombre; string tipo_identificacion = institution.representante.tipo_identificacion; string identificacion = institution.representante.identificacion; string urlCvlac = institution.representante.urlCvlac; string correo_electronico_r = institution.representante.correo_electronico; //datos institucion string nombre = institution.nombre; string descripcion = institution.descripcion; string correo_electronico = institution.correo_electronico; string direccion_postal = institution.direccion_postal; string facebook = institution.facebook; string fax = institution.fax; string impacto = institution.impacto; string linkedin = institution.linkedin; string naturaleza = institution.naturaleza; string pagina_web = institution.pagina_web; int tamano = institution.tamano; string telefono = institution.telefono; string tipo_institucion = institution.tipo_institucion; string twitter = institution.twitter; string constitucion = institution.constitucion; string fecha_creacion = institution.fecha_creacion; string imagen_base64 = institution.imagen_base64; long municipio_id = institution.municipio.id; UtilsJson.ASector[] sectores = institution.sectores; List<Sector> lstSectores = convertToSector(sectores); UtilsJson.ATipoBiotecnologia[] tipo_biote = institution.Tipos_Biotecnologia; List<TipoBiotecnologia> lstTipoBiotecnologia = convertToTipoBiotecnologia(tipo_biote); //Busco la institucion y el representante asociada al usuario y a la contrasena Expression<Func<Persona, bool>> query = (u => u.institucion.logueo.correo_electronico == institution.logueo.correo_electronico && u.institucion.estado == true); List<Persona> institucion = _repositorio.Filter<Persona>(query); //Si el correo_electronico y la contrasena son validas subo a session la institucion if (institucion != null) { if (institucion.Count > 0) { Municipio municipioDb = _repositorio.Get<Municipio>(municipio_id); if (!string.IsNullOrWhiteSpace(contrasena)) { institucion[0].institucion.logueo.contrasena = contrasena; institucion[0].institucion.logueo.fecha_ult_modificacion = DateTime.Now; } institucion[0].institucion.descripcion = descripcion; institucion[0].institucion.impacto = impacto; institucion[0].institucion.correo_electronico = correo_electronico; institucion[0].institucion.linkedin = linkedin; institucion[0].institucion.municipio = municipioDb; institucion[0].institucion.naturaleza = naturaleza; institucion[0].institucion.constitucion = constitucion; institucion[0].institucion.nombre = nombre; institucion[0].institucion.pagina_web = pagina_web; institucion[0].institucion.tamano = tamano; institucion[0].institucion.telefono = telefono; institucion[0].institucion.fax = fax; institucion[0].institucion.direccion_postal = direccion_postal; institucion[0].institucion.facebook = facebook; institucion[0].institucion.tipo_institucion = tipo_institucion; institucion[0].institucion.twitter = twitter; institucion[0].institucion.fecha_creacion = (!string.IsNullOrWhiteSpace(fecha_creacion)) ? Convert.ToDateTime(fecha_creacion) : (DateTime?)null; institucion[0].institucion.fecha_ult_modificacion = DateTime.Now; if (institucion[0].institucion.banner == null) { if (!string.IsNullOrWhiteSpace(imagen_base64)) { institucion[0].institucion.banner = new Imagen { imagenBase64 = imagen_base64, fecha_ult_modificacion = DateTime.Now }; //Redimension de la imagen y creacion de icono string extension = imagen_base64.Split(',')[0]; imagen_base64 = imagen_base64.Split(',')[1]; byte[] bytes = Convert.FromBase64String(imagen_base64); if (bytes.Length > 0) { byte[] filebytesIcon = UtilsHost.Redimensionar(Image.FromStream(new MemoryStream(bytes)), 100, 100, 32); string encodedDataIcon = extension + "," + Convert.ToBase64String(filebytesIcon, Base64FormattingOptions.None); institucion[0].institucion.icono = new Imagen { imagenBase64 = encodedDataIcon, fecha_ult_modificacion = DateTime.Now }; } } } else { if (!string.IsNullOrWhiteSpace(imagen_base64)) { institucion[0].institucion.banner.imagenBase64 = imagen_base64; institucion[0].institucion.banner.fecha_ult_modificacion = DateTime.Now; //Redimension de la imagen y creacion de icono string extension = imagen_base64.Split(',')[0]; imagen_base64 = imagen_base64.Split(',')[1]; byte[] bytes = Convert.FromBase64String(imagen_base64); if (bytes.Length > 0) { byte[] filebytesIcon = UtilsHost.Redimensionar(Image.FromStream(new MemoryStream(bytes)), 100, 100, 32); string encodedDataIcon = extension + "," + Convert.ToBase64String(filebytesIcon, Base64FormattingOptions.None); institucion[0].institucion.icono.imagenBase64 = encodedDataIcon; institucion[0].institucion.icono.fecha_ult_modificacion = DateTime.Now; } } } //datos del representante institucion[0].nombre = nombre_r; institucion[0].apellido = apellido_r; institucion[0].tipo_identificacion = tipo_identificacion; institucion[0].identificacion = identificacion; institucion[0].urlCvlac = urlCvlac; institucion[0].correo_electronico = correo_electronico_r; institucion[0].fecha_ult_modificacion = DateTime.Now; //Envio email confirmacion edicion perfil StringBuilder bodyMail = new StringBuilder(); bodyMail.AppendLine("Su Perfil ha sido editado exitosamente en biotecred.com ."); bodyMail.AppendLine("Lo invitamos a que inicie sesión y continúe disfrutando de nuestra plataforma."); string subject = "Confirmación Edición de perfil."; Mail mail = new Mail(institucion[0].institucion.logueo.correo_electronico, subject, bodyMail); //Verifico si la institucion existe en el sistema List<Mensaje> lstVerificaExiste = existeInstitucion(institucion[0]); List<Mensaje> lstVerificaExisteEmail = mail.existeEmail(); if (lstVerificaExiste.Count == 0 && lstVerificaExisteEmail.Count == 0) { institucion[0].fecha_ult_modificacion = DateTime.Now; _repositorio.SaveOrUpdate<Persona>(institucion[0]); long id_inst = institucion[0].id; //Elimino las relaciones de la entidad institucion con sectores y tipoBiotecnologia Expression<Func<InstitucionSector, bool>> query3 = (u => u.institucion.id == id_inst); _repositorio.DeleteFilter<InstitucionSector>(query3); Expression<Func<InstitucionTipoBiotec, bool>> query4 = (u => u.institucion.id == id_inst); _repositorio.DeleteFilter<InstitucionTipoBiotec>(query4); //almaceno las relaciones de la entidad institucion con sectores y tipoBiotecnologia foreach (Sector sector in lstSectores) { _repositorio.SaveOrUpdate(new InstitucionSector { institucion = institucion[0].institucion, sector = sector, fecha_ult_modificacion = DateTime.Now }); } foreach (TipoBiotecnologia tipo in lstTipoBiotecnologia) { _repositorio.SaveOrUpdate(new InstitucionTipoBiotec { institucion = institucion[0].institucion, tipoBiotecnologia = tipo, fecha_ult_modificacion = DateTime.Now }); } //Envio el correo de confirmacion if (mail.sendMail()) { mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Institución editada exitosamente."); } else { mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "Se produjo un error mientras se enviaba el correo. Correo invalido"); } } else { mensaje = new Mensaje(EnumTipoMensaje.Error, "Error validacion", "Existen campos que ya existen en el sistema."); } } else { mensaje = new Mensaje(EnumTipoMensaje.Error, "Error Autenticación", "Institucion no encontrada."); } } else { mensaje = new Mensaje(EnumTipoMensaje.Error, "Error Autenticación", "Institución no encontrada."); } } else { mensaje = new Mensaje(EnumTipoMensaje.Expiracion, "Error", "La sesion actual ha expirado. Inicie sesion"); } } else { mensaje = new Mensaje(EnumTipoMensaje.Error, "Error Autenticación", "Token de autenticación requerido."); } } else { mensaje = new Mensaje(EnumTipoMensaje.Error, "Error Autenticación", "institucón no encontrada."); } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { var sb = new System.Text.StringBuilder(); foreach (var failure in ex.EntityValidationErrors) { sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType()); foreach (var error in failure.ValidationErrors) { sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage); sb.AppendLine(); } } mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", sb.ToString()); SystemLog log = new SystemLog(); log.ErrorLog(sb.ToString()); throw new Exception(sb.ToString()); } return mensaje; }
public List<Mensaje> existeInstitucion([FromBody]UtilsJson.AInstitucion institucion) { List<Mensaje> listado = new List<Mensaje>(); Expression<Func<Institucion, bool>> query1; if (institucion.id > 0) { query1 = (u => (u.nombre.ToUpper() == institucion.nombre.ToUpper() || u.correo_electronico.ToUpper() == institucion.correo_electronico.ToUpper() || u.logueo.correo_electronico.ToUpper() == institucion.logueo.correo_electronico.ToUpper()) && u.id != institucion.id && u.id != institucion.id && u.logueo.id != institucion.logueo.id ); } else { query1 = (u => (u.nombre.ToUpper() == institucion.nombre.ToUpper() || u.correo_electronico.ToUpper() == institucion.correo_electronico.ToUpper() || u.logueo.correo_electronico.ToUpper() == institucion.logueo.correo_electronico.ToUpper()) ); } List<Institucion> institucion_existe = _repositorio.Filter<Institucion>(query1); if (institucion_existe != null) { foreach (Institucion aux in institucion_existe) { if (!string.IsNullOrWhiteSpace(aux.nombre) && aux.nombre.ToUpper().Equals(institucion.nombre.ToUpper())) { listado.Add(new Mensaje(EnumTipoMensaje.Error, "Error", "Ya Existe un perfil de institución con el nombre " + institucion.nombre + ". Verifique los datos suministrados")); } if (!string.IsNullOrWhiteSpace(aux.correo_electronico) && aux.correo_electronico.ToUpper().Equals(institucion.correo_electronico.ToUpper())) { listado.Add(new Mensaje(EnumTipoMensaje.Error, "Error", "Ya Existe un perfil de institución con el correo electronico " + institucion.correo_electronico + ". Verifique los datos suministrados")); } if (!string.IsNullOrWhiteSpace(aux.logueo.correo_electronico) && aux.logueo.correo_electronico.ToUpper().Equals(institucion.logueo.correo_electronico.ToUpper())) { listado.Add(new Mensaje(EnumTipoMensaje.Error, "Error", "El correo electronico de logueo " + institucion.logueo.correo_electronico + " ya se encuentra registrado en el sistema. Verifique los datos suministrados")); } } } //Verifico la existencia del correo Mail mail = new Mail(institucion.logueo.correo_electronico, string.Empty, new StringBuilder()); List<Mensaje> lstVerificaExisteEmail = mail.existeEmail(); listado.AddRange(lstVerificaExisteEmail); return listado; }
public Mensaje createInstitution([FromBody]UtilsJson.AInstitucion institution) { Mensaje mensaje = null; try { if (institution != null) { //datos logueo string correo_electronico_l = institution.logueo.correo_electronico; string password1 = institution.logueo.contrasena1; string password2 = institution.logueo.contrasena2; //datos representante string nombre_r = institution.representante.nombre; string apellido_r = institution.representante.apellido; string tipo_identificacion = institution.representante.tipo_identificacion; string identificacion = institution.representante.identificacion; string urlCvlac = institution.representante.urlCvlac; string correo_electronico_r = institution.representante.correo_electronico; //datos institucion string codigo = institution.codigo_registro; string nombre = institution.nombre; string descripcion = institution.descripcion; string correo_electronico = institution.correo_electronico; string direccion_postal = institution.direccion_postal; string facebook = institution.facebook; string fax = institution.fax; string impacto = institution.impacto; string linkedin = institution.linkedin; string naturaleza = institution.naturaleza; string pagina_web = institution.pagina_web; int tamano = institution.tamano; string telefono = institution.telefono; string tipo_institucion = institution.tipo_institucion; string twitter = institution.twitter; string constitucion = institution.constitucion; string fecha_creacion = institution.fecha_creacion; string latitud = institution.latitud; string longitud = institution.longitud; string imagen_base64 = institution.imagen_base64; string tipo_empresa = (!String.IsNullOrWhiteSpace(institution.tipo_empresa)) ? institution.tipo_empresa : EnumTipoEmpresa.Compañia; UtilsJson.AMunicipio municipio = institution.municipio; UtilsJson.ASector[] sectores = institution.sectores; UtilsJson.ATipoBiotecnologia[] Tipos_Biotecnologia = institution.Tipos_Biotecnologia; if (codigo != null) { //verificacion de existencia y estado del codigo Expression<Func<SolicitudRegistro, bool>> query = u => u.codigo == codigo && u.estado == true; SolicitudRegistro solicitud = _repositorio.Get<SolicitudRegistro>(query); //Si la solicitud existe y no se ha usado subo a session el codigo if (solicitud != null) { Municipio municipioDb = null; List<Sector> lstSectores = new List<Sector>(); List<TipoBiotecnologia> lstTipoBiotecnologia = new List<TipoBiotecnologia>(); if (municipio.id > 0) { municipioDb = _repositorio.Get<Municipio>(municipio.id); } if (sectores != null) { lstSectores = convertToSector(sectores); } if (Tipos_Biotecnologia != null) { lstTipoBiotecnologia = convertToTipoBiotecnologia(Tipos_Biotecnologia); } Institucion institucion_api = new Institucion(); if (password1.Equals(password2)) { institucion_api.logueo = new LogueoInstitucion { correo_electronico = correo_electronico_l, contrasena = CifradoDatos.cifrarPassword(password2), fecha_ult_modificacion = DateTime.Now, rol = EnumTipoRol.usuario }; institucion_api.descripcion = descripcion; institucion_api.impacto = impacto; institucion_api.correo_electronico = correo_electronico; institucion_api.latitud = latitud; institucion_api.linkedin = linkedin; institucion_api.longitud = longitud; institucion_api.municipio = municipioDb; institucion_api.naturaleza = naturaleza; institucion_api.constitucion = constitucion; institucion_api.nombre = nombre; institucion_api.pagina_web = pagina_web; institucion_api.tamano = tamano; institucion_api.telefono = telefono; institucion_api.fax = fax; institucion_api.direccion_postal = direccion_postal; institucion_api.facebook = facebook; institucion_api.tipo_institucion = tipo_institucion; institucion_api.twitter = twitter; institucion_api.fecha_creacion = (!string.IsNullOrWhiteSpace(fecha_creacion)) ? Convert.ToDateTime(fecha_creacion) : (DateTime?)null; if (institucion_api.banner == null) { if (!string.IsNullOrWhiteSpace(imagen_base64)) { institucion_api.banner = new Imagen { imagenBase64 = imagen_base64, fecha_ult_modificacion = DateTime.Now }; //Redimension de la imagen y creacion de icono string extension = imagen_base64.Split(',')[0]; imagen_base64 = imagen_base64.Split(',')[1]; byte[] bytes = Convert.FromBase64String(imagen_base64); if (bytes.Length > 0) { byte[] filebytesIcon =UtilsHost.Redimensionar(Image.FromStream(new MemoryStream(bytes)), 100, 100, 32); string encodedDataIcon = extension + "," + Convert.ToBase64String(filebytesIcon, Base64FormattingOptions.None); institucion_api.icono = new Imagen { imagenBase64 = encodedDataIcon, fecha_ult_modificacion = DateTime.Now }; } } } else { if (!string.IsNullOrWhiteSpace(imagen_base64)) { institucion_api.banner.imagenBase64 = imagen_base64; institucion_api.banner.fecha_ult_modificacion = DateTime.Now; //Redimension de la imagen y creacion de icono string extension = imagen_base64.Split(',')[0]; imagen_base64 = imagen_base64.Split(',')[1]; byte[] bytes = Convert.FromBase64String(imagen_base64); if (bytes.Length > 0) { byte[] filebytesIcon = UtilsHost.Redimensionar(Image.FromStream(new MemoryStream(bytes)), 100, 100, 32); string encodedDataIcon = extension + "," + Convert.ToBase64String(filebytesIcon, Base64FormattingOptions.None); institucion_api.icono.imagenBase64 = encodedDataIcon; institucion_api.icono.fecha_ult_modificacion = DateTime.Now; } } } //creo un nuevo representante para la institucion Persona persona = new Persona { nombre = nombre_r, apellido = apellido_r, tipo_identificacion = tipo_identificacion, identificacion = identificacion, urlCvlac = urlCvlac, correo_electronico = correo_electronico_r, tipoPersona = EnumTipoPersona.director, fecha_ult_modificacion = DateTime.Now, estado=true }; //Genero el correo para confirmacion para habilitar el perfil StringBuilder bodyMail = new StringBuilder(); //Creo un token de autenticacion para habilitar el perfil string codigoEnabled = CifradoDatos.cifrarRSA(institucion_api.logueo.correo_electronico); bodyMail.AppendLine("Para habilitar el perfil de la institucion " + institucion_api.nombre + " dirijase al siguiente enlace."); string informacionHost = UtilsHost.serverInfoCurrent(); bodyMail.AppendLine("<a href=\"" + informacionHost + "/Institucion/HabilitarCuenta?tokenEnabled=" + codigoEnabled + "\">Activar perfil.</a>" + "</br>"); string subject = "Confirmación y habilitacion de perfil."; Mail mail = new Mail(institucion_api.logueo.correo_electronico, subject, bodyMail); //Verifico si la institucion existe en el sistema List<Mensaje> lstVerificaExiste = existeInstitucion(persona); List<Mensaje> lstVerificaExisteEmail = mail.existeEmail(); if (lstVerificaExiste.Count == 0 && lstVerificaExisteEmail.Count == 0) { //Envio el correo de confirmacion if (mail.sendMail()) { persona.institucion = institucion_api; _repositorio.SaveOrUpdate<Persona>(persona); //Elimino las relaciones de la entidad institucion con sectores y tipoBiotecnologia Expression<Func<InstitucionSector, bool>> query3 = u => u.institucion.id == institucion_api.id; _repositorio.DeleteFilter<InstitucionSector>(query3); Expression<Func<InstitucionTipoBiotec, bool>> query4 = u => u.institucion.id == institucion_api.id; _repositorio.DeleteFilter<InstitucionTipoBiotec>(query4); //almaceno las relaciones de la entidad institucion con sectores y tipoBiotecnologia foreach (Sector sector in lstSectores) { _repositorio.SaveOrUpdate(new InstitucionSector { institucion = institucion_api, sector = sector, fecha_ult_modificacion = DateTime.Now }); } foreach (TipoBiotecnologia tipo in lstTipoBiotecnologia) { _repositorio.SaveOrUpdate(new InstitucionTipoBiotec { institucion = institucion_api, tipoBiotecnologia = tipo, fecha_ult_modificacion = DateTime.Now }); } // Desabilito el codigoPreRegistro en el poll de codigo para que no se pueda volver a usar solicitud.estado = false; solicitud.fecha_ult_modificacion = DateTime.Now; _repositorio.SaveOrUpdate<SolicitudRegistro>(solicitud); mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Verifique el correo de logueo para activar el perfil."); } else { mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "Se produjo un error mientras se enviaba el correo. Correo invalido"); } } } else { mensaje = new Mensaje(); mensaje.titulo = "Error en validacion de password diferente"; mensaje.tipo = "Error"; mensaje.cuerpo = "Error en validacion de password diferente"; } } else { mensaje = new Mensaje(); mensaje.titulo = "Error en validacion de codigo"; mensaje.tipo = "Error"; mensaje.cuerpo = "Error el codigo no existe o ya fue utilizado"; } } else { mensaje = new Mensaje(); mensaje.titulo = "Error en validacion de codigo"; mensaje.tipo = "Error"; mensaje.cuerpo = "Error el codigo es requerido"; } } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { var sb = new System.Text.StringBuilder(); foreach (var failure in ex.EntityValidationErrors) { sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType()); foreach (var error in failure.ValidationErrors) { sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage); sb.AppendLine(); } } mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", sb.ToString()); SystemLog log = new SystemLog(); log.ErrorLog(sb.ToString()); throw new Exception(sb.ToString()); } return mensaje; }