Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

MessageService.cs 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using AutoMapper;
  2. using Microsoft.EntityFrameworkCore;
  3. using SecureSharing.Business.Dtos;
  4. using SecureSharing.Business.Infrastructure;
  5. using SecureSharing.Business.Interfaces;
  6. using SecureSharing.Data.Data;
  7. using SecureSharing.Data.DbContexts;
  8. namespace SecureSharing.Business.Services;
  9. public sealed class MessageService : IMessageService
  10. {
  11. private readonly AppDbContext _dbContext;
  12. private readonly IMapper _mapper;
  13. public MessageService(AppDbContext dbContext, IMapper mapper)
  14. {
  15. _dbContext = dbContext;
  16. _mapper = mapper;
  17. }
  18. public async Task<Guid> Create(MessageDto messageDto, PeriodOfValidity chosenPeriod)
  19. {
  20. var message = _mapper.Map<Message>(messageDto);
  21. message.ExpiryDate = chosenPeriod switch
  22. {
  23. PeriodOfValidity.ONE_TIME => null,
  24. PeriodOfValidity.ONE_DAY => DateTime.UtcNow.AddMinutes(1),
  25. PeriodOfValidity.ONE_HOUR => DateTime.UtcNow.AddHours(1),
  26. PeriodOfValidity.ONE_WEEK => DateTime.UtcNow.AddDays(7),
  27. _ => null
  28. };
  29. await _dbContext.Messages.AddAsync(message);
  30. await _dbContext.SaveChangesAsync();
  31. return Guid.Parse(message.Code);
  32. }
  33. public async Task DeleteExpiredMessages()
  34. {
  35. var result = await _dbContext.Messages
  36. .Where(m => (m.ExpiryDate != null && m.ExpiryDate <= DateTime.UtcNow) || !m.IsValid).ToListAsync();
  37. _dbContext.RemoveRange(result);
  38. await _dbContext.SaveChangesAsync();
  39. }
  40. public async Task InvalidateMessage(int id)
  41. {
  42. var message = await _dbContext.Messages.Where(m => m.Id == id).FirstOrDefaultAsync();
  43. message.IsValid = false;
  44. await _dbContext.SaveChangesAsync();
  45. }
  46. public async Task<bool> Delete(int messageId)
  47. {
  48. var messageDto = await GetById(messageId);
  49. if (messageDto is null) return false;
  50. _dbContext.Set<Message>().Remove(_mapper.Map<Message>(messageDto));
  51. try
  52. {
  53. await _dbContext.SaveChangesAsync();
  54. }
  55. catch (DbUpdateException)
  56. {
  57. return false;
  58. }
  59. return true;
  60. }
  61. public async Task<IEnumerable<MessageDto>> GetAll()
  62. {
  63. var result = await _dbContext.Messages.AsNoTracking().ToListAsync();
  64. var mappedResult = _mapper.Map<IEnumerable<MessageDto>>(result);
  65. return mappedResult;
  66. }
  67. public async Task<MessageDto> GetById(int messageId)
  68. {
  69. var result = await _dbContext.Messages.Include(x=>x.FileNames).AsNoTracking().FirstOrDefaultAsync(x => x.Id == messageId);
  70. var mappedResult = _mapper.Map<MessageDto>(result);
  71. return mappedResult;
  72. }
  73. public async Task<MessageDto> GetByCode(Guid code)
  74. {
  75. var result = await _dbContext.Messages.Include(x=>x.FileNames).AsNoTracking().FirstOrDefaultAsync(x => x.Code == code.ToString());
  76. var mappedResult = _mapper.Map<MessageDto>(result);
  77. return mappedResult;
  78. }
  79. public async Task Update(MessageDto messageDto)
  80. {
  81. var a = _dbContext.Messages.Update(_mapper.Map<Message>(messageDto));
  82. await _dbContext.SaveChangesAsync();
  83. }
  84. }