From 8f090bd2e2df9dd8bbf1edb30474e6ab9206eab1 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Tue, 26 Sep 2023 06:28:45 -0400 Subject: [PATCH] Able to create and read data from the DB --- Controllers/RegisterController.cs | 33 ++++++++++++++++++++++++++++--- Models/User.cs | 6 ++++-- Program.cs | 5 +++++ Repositories/UserRepository.cs | 27 +++++++++++++++++++++---- TextSender-API.csproj | 1 + 5 files changed, 63 insertions(+), 9 deletions(-) diff --git a/Controllers/RegisterController.cs b/Controllers/RegisterController.cs index d706c72..e15a45a 100644 --- a/Controllers/RegisterController.cs +++ b/Controllers/RegisterController.cs @@ -1,6 +1,9 @@ +using System.Linq; + using Microsoft.AspNetCore.Mvc; using TextSender_API.Models; +using TextSender_API.Repositories; namespace TextSender_API.Controllers; @@ -10,22 +13,46 @@ public class RegisterController : ControllerBase { #region Fields private readonly ILogger _logger; + private IConfiguration _config; #endregion #region Constructors - public RegisterController(ILogger logger) + public RegisterController(ILogger logger, IConfiguration config) { this._logger = logger; + this._config = config; } #endregion #region Methods [HttpPost("register"), DisableRequestSizeLimit] - public IActionResult Upload([FromForm(Name = "file")] List contactFile, - [FromForm(Name = "user_id")] string userID) + public IActionResult Upload([FromBody] User userRequest) { + try + { + var connString = this._config.GetConnectionString("MongoDBURI"); + var userRepo = new UserRepository(connString); + var allUsers = userRepo.RetrieveAllUsers(); + var result = allUsers.Exists(ea => ea.Username.Equals(userRequest.Username)); + + if (!result) + { + this._logger.LogInformation("Creating user"); + userRequest.DateCreated = DateTime.Now; + userRepo.CreateUser(userRequest); + } + else + { + this._logger.LogInformation("User already exists"); + } + } + catch (Exception ex) + { + this._logger.LogError($"An error occurred: {ex.Message}"); + } + return Ok(); } #endregion diff --git a/Models/User.cs b/Models/User.cs index 673682f..9889755 100644 --- a/Models/User.cs +++ b/Models/User.cs @@ -2,6 +2,7 @@ using System; using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; namespace TextSender_API.Models; @@ -9,8 +10,9 @@ namespace TextSender_API.Models; public class User { #region Properties - // [BsonElement("_id")] - public ObjectId Id { get; set; } + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + public string? Id { get; set; } [BsonElement("firstname")] public string? Firstname { get; set; } [BsonElement("lastname")] diff --git a/Program.cs b/Program.cs index 48863a6..065e1e6 100644 --- a/Program.cs +++ b/Program.cs @@ -1,8 +1,12 @@ +using Newtonsoft.Json; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); +builder.Services.AddControllers().AddNewtonsoftJson(); + // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); @@ -16,6 +20,7 @@ if (app.Environment.IsDevelopment()) app.UseSwaggerUI(); } + app.UseHttpsRedirection(); app.UseAuthorization(); diff --git a/Repositories/UserRepository.cs b/Repositories/UserRepository.cs index c0c5101..03a34b4 100644 --- a/Repositories/UserRepository.cs +++ b/Repositories/UserRepository.cs @@ -14,6 +14,7 @@ public class UserRepository private string _connectionString; private string _databaseName; private string _tableName; + private readonly IMongoCollection _bookCollection; #endregion @@ -23,17 +24,35 @@ public class UserRepository this._connectionString = connectionString; this._databaseName = "TextSender"; this._tableName = "Users"; + var client = this.InitializeClient(); + this._bookCollection = client.GetDatabase(this._databaseName).GetCollection(this._tableName); } #endregion #region Metods public void CreateUser(User user) { - var client = this.InitializeClient(); - - var coll = client.GetDatabase(this._databaseName).GetCollection(this._tableName); - coll.InsertOne(user); + this._bookCollection.InsertOne(user); + var i = 0; } + + public List RetrieveAllUsers() + { + return this._bookCollection.Find(_ => true).ToList(); + } + + public void Update(User user) + { + var filter = Builders.Filter.Eq(u => u.Id, user.Id); + this._bookCollection.ReplaceOne(filter, user); + } + + public void Delete(User user) + { + var filter = Builders.Filter.Eq(u => u.Id, user.Id); + this._bookCollection.DeleteOne(filter); + } + private MongoClient InitializeClient() { return new MongoClient(this._connectionString); diff --git a/TextSender-API.csproj b/TextSender-API.csproj index bd2bfef..3e29007 100644 --- a/TextSender-API.csproj +++ b/TextSender-API.csproj @@ -8,6 +8,7 @@ +