Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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"));
        }
Exemplo n.º 3
0
        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 }));
        }
Exemplo n.º 4
0
        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());
        }