using audit_logs.Models.AppSettings; using audit.Model; using audit.Repositories; using Microsoft.Extensions.Options; using MongoDB.Bson; using audit_logs.Repositories.Interfaces; using MongoDB.Driver; using System; using audit_logs.Models; using System.Collections.Generic; using System.Threading.Tasks; namespace audit_logs.Repositories; public class AuditRecordRepository : MongoRepository, IAuditRecordRepository { public AuditRecordRepository(IMongoDatabase database) : base(database) { } public AuditRecordRepository(IOptions dbSettings) : base(dbSettings) { } public override string GetCollectionName() { return "audit_records"; } public async Task DeleteBeforeDate(DateTime date) { var filter = Builders.Filter.Lt(ar => ar.ActionTime, date); //await Collection.DeleteManyAsync(filter); } public async Task InsertBatch(IEnumerable auditRecords) { try { await Collection.InsertManyAsync(auditRecords); return auditRecords.Count(); } catch { return 0; } } public async Task> FindAllFromOrigin(ObjectId originId) { var filter = Builders.Filter.Eq(ar => ar.RecordId, originId.ToString()); return await Collection.Find(filter).ToListAsync(); } // Método para buscar un registro de auditoría por su ID public async Task FindRecordByIdAsync(ObjectId id) { var filter = Builders.Filter.Eq(ar => ar.Id, id); return await Collection.Find(filter).FirstOrDefaultAsync(); } public async Task> GetAllAuditRecordsAsync() { // Retrieve all documents from the AuditRecords collection return await Collection.Find(new BsonDocument()).ToListAsync(); } public async Task> GetPaginatedAsync(int pageNumber, int pageSize) { // var skip = (pageNumber - 1) * pageSize; // return await Collection.Find(new BsonDocument()).Sort(sort).Skip(skip).Limit(pageSize).ToListAsync(); throw new NotImplementedException(); } public Task CountDocumentsAsync() { throw new NotImplementedException(); } }