diff options
-rw-r--r-- | Backend/Api/Api/Controllers/MessageController.cs | 44 | ||||
-rw-r--r-- | Backend/Api/Api/Interfaces/IMessageService.cs | 11 | ||||
-rw-r--r-- | Backend/Api/Api/Program.cs | 1 | ||||
-rw-r--r-- | Backend/Api/Api/Services/MessageService.cs | 18 |
4 files changed, 68 insertions, 6 deletions
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<ActionResult<MessageSend>> 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<ActionResult<List<MessageSend>>> 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<Message> addMessage(MessageReceive msg); + Task<List<MessageSend>> 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<IJwtService, JwtService>(); builder.Services.AddScoped<IPostService,PostService>(); builder.Services.AddScoped<IFileService,FileService>(); builder.Services.AddScoped<ILocationService,LocationService>(); +builder.Services.AddScoped<IMessageService, MessageService>(); 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<Message> _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<Message>(settings.UserCollectionName); + _messages = database.GetCollection<Message>(settings.MessageCollectionname); _jwtService = jwtService; + _httpContext = httpContextAccessor; + _configuration = configuration; } public async Task<Message> 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; } |