SimpleMessagingService

Log | Files | Refs | README

MessageController.cs (2474B)


      1 using Api.Data;
      2 using Api.Models;
      3 using Microsoft.AspNetCore.Mvc;
      4 using Shared;
      5 using Shared.Contracts;
      6 
      7 namespace Api.Controllers
      8 {
      9     [Route(Endpoints.Messages)]
     10     [ApiController]
     11     public class MessageController : ControllerBase
     12     {
     13         private readonly AppDbContext _context;
     14 
     15         public MessageController(AppDbContext context)
     16         {
     17             _context = context;
     18         }
     19 
     20         [HttpGet]
     21         public IActionResult Get()
     22         {
     23             var messageDataList = _context.Messages
     24                 .Select(x => new MessageData()
     25                 {
     26                     Sender = x.Name,
     27                     Content = x.Content,
     28                     TimeStamp = x.TimeStamp,
     29                     Id = x.Id,
     30                 })
     31                 .ToList()
     32                 .OrderBy(x => x.TimeStamp)
     33                 .ToList();
     34 
     35             var messageContract = new GetMessagesContract
     36             {
     37                 messages = messageDataList
     38             };
     39 
     40             return Ok(messageContract);
     41         }
     42 
     43         [HttpPost]
     44         public IActionResult Post([FromBody] MessageContract messageContract)
     45         {
     46             var key = messageContract.Key;
     47 
     48             if (key == Guid.Empty)
     49             {
     50                 return BadRequest("Key is required");
     51             }
     52 
     53             var tes = _context.Users.ToList();
     54 
     55             var test = _context.Users.FirstOrDefault(x => x.Key == key);
     56 
     57             if (!_context.Users.Any(x => x.Key == key))
     58             {
     59                 return BadRequest("Bad key");
     60             }
     61 
     62             var user = _context.Users.First(x => x.Key == key);
     63 
     64             var message = new Message
     65             {
     66                 Content = messageContract.Content,
     67                 Name = user.Name
     68             };
     69 
     70             if (message.Content.Length > 500 && message.Content.Length == 0)
     71             {
     72                 return BadRequest("Message must be between 1 - 500 characters");
     73             }
     74 
     75             _context.Messages.Add(message);
     76             _context.SaveChanges();
     77             return Ok($"Created message {message.Id}");
     78         }
     79 
     80         [HttpDelete("{id}")]
     81         public IActionResult Delete(Guid id)
     82         {
     83             var message = _context.Messages.Find(id);
     84 
     85             if (message == null) {
     86                 return NotFound($"Could not find message {id}");
     87             }
     88 
     89             _context.Messages.Remove(message);
     90             return Ok($"Removed message {id}");
     91         }
     92     }
     93 }