public async Task <IActionResult> GetMessages(int pageNumber = 1, int pageSize = 10) { try { var totalCount = _context.MessageRecord.Count(); var totalPages = (int)Math.Ceiling((double)totalCount / pageSize); var messages = _context.MessageRecord.Include(m => m.User).Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList(); var urlHelper = new UrlHelper(this.ControllerContext); var currentRequestUrl = this.HttpContext.Request.GetUri(); var userid = SiteAuthorizationExtensions.DecryptUserId(Request.Headers["Authorization"]); var newToken = SiteAuthorizationExtensions.CreateJwtToken(userid); this.Response.Headers.Add("Authorization", "Bearer " + newToken); // Build new document. var document = JsonApiUtil.WriteDocumentForMessagesGetResponse(pageNumber, pageSize, currentRequestUrl, urlHelper, totalPages, messages); // Return 200 OK // Note: WebApi JsonMediaTypeFormatter serializes the JSON API document into JSON. return(this.Ok(document)); } catch (Exception e) { return(StatusCode(500, new { title = "Something went wrong, please try again." })); } }
public async Task <IActionResult> PostMessage([FromBody] ResourceDocument document) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var token = SiteAuthorizationExtensions.GetTokenFromHeader(Request.Headers["Authorization"]); var userid = SiteAuthorizationExtensions.DecryptUserId(token); var message = JsonApiUtil.GetMessageFromMesasgesPostRequest(document); if (string.IsNullOrWhiteSpace(message)) { return(StatusCode(422, new { title = "Field data error." })); } var messageRecord = new MessageRecord() { UserId = int.Parse(userid), Message = message, CreatedAt = DateTime.Now }; _context.MessageRecord.Add(messageRecord); await _context.SaveChangesAsync(); messageRecord.User = _context.User.FirstOrDefault(u => u.Id == messageRecord.UserId); var newToken = SiteAuthorizationExtensions.CreateJwtToken(userid); this.Response.Headers.Add("Authorization", "Bearer " + newToken); var currentRequestUrl = this.HttpContext.Request.GetUri(); // Build new document. var newDocument = JsonApiUtil.WriteDocumentForMessagesPostResponse(currentRequestUrl, messageRecord); return(Created(currentRequestUrl.AbsoluteUri, newDocument)); } catch (Exception e) { return(StatusCode(500, new { title = "Something went wrong, please try again." })); } }
public async Task <IActionResult> Create([FromBody] ResourceDocument document) { try { var username = CreateRandomUsername(); var user = new User() { UserName = username }; _context.User.Add(user); await _context.SaveChangesAsync(); var token = SiteAuthorizationExtensions.CreateJwtToken(user.Id.ToString()); this.Response.Headers.Add("Authorization", "Bearer " + token); var session = new Session() { Id = user.Id, CreatedAt = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"), User = user }; var currentRequestUrl = this.HttpContext.Request.GetUri(); // Build new document. var newDocument = JsonApiUtil.WriteDocumentForSessionsPostResponse(currentRequestUrl, session); return(Created(currentRequestUrl.AbsoluteUri, newDocument)); } catch (Exception e) { return(StatusCode(500, new { title = "Something went wrong, please try again." })); } }