From b221f3dd432c8666d522817a63064c6f9193a637 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Wed, 16 Nov 2022 22:16:40 +0100 Subject: Napravljen controller za dodavanje poruka i vracanje primljenih poruka u slicaju da smo offline. Fixed typo --- Backend/Api/Api/Controllers/MessageController.cs | 44 ++++++++++++++++++++++++ Backend/Api/Api/Interfaces/IMessageService.cs | 11 ++++++ Backend/Api/Api/Program.cs | 1 + Backend/Api/Api/Services/MessageService.cs | 18 ++++++---- 4 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 Backend/Api/Api/Controllers/MessageController.cs create mode 100644 Backend/Api/Api/Interfaces/IMessageService.cs (limited to 'Backend/Api') diff --git a/Backend/Api/Api/Controllers/MessageController.cs b/Backend/Api/Api/Controllers/MessageController.cs new file mode 100644 index 0000000..63351d0 --- /dev/null +++ b/Backend/Api/Api/Controllers/MessageController.cs @@ -0,0 +1,44 @@ +using System.Data; +using Api.Interfaces; +using Api.Models; +using Api.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace Api.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class MessageController : ControllerBase + { + + private readonly IJwtService _jwtService; + private readonly IMessageService _messageService; + public MessageController( IJwtService jwtService,IMessageService messageService) + { + + _jwtService = jwtService; + _messageService = messageService; + + } + [HttpPost("add")] + [Authorize(Roles = "User")] + public async Task> addMessage([FromBody] MessageReceive msg) + { + var msgTemp = await _messageService.addMessage(msg); + if(msgTemp == null) + return BadRequest(); + return Ok(msgTemp); + } + [HttpGet("myMessages")] + [Authorize(Roles = "User")] + public async Task>> getMyMessages() + { + var msgTemp = await _messageService.getReceiverMessage(); + if (msgTemp == null) + return BadRequest(); + return Ok(msgTemp); + } + } +} diff --git a/Backend/Api/Api/Interfaces/IMessageService.cs b/Backend/Api/Api/Interfaces/IMessageService.cs new file mode 100644 index 0000000..712b344 --- /dev/null +++ b/Backend/Api/Api/Interfaces/IMessageService.cs @@ -0,0 +1,11 @@ +using Api.Models; + +namespace Api.Interfaces +{ + public interface IMessageService + { + Task addMessage(MessageReceive msg); + Task> getReceiverMessage(); + MessageSend messageToMessageSend(Message msg); + } +} \ No newline at end of file diff --git a/Backend/Api/Api/Program.cs b/Backend/Api/Api/Program.cs index 7d6b03e..280a9dd 100644 --- a/Backend/Api/Api/Program.cs +++ b/Backend/Api/Api/Program.cs @@ -27,6 +27,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddHttpContextAccessor(); diff --git a/Backend/Api/Api/Services/MessageService.cs b/Backend/Api/Api/Services/MessageService.cs index 0772b48..0e48285 100644 --- a/Backend/Api/Api/Services/MessageService.cs +++ b/Backend/Api/Api/Services/MessageService.cs @@ -5,7 +5,7 @@ using MongoDB.Driver; namespace Api.Services { - public class MessageService + public class MessageService : IMessageService { private readonly IHttpContextAccessor _httpContext; private readonly IMongoCollection _messages; @@ -15,11 +15,15 @@ namespace Api.Services public MessageService(IDatabaseConnection settings, IMongoClient mongoClient, IJwtService jwtService, IHttpContextAccessor httpContextAccessor, IConfiguration configuration) { var database = mongoClient.GetDatabase(settings.DatabaseName); - _messages= database.GetCollection(settings.UserCollectionName); + _messages = database.GetCollection(settings.MessageCollectionname); _jwtService = jwtService; + _httpContext = httpContextAccessor; + _configuration = configuration; } public async Task addMessage(MessageReceive msg) { + if (_httpContext.HttpContext.User.FindFirstValue("id") == null) + return null; var senderId = _httpContext.HttpContext.User.FindFirstValue("id").ToString(); if (senderId == null) return null; @@ -28,17 +32,19 @@ namespace Api.Services tempMsg.receiverId = msg.receiverId; tempMsg.senderId = senderId; tempMsg.messagge = msg.messagge; - tempMsg.timestamp= DateTime.Now.ToUniversalTime(); + tempMsg.timestamp = DateTime.Now.ToUniversalTime(); + + //TODO if user online send thru socket await _messages.InsertOneAsync(tempMsg); return tempMsg; } public MessageSend messageToMessageSend(Message msg) { - var tempMsg=new MessageSend(); + var tempMsg = new MessageSend(); tempMsg.senderId = msg.senderId; - tempMsg.messagge=msg.messagge; + tempMsg.messagge = msg.messagge; tempMsg.timestamp = msg.timestamp; return tempMsg; } @@ -52,7 +58,7 @@ namespace Api.Services foreach (var message in messages) { tempMessages.Add(messageToMessageSend(message)); - _messages.DeleteOne(msg=>msg._id==message._id); + _messages.DeleteOne(msg => msg._id == message._id); } return tempMessages; } -- cgit v1.2.3