Пример #1
0
        public async Task <Unit> Handle(JudgingFinishedRequest request, CancellationToken cancellationToken)
        {
            // 此处两个请求大概率命中缓存,对性能影响不严重
            request.Contest = await Contests.FindAsync(request.ContestId);

            if (request.Contest.RankingStrategy == 1)
            {
                var probs = await Problems.ListAsync(request.ContestId);

                var prob = probs.SingleOrDefault(cp => cp.ProblemId == request.ProblemId);
                if (prob == null)
                {
                    return(Unit.Value);
                }
                request.CfScore = prob.Score;
            }

            var strategy = IRankingStrategy.SC[request.Contest.RankingStrategy];

            if (request.SubmitTime < (request.Contest.EndTime ?? DateTimeOffset.Now))
            {
                await(request.Judging.Status switch
                {
                    Verdict.Accepted => strategy.Accept(Context, request),
                    Verdict.CompileError => strategy.CompileError(Context, request),
                    _ => strategy.Reject(Context, request)
                });
Пример #2
0
        public async Task <IActionResult> CreateContest([Bind("ContestTitle,ContestText,ContestStartDate,ContestEndDate,Email")] Contests contest, IFormFile file)
        {
            //check if image is valid
            ValidImageUpload(file, "Contest");

            if (ModelState.IsValid)
            {
                //give new contest a unique id
                contest.ContestId = Guid.NewGuid();

                //add image to image folder if employee uploaded one
                if (file != null)
                {
                    //Add to Database
                    Images image = await TTLAddImage(file);

                    _context.Add(image);
                    await _context.SaveChangesAsync();

                    contest.ContestImageId = image.ImageId;
                }
                //set contest upload date
                contest.ContestUploadDate = DateTime.Now;
                contest.ContestEditDate   = DateTime.Now;
                _context.Add(contest);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(AllContests)));
            }
            return(View(contest));
        }
