//[ValidateAntiForgeryToken] quito el validador del token ya que la aplicación se estalla y no hay forma de solucionar el problema TODO //[OutputCache(NoStore = true, Duration = 0)] public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model) { if (ModelState.IsValid) { var MSG = new EnviarCorreoRecuperacionModel(); try { //sección del recaptcha var captcharesponse = Request["g-recaptcha-response"]; string secretKey = System.Web.Configuration.WebConfigurationManager.AppSettings["recaptchaPrivateKey"]; //esta linea esta en el web config var client = new WebClient(); var result = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captcharesponse)); var obj = JObject.Parse(result); var status = (bool)obj.SelectToken("success"); //valido que el status del recapcha sea verdadero if (status == true) { //Ejecuto los valores en el SP //borrarSP_Updaterestacontra var response = bd.SP_ChangeContraseniaUser(model.idUsuario, model.contrasenia).First(); // await bd.SaveChangesAsync(); // el procedimiento envia un codigo de 201 como respuesta if (response.codigo == 201) { //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); ViewBag.SomeData = dynJson; FormsAuthentication.SignOut(); Session.Abandon(); return(View("Index")); }// fin if valida response else { ModelState.AddModelError(string.Empty, response.mensaje); return(RedirectToAction("Index")); } }//fin if captcha else { ModelState.AddModelError(string.Empty, "El captcha no se ingresó correctamente."); }//fin else captcha } catch (Exception e) { // envio error a la api logs errores //TODO //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); } } return(View()); }
//[ValidateAntiForgeryToken] quito el validador del token ya que la aplicación se estalla y no hay forma de solucionar el problema TODO //[OutputCache(NoStore = true, Duration = 0)] public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model) { if (ModelState.IsValid) { var MSG = new EnviarCorreoRecuperacionModel(); try { //sección del recaptcha //Valido el capcha if (!this.IsCaptchaValid("Captcha is not valid")) { ModelState.AddModelError(string.Empty, "Error: operación del captcha no es válido."); } //si el captcha es valido else { //Ejecuto los valores en el SP //borrarSP_Updaterestacontra var response = bd.SP_ChangeContraseniaUser(model.idUsuario, model.contrasenia).First(); // await bd.SaveChangesAsync(); // el procedimiento envia un codigo de 201 como respuesta if (response.codigo == 201) { //Limpio campos //ModelState.Clear(); //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); //envio mensaje TempData["mensaje"] = dynJson; //cierro sesiones FormsAuthentication.SignOut(); //Cargo la vista return(RedirectToAction("Index")); }// fin if valida response else { ModelState.AddModelError(string.Empty, response.mensaje); return(RedirectToAction("Index")); } } //fin else captcha } //fin try catch (Exception e) { // envio error a la api logs errores //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); } } return(View()); }
//[AllowAnonymous] public async Task <ActionResult> ValidaContraseniaExternal(validarContraseniaModel model) { if (ModelState.IsValid) { try { //Ejecuto los valores en el SP var response = bd.SP_ValidarDatosRestablecimientoContrasenia(model.id, model.token).First(); // await bd.SaveChangesAsync(); //valido que el procedimiento se ejecute de manera correcta if (response.codigo != 200) { //Returno la vista principal no hay aviso alguno ya que peude que la pagina pueda estar bajo ataque //cierro session FormsAuthentication.SignOut(); Session.Abandon(); return(RedirectToAction("Index")); } else if (response.codigo == 200) { //cierro session FormsAuthentication.SetAuthCookie(response.idusuario.ToString(), false); //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response.idusuario, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); ViewBag.TokenP = response.idusuario; return(View("NuevaContrasenia", string.Empty)); } else { //envio error a la api logs errores //TODO //envio un mensaje al usuario ModelState.AddModelError(string.Empty, "La plataforma no esta respondiendo a su solicitud, por favor intente mas tarde"); FormsAuthentication.SignOut(); Session.Abandon(); } } catch (Exception e) { //cierro session FormsAuthentication.SignOut(); Session.Abandon(); // envio error a la api logs errores //TODO //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); } } return(View("Index")); }
public async Task <ActionResult> ViewPartialRegistro(RegisterViewModel usuario) { if (ModelState.IsValid) { try { //sección del recaptcha var captcharesponse = Request["g-recaptcha-response"]; string secretKey = System.Web.Configuration.WebConfigurationManager.AppSettings["recaptchaPrivateKey"]; //esta linea esta en el web config var client = new WebClient(); var result = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captcharesponse)); var obj = JObject.Parse(result); var status = (bool)obj.SelectToken("success"); //valido que el status del recapcha sea verdadero if (status == true) { //Ejecuto los valores en el SP Object response = bd.SP_Registro_Usuario(usuario.CodPrestador, usuario.Email, usuario.Pasword, usuario.Nombres, usuario.Apellidos, usuario.RazonSocial, usuario.Telefono, "/Img/avatarsusers/avatar.png", 1, 1, 1, 2).ToArray(); // await bd.SaveChangesAsync(); if (response.Equals(string.Empty)) { response = HttpStatusCode.NotFound; } else { //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); ViewBag.SomeData = dynJson; } }//fin if captcha else { ModelState.AddModelError(string.Empty, "El captcha no se ingresó correctamente."); }//fin else captcha } catch (Exception e) { //envio error a la api logs errores //TODO //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //Limpio campos ModelState.Clear(); //envio error mensaje al usuario //ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); ModelState.AddModelError(string.Empty, e.ToString()); } } // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario return(View("Index", usuario)); }
public async Task <ActionResult> ViewPartialRegistro(RegisterViewModel usuario) { //Valido los campos del modelo if (ModelState.IsValid) { try { //sección del recaptcha //Valido el capcha if (!this.IsCaptchaValid("Captcha is not valid")) { ModelState.AddModelError(string.Empty, "Error: operación del captcha no es válido."); } //si el captcha es valido else { //Ejecuto los valores en el SP Object response = bd.SP_Registro_Usuario(usuario.CodPrestador, usuario.Email, usuario.Pasword, usuario.Nombres, usuario.Apellidos, usuario.RazonSocial, usuario.Telefono, "/Img/avatarsusers/avatar.png", 1, 1, 1, 2).ToArray(); // await bd.SaveChangesAsync(); if (response.Equals(string.Empty)) { response = HttpStatusCode.NotFound; } else { //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); ViewBag.SomeData = dynJson; } } //fin else captcha } //fin try catch (Exception e) { //envio error a la api logs errores //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //Limpio campos ModelState.Clear(); //envio error mensaje al usuario //ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); ModelState.AddModelError(string.Empty, e.ToString()); } } // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario return(View("Index", usuario)); }
public async Task <Object> PostSendEmail(EnviarCorreoModel datos) { //invoco metodo que permite obtener los datos del smtp del correo SmtpCorreos(); //creo una variable para manejar los mensajes var MSG = new List <object>(); SmtpClient client = new SmtpClient(); client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = true; client.Host = Host; client.Port = Puerto;//587; client.EnableSsl = true; // setup Smtp authentication System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(SmtpCorreo, PassCorreo); client.UseDefaultCredentials = false; client.Credentials = credentials; //can be obtained from your model MailMessage msg = new MailMessage(); msg.From = new MailAddress(FromCorreo); msg.To.Add(new MailAddress(datos.usercorreo.ToLower())); //consulto el procedimiento para traer la información de la plantilla solicitada var result = bd.SP_GetPlantillaCorreo(datos.codPlantilla).First(); //agrego el asunto msg.Subject = result.asunto; msg.IsBodyHtml = true; //se arma cuerpo del correo msg.Body = string.Format(result.cuerpo, datos.usernombre, datos.codigocarga); /*multiples correos * var mails = lista.Text.Split(';'); * foreach (string dir in mails) * email.To.Add(dir);*/ try { await client.SendMailAsync(msg); client.Dispose(); //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1009).First(); MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = linq1.codigo }); } catch (Exception e) { //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario //var linq1 = bd.Mensajes.Where(s => s.Codigo_mensaje == 412).First(); // SE ELIMINA NO VIABLE YA QUE SI EL ERROR ES DE BD EL APLICATIVO NO RESPONDERIA //MSG.Add(new { type = linq1.Tipo_mensaje, value = linq1.Cuerpo_mensaje, codigo = linq1.Codigo_mensaje }); MSG.Add(new { type = "error", value = "El servidor no pudo responder con la solicitud, " + e, codigo = 404 }); //envio a la tabla log //TODO //envio a la carpeta logs LogsController log = new LogsController(e + "//" + Host.ToString()); log.createFolder(); } return(Json(MSG)); }
public async Task <Object> UpdateAvatar() { //consulto que exista el folder raiz if (!Directory.Exists(path)) { Directory.CreateDirectory(path); var permisos = new FileIOPermission(FileIOPermissionAccess.AllAccess, path); var permisosSET = new PermissionSet(PermissionState.None); permisosSET.AddPermission(permisos); if (permisosSET.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet)) { } } //variables que se estan reciviendo del front // obtengo las variables enviadas por el formulario var nombreimagen = HttpContext.Current.Request.Files["avatar"]; var idUser = HttpContext.Current.Request.Params["idUsuario"]; var codigousuario = HttpContext.Current.Request.Params["codigousuario"]; //almaceno el path donde se guarda la imagen var contentType = "." + nombreimagen.ContentType.Substring(6); var pathguardo = pathimagen + codigousuario + contentType; //creo una variable para manejar los mensajes var MSG = new List <object>(); //valido la información recivida del formulario if (String.IsNullOrEmpty(nombreimagen.FileName) && nombreimagen.ContentLength == 0) { MSG.Add(new { type = "error", value = "Debe cargar una imagen.", codigo = 0 }); } //Valido que el formulario sea enviado con el formato permitido. else if (!Request.Content.IsMimeMultipartContent("form-data")) { //Armo mensaje y envio al cliente MSG.Add(new { type = "error", value = "Formato de envio no permitido", codigo = 0 }); throw new HttpResponseException( Request.CreateResponse(HttpStatusCode.UnsupportedMediaType) ); //TODO envio error a la base de datos } else { //almaceno la información en la base de datos try { var result = bd.SP_UpdateAvatarUser(Int32.Parse(idUser), pathguardo).First(); //si la respuesta del porcedimeinto es satisfactoria realizo el almacenamiento de los archivos if (result.codigo == 201) { //variables que almacenan temporalmente los archivos para no perderlos var streamProvider = new MultipartFormDataStreamProvider(path); await Request.Content.ReadAsMultipartAsync(streamProvider); //carga de archivos a la carpeta try { foreach (MultipartFileData archivo in streamProvider.FileData) { string fileName = ""; if (string.IsNullOrEmpty(archivo.Headers.ContentDisposition.FileName)) { fileName = Guid.NewGuid().ToString(); } fileName = archivo.Headers.ContentDisposition.FileName; if (fileName.StartsWith("\"") && fileName.EndsWith("\"")) { fileName = fileName.Trim('"'); } if (fileName.Contains(@"/") || fileName.Contains(@"\")) { fileName = Path.GetFileName(fileName); } if (archivo != null && fileName != "") { fileName = codigousuario + contentType; if (File.Exists(Path.Combine(path, fileName))) { File.Replace(archivo.LocalFileName, Path.Combine(path, fileName), null); } else { File.Move(archivo.LocalFileName, Path.Combine(path, fileName)); } } } var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1011).First(); MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = result.codigo }); } catch (Exception e) { //envio log a archivo de logs LogsController log = new LogsController(e.ToString()); log.createFolder(); //TODO envio error a la base de datos MSG.Add(new { type = "error", value = "NO se caragaron los archivos correctamente" }); } }//fin if respuesta satisfactoria else { //envio mensaje al usuario final MSG.Add(new { type = result.tipo, value = result.mensaje, codigo = result.codigo }); } } catch (Exception e) { //envio log a archivo de logs LogsController log = new LogsController(e.ToString()); log.createFolder(); MSG.Add(new { type = "error", value = e.ToString() }); //todo enviar error a la base de datos } //end catch } //end else return(Json(MSG)); }
public async Task <ActionResult> ViewPartialLogin(LoginViewModel model) { //Valido los campos del modelo if (!ModelState.IsValid) { return(View(model)); } //Valido el capcha if (!this.IsCaptchaValid("Captcha is not valid")) { ModelState.AddModelError(string.Empty, "Error: operación del captcha no es válido."); } //si el captcha es valido else { try { //Ejecuto los valores Object response = bd.SP_Ingreso_Usuario(model.Usuario, model.Password).ToArray(); // await bd.SaveChangesAsync(); if (response.Equals(string.Empty)) { response = HttpStatusCode.NotFound; } else { //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response, Formatting.Indented); //Serializo el contenido en un array para manejar las diferentes opciones MsgClass[] respuesta = JsonConvert.DeserializeObject <MsgClass[]>(json); //recorro el vector de la respuesta y valido foreach (var item in respuesta) { if (item.codigo != 200) { ModelState.AddModelError(string.Empty, item.mensaje); } else if (item.codigo == 200) { FormsAuthentication.SetAuthCookie(model.Usuario, false); return(RedirectToAction("Index", "Home")); } else { //envio error a la api logs errores //TODO //Limpio campos ModelState.Clear(); //envio un mensaje al usuario ModelState.AddModelError(string.Empty, "La plataforma no esta respondiendo a su solicitud, por favor intente mas tarde"); } } } } catch (Exception e) { //envio error a la api logs errores //y envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //Limpio campos ModelState.Clear(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); //ModelState.AddModelError(string.Empty, e.ToString()); } }//fin else captcha //retorno la vista en caso de que no se efectue el regsitro return(View("Index", model)); }
public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model) { if (ModelState.IsValid) { //var MSG = new List<EnviarCorreoRecuperacionModel>(); var MSG = new EnviarCorreoRecuperacionModel(); try { //sección del recaptcha //Valido el capcha if (!this.IsCaptchaValid("Captcha is not valid")) { ModelState.AddModelError(string.Empty, "Error: operación del captcha no es válido."); } //si el captcha es valido else { //Ejecuto los valores en el SP var response = bd.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First();//.ToArray(); //almaceno cambios asincronamente await bd.SaveChangesAsync(); //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty)) //response = HttpStatusCode.NotFound; //ModelState.AddModelError(string.Empty, "No se encontraron coincidencias, para restablecer la contraseña"); if (response.codigo == 200) { MSG.codPlantilla = 3; MSG.usercorreo = response.correousuario; MSG.id = response.codprestador; MSG.token = response.token; try { // invoco el constructor EnviarCorreoController enviocorreo = new EnviarCorreoController(); //llamo el metodo que realiza la acción de envio de correos var postdatos = await enviocorreo.PostSendEmailRecuperacionContrasenia(MSG); //Console.WriteLine(postdatos.GetType()); //Console.WriteLine(postdatos.GetType().Name); // valido la respuesta del metodo if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult") { //Limpio campos ModelState.Clear(); //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); //envio mensaje TempData["mensaje"] = dynJson; //return View("Index"); return(RedirectToAction("Index", "Cuenta")); } else { // si la respuesta del correo fue erronea envio respuesta a la vista ModelState.AddModelError(string.Empty, "No se pudo efectuar el restablecimiento de contraseña."); } } catch (Exception e) { // envio error a la api logs errores //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el restablecimiento de contraseña, por favor intente mas tarde"); throw e; } } else { ModelState.AddModelError(string.Empty, response.mensaje); } } //fin else captcha } //fin try catch (Exception e) { // envio error a la api logs errores //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); } } return(View("RecuperarContrasenia", model)); }
//[ValidateMimeMultipartContentFilter] public async Task <Object> UploadSingleFile() { //variables que se estan reciviendo del front // obtengo las variables enviadas por el formulario var tipoUsuario = HttpContext.Current.Request.Params["tipoUsuario"]; var categoria = HttpContext.Current.Request.Params["categoria"]; var extranjero = HttpContext.Current.Request.Params["extranjero"]; var IVE = HttpContext.Current.Request.Params["IVE"]; var NOPOS = HttpContext.Current.Request.Params["NOPOS"]; var fechaInicio = HttpContext.Current.Request.Params["fechaInicio"]; var fechaFin = HttpContext.Current.Request.Params["fechaFin"]; var idUsuario = HttpContext.Current.Request.Params["idUsuario"]; //creo una variable para manejar los mensajes var MSG = new List <object>(); //valido la información recivida del formulario if (!String.IsNullOrEmpty(tipoUsuario)) { tipoUsuario = tipoUsuario; } if (!String.IsNullOrEmpty(IVE)) { tipoUsuario = "1"; categoria = "6"; } if (!String.IsNullOrEmpty(NOPOS)) { tipoUsuario = "3"; categoria = "5"; } //valido si selecciona la opción de extranjero if (!String.IsNullOrEmpty(extranjero)) { extranjero = "true"; } else { extranjero = "false"; } //Valido que el formulario sea enviado con el formato permitido. if (!Request.Content.IsMimeMultipartContent("form-data")) { //Armo mensaje y envio al cliente MSG.Add(new { type = "error", value = "Formato de envio no permitido" }); throw new HttpResponseException( Request.CreateResponse(HttpStatusCode.UnsupportedMediaType) ); //TODO envio error a la base de datos } //almaceno la información solo del formulario en la base de datos try { //inserto en la tabla web_validacion //3 es estado aprobado sin errores var result = bd.SP_Web_Insert_Datos_Rips_a_Validar(tipoUsuario, categoria, Convert.ToBoolean(extranjero), fechaInicio, fechaFin, idUsuario, "3").First(); //si la respuesta del porcedimeinto de insercion a la tabla validacion, es satisfactoria realizo el almacenamiento de los archivos if (result.codigo == 201) { try { //Inserto en la tabla web_preradicado var preradicadoResult = bd.SP_Web_Insert_Rips_a_Preradicar(Convert.ToInt64(idUsuario), result.ultimoIdInsert).First(); //Si el SP de insert de preradicado retorno el una respuesta satisfactoria cargo el archivo if (preradicadoResult.codigo == 201) { //intemto crear y guardar los archivos en el forlder para insertalo try { //creo el nombre del path pathresult = path + @"\" + preradicadoResult.ultimoIdInsertPreradicado; // if (File.Exists(pathresult + ".zip")) { //System.IO.File.Move(pathresult + ".zip", pathresult+ idUsuario + ".zip"); System.IO.File.Delete(pathresult + ".zip"); } //consulto que exista el folder raiz if (!Directory.Exists(pathresult)) { Directory.CreateDirectory(pathresult); var permisos = new FileIOPermission(FileIOPermissionAccess.AllAccess, pathresult); var permisosSET = new PermissionSet(PermissionState.None); permisosSET.AddPermission(permisos); //variables que almacenan temporalmente los archivos para no perderlos var streamProvider = new MultipartFormDataStreamProvider(path); await Request.Content.ReadAsMultipartAsync(streamProvider); using (ZipFile zip = new ZipFile()) { foreach (MultipartFileData archivo in streamProvider.FileData) { string fileName = ""; if (string.IsNullOrEmpty(archivo.Headers.ContentDisposition.FileName)) { fileName = Guid.NewGuid().ToString(); } fileName = archivo.Headers.ContentDisposition.FileName; if (fileName.StartsWith("\"") && fileName.EndsWith("\"")) { fileName = fileName.Trim('"'); } if (fileName.Contains(@"/") || fileName.Contains(@"\")) { fileName = Path.GetFileName(fileName); } if (archivo != null && fileName != "") { fileName = fileName.Substring(0, 2) + ".txt"; File.Move(archivo.LocalFileName, Path.Combine(pathresult, fileName)); } } //comprimo los archivos //https://stackoverflow.com/questions/24391794/c-sharp-move-files-to-zip-folder zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; zip.AddDirectory(pathresult); zip.Save(pathresult + ".zip"); nombreZIP = pathresult + ".zip"; }// FIN using zip library /** * Envio la carpeta zip al reosritotio local del servicio **/ try { NetworkConnection.Impersonate(@"SDS", @usuarioZIP, @contraseñaZIP, delegate { var permisos2 = new FileIOPermission(FileIOPermissionAccess.AllAccess, directorioZIP); var permisosSET2 = new PermissionSet(PermissionState.None); permisosSET2.AddPermission(permisos2); if (!Directory.Exists(directorioZIP + @"\")) { Directory.CreateDirectory(directorioZIP + @"\"); } if (File.Exists(string.Format(@"{0}\{1}.zip", directorioZIP, preradicadoResult.ultimoIdInsertPreradicado))) { File.Delete(string.Format(@"{0}\{1}.zip", directorioZIP, preradicadoResult.ultimoIdInsertPreradicado)); } File.Copy(@nombreZIP, string.Format(@"{0}\{1}.zip", directorioZIP, preradicadoResult.ultimoIdInsertPreradicado)); }); } catch (Exception e) { Console.WriteLine(e.Message.ToString()); //MSG.Add(new { type = "error", value = e.Message.ToString() }); throw; } /** * FIN Envio la carpeta zip al reosritotio local del servicio **/ /** * libero de archivos temporales * OJO CON ESTA LINEA: ESTA ELIMINA ARCHIVOS TEMPORALES PODRIA ELIMINAR * DE OTROS USUARIOS SEGUN RECURRENCIA DE USUARIOS * //File.SetAttributes(nombreZIP, FileAttributes.Normal); * //File.Delete(nombreZIP); **/ //borro el cache Directory.Delete(pathresult, true); }// FIN if !Directory.Exists(pathresult) var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1009).First(); MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = preradicadoResult.codigo, consec = preradicadoResult.ultimoIdInsertPreradicado }); }// FIN try //error al cargar en el servidor del servicio integrado de WIN catch (Exception e) // si hay un error al crear y guardar el fichero cambio el estado del registro en la tabla Auditoria.Web_Validacion { //Cambio el estado la tabla web_preradicado a disponible var UpdatepreradicadoResult = bd.SP_Web_Update_Estado_Disponible_Preradicado(result.ultimoIdInsert, preradicadoResult.ultimoIdInsertPreradicado).First(); //Cambio el estado la tabla web_validacion estado error de carga var UpdatewebvalidacionError = bd.SP_Web_Update_Estado_Error_Carga_WebValidacion(result.ultimoIdInsert).First(); //envio log a archivo de logs LogsController log = new LogsController(e.ToString()); log.createFolder(); /** * libero de archivos temporales * OJO CON ESTA LINEA: ESTA ELIMINA ARCHIVOS TEMPORALES PODRIA ELIMINAR * DE OTROS USUARIOS SEGUN RECURRENCIA DE USUARIOS **/ Directory.Delete(pathresult, true); File.SetAttributes(nombreZIP, FileAttributes.Normal); File.Delete(nombreZIP); //Envio mensaje de error a la vista MSG.Add(new { type = "error", value = "No se cargaron los archivos correctamente en el servidor, " + e.Message.ToString() }); } } else { MSG.Add(new { type = "error", value = "No se almaceno la informacón correctamente en la base de datos " }); throw new HttpResponseException( Request.CreateResponse(HttpStatusCode.UnsupportedMediaType) ); } } catch (Exception e) // si hay un error al crear y guardar el fichero cambio el estado del registro en la tabla Auditoria.Web_Validacion { LogsController log = new LogsController(e.ToString()); log.createFolder(); //Envio mensaje de error a la vista MSG.Add(new { type = "error", value = "No se cargaron los archivos correctamente en el servidor, " + e.Message.ToString() }); } }//fin if respuesta satisfactoria else { //envio mensaje al usuario final MSG.Add(new { type = result.tipo, value = result.mensaje }); } } catch (Exception e) { LogsController log = new LogsController(e.ToString()); log.createFolder(); //TODO enviar a la base de datos MSG.Add(new { type = "error", value = e.Message.ToString() }); //todo enviar error a la base de datos } return(Json(MSG)); }
//[ValidateMimeMultipartContentFilter] public async Task <Object> SaveValidacionConErrores() { //variables que se estan reciviendo del front // obtengo las variables enviadas por el formulario var tipoUsuario = HttpContext.Current.Request.Params["tipoUsuario"]; var categoria = HttpContext.Current.Request.Params["categoria"]; var extranjero = HttpContext.Current.Request.Params["extranjero"]; var IVE = HttpContext.Current.Request.Params["IVE"]; var NOPOS = HttpContext.Current.Request.Params["NOPOS"]; var fechaInicio = HttpContext.Current.Request.Params["fechaInicio"]; var fechaFin = HttpContext.Current.Request.Params["fechaFin"]; var idUsuario = HttpContext.Current.Request.Params["idUsuario"]; //creo una variable para manejar los mensajes var MSG = new List <object>(); if (!String.IsNullOrEmpty(IVE)) { tipoUsuario = "1"; categoria = "6"; } /* * if (!String.IsNullOrEmpty(NOPOS)) * { * tipoUsuario = "2"; * categoria = "1"; * } */ if (!String.IsNullOrEmpty(NOPOS)) { tipoUsuario = "3"; categoria = "5"; } //valido si selecciona la opción de extranjero if (!String.IsNullOrEmpty(extranjero)) { extranjero = "true"; } else { extranjero = "false"; } //Valido que el formulario sea enviado con el formato permitido. if (!Request.Content.IsMimeMultipartContent("form-data")) { //Armo mensaje y envio al cliente MSG.Add(new { type = "error", value = "Formato de envió no permitido" }); throw new HttpResponseException( Request.CreateResponse(HttpStatusCode.UnsupportedMediaType) ); //TODO envio error a la base de datos } //almaceno la información en la base de datos try { //inserto en la tabla web_validacion //4 es estado con errores de estructura var result = bd.SP_Web_Insert_Datos_Rips_a_Validar(tipoUsuario, categoria, Convert.ToBoolean(extranjero), fechaInicio, fechaFin, idUsuario, "4").First(); //si la respuesta del porcedimeinto de insercion a la tabla validacion, es satisfactoria realizo el almacenamiento de los archivos if (result.codigo == 201) { MSG.Add(new { type = "error", value = "No se cargaran archivos con errores en el servidor, por favor ajustelos." }); }//fin if respuesta satisfactoria else { //envio mensaje al usuario final MSG.Add(new { type = result.tipo, value = result.mensaje }); } } catch (Exception e) { //envio al archivo LogsController log = new LogsController(e.ToString()); log.createFolder(); //TODO enviar a la base de datos MSG.Add(new { type = "Error no se pudo almacenar la información de los errores, por favor intente mas tarde." }); } return(Json(MSG)); }
public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model) { if (ModelState.IsValid) { //var MSG = new List<EnviarCorreoRecuperacionModel>(); var MSG = new EnviarCorreoRecuperacionModel(); try { //sección del recaptcha var captcharesponse = Request["g-recaptcha-response"]; string secretKey = System.Web.Configuration.WebConfigurationManager.AppSettings["recaptchaPrivateKey"]; //esta linea esta en el web config var client = new WebClient(); var result = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captcharesponse)); var obj = JObject.Parse(result); var status = (bool)obj.SelectToken("success"); //valido que el status del recapcha sea verdadero if (status == true) { //Ejecuto los valores en el SP var response = bd.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First();//.ToArray(); //almaceno cambios asincronamente await bd.SaveChangesAsync(); //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty)) //response = HttpStatusCode.NotFound; //ModelState.AddModelError(string.Empty, "No se encontraron coincidencias, para restablecer la contraseña"); if (response.codigo == 200) { MSG.codPlantilla = 3; MSG.usercorreo = response.correousuario; MSG.id = response.codprestador; MSG.token = response.token; try { // invoco el constructor EnviarCorreoController enviocorreo = new EnviarCorreoController(); //llamo el metodo que realiza la acción de envio de correos var postdatos = await enviocorreo.PostSendEmailRecuperacionContrasenia(MSG); //Console.WriteLine(postdatos.GetType()); //Console.WriteLine(postdatos.GetType().Name); // valido la respuesta del metodo if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult") { //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores var json = JsonConvert.SerializeObject(response, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); ViewBag.SomeData = dynJson; return(View("Index")); } else { // si la respuesta del correo fue erronea envio respuesta a la vista ModelState.AddModelError(string.Empty, "No se pudo efectuar el restablecimiento de contraseña."); } } catch (Exception e) { // envio error a la api logs errores //TODO //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el restablecimiento de contraseña, por favor intente mas tarde"); throw e; } } else { ModelState.AddModelError(string.Empty, response.mensaje); } }//fin if captcha else { ModelState.AddModelError(string.Empty, "El captcha no se ingresó correctamente."); }//fin else captcha } catch (Exception e) { // envio error a la api logs errores //TODO //envio a la carpeta logs APIS.LogsController log = new APIS.LogsController(e.ToString()); log.createFolder(); //envio error mensaje al usuario ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde"); } } return(View("RecuperarContrasenia", model)); }