public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model) { FormsAuthentication.SetAuthCookie("", false); 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: captcha no es válido."); } //si el captcha es valido else { //Ejecuto los valores en el SP //borrarSP_Updaterestacontra var response = db.SP_ChangeContraseniaUser(model.usuario_id, model.contrasenia).First(); // await db.SaveChangesAsync(); // el procedimiento envia un codigo de 201 como respuesta if (response.codigo == 201) { //consulto el mensaje correspondiente para el esta caso var msg = db.Web_Mensaje.Where(m => m.codigo.Equals(1018)).Select(m => new { codigo = m.codigo, tipo = m.tipo, mensaje = m.cuerpo }).First(); //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(msg, 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(); return(Logout()); }
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: captcha no es válido."); } //si el captcha es valido else { try { //Ejecuto los valores var response = db.SP_Ingreso_Usuario(model.Usuario, model.Password).FirstOrDefault(); // //await db.SaveChangesAsync(); // if (response != null && response.codigo.Equals(200)) { var encrypter = new EasyEncrypt(); var obj = db.Web_Usuario.Where(u => u.Prestador.codigo.Equals(model.Usuario)).FirstOrDefault(); /**/ FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, obj.usuario_id.ToString(), DateTime.Now, DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes), false, obj.FK_usuario_rol.ToString() ); String Encrypt = FormsAuthentication.Encrypt(ticket); HttpCookie cookie = new HttpCookie("TIKECTCOOKIE", Encrypt); //Pongo en cookie el rol del usuario para traer los datos del tablero de control HttpCookie cookierol = new HttpCookie("fkrol", obj.FK_usuario_rol.ToString()); // cookie.Expires = DateTime.Now.AddMinutes((int)FormsAuthentication.Timeout.TotalMinutes); cookierol.Expires = DateTime.Now.AddMinutes((int)FormsAuthentication.Timeout.TotalMinutes); Response.Cookies.Add(cookierol); Response.Cookies.Add(cookie); /**/ return(RedirectToAction("Index", "Tablero")); } else if (response.codigo != 200) { ModelState.AddModelError(string.Empty, response.mensaje); if (response.codigo == 1004) { var intento = db.Web_Usuario.Where(u => u.Prestador.codigo.Equals(model.Usuario)).Select(s => s.intentos_error_contrase).FirstOrDefault(); ModelState.AddModelError(string.Empty, string.Format("ha hecho {0} intentos de contraseña incorrecta", intento)); ViewBag.countPass = 1; } } else { //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, "Estamos"+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> ViewPartialLoginAdmin([Bind(Include = "Usuario,Password")] LoginViewModelAdmin 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: captcha no es válido."); } //si el captcha es valido else { try { var Password = Crypto.SHA256(model.Password); var salt = Crypto.GenerateSalt(); var hashedPassword = Crypto.HashPassword(salt + Password); //Ejecuto los valores var response = db.SP_Ingreso_Usuario_Administrador(model.Usuario, model.Password).FirstOrDefault(); // await db.SaveChangesAsync(); // if (response != null && response.codigo.Equals(200)) { var obj = db.Web_Administrador.Where(u => u.usuario.Equals(model.Usuario)).FirstOrDefault(); /**/ FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, obj.administrador_id.ToString(), DateTime.Now, DateTime.Now.AddMinutes(15), true, obj.FK_web_administrador_rol.ToString()); String Encrypt = FormsAuthentication.Encrypt(ticket); HttpCookie cookie = new HttpCookie("TIKECTCOOKIE", Encrypt); //Pongo en cookie el rol del usuario para traer los datos del tablero de control HttpCookie cookierol = new HttpCookie("fkrol", obj.FK_web_administrador_rol.ToString()); Response.Cookies.Add(cookierol); Response.Cookies.Add(cookie); /**/ return(RedirectToAction("Index", "Tablero")); } else if (response.codigo != 200) { ModelState.AddModelError(string.Empty, response.mensaje); } else { //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 "); } }//fin else captcha //retorno la vista en caso de que no se efectue el regsitro return(View("IndexAdmin", model)); }
public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model) { if (ModelState.IsValid) { //sección del recaptcha //Valido el capcha if (!this.IsCaptchaValid("Captcha is not valid")) { ModelState.AddModelError(string.Empty, "Error: captcha no es válido."); } //si el captcha es valido else { var MSG = new EnviarCorreoRecuperacionModel(); try { //Ejecuto los valores en el SP var response = db.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First(); //almaceno cambios asincronamente await db.SaveChangesAsync(); //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty)) //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; // 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); // valido la respuesta del metodo if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult") { //Limpio campos ModelState.Clear(); //consulto el mensaje correspondiente para el esta caso var msg = db.Web_Mensaje.Where(m => m.codigo.Equals(1017)).Select(m => new { codigo = m.codigo, tipo = m.tipo, mensaje = m.cuerpo }).First(); //creo un array a partir del json devuelto por la api para tratramiento var json = JsonConvert.SerializeObject(msg, Formatting.Indented); //creo un json dinamico para enviarlo a la vista dynamic dynJson = JsonConvert.DeserializeObject(json); //envio mensaje TempData["mensaje"] = dynJson; return(RedirectToAction("Index", "Sesion")); } 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."); } } else { ModelState.AddModelError(string.Empty, response.mensaje); } }//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 restablecimiento de contraseña, por favor intente mas tarde "); } }//fin else captcha } return(View("RecuperarContrasenia", model)); }
//[AllowAnonymous] public async Task <ActionResult> ValidaContraseniaExternal(validarContraseniaModel model) { if (ModelState.IsValid) { try { //Ejecuto los valores en el SP var response = db.SP_ValidarDatosRestablecimientoContrasenia(model.id, model.token).First(); // await db.SaveChangesAsync(); //valido que el procedimiento se ejecute de manera correcta if (response.codigo != 200) { ModelState.AddModelError(string.Empty, "El token no coincide con los datos del usuario plataforma"); //TODO ajustar mensaje en la bases de datos var dynJson = "{\"codigo\":401,\"tipo\":\"error\",\"mensaje\":\"El token esta vencido o los datos de recuperación no coinciden con los datos del usuario registrado en la plataforma.\"}"; //envio mensaje TempData["mensaje"] = dynJson; return(RedirectToAction("Index")); } else if (response.codigo == 200) { Console.WriteLine(response); //creo una session vacia para que el formulario pase FormsAuthentication.SetAuthCookie("", false); //creo un array a partir del json devuelto por la api para enviarlo a la vista en un ID 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 //envio un mensaje al usuario ModelState.AddModelError(string.Empty, "La plataforma no esta respondiendo a su solicitud, por favor intente mas tarde"); AntiForgeryConfig.SuppressIdentityHeuristicChecks = true; return(Logout()); /*FormsAuthentication.SignOut(); * Session.Abandon();*/ } } 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"); //cierro session return(Logout()); /*AntiForgeryConfig.SuppressIdentityHeuristicChecks = true; * FormsAuthentication.SignOut(); * Session.Abandon();*/ } } //return RedirectToAction("Index"); return(Logout()); }
public async Task <Object> UpdateAvatar() { //consulto que exista el folder raiz if (!Directory.Exists(path)) { Directory.CreateDirectory(path); //Directory.CreateDirectory(pathimagen); var permisos = new FileIOPermission(FileIOPermissionAccess.AllAccess, path); var permisosSET = new PermissionSet(PermissionState.None); permisosSET.AddPermission(permisos); //if (permisosSET.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet)) { } } //consulto que exista el folder raiz if (Directory.Exists(path)) { var permisos = new FileIOPermission(FileIOPermissionAccess.AllAccess, path); //var permisos2 = new FileIOPermission(FileIOPermissionAccess.AllAccess, pathimagen); var permisosSET = new PermissionSet(PermissionState.None); permisosSET.AddPermission(permisos); //permisosSET.AddPermission(permisos2); } //FileIOPermission file = new FileIOPermission(PermissionState.None); //file.AllLocalFiles = FileIOPermissionAccess.AllAccess; //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["usuario_id"]; var codigousuario = HttpContext.Current.Request.Params["codigo"]; //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) ); } else { //almaceno la información en la base de datos try { var result = db.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 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.SetAttributes(Path.Combine(path, fileName), FileAttributes.Normal); File.Replace(archivo.LocalFileName, Path.Combine(path, fileName), null); //File.SetAttributes(path, FileAttributes.Normal);*/ } else { //File.Copy(file, dest, true); File.Copy(archivo.LocalFileName, Path.Combine(path, fileName), true); File.SetAttributes(Path.Combine(path, fileName), FileAttributes.Normal); //File.SetAttributes(path, FileAttributes.Normal);*/ } } } var linq1 = db.Web_Mensaje.Where(s => s.codigo == 1011).First(); MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = result.codigo }); }//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() }); MSG.Add(new { type = "error", value = "Estamos presentando dificultades en el momento por favor intente mas tarde" }); } //end catch } //end else return(Json(MSG)); }
public async Task <ActionResult> ViewPartialRegistro(RegisterViewModel model) { //Valido los campos del modelo if (!ModelState.IsValid) { return(View(model)); ViewBag.viewregis = true; } //Valido el capcha else if (!this.IsCaptchaValid("Captcha is not valid")) { ModelState.AddModelError(string.Empty, "Error: captcha no es válido."); ViewBag.viewregis = true; } //Valido si los checkbox del formulario estan chekeados else if (model.aceptarTerminos == false || model.aceptarTradatos == false) { ModelState.AddModelError(string.Empty, "Error: Debe aceptar los tratamientos de datos ademas de los terminos y condiciones de uso."); ViewBag.viewregis = true; } else { try { int aceptarCondiciones = model.aceptarTerminos == true ? 1 : 0; int aceptarTradatos = model.aceptarTradatos == true ? 1 : 0; //Ejecuto los valores en el SP var response = db.SP_Registro_Usuario(model.CodPrestador, model.Email, model.Pasword, model.Nombres, model.Apellidos, model.RazonSocial, model.Telefono, "/Img/avatarsusers/avatar.png", aceptarCondiciones, 1, 1, 2, aceptarTradatos).FirstOrDefault(); // await db.SaveChangesAsync(); /*if (response.Equals(string.Empty)) * { * response = HttpStatusCode.Accepted; * }*/ if (response.codigo != 200) { //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; //ModelState.AddModelError(string.Empty, response.mensaje); ViewBag.viewregis = true; ModelState.AddModelError(string.Empty, "Error: Corrija el error que la alerta le esta indicando."); } 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 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"); return(View("Index", model)); }
public async Task <IHttpActionResult> GetActas_Rechazos(long prerradicado) { //HttpResponse Response = HttpContext.Current.Response; try { string nombrefile = string.Format(@"{0}\{1}{2}{3}", directorioRechazada, "Prerrad", prerradicado, " Errores.pdf"); NetworkConnection.Impersonate(@"SDS", @usuarioZIP, @contraseñaZIP, delegate { var permisos2 = new FileIOPermission(FileIOPermissionAccess.AllAccess, directorioRechazada); var permisosSET2 = new PermissionSet(PermissionState.None); permisosSET2.AddPermission(permisos2); /*if (!Directory.Exists(nombrefile)) * { * * Response.Write(new { type = "error", value = "No se encuentran los archivos a descargar." }); * }*/ if (File.Exists(nombrefile)) { // Create New instance of FileInfo class to get the properties of the file being downloaded FileInfo myfile = new FileInfo(nombrefile); // Clear the content of the response Response.ClearContent(); // Add the file name and attachment, which will force the open/cancel/save dialog box to show, to the header Response.AddHeader("Content-Disposition", "attachment; filename=" + myfile.Name.Replace(" ", "")); // Add the file size into the response header Response.AddHeader("Content-Length", myfile.Length.ToString()); // Set the ContentType Response.ContentType = "application/pdf"; // Write the file into the response (TransmitFile is for ASP.NET 2.0. In ASP.NET 1.1 you have to use WriteFile instead) Response.TransmitFile(myfile.FullName); // End the response Response.End(); // Buffer response so that page is sent // after processing is complete. Response.BufferOutput = true; } else { Response.Write("<script language=javascript>alert('Error: No se encuentran los archivos a descargar.');</script>"); throw new HttpResponseException(HttpStatusCode.BadRequest); //Response.Write("<script language=javascript>alert('ERROR');</script>"); } }); } catch (Exception e) { LogsController log = new LogsController(e.ToString()); log.createFolder(); //Response.Write("<script language=javascript>alert('Error: Se encontro un error en el servidor de descarga.');</script>"); //Response.Write(new { type = "error", value = "Se encontro un error en el servidor de descarga, " + e.Message.ToString() }); throw new HttpResponseException(HttpStatusCode.InternalServerError); } await db.SaveChangesAsync(); return(Ok(HttpStatusCode.OK)); }
public async Task <Object> PostSendEmail(EnviarCorreoModel datos) { LinkedResource Img = new LinkedResource(ruta + "footerCorreo.png", MediaTypeNames.Image.Jpeg); Img.ContentId = "MyImage"; // string mailimg = "<img src=cid:MyImage/>"; //sección de arriba no funciona //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; string cuerpo = string.Format(result.cuerpo, datos.usernombre, datos.codigocarga, ""); //se arma cuerpo del correo msg.Body = cuerpo; //string.Format(result.cuerpo, datos.usernombre, datos.codigocarga); try { await client.SendMailAsync(msg); //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> PostSendEmailErrors(EnviarCorreoModelErrors datos) { //invoco metodo que permite obtener los datos del smtp del correo SmtpCorreos(); //variable para la coleccion de los errores a lsitar List <string> collection = new List <string>(); //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; // 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(); msg.Subject = result.asunto; msg.IsBodyHtml = true; // Add image attachment from local disk //armo las filas foreach (string valor in datos.errores) { //if(datos.errores) collection.Add("<tr><td>" + valor + "</td></tr>"); } //uno los errores encontrados string td = string.Join(" ", collection.ToArray()); //linea para la imagen //LinkedResource windowsLogo = new LinkedResource(@"c:\windows_logo.png", MediaTypeNames.Image.Jpeg); //LinkedResource windowsLogo = new LinkedResource(@"~/img/email/footerCorreo.png", MediaTypeNames.Image.Jpeg); //armo el cuepo del correo msg.Body = string.Format(result.cuerpo, datos.usernombre, td); try { await client.SendMailAsync(msg); //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 == 1008).First(); MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = linq1.codigo }); } catch (Exception e) { //TODO enviar errores a la tabla de errores //envio a la carpeta logs LogsController log = new LogsController(e.ToString()); log.createFolder(); //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(); //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 }); } return(Json(MSG)); }
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 = "2"; * categoria = "1";*/ tipoUsuario = "2"; categoria = "5"; } //me toca castear xq el valor llega con un "on" if (!String.IsNullOrEmpty(extranjero)) { extranjero = "true"; } //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; //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) { //Envio al archivo log LogsController log = new LogsController(e.ToString()); log.createFolder(); //Envio mensaje de Error a la Vista MSG.Add(new { type = "error", value = e.Message.ToString() }); throw; } /** * FIN Envio la carpeta zip al reosritotio local del servicio **/ /** * libero de archivos en servidor para limpiar memoria * OJO CON ESTA LINEA: ESTA ELIMINA ARCHIVOS TEMPORALES PODRIA ELIMINAR * DE OTROS USUARIOS SEGUN RECURRENCIA DE USUARIOS **/ 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) { //Envio al archivo log LogsController log = new LogsController(e.ToString()); log.createFolder(); //Envio mensaje de Error a la Vista MSG.Add(new { type = "error", value = e.Message.ToString() }); } 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>(); //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 = "2"; categoria = "5"; } //me toca castear xq el valor llega con un "on" if (!String.IsNullOrEmpty(extranjero)) { extranjero = "true"; } //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)); }