Пример #3
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,UrlVideo,Name,Describle,LinkRegis,role")] Contests contests)
        {
            if (id != contests.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(contests);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ContestsExists(contests.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(contests));
        }
Пример #4
0
        public ActionResult Contests()
        {
            BootBaronLib.AppSpec.DasKlub.BOL.VideoContest.Contests contests = new Contests();

            contests.GetAll();

            return View(contests);
        }
Пример #5
0
        /// <summary>
        /// 从数据库中移除给定的比赛数据实体。
        /// </summary>
        /// <param name="entity">要移除的比赛实体对象。</param>
        /// <exception cref="ArgumentNullException"/>
        public void RemoveContest(ContestEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            Contests.Remove(entity);
        }
Пример #6
0
        public ActionResult Contests()
        {
            var contests = new Contests();

            contests.GetAll();

            contests.Sort((p1, p2) => p2.BeginDate.CompareTo(p1.BeginDate));

            return View(contests);
        }
Пример #7
0
        /// <summary>
        /// 将给定的比赛实体数据添加至数据库中。
        /// </summary>
        /// <param name="entity">要添加的比赛实体。</param>
        /// <exception cref="ArgumentNullException"/>
        public void AddContest(ContestEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            Contests.Add(entity);
            SaveChanges();
        }
Пример #8
0
        public async Task <IActionResult> Create([Bind("Id,UrlVideo,Name,Describle,LinkRegis,role")] Contests contests)
        {
            if (ModelState.IsValid)
            {
                _context.Add(contests);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(contests));
        }
Пример #9
0
        /// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public void Dispose()
        {
            Contests.Dispose();
            ContestParticipants.Dispose();

            Horses.Dispose();
            HorseOwners.Dispose();
            Racecourses.Dispose();
            HorseFactories.Dispose();

            Jockeys.Dispose();
            Trainers.Dispose();
        }
Пример #10
0
        public ActionResult GetManagedContests(string Token, int?Page)
        {
            var user = CheckUser(Token);

            if (user == null)
            {
                return(Json(new Contests
                {
                    List = null,
                    Code = 500,
                    IsSuccess = false,
                    PageCount = -1,
                    Info = "AccessToken不正确"
                }));
            }
            if (Page == null)
            {
                Page = 0;
            }
            IQueryable <Entity.Contest> contests = (from c in DbContext.Contests
                                                    orderby c.End descending
                                                    select c);

            if (user.Role < Entity.UserRole.Master)
            {
                contests.Where(x => (from cm in x.Managers select cm.UserID).Contains(user.ID));
            }
            contests.Skip(10 * Page.Value).Take(10).ToList();
            var ret = new Contests()
            {
                Code = 0, IsSuccess = true, Info = "", PageCount = Convert.ToInt32(Math.Ceiling(DbContext.Contests.Count() / 10f)), List = new List <Contest>()
            };

            foreach (var contest in contests)
            {
                ret.List.Add(new Contest
                {
                    ContestID   = contest.ID,
                    Begin       = contest.Begin,
                    End         = contest.End,
                    Format      = contest.Format.ToString(),
                    FormatAsInt = contest.FormatAsInt,
                    RestBegin   = contest.RestBegin,
                    RestEnd     = contest.RestEnd,
                    Title       = contest.Title
                });
            }
            return(Json(ret));
        }
Пример #11
0
        public ActionResult GetContests(string Token, int?Page)
        {
            var user = CheckUser(Token);

            if (user == null)
            {
                return(Json(new Contests
                {
                    List = null,
                    Code = 500,
                    IsSuccess = false,
                    Info = "AccessToken不正确"
                }));
            }
            if (Page == null)
            {
                Page = 0;
            }
            var HistroyTime = Convert.ToDateTime("2014-8-1 0:00");
            var contests    = (from c in DbContext.Contests
                               where c.End >= HistroyTime
                               orderby c.End descending
                               select c).Skip(10 * Page.Value).Take(10).ToList();
            var ret = new Contests {
                Code = 0, IsSuccess = true, Info = "", PageCount = DbContext.Contests.Count() / 10 + 1, List = new List <Contest>()
            };

            foreach (var contest in contests)
            {
                ret.List.Add(new Contest
                {
                    ContestID   = contest.ID,
                    Begin       = contest.Begin,
                    End         = contest.End,
                    Format      = contest.Format.ToString(),
                    FormatAsInt = contest.FormatAsInt,
                    RestBegin   = contest.RestBegin,
                    RestEnd     = contest.RestEnd,
                    Title       = contest.Title
                });
            }
            return(Json(ret));
        }
Пример #12
0
        private static void VideoCount()
        {
            var vids = new Videos();
            var conts = new Contests();
            conts.GetAll();

            int count = 0;
            int totalVids = 0;

            foreach (Contest c1 in conts)
            {
                var cv = new ContestVideo();
                var cvs = new ContestVideos();
                cvs.GetContestVideosForContest(c1.ContestID);
                totalVids += cvs.Count;
                count += (from cv2 in cvs
                    select new Video(cv2.VideoID)
                    into v1
                    let doc = new XmlDocument()
                    select
                        Utilities.GETRequest(
                            new Uri("http://gdata.youtube.com/feeds/api/videos/" + v1.ProviderKey +
                                    @"?v=2&alt=json"))
                    into s
                    where !string.IsNullOrWhiteSpace(s)
                    select (JObject) JsonConvert.DeserializeObject(s)
                    into JObj
                    select JObj["entry"]
                    into entry
                    from thumbnail in entry["yt$statistics"]
                    where !thumbnail.ToString().Contains("fav")
                    select
                        Convert.ToInt32(thumbnail.ToString()
                            .Replace(@"""viewCount"": """, string.Empty)
                            .Replace(@"""", string.Empty))).Sum();
            }
        }
Пример #13
0
 public void AddContest(Contest contest)
 {
     Contests.Add(contest);
 }
Пример #14
0
        public async Task <IActionResult> EditContest(Guid id,
                                                      [Bind("ContestId,ContestTitle,ContestText,ContestStartDate,ContestEndDate,Email,ContestUploadDate,ContestImageId")] Contests contest,
                                                      IFormFile file, string contestStatus)
        {
            if (id != contest.ContestId)
            {
                return(NotFound());
            }

            if (contestStatus == "EditContest")
            {
                //check if image is valid
                ValidImageUpload(file, "Contest");

                if (ModelState.IsValid)
                {
                    Images oldImage = await _context.Images.Where(i => i.ImageId.Equals(contest.ContestImageId)).FirstOrDefaultAsync();

                    contest.ContestImageId = null;
                    //add image to image folder if employee uploaded one
                    if (file != null)
                    {
                        //Add to Database
                        Images image = await TTLAddImage(file);

                        _context.Add(image);
                        await _context.SaveChangesAsync();

                        contest.ContestImageId = image.ImageId;
                    }
                    //set contest edit date
                    contest.ContestEditDate = DateTime.Now;
                    try
                    {
                        _context.Update(contest);
                        if (oldImage != null)
                        {
                            TTLRemoveUnusedImage(contest.ContestImageId, oldImage);
                        }
                        await _context.SaveChangesAsync();
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        if (!ContestExists(contest.ContestId))
                        {
                            return(NotFound());
                        }
                        else
                        {
                            throw;
                        }
                    }
                    return(RedirectToAction(nameof(AllContests)));
                }
            }
            //Remove Image from Contest
            else
            {
                contest.ContestImageId = null;
            }
            return(View(contest));
        }
Пример #15
0
        private void LoadContests()
        {
            //
            var contests = new Contests();

            contests.GetAll();

            ddlContest.DataSource = contests;
            ddlContest.DataTextField = "name";
            ddlContest.DataValueField = "contestID";
            ddlContest.DataBind();

            ddlContest.Items.Add(new ListItem(unknownValue));

            ddlContest.SelectedValue = unknownValue;
        }
 /// <summary>
 /// 按比赛 ID 查询比赛实体对象。
 /// </summary>
 /// <param name="contestId">要查询的比赛 ID 。</param>
 /// <returns>
 /// 具有给定比赛 ID 值得比赛实体对象。若未在数据库中找到对应的比赛实体对象,返回 null 。
 /// </returns>
 public ContestEntity QueryContestById(int contestId)
 {
     return(Contests.Find(contestId));
 }