public async Task <IActionResult> PutContestStatus([FromRoute] int id, [FromBody] ContestStatus contestStatus)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != contestStatus.ContestStatusId)
            {
                return(BadRequest("Užklausos būsenos ID nesutampa su formoje esančiu būsenos ID"));
            }

            _context.Entry(contestStatus).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContestStatusExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #2
0
 public ContestBriefModel()
 {
     ContestId         = 0;
     Title             = string.Empty;
     StartTime         = DateTime.Now;
     EndTime           = DateTime.Now;
     AuthorizationMode = ContestAuthorizationMode.Private;
     ParticipationMode = ContestParticipationMode.Both;
     Status            = ContestStatus.Pending;
     Creator           = string.Empty;
 }
        public async Task <IActionResult> PostContestStatus([FromBody] ContestStatus contestStatus)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.ContestStatuses.Add(contestStatus);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetContestStatus", new { id = contestStatus.ContestStatusId }, contestStatus));
        }
Пример #4
0
        /// <summary>
        /// 将给定的 ContestStatus 枚举值转换为与其对应的字符串表示。
        /// </summary>
        /// <param name="value">ContestStatus 枚举值。</param>
        /// <returns>对应 ContestStatus 枚举值的字符串表示。</returns>
        /// <exception cref="ArgumentException"/>
        public static string ConvertToString(ContestStatus value)
        {
            switch (value)
            {
            case ContestStatus.Pending:
                return(PendingString);

            case ContestStatus.Running:
                return(RunningString);

            case ContestStatus.Ended:
                return(EndedString);

            default:
                throw new ArgumentException("传入的 ContestStatus 枚举值不合法。");
            }
        }
Пример #5
0
        /// <summary>
        /// Finishes the contest, no need to save
        /// </summary>
        public void Finish()
        {
            try
            {
                this.Status = ContestStatus.Finished;

                //Pick up the winners
                //var AllParticipants = TableHelper.SelectRows<ContestParticipant>
                //   (TableHelper.MakeDictionary("ContestId", this.Id));
                var AllParticipants = GetAllMembersParticipating();

                AllContestLatestWinners HistoryContestData = new AllContestLatestWinners();
                HistoryContestData.ContestId            = this.Id;
                HistoryContestData.NumberOfParticipants = AllParticipants.Count;

                AllParticipants.Sort(Comparison);

                string winner1 = "-";
                string winner2 = "-";
                string winner3 = "-";

                if (AllParticipants.Count > 0)
                {
                    winner1 = "OK";
                }
                if (AllParticipants.Count > 1)
                {
                    winner2 = "OK";
                }
                if (AllParticipants.Count > 2)
                {
                    winner3 = "OK";
                }

                Money ZeroMoney = new Money(0);

                if (winner1 == "OK")
                {
                    if (AllParticipants[0].Points == ZeroMoney)
                    {
                        winner1 = "-";
                    }
                    else
                    {
                        Member Winner1 = new Member(AllParticipants[0].Username);
                        ContestManager.AwardMember(Winner1, this.RewardType, this.Prize1Value, 1);
                        winner1 = Winner1.Name + ": " + ContestManager.GetPrizeProperObject(this.RewardType, this.Prize1Value).ToString() + " [%" + (int)this.RewardType + "%]";
                    }
                }
                if (winner2 == "OK")
                {
                    if (AllParticipants[1].Points == ZeroMoney)
                    {
                        winner2 = "-";
                    }
                    else
                    {
                        Member Winner2 = new Member(AllParticipants[1].Username);
                        ContestManager.AwardMember(Winner2, this.RewardType, this.Prize2Value, 2);
                        winner2 = Winner2.Name + ": " + ContestManager.GetPrizeProperObject(this.RewardType, this.Prize2Value).ToString() + " [%" + (int)this.RewardType + "%]";
                    }
                }
                if (winner3 == "OK")
                {
                    if (AllParticipants[2].Points == ZeroMoney)
                    {
                        winner3 = "-";
                    }
                    else
                    {
                        Member Winner3 = new Member(AllParticipants[2].Username);
                        ContestManager.AwardMember(Winner3, this.RewardType, this.Prize3Value, 3);
                        winner3 = Winner3.Name + ": " + ContestManager.GetPrizeProperObject(this.RewardType, this.Prize3Value).ToString() + " [%" + (int)this.RewardType + "%]";
                    }
                }

                //Save contest history data
                foreach (var elem in AllParticipants)
                {
                    HistoryContestData.Participants += elem.Username + "(" + elem.Points.GetRealTotals().ToString() + "), ";
                }
                HistoryContestData.Winner1 = winner1;
                HistoryContestData.Winner2 = winner2;
                HistoryContestData.Winner3 = winner3;
                HistoryContestData.Save();

                ContestLatestWinners.AddAndClean(this.Type, winner1, winner2, winner3);
                this.Save();

                //Clean the contest data (ContestParticipants)
                TableHelper.DeleteRows <ContestParticipant>(TableHelper.MakeDictionary("ContestId", this.Id));
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
            }
        }