public HttpResponseMessage PostRecord(RecordPostModel model, [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var user = this.Data.Users.All().FirstOrDefault( x => x.SessionKey == sessionKey); if (user == null || sessionKey == string.Empty) { throw new InvalidOperationException("Invalid sessionKey"); } double categoryRank; var category = this.Data.Records.All().Where(x => x.UserId == user.Id). Select(x => x.Category).OrderByDescending(x => x.Rank).FirstOrDefault(); if (category != null) { categoryRank = category.Rank; } else { categoryRank = 0; } var nextCategory = this.Data.Categories.All(). Where(x => x.Level.Name == model.Level).FirstOrDefault(x => x.Rank == categoryRank + 1); var responseModel = new RecordResponseModel() { Id = null }; if (nextCategory != null) { var record = new Record() { Category = nextCategory, User = user, CoverLevel = this.Data.CoverLevels.All().Where(x => x.State == StateFail).FirstOrDefault() }; this.Data.Records.Add(record); this.Data.SaveChanges(); responseModel.Id = record.Id.ToString(); } var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel); return(response); }); return(responseMsg); }
public override async Task <IActionResult> HandleAsync(HttpRequest req, ILogger log) { string artist = req.Query["artist"]; string song = req.Query["song"]; RecordResponseModel result = await _recordService.SaveRecordAsync(artist, song); if (result != null) { log.LogInformation($"Created Artist: {result.Artist} with song {result.Song}"); return(new ObjectResult(result)); } return(new StatusCodeResult(StatusCodes.Status400BadRequest)); }