using MongoDB.Driver; using TextSender_API.Models; namespace TextSender_API.Repositories; public class ContactCreationQueueRepository : BaseRepository { #region Fields private readonly IMongoCollection _bookCollection; #endregion #region Constructors public ContactCreationQueueRepository(string connectionString) { this._connectionString = connectionString; this._tableName = "contactCreationQueue"; var client = this.InitializeClient(); this._bookCollection = client.GetDatabase(this._databaseName).GetCollection(this._tableName); } #endregion #region Metods public Tuple Exists(string id) { var allQueue = this.RetrieveAll(); var result = allQueue.FirstOrDefault(q => q.Id!.Equals(id)); if (result != null) { return new Tuple(true, result!); } else { return new Tuple(false, new ContactCreationQueue()); } } public void Create(ContactCreationQueue queue) { this._bookCollection.InsertOne(queue); } public List RetrieveAll() { return this._bookCollection.Find(_ => true).ToList(); } public void Update(ContactCreationQueue queue) { var filter = Builders.Filter.Eq(q => q.Id, queue.Id); this._bookCollection.ReplaceOne(filter, queue); } public void Delete(ContactCreationQueue queue) { var filter = Builders.Filter.Eq(q => q.Id, queue.Id); this._bookCollection.DeleteOne(filter); } private MongoClient InitializeClient() { return new MongoClient(this._connectionString); } #endregion } public class ContactsRepository : BaseRepository { #region Fields private readonly IMongoCollection _bookCollection; #endregion #region Constructors public ContactsRepository(string connectionString) { this._connectionString = connectionString; this._tableName = "contacts"; var client = this.InitializeClient(); this._bookCollection = client.GetDatabase(this._databaseName).GetCollection(this._tableName); } #endregion #region Metods public Tuple Exists(string id) { var allContacts= this.RetrieveAll(); var result = allContacts.FirstOrDefault(c => c.Id!.Equals(id)); if (result != null) { return new Tuple(true, result!); } else { return new Tuple(false, new Contact()); } } public void Create(Contact contact) { this._bookCollection.InsertOne(contact); } public List RetrieveAll() { return this._bookCollection.Find(_ => true).ToList(); } public void Update(Contact contact) { var filter = Builders.Filter.Eq(c => c.Id, contact.Id); this._bookCollection.ReplaceOne(filter, contact); } public void Delete(Contact contact) { var filter = Builders.Filter.Eq(c => c.Id, contact.Id); this._bookCollection.DeleteOne(filter); } private MongoClient InitializeClient() { return new MongoClient(this._connectionString); } #endregion }