using AutoMapper; using Bit.Core.Repositories; using Bit.Infrastructure.EntityFramework.Models; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; namespace Bit.Infrastructure.EntityFramework.Repositories; public class SendRepository : Repository, ISendRepository { public SendRepository(IServiceScopeFactory serviceScopeFactory, IMapper mapper) : base(serviceScopeFactory, mapper, (DatabaseContext context) => context.Sends) { } public override async Task CreateAsync(Core.Entities.Send send) { send = await base.CreateAsync(send); using (var scope = ServiceScopeFactory.CreateScope()) { var dbContext = GetDatabaseContext(scope); if (send.UserId.HasValue) { await UserUpdateStorage(send.UserId.Value); await dbContext.UserBumpAccountRevisionDateAsync(send.UserId.Value); await dbContext.SaveChangesAsync(); } } return send; } public async Task> GetManyByDeletionDateAsync(DateTime deletionDateBefore) { using (var scope = ServiceScopeFactory.CreateScope()) { var dbContext = GetDatabaseContext(scope); var results = await dbContext.Sends.Where(s => s.DeletionDate < deletionDateBefore).ToListAsync(); return Mapper.Map>(results); } } public async Task> GetManyByUserIdAsync(Guid userId) { using (var scope = ServiceScopeFactory.CreateScope()) { var dbContext = GetDatabaseContext(scope); var results = await dbContext.Sends.Where(s => s.UserId == userId).ToListAsync(); return Mapper.Map>(results); } } }