public async Task <IActionResult> SaveUserGameRating([FromBody] JObject vistorRatingUpdate) { try { VistorRatingUpdate _vistorRatingUpdate = JsonConvert.DeserializeObject <VistorRatingUpdate>(vistorRatingUpdate.ToString()); return(Ok(await boardGamesRepository.SaveUserGameRating(_vistorRatingUpdate))); } catch { return(BadRequest()); } }
// Visitor: Function to Update the Visitot Rating public async Task <List <SaveGameRatingResponse> > SaveUserGameRating(VistorRatingUpdate vistorRatingUpdate) { List <SaveGameRatingResponse> saveGameRatingResponse = new List <SaveGameRatingResponse>(); try { int VisitorId = 0; //Check New User exist in Database ? IQueryable <Visitor> visitor = _Context.Visitor.Where(x => string.Equals(x.EmailId, vistorRatingUpdate.VisitorInfo.EmailId.Trim()) && string.Equals(x.Fname, vistorRatingUpdate.VisitorInfo.Fname) && string.Equals(x.Lname, vistorRatingUpdate.VisitorInfo.LName)); if (visitor != null && visitor.Count() > 0) /////If visitor exist in database then { foreach (var gameRating in vistorRatingUpdate.gamesRatings) { IQueryable <VisitorGamesRating> visitorGamesRating = _Context.VisitorGamesRating .Where(x => x.GameId == gameRating.GameId && x.VisitorId == visitor.Select(y => y.VisitorId).FirstOrDefault()); if (visitorGamesRating != null && visitorGamesRating.Count() > 0) /// Visitor already has given rating angaist this game; { saveGameRatingResponse.Add( new SaveGameRatingResponse() { GameName = gameRating.GameName, UserGameRating = gameRating.Rating, Message = "Rating is exist for this visitor !" }); } else { VisitorGamesRating visitorGamesRatings = new VisitorGamesRating() { VisitorId = visitor.Select(y => y.VisitorId).FirstOrDefault(), GameId = gameRating.GameId, Rating = gameRating.Rating }; _Context.VisitorGamesRating.Add(visitorGamesRatings); _Context.SaveChanges(); saveGameRatingResponse.Add( new SaveGameRatingResponse() { GameName = gameRating.GameName, UserGameRating = gameRating.Rating, Message = "Successfully saved !" }); } } ; /// Loop end } else { var newVisitor = new Visitor() { EmailId = vistorRatingUpdate.VisitorInfo.EmailId, Fname = vistorRatingUpdate.VisitorInfo.Fname, Lname = vistorRatingUpdate.VisitorInfo.LName, }; _Context.Visitor.Add(newVisitor); _Context.SaveChanges(); VisitorId = newVisitor.VisitorId; if (VisitorId > 0) { List <VisitorGamesRating> visitorGamesRatings = vistorRatingUpdate.gamesRatings.Select(x => new VisitorGamesRating() { VisitorId = VisitorId, GameId = x.GameId, Rating = x.Rating }).ToList(); _Context.VisitorGamesRating.AddRange(visitorGamesRatings); _Context.SaveChanges(); saveGameRatingResponse = vistorRatingUpdate.gamesRatings.Select(x => new SaveGameRatingResponse() { GameName = x.GameName, UserGameRating = x.Rating, Message = "Successfully saved !" }).ToList(); } } return(saveGameRatingResponse); } catch (Exception ex) { return(saveGameRatingResponse); } }