Ejemplo n.º 1
0
        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));
        }