diff --git a/Tsi1.Api/Tsi1.Api/Startup.cs b/Tsi1.Api/Tsi1.Api/Startup.cs index 0c5c2155f2cabb390a140c0d999df314e08957b1..b6a5bffb90f09f6dcd33f75a44df4e413fad6540 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 e957e7ef0ebdae633178642d900f87a2f773aee3..8de3212efd973a8247f91a2ae359f60135d9b95d 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 0000000000000000000000000000000000000000..bdf163aa046b11f7a96faeaab0d0ac4a546f3ffd --- /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 0000000000000000000000000000000000000000..e49acbb8188fd93d9a6d4479a01a12e2569ebf3b --- /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 0000000000000000000000000000000000000000..58134b93c60ba3762b801f11ba2ffb1590c89e3c --- /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 0000000000000000000000000000000000000000..cd2efac098dd805a5ee099b58d806b38d6ff3826 --- /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 0000000000000000000000000000000000000000..67e12a5f70efc07bad5a1f7106305d335f20c45e --- /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; } + } +}