public ActionResult PayBuyCreditsPartial([ModelBinder(typeof(DevExpressEditorsBinder))] Models.Credits item)
        {
            if (string.IsNullOrEmpty(Request.Params["PayerID"]))
            {
                var credits        = unitOfWork.CreditsRepo.Find(m => m.Id == item.Id);
                var guid           = Guid.NewGuid().ToString().ToLower().Replace("-", "");
                var createdPayment = paypalHelper.CreatePayment(guid, paypalHelper.BuyCredit(credits?.Credit));
                credits.PayId = createdPayment.id;
                unitOfWork.Save();
                Session.Add(guid, createdPayment.id);
                return(Redirect(
                           createdPayment.links.FirstOrDefault(m => m.rel.ToLower().Contains("approval_url"))?.href));
            }
            else
            {
                string paymentId = Session[Request.Params["guid"]].ToString();

                var payment = paypalHelper.ExecutePayment(Request.Params["PayerID"], paymentId);
                var credits = unitOfWork.CreditsRepo.Find(m => m.PayId == paymentId);
                credits.State      = "Paid";
                credits.AmountPaid = (0.05M + (credits.Credit * 0.05M));
                credits.PayBy      = User.Identity.GetUserId();
                credits.DatePaid   = DateTime.Now;
                unitOfWork.Save();
            }

            return(RedirectToAction("buycredit"));
        }
        public ActionResult BuyCreditsGridViewPartialAddNew([ModelBinder(typeof(DevExpressEditorsBinder))] Models.Credits item)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    item.State       = Request.Params["State"];
                    item.UserId      = User.Identity.GetUserId();
                    item.DateCreated = DateTime.Now;
                    item.Credit      = item.State == "Transfer" ? (-1 * item.Credit) : item.Credit;
                    unitOfWork.CreditsRepo.Insert(item);
                    unitOfWork.Save();
                    // Insert here a code to insert the new item in your model
                }
                catch (Exception e)
                {
                    ViewData["EditError"] = e.Message;
                }
            }
            else
            {
                ViewData["EditError"] = "Please, correct all errors.";
            }

            return(Redirect("/"));
        }
Beispiel #3
0
        public MenuHandler(ContentHolder content, int width, int height, Models.Highscores hs)
        {
            mainMenu = new Models.MainMenu(content, width, height);
            credits = new Models.Credits(content, width, height);
            options = new Models.Options(content, width, height);
            endMenu = new Models.EndMenu(content, width, height);
            leaderboards = new Models.Leaderboards(content, width, height, hs);

            sendScore = false;

            Active = true;

            exitGame = false;
        }
Beispiel #4
0
        public void OnGet()
        {
            var student = JsonConvert.DeserializeObject <Models.Student>(
                User.Claims.First(claim => claim.Type == "Information").Value);
            var kuasAp       = new Services.KUASAPService();
            var sysValueList = kuasAp.GetOptionValueList(student: student);
            var scores       = new List <Models.Score>();

            var subject = new Dictionary <string, List <Models.Score> >()
            {
                { "Get", new List <Models.Score>() },
                { "Miss", new List <Models.Score>() }
            };
            var generalEducation = new Dictionary <string, List <Models.Score> >()
            {
                { "Core", new List <Models.Score>() },
                { "Extend", new List <Models.Score>() }
            };

            for (int i = 0, countOfEmpty = 0; countOfEmpty < 10; i++)
            {
                var tmpScores = kuasAp.GetScores(student: student, year: sysValueList[i].SysYear, semester: sysValueList[i].SysSemester).Scores;
                if (tmpScores.Count <= 0)
                {
                    countOfEmpty++;
                }
                else
                {
                    scores.AddRange(tmpScores);
                    countOfEmpty = 0;
                }
            }
            if (scores.Count > 0)
            {
                foreach (Models.Score score in scores)
                {
                    if (!string.IsNullOrEmpty(score.SemesterScore))
                    {
                        if (score.SemesterScore == "合格")
                        {
                            subject["Get"].Add(score);
                        }
                        else if (score.SemesterScore.Contains("*") && score.IsRequired)
                        {
                            subject["Miss"].Add(score);
                        }
                        else if (score.SemesterScore.Contains("不合格") && score.IsRequired)
                        {
                            subject["Miss"].Add(score);
                        }
                        else if (float.Parse(score.SemesterScore) < 60)
                        {
                            subject["Miss"].Add(score);
                        }
                        else
                        {
                            subject["Get"].Add(score);
                            if (score.SubjectChineseName.Contains("核心通識"))
                            {
                                generalEducation["Core"].Add(score);
                            }
                            else if (score.SubjectChineseName.Contains("延伸通識"))
                            {
                                generalEducation["Extend"].Add(score);
                            }
                        }
                    }
                }
            }

            // 刪除課程中的通識課程
            subject["Get"].RemoveAll(x => x.SubjectChineseName.Contains("通識"));
            subject["Miss"].RemoveAll(x => x.SubjectChineseName.Contains("通識"));

            // 刪除重複已失去課程
            foreach (Models.Score score in subject["Miss"].ToArray())
            {
                // 建立暫存課程
                Models.Score temp = score;
                // 尋找是否有重複 (2 個以上) 項目
                if (subject["Miss"].FindAll(x => x.SubjectChineseName == temp.SubjectChineseName &&
                                            x.PropertiesCredit == temp.PropertiesCredit &&
                                            x.PropertiesRequiredOrElective == temp.PropertiesRequiredOrElective).Count > 1)
                {
                    // 若有則全數移除並重新加入
                    subject["Miss"].RemoveAll(x => x.SubjectChineseName == temp.SubjectChineseName &&
                                              x.PropertiesCredit == temp.PropertiesCredit &&
                                              x.PropertiesRequiredOrElective == temp.PropertiesRequiredOrElective);
                    subject["Miss"].Add(temp);
                }
            }

            // 重修已及格修正
            foreach (Models.Score score in subject["Get"].ToArray())
            {
                if (subject["Miss"].FindAll(x => x.SubjectChineseName == score.SubjectChineseName &&
                                            x.PropertiesCredit == score.PropertiesCredit &&
                                            x.PropertiesRequiredOrElective == score.PropertiesRequiredOrElective).Count > 0)
                {
                    subject["Miss"].RemoveAll(x => x.SubjectChineseName == score.SubjectChineseName &&
                                              x.PropertiesCredit == score.PropertiesCredit &&
                                              x.PropertiesRequiredOrElective == score.PropertiesRequiredOrElective);
                }
            }

            // 對 subject 做排序
            foreach (string key in subject.Keys.ToArray())
            {
                subject[key] = subject[key].OrderBy(x => float.Parse(x.PropertiesCredit))
                               .ThenBy(x => x.SubjectChineseName)
                               .ThenBy(x => float.Parse(x.TeachTime))
                               .ThenBy(x => x.PropertiesRequiredOrElective)
                               .ThenBy(x => x.ClassType)
                               .ThenBy(x => x.MidtermScore)
                               .ThenBy(x => x.SemesterScore)
                               .ThenBy(x => x.Remark).ToList();
            }
            // 對 generalEducation 以自定義做排序
            foreach (string key in generalEducation.Keys.ToArray())
            {
                generalEducation[key].Sort((x, y) => new OrderBySubjectChtName().Compare(x.SubjectChineseName, y.SubjectChineseName));
            }

            Credits = new Models.Credits()
            {
                Subject          = subject,
                GeneralEducation = generalEducation
            };
            // 已取得所有學分
            GetCredits = (int)subject["Get"].Sum(x => float.Parse(x.PropertiesCredit));
            // 已取得必修學分
            GetRequiredCredits = (int)subject["Get"].FindAll(x => x.IsRequired).Sum(x => float.Parse(x.PropertiesCredit));
            // 已取得選修學分
            GetNotRequiredCredits = (int)subject["Get"].FindAll(x => !x.IsRequired).Sum(x => float.Parse(x.PropertiesCredit));
            // 已失去必修學分
            MissRequiredCredits = (int)subject["Miss"].Sum(x => float.Parse(x.PropertiesCredit));
        }