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