Compare commits
5 Commits
701577dead
...
ac52a86262
Author | SHA1 | Date |
---|---|---|
unknown | ac52a86262 | 2 years ago |
unknown | e1e0faf238 | 2 years ago |
Al Garcia | 1b175ba19f | 2 years ago |
Al Garcia | 86e7daab3b | 2 years ago |
Al Garcia | d4c5c82720 | 2 years ago |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,12 @@ |
|||||||
|
using AOLBackend.Models.Utils; |
||||||
|
namespace AOLBackend.Contracts.Utils |
||||||
|
{ |
||||||
|
public interface IFileManagerRepository |
||||||
|
{ |
||||||
|
public Task<FileManager> FileManager(FileManager data); |
||||||
|
public Task<FileManager> getFileByProcess(long id, int Proceso); |
||||||
|
public Task<List<FileManager>> getAllFilesByProcess(long Tags, int Proceso); |
||||||
|
public Task<FileManager> getFileById(long id); |
||||||
|
public Task deleteFileByProcess(long id, int Proceso); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
using AOLBackend.Models.Utils; |
||||||
|
|
||||||
|
namespace AOLBackend.Contracts.Utils |
||||||
|
{ |
||||||
|
public interface IFilePaths4ProcessRepository |
||||||
|
{ |
||||||
|
public Task<FilePaths4Process> getPaths4ProcessById(long id); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,148 @@ |
|||||||
|
using AOLBackend.Contracts.Utils; |
||||||
|
using AOLBackend.Models.Utils; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
|
||||||
|
namespace AOLBackend.Controllers.Utils |
||||||
|
{ |
||||||
|
[ApiController] |
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class FileManagerController : ControllerBase |
||||||
|
{ |
||||||
|
|
||||||
|
private readonly IFileManagerRepository _Repo; |
||||||
|
private readonly IFilePaths4ProcessRepository _RepoRelativePath; |
||||||
|
private readonly IConfiguration _config; |
||||||
|
private readonly string RootPathCorresponsales; |
||||||
|
public FileManagerController(IFileManagerRepository Repo, |
||||||
|
IFilePaths4ProcessRepository RepoRelativePath, |
||||||
|
IConfiguration config) |
||||||
|
{ |
||||||
|
_config = config; |
||||||
|
_Repo = Repo; |
||||||
|
_RepoRelativePath = RepoRelativePath; |
||||||
|
RootPathCorresponsales = _config.GetValue<string>("AllFiles"); |
||||||
|
} |
||||||
|
|
||||||
|
[Route("GetFileInfoByProcess")] |
||||||
|
[HttpGet] |
||||||
|
public async Task<FileManager> GetFileInfoByProcess([FromQuery] int id, int Proceso) |
||||||
|
{ |
||||||
|
FileManager data = new FileManager(); |
||||||
|
data = await _Repo.getFileByProcess(id, Proceso); |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
[Route("GetFileInfoById")] |
||||||
|
[HttpGet] |
||||||
|
public async Task<FileManager> GetFileInfoByProcess([FromQuery] int id) |
||||||
|
{ |
||||||
|
FileManager data = new FileManager(); |
||||||
|
data = await _Repo.getFileById(id); |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
[Route("AppendFileByProcess")] |
||||||
|
[HttpPost] |
||||||
|
public async Task<FileManager> AppendFileByProcess(IFormFile file, int IdUsuario, int Proceso, string Tags, int crud) |
||||||
|
{ |
||||||
|
DateTime time = DateTime.Now; |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(Proceso); |
||||||
|
string fullPath = ""; |
||||||
|
fullPath = RootPathCorresponsales + RelativePath.Path; |
||||||
|
string fileMime = file.FileName.Substring(file.FileName.Length - 4); |
||||||
|
string newFileName = file.FileName.Replace(fileMime, "") + "_" + time.ToString("yyyy_MM_dd_HH_mm_ss") + fileMime; |
||||||
|
FileManager data = new FileManager(); |
||||||
|
data.id = 0; |
||||||
|
data.IdUsuario = IdUsuario; |
||||||
|
data.NombreArchivo = newFileName; |
||||||
|
data.Proceso = Proceso; |
||||||
|
data.FechaRegistro = ""; |
||||||
|
data.Tags = Tags; |
||||||
|
data.Activo = 1; |
||||||
|
long fileLength = 0; |
||||||
|
if (@crud == 1) |
||||||
|
{ |
||||||
|
if (file.Length > 0) |
||||||
|
{ |
||||||
|
var filePath = fullPath + newFileName; |
||||||
|
using (var stream = System.IO.File.Create(filePath)) |
||||||
|
{ |
||||||
|
await file.CopyToAsync(stream); |
||||||
|
} |
||||||
|
fileLength = new System.IO.FileInfo(filePath).Length / 1024; |
||||||
|
data.Size = fileLength; |
||||||
|
if (fileLength > 0) |
||||||
|
{ |
||||||
|
return await _Repo.FileManager(data); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
[Route("getFile")] |
||||||
|
[HttpGet, DisableRequestSizeLimit] |
||||||
|
public async Task<IActionResult> getFileFromFileManager([FromQuery] long id, int Proceso) |
||||||
|
{ |
||||||
|
Boolean ExisteEnDisco = false; |
||||||
|
FileManager recFound = await _Repo.getFileByProcess(id, Proceso); |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(Proceso); |
||||||
|
string fullPath = ""; |
||||||
|
fullPath = RootPathCorresponsales + RelativePath.Path; |
||||||
|
if (!String.IsNullOrEmpty(recFound.NombreArchivo)) |
||||||
|
{ |
||||||
|
try |
||||||
|
{ |
||||||
|
if (System.IO.File.Exists(Path.Combine(fullPath, recFound.NombreArchivo))) |
||||||
|
{ |
||||||
|
ExisteEnDisco = true; |
||||||
|
} |
||||||
|
else return BadRequest(new { respuesta = "Ese archivo no existe" }); |
||||||
|
} |
||||||
|
catch (IOException ex) |
||||||
|
{ |
||||||
|
return BadRequest(new { respuesta = "Ese archivo no existe" + ex.ToString() }); |
||||||
|
} |
||||||
|
if (ExisteEnDisco) |
||||||
|
{ |
||||||
|
string fileMime = recFound.NombreArchivo.Substring(recFound.NombreArchivo.Length - 3).ToLower(); |
||||||
|
var mime = "application/" + fileMime.ToLower(); |
||||||
|
string targetFile = fullPath + recFound.NombreArchivo; |
||||||
|
if (System.IO.File.Exists(targetFile)) |
||||||
|
{ |
||||||
|
byte[] pdfBytes = System.IO.File.ReadAllBytes(targetFile); |
||||||
|
MemoryStream ms = new MemoryStream(pdfBytes); |
||||||
|
return new FileStreamResult(ms, mime); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return BadRequest(new { respuesta = "Ese archivo no existe" }); |
||||||
|
} |
||||||
|
|
||||||
|
[HttpDelete("DeleteById/{id}")] |
||||||
|
public async Task<IActionResult> DeleteByProcess(long id) |
||||||
|
{ |
||||||
|
FileManager Found = await _Repo.getFileById(id); |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(Found.Proceso); |
||||||
|
string fullPath = ""; |
||||||
|
fullPath = RootPathCorresponsales + RelativePath.Path; |
||||||
|
try |
||||||
|
{ |
||||||
|
if (System.IO.File.Exists(Path.Combine(fullPath, Found.NombreArchivo))) |
||||||
|
{ |
||||||
|
System.IO.File.Delete(Path.Combine(fullPath, Found.NombreArchivo)); |
||||||
|
await _Repo.deleteFileByProcess(Found.id, Found.Proceso); |
||||||
|
} |
||||||
|
else return new OkObjectResult(new { respuesta = "Ese archivo no existe" }); |
||||||
|
} |
||||||
|
catch (IOException ex) |
||||||
|
{ |
||||||
|
return new OkObjectResult(new { respuesta = "Ocurrio un error al intentar eliminar el registro: " + ex.ToString() }); |
||||||
|
} |
||||||
|
return new OkObjectResult(new { respuesta = "Se elimino el registro" }); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,56 @@ |
|||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
using AOLBackend.Services.MFileManager; |
||||||
|
using AOLBackend.Contracts.Utils; |
||||||
|
using AOLBackend.Models.Utils; |
||||||
|
|
||||||
|
namespace AOLBackend.Controllers.Utils |
||||||
|
{ |
||||||
|
[Route("api/Utils/[controller]")]
|
||||||
|
public class MFileManagerController : Controller |
||||||
|
{ |
||||||
|
private readonly IFileManagerRepository _Repo; |
||||||
|
private readonly IConfiguration _config; |
||||||
|
private readonly IFilePaths4ProcessRepository _RepoRelativePath; |
||||||
|
private readonly string RootPath; |
||||||
|
|
||||||
|
public MFileManagerController(IConfiguration config, IFilePaths4ProcessRepository RepoRelativePath, IFileManagerRepository Repo) |
||||||
|
{ |
||||||
|
_config = config; |
||||||
|
_RepoRelativePath = RepoRelativePath; |
||||||
|
_Repo = Repo; |
||||||
|
RootPath = _config.GetValue<string>("AllFiles"); |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet] |
||||||
|
[Route("GetFilesFromLog")] |
||||||
|
public async Task<List<FileManager>> GetFilesFromLog(int Tags, int Proceso) |
||||||
|
{ |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(Proceso); |
||||||
|
SvcMFileManager FM = new SvcMFileManager(_config, _Repo, RootPath + RelativePath.Path + "\\"); |
||||||
|
return await FM.GetFilesFromLog(Tags, Proceso); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
[HttpGet] |
||||||
|
[Route("GetFileContentById")] |
||||||
|
public async Task<IActionResult> GetFileContentById(long id, int Proceso) |
||||||
|
{ |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(Proceso); |
||||||
|
SvcMFileManager FM = new SvcMFileManager(_config, _Repo, RootPath + RelativePath.Path); |
||||||
|
return await FM.getFileContentById(id); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
[HttpPost] |
||||||
|
[Route("Append")] |
||||||
|
public async Task<List<FileManager>> Append(List<IFormFile> FileList, int Tags, int Proceso, int Usuario) |
||||||
|
{ |
||||||
|
List<string> data = new List<string>(); |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(Proceso); |
||||||
|
SvcMFileManager FM = new SvcMFileManager(_config, _Repo, RootPath + RelativePath.Path + "\\"); |
||||||
|
List<string> filePaths = await FM.SaveFile2DiskList(FileList); |
||||||
|
var fileData = await FM.SaveFileLog(filePaths, Tags, Proceso, Usuario); |
||||||
|
return fileData; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
namespace AOLBackend.DTO.Usuario |
||||||
|
{ |
||||||
|
public class DTOUsuarioSendEmail |
||||||
|
{ |
||||||
|
public string Usuario { get; set; } = null!; |
||||||
|
public string Nombre { get; set; } = null!; |
||||||
|
public string Correo { get; set; } = null!; |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
namespace AOLBackend.Models.Utils |
||||||
|
{ |
||||||
|
public class FileManager |
||||||
|
{ |
||||||
|
public long id { get; set; } = 0!; |
||||||
|
public int IdUsuario { get; set; } = 0!; |
||||||
|
public int Proceso { get; set; } = 0!; |
||||||
|
public string NombreArchivo { get; set; } = null!; |
||||||
|
public string FechaRegistro { get; set; } = null!; |
||||||
|
public string Tags { get; set; } = null!; |
||||||
|
public long Size { get; set; } = 0!; |
||||||
|
public byte Activo { get; set; } = 0!; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
namespace AOLBackend.Models.Utils |
||||||
|
{ |
||||||
|
public class FilePaths4Process |
||||||
|
{ |
||||||
|
public string Path { set; get; } = string.Empty; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,88 @@ |
|||||||
|
using Dapper; |
||||||
|
using AOLBackend.Context; |
||||||
|
using AOLBackend.Contracts.Utils; |
||||||
|
using AOLBackend.Models.Utils; |
||||||
|
using System.Data; |
||||||
|
|
||||||
|
namespace AOLBackend.Repository.Utils |
||||||
|
{ |
||||||
|
public class FileManagerRepository : IFileManagerRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
public FileManagerRepository(DapperContext context) { _context = context; } |
||||||
|
|
||||||
|
public async Task<FileManager> FileManager(FileManager data) |
||||||
|
{ |
||||||
|
var query = "[Utils.FileManager.Append]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<FileManager>(query, new |
||||||
|
{ |
||||||
|
@id = 0, |
||||||
|
@IdUsuario = data.IdUsuario, |
||||||
|
@Proceso = data.Proceso, |
||||||
|
@NombreArchivo = data.NombreArchivo, |
||||||
|
@Tags = data.Tags, |
||||||
|
@Size = data.Size |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada.First(); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<FileManager> getFileByProcess(long id, int Proceso) |
||||||
|
{ |
||||||
|
var query = "[Utils.FileManager.Get]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<FileManager>(query, new |
||||||
|
{ |
||||||
|
@id = 0, |
||||||
|
@Proceso = Proceso, |
||||||
|
@NombreArchivo = "", |
||||||
|
@Tags = id, |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada.FirstOrDefault(new FileManager { id = id, Proceso = Proceso, NombreArchivo = "", Tags = "", Size = 0 }); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<FileManager> getFileById(long id) |
||||||
|
{ |
||||||
|
var query = "[Utils.FileManager.Get]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<FileManager>(query, new |
||||||
|
{ |
||||||
|
@id = id, |
||||||
|
@Proceso = 0, |
||||||
|
@NombreArchivo = "", |
||||||
|
@Tags = id, |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada.FirstOrDefault(new FileManager { id = id, Proceso = 0, NombreArchivo = "", Tags = "", Size = 0 }); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<List<FileManager>> getAllFilesByProcess(long Tags, int Proceso) |
||||||
|
{ |
||||||
|
var query = "[Utils.FileManager.Get]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<FileManager>(query, new |
||||||
|
{ |
||||||
|
@id = 0, |
||||||
|
@Proceso = Proceso, |
||||||
|
@NombreArchivo = "", |
||||||
|
@Tags = Tags, |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada.ToList(); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task deleteFileByProcess(long id, int Proceso) |
||||||
|
{ |
||||||
|
var query = "[Utils.FileManager.Delete]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<FileManager>(query, new |
||||||
|
{ |
||||||
|
@id = id, |
||||||
|
@Proceso = Proceso, |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
using Dapper; |
||||||
|
using AOLBackend.Contracts.Utils; |
||||||
|
using AOLBackend.Context; |
||||||
|
using AOLBackend.Models.Utils; |
||||||
|
using System.Data; |
||||||
|
|
||||||
|
namespace AOLBackend.Repository.Utils |
||||||
|
{ |
||||||
|
public class FilePaths4ProcessRepository : IFilePaths4ProcessRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
public FilePaths4ProcessRepository(DapperContext context) { _context = context; } |
||||||
|
|
||||||
|
public async Task<FilePaths4Process> getPaths4ProcessById(long id) |
||||||
|
{ |
||||||
|
var query = "[Utils.FileManager.RootPath.Get]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<FilePaths4Process>(query, new |
||||||
|
{ |
||||||
|
@id = id, |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada.First(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
using System.Net.Mail; |
||||||
|
using System.Net; |
||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Text; |
||||||
|
//using EASendMail; |
||||||
|
|
||||||
|
namespace AOLBackend.Services.EmailSender |
||||||
|
{ |
||||||
|
public class EmailSender |
||||||
|
{ |
||||||
|
private IConfiguration _config; |
||||||
|
|
||||||
|
public EmailSender(IConfiguration config) |
||||||
|
{ |
||||||
|
_config = config; |
||||||
|
} |
||||||
|
public String SrvSendEmail(string htmlContent, string Subject, string toEmail) |
||||||
|
{ |
||||||
|
string EmailServer = _config.GetValue<string>("EmailServer"); |
||||||
|
string EmailAccount = _config.GetValue<string>("EmailAccount"); |
||||||
|
string[] Email = EmailAccount.Split('@'); |
||||||
|
int EmailPort = Convert.ToInt32(_config.GetValue<string>("EmailPort")); |
||||||
|
string EmailPassword = _config.GetValue<string>("EmailPassword"); |
||||||
|
string EmailUser = Email[0]; |
||||||
|
string EmailDomain = Email[1].Replace("@", ""); |
||||||
|
DateTime now = DateTime.Now; |
||||||
|
try |
||||||
|
{ |
||||||
|
using (var smtp = new SmtpClient(EmailServer, EmailPort)) |
||||||
|
{ |
||||||
|
smtp.UseDefaultCredentials = false; |
||||||
|
smtp.Credentials = new NetworkCredential(EmailAccount, EmailPassword); |
||||||
|
smtp.Host = EmailServer; |
||||||
|
var correo = new MailMessage(EmailAccount, toEmail); |
||||||
|
correo.From = new MailAddress("<" + EmailAccount + ">", "<" + EmailUser + ">"); |
||||||
|
correo.Sender = new MailAddress("<" + EmailAccount + ">", "<" + EmailUser + ">"); |
||||||
|
correo.Headers.Add("Message-Id", String.Concat("<", now.ToString("yyMMdd"), ".", now.ToString("HHmmss"), "@alphaomega.com.mx>")); |
||||||
|
correo.To.Add(toEmail); |
||||||
|
correo.Subject = Subject; |
||||||
|
correo.Body = "htmlContent"; |
||||||
|
correo.BodyEncoding = System.Text.Encoding.UTF8; |
||||||
|
correo.SubjectEncoding = System.Text.Encoding.Default; |
||||||
|
correo.IsBodyHtml = true; |
||||||
|
smtp.Send(correo); |
||||||
|
return "Message Sent Succesfully"; |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception ex) |
||||||
|
{ |
||||||
|
return ex.ToString(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public String SrvSendEmail2(string htmlContent, string Subject, string toEmail) |
||||||
|
{ |
||||||
|
return ""; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,106 @@ |
|||||||
|
using AOLBackend.Models.Utils; |
||||||
|
using AOLBackend.Contracts.Utils; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
|
||||||
|
namespace AOLBackend.Services.MFileManager |
||||||
|
{ |
||||||
|
public class SvcMFileManager |
||||||
|
{ |
||||||
|
private readonly IFileManagerRepository _Repo; |
||||||
|
private readonly IConfiguration _config; |
||||||
|
// private readonly IFilePaths4ProcessRepository _RepoRelativePath; |
||||||
|
private readonly string rootPath; |
||||||
|
|
||||||
|
public SvcMFileManager(IConfiguration config, IFileManagerRepository Repo, string _rootPath) |
||||||
|
{ |
||||||
|
_config = config; |
||||||
|
_Repo = Repo; |
||||||
|
rootPath = _rootPath; |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<List<FileManager>> GetFilesFromLog(int Tags, int Proceso) |
||||||
|
{ |
||||||
|
return await _Repo.getAllFilesByProcess(Tags, Proceso); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<IActionResult> getFileContentById(long id) |
||||||
|
{ |
||||||
|
Boolean ExisteEnDisco = false; |
||||||
|
byte[] emptyFile = System.IO.File.ReadAllBytes("c:\\downs\\empty.png"); |
||||||
|
//byte[] emptyFile = System.IO.File.ReadAllBytes("D:\\data\\empty.png"); |
||||||
|
MemoryStream emptyms = new MemoryStream(emptyFile); |
||||||
|
FileManager recFound = await _Repo.getFileById(id); |
||||||
|
if (!String.IsNullOrEmpty(recFound.NombreArchivo)) |
||||||
|
{ |
||||||
|
try |
||||||
|
{ |
||||||
|
if (System.IO.File.Exists(Path.Combine(rootPath, recFound.NombreArchivo))) |
||||||
|
{ |
||||||
|
ExisteEnDisco = true; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
return new FileStreamResult(emptyms, "image/png"); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (IOException ex) |
||||||
|
{ |
||||||
|
return new FileStreamResult(emptyms, "image/png"); |
||||||
|
} |
||||||
|
if (ExisteEnDisco) |
||||||
|
{ |
||||||
|
string fileMime = recFound.NombreArchivo.Substring(recFound.NombreArchivo.Length - 3).ToLower(); |
||||||
|
var mime = "application/" + fileMime.ToLower(); |
||||||
|
string targetFile = rootPath + "\\" + recFound.NombreArchivo; |
||||||
|
if (System.IO.File.Exists(targetFile)) |
||||||
|
{ |
||||||
|
byte[] pdfBytes = System.IO.File.ReadAllBytes(targetFile); |
||||||
|
MemoryStream ms = new MemoryStream(pdfBytes); |
||||||
|
return new FileStreamResult(ms, mime); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return new FileStreamResult(emptyms, "image/png"); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<List<string>> SaveFile2DiskList(List<IFormFile> FileList) |
||||||
|
{ |
||||||
|
DateTime time = DateTime.Now; |
||||||
|
var filePaths = new List<string>(); |
||||||
|
FileManager data = new FileManager(); |
||||||
|
foreach (var file in FileList) |
||||||
|
{ |
||||||
|
string fileMime = file.FileName.Substring(file.FileName.Length - 4); |
||||||
|
string newFileName = file.FileName.Replace(fileMime, "") + "_" + time.ToString("yyyy_MM_dd_HH_mm_ss") + fileMime; |
||||||
|
if (file.Length > 0) |
||||||
|
{ |
||||||
|
var filePath = rootPath + newFileName; |
||||||
|
using (var stream = System.IO.File.Create(filePath)) |
||||||
|
{ |
||||||
|
await file.CopyToAsync(stream); |
||||||
|
filePaths.Add(newFileName); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return filePaths; |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<List<FileManager>> SaveFileLog(List<string> files, int Tags, int Proceso, int Usuario) |
||||||
|
{ |
||||||
|
List<FileManager> resultados = new List<FileManager>(); |
||||||
|
foreach (string file in files) |
||||||
|
{ |
||||||
|
FileManager data = new FileManager(); |
||||||
|
long fileLength = new System.IO.FileInfo(rootPath + file).Length / 1024; |
||||||
|
data.id = 0; |
||||||
|
data.IdUsuario = Usuario; |
||||||
|
data.Proceso = Proceso; |
||||||
|
data.NombreArchivo = file; |
||||||
|
data.Tags = Tags.ToString(); |
||||||
|
data.Size = fileLength; |
||||||
|
await _Repo.FileManager(data); |
||||||
|
} |
||||||
|
return await _Repo.getAllFilesByProcess(Tags, Proceso); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +1 @@ |
|||||||
eefe8f67b06397f0ffbb2eddb23dd69eb10fac57 |
98dcc38fb2c7ab63ef7a47333e0e07fce2a8e400 |
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue