public async Task CreateUserPrediction(string userId, PredictionBindingModel model) { var user = await this.db.Users.FirstOrDefaultAsync(u => u.Id == userId); Prediction prediction = new Prediction { OwnerId = userId, }; await this.db.Predictions.AddAsync(prediction); await this.db.SaveChangesAsync(); foreach (var resultModel in model.MatchesResults) { await this.CreateMatchResultPrediction(prediction.Id, resultModel); } foreach (var groupWinnerModel in model.GroupWinners) { await this.CreateGroupWinnerPrediction(prediction.Id, groupWinnerModel); } user.PredictionId = prediction.Id; this.db.Users.Update(user); await this.db.SaveChangesAsync(); }
public async Task <IActionResult> UserPrediction(PredictionBindingModel model) { if (!this.ModelState.IsValid) { await this.PopulateTeamsLogos(model.MatchesResults.ToList()); return(this.View(model)); } var userId = this.userManager.GetUserId(this.User); await this.ps.CreateUserPrediction(userId, model); this.TempData["SuccessMsg"] = "Your prediction was submitted successfully."; return(this.RedirectToAction("UserPrediction")); }
public async Task <IActionResult> EditPrediction(PredictionBindingModel model) { if (!this.ModelState.IsValid) { return(this.View(model)); } var matchesResults = this.mapper .Map <ICollection <MatchResultBindingModel>, ICollection <MatchResultPrediction> >(model.MatchesResults); var groupWinners = this.mapper .Map <ICollection <GroupWinnerBindingModel>, ICollection <GroupWinnerPrediction> >(model.GroupWinners); await this.us.UpdateUserPrediction(matchesResults, groupWinners); this.TempData["SuccessMsg"] = "Prediction was updated successfully."; return(this.RedirectToAction("EditPrediction", new { predictionId = model.Id })); }
private async Task <PredictionBindingModel> GetPrePopulatedModel() { var matchesVm = this.mapper .Map <IEnumerable <Match>, IEnumerable <MatchResultBindingModel> >(this.ms.GetAllMatches()) .OrderBy(m => m.Match.Group.Name) .ThenBy(m => m.Match.Date) .ToList(); await this.PopulateTeamsLogos(matchesVm); var groupsVm = this.mapper .Map <IEnumerable <Group>, IEnumerable <GroupWinnerBindingModel> >(this.ts.GetAllGroups()) .OrderBy(x => x.Group.Name) .ToList(); var model = new PredictionBindingModel { MatchesResults = matchesVm, GroupWinners = groupsVm }; return(model); }
public async Task <IActionResult> Predict([FromBody] PredictionBindingModel collection) { if (string.IsNullOrWhiteSpace(collection?.Token)) { return(BadRequest(GeneralMessage.TokenNotFound)); } if (string.IsNullOrWhiteSpace(collection?.DeviceId)) { return(BadRequest(GeneralMessage.DeviceIdNotFound)); } if (collection.HomeClubScore < 0 || collection.AwayClubScore < 0) { return(BadRequest("امکان ثبت امتیاز منفی وجود ندارد")); } try { var model = _mapper.Map <MatchPredictSchema>(collection); await _matchService.Predict(model); switch (model.StatusCode) { case 1: return(Ok()); case -1: case -101: case -104: case -107: return(BadRequest(GeneralMessage.UserNotFound)); case -2: case -102: case -105: case -108: return(BadRequest(GeneralMessage.UserIsNotActive)); case -3: case -103: case -106: case -109: return(BadRequest(GeneralMessage.UserNotFound)); case -4: return(BadRequest("کاربر ناشناس")); case -5: return(BadRequest("رویداد یافت نشد")); case -6: return(BadRequest("رویداد فعال نمی باشد")); case -7: return(BadRequest("تاریخ شروع رویداد فرا نرسیده است")); case -8: return(BadRequest("مسابقه یافت نشد")); case -9: return(BadRequest("مسابقه فعال نمی باشد")); case -10: return(BadRequest("تاریخ مسابقه گذشته است")); case -11: return(BadRequest("تاریخ پیش بینی گذشته است")); case -12: return(BadRequest("تیم میزبان یافت نشد")); case -13: return(BadRequest("تیم میزبان فعال نمی باشد")); case -14: return(BadRequest("تیم میهمان یافت نشد")); case -15: return(BadRequest("تیم میهمان فعال نمی باشد")); case -16: return(BadRequest("بازیکن انتخاب شده یافت نشد")); case -17: return(BadRequest("بازیکن انتخاب شده فعال نمی باشد")); case -18: return(BadRequest("ارتباطی بین مسابقه و تیم ها یافت نشد")); case -19: return(BadRequest("شما تمام پیش بینی های خود را برای این مسابقه انجام داده اید")); } } catch (Exception ex) { await _exceptionService.InsertAsync(ex, URL, IP); } return(InternalServerError()); }