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 }