From 9fd1948447769a6a9e98aaad5a6fb3e667fbdd83 Mon Sep 17 00:00:00 2001
From: esantangelo <enzo020895@gmail.com>
Date: Sun, 18 Oct 2020 16:50:34 -0300
Subject: [PATCH] add mongodb settings and message entity

---
 Tsi1.Api/Tsi1.Api/Startup.cs                  |  9 +++++++
 Tsi1.Api/Tsi1.Api/appsettings.json            |  5 ++++
 .../Dtos/MessageCreateDto.cs                  | 15 +++++++++++
 .../Dtos/MessagePreviewDto.cs                 | 19 ++++++++++++++
 .../Interfaces/IMessageService.cs             | 26 +++++++++++++++++++
 Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs   | 24 +++++++++++++++++
 .../Tsi1DatabaseSettings.cs                   | 20 ++++++++++++++
 7 files changed, 118 insertions(+)
 create mode 100644 Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessageCreateDto.cs
 create mode 100644 Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessagePreviewDto.cs
 create mode 100644 Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IMessageService.cs
 create mode 100644 Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs
 create mode 100644 Tsi1.Api/Tsi1.DataLayer/MongoDbConfiguration/Tsi1DatabaseSettings.cs

diff --git a/Tsi1.Api/Tsi1.Api/Startup.cs b/Tsi1.Api/Tsi1.Api/Startup.cs
index 0c5c215..b6a5bff 100644
--- a/Tsi1.Api/Tsi1.Api/Startup.cs
+++ b/Tsi1.Api/Tsi1.Api/Startup.cs
@@ -14,6 +14,7 @@ using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
 using Microsoft.IdentityModel.Tokens;
 using Microsoft.OpenApi.Models;
 using Tsi1.Api.Infrastructure;
@@ -21,6 +22,7 @@ using Tsi1.BusinessLayer.Helpers;
 using Tsi1.BusinessLayer.Interfaces;
 using Tsi1.BusinessLayer.Services;
 using Tsi1.DataLayer;
+using Tsi1.DataLayer.MongoDbConfiguration;
 
 namespace Tsi1.Api
 {
@@ -39,6 +41,13 @@ namespace Tsi1.Api
             services.AddControllers();
 
             services.AddDbContext<Tsi1Context>(x => x.UseNpgsql(Configuration.GetConnectionString("PostgreSql")));
+
+            services.Configure<ITsi1DatabaseSettings>(
+                Configuration.GetSection(nameof(Tsi1DatabaseSettings)));
+
+            services.AddSingleton<Tsi1DatabaseSettings>(sp =>
+                sp.GetRequiredService<IOptions<Tsi1DatabaseSettings>>().Value);
+
             services.AddScoped<IUserService, UserService>();
             services.AddScoped<IUserTypeService, UserTypeService>();
             services.AddScoped<ICourseService, CourseService>();
diff --git a/Tsi1.Api/Tsi1.Api/appsettings.json b/Tsi1.Api/Tsi1.Api/appsettings.json
index e957e7e..8de3212 100644
--- a/Tsi1.Api/Tsi1.Api/appsettings.json
+++ b/Tsi1.Api/Tsi1.Api/appsettings.json
@@ -2,6 +2,11 @@
   "ConnectionStrings": {
     "PostgreSql": "Host=localhost;Database=tsi1;Username=postgres;Password=111111"
   },
+  "Tsi1DatabaseSettings": {
+    "Tsi1CollectionName": "Messages",
+    "ConnectionString": "mongodb://localhost:27017",
+    "DatabaseName": "Tsi1Db"
+  },
   "jwtTokenConfig": {
     "secret": "1234567890123456789",
     "issuer": "https://localhost:44363",
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessageCreateDto.cs b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessageCreateDto.cs
new file mode 100644
index 0000000..bdf163a
--- /dev/null
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessageCreateDto.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.BusinessLayer.Dtos
+{
+    public class MessageCreateDto
+    {
+        public int SenderId { get; set; }
+
+        public int ReceiverId { get; set; }
+
+        public string Content { get; set; }
+    }
+}
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessagePreviewDto.cs b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessagePreviewDto.cs
new file mode 100644
index 0000000..e49acbb
--- /dev/null
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/MessagePreviewDto.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.BusinessLayer.Dtos
+{
+    public class MessagePreviewDto
+    {
+        public string Id { get; set; }
+
+        public int SenderId { get; set; }
+
+        public int ReceiverId { get; set; }
+
+        public string Content { get; set; }
+
+        public string Date { get; set; }
+    }
+}
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IMessageService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IMessageService.cs
new file mode 100644
index 0000000..58134b9
--- /dev/null
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IMessageService.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Tsi1.BusinessLayer.Helpers;
+
+namespace Tsi1.BusinessLayer.Interfaces
+{
+    public interface IMessageService
+    {
+        Task<ServiceResult<List<ForumPreviewDto>>> GetForums(int courseId);
+
+        Task<ServiceResult<Forum>> Create(ForumCreateDto newForum);
+
+        Task<ServiceResult<Forum>> Delete(int forumId);
+
+        Task<ServiceResult<>>
+
+        List<Message> Get();
+        Message Get(string id);
+        Message Create(Message message);
+        void Update(string id, Message messageIn);
+        void Remove(Message messageIn);
+        void Remove(string id);
+    }
+}
diff --git a/Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs b/Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs
new file mode 100644
index 0000000..cd2efac
--- /dev/null
+++ b/Tsi1.Api/Tsi1.DataLayer/Entities/Message.cs
@@ -0,0 +1,24 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.DataLayer.Entities
+{
+    public class Message
+    {
+        [BsonId]
+        [BsonRepresentation(BsonType.ObjectId)]
+        public string Id { get; set; }
+
+        public int SenderId { get; set; }
+
+        public int ReceiverId { get; set; }
+
+        public string Content { get; set; }
+
+        public string Date { get; set; }
+
+    }
+}
diff --git a/Tsi1.Api/Tsi1.DataLayer/MongoDbConfiguration/Tsi1DatabaseSettings.cs b/Tsi1.Api/Tsi1.DataLayer/MongoDbConfiguration/Tsi1DatabaseSettings.cs
new file mode 100644
index 0000000..67e12a5
--- /dev/null
+++ b/Tsi1.Api/Tsi1.DataLayer/MongoDbConfiguration/Tsi1DatabaseSettings.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tsi1.DataLayer.MongoDbConfiguration
+{
+    public class Tsi1DatabaseSettings : ITsi1DatabaseSettings
+    {
+        public string Tsi1CollectionName { get; set; }
+        public string ConnectionString { get; set; }
+        public string DatabaseName { get; set; }
+    }
+
+    public interface ITsi1DatabaseSettings
+    {
+        public string Tsi1CollectionName { get; set; }
+        public string ConnectionString { get; set; }
+        public string DatabaseName { get; set; }
+    }
+}
-- 
GitLab