| { | { | ||||
| public Task<IEnumerable<MessageDto>> GetAll(); | public Task<IEnumerable<MessageDto>> GetAll(); | ||||
| public Task<Guid> Create(MessageDto messageDto, PeriodOfValidity chosenPeriod); | public Task<Guid> Create(MessageDto messageDto, PeriodOfValidity chosenPeriod); | ||||
| public Task DeleteExpiredMessages(); | |||||
| public Task<List<string>> DeleteExpiredMessages(); | |||||
| public Task InvalidateMessage(int id); | public Task InvalidateMessage(int id); | ||||
| public Task Update(MessageDto messageDto); | public Task Update(MessageDto messageDto); | ||||
| return Guid.Parse(message.Code); | return Guid.Parse(message.Code); | ||||
| } | } | ||||
| public async Task DeleteExpiredMessages() | |||||
| public async Task<List<string>> DeleteExpiredMessages() | |||||
| { | { | ||||
| var result = await _dbContext.Messages | var result = await _dbContext.Messages | ||||
| .Where(m => (m.ExpiryDate != null && m.ExpiryDate <= DateTime.UtcNow) || !m.IsValid).ToListAsync(); | .Where(m => (m.ExpiryDate != null && m.ExpiryDate <= DateTime.UtcNow) || !m.IsValid).ToListAsync(); | ||||
| var toReturn = result.Select(x => x.Code).ToList(); | |||||
| _dbContext.RemoveRange(result); | _dbContext.RemoveRange(result); | ||||
| await _dbContext.SaveChangesAsync(); | await _dbContext.SaveChangesAsync(); | ||||
| return toReturn; | |||||
| } | } | ||||
| public async Task InvalidateMessage(int id) | public async Task InvalidateMessage(int id) |
| public sealed class MessageDeletionJob : IJob | public sealed class MessageDeletionJob : IJob | ||||
| { | { | ||||
| private readonly IMessageService _messageService; | private readonly IMessageService _messageService; | ||||
| private readonly string _basePath; | |||||
| private readonly string _basePathTmp; | |||||
| public MessageDeletionJob(IMessageService messageService) | |||||
| public MessageDeletionJob(IMessageService messageService, IWebHostEnvironment webHostEnvironment) | |||||
| { | { | ||||
| _messageService = messageService; | _messageService = messageService; | ||||
| _basePath = Path.Combine(webHostEnvironment.WebRootPath.Split('/')[0], "files"); | |||||
| _basePathTmp = Path.Combine(webHostEnvironment.WebRootPath.Split('/')[0], "filestmp"); | |||||
| } | } | ||||
| public async Task Execute(IJobExecutionContext context) | public async Task Execute(IJobExecutionContext context) | ||||
| { | { | ||||
| try | try | ||||
| { | { | ||||
| await _messageService.DeleteExpiredMessages(); | |||||
| var foldersToRemove = await _messageService.DeleteExpiredMessages(); | |||||
| foreach (var path in foldersToRemove.Select(folder => Path.Combine(_basePath, folder))) | |||||
| { | |||||
| Directory.Delete(path, true); | |||||
| } | |||||
| Directory.Delete(_basePathTmp, true); | |||||
| } | } | ||||
| catch (Exception ex) | catch (Exception ex) | ||||
| { | { |