public ActionResult Add()
        {
            ContestBasicInfoModel model = new ContestBasicInfoModel
            {
                Owner1 = USER.CurrentUserName,
                StartTime = DateTime.Now,
                Hour = 0,
                Minute = 0,
                Weight = 16
            };

            return View(model);
        }
        public ActionResult Add(ContestBasicInfoModel model)
        {
            if (!ModelState.IsValid) return View(model);
            List<string> owners = new List<string>();
            owners.Add(USER.CurrentUserName);
            if (model.Owner2 != null)
                owners.Add(model.Owner2);
            if (model.Owner3 != null)
                owners.Add(model.Owner3);
            try
            {
                Contest.Add(new Contest
                {
                    AbsoluteStartTime = model.StartTime.Value,
                    AbsoluteEndTime = model.StartTime.Value + new TimeSpan(model.Hour.Value, model.Minute.Value, 0),
                    Description = "",
                    IsOfficial = model.IsOfficial,
                    Name = model.Name,
                    Type = model.Type.Value,
                    Owners = owners,
                    Weight = model.Weight
                });
            }
            catch (UserNotLoginException)
            {
                throw;
            }
            catch (PermissionDeniedException)
            {
                return RedirectToAction("Error", "Shared", new { msg = "没有创建比赛的相关权限" });
            }
            catch (ContestNameExistedException)
            {
                ModelState.AddModelError("Name", "比赛名称已存在");
                return View(model);
            }

            return RedirectToAction("Preview", new { id = model.Name });
        }
        public ActionResult Edit(string id, ContestBasicInfoModel model)
        {
            if (!ModelState.IsValid) return View(model);
            List<string> owners = new List<string>();
            owners.Add(USER.CurrentUserName);
            if (model.Owner2 != null)
                owners.Add(model.Owner2);
            if (model.Owner3 != null)
                owners.Add(model.Owner3);
            try
            {
                Contest con = Contest.ByName(id);
                con.AbsoluteStartTime = model.StartTime.Value;
                con.AbsoluteEndTime = model.StartTime.Value + new TimeSpan(model.Hour.Value, model.Minute.Value, 0);
                con.IsOfficial = model.IsOfficial;
                con.Name = model.Name;
                con.Type = model.Type.Value;
                con.Owners = owners;
                con.Weight = model.Weight;
                con.Change();
                model.Name = con.Name;
            }
            catch (ContestNotFoundException)
            {
                return RedirectToAction("Error", "Shared", new { msg = "找不到相应比赛" });
            }
            catch (UserNotLoginException)
            {
                throw;
            }
            catch (PermissionDeniedException)
            {
                return RedirectToAction("Error", "Shared", new { msg = "没有修改比赛信息的相关权限" });
            }
            catch (ContestNameExistedException)
            {
                ModelState.AddModelError("Name", "比赛名称已存在");
                return View(model);
            }

            return RedirectToAction("Preview", new { id = model.Name });
        }
 public ActionResult Edit(string id)
 {
     ContestBasicInfoModel model = new ContestBasicInfoModel
     {
         Contest = id,
     };
     try
     {
         Contest con = Contest.ByName(id);
         model.Hour = (int)(con.AbsoluteEndTime - con.AbsoluteStartTime).TotalHours;
         model.Minute = (con.AbsoluteEndTime - con.AbsoluteStartTime).Minutes;
         model.IsOfficial = con.IsOfficial;
         model.Name = con.Name;
         if (USER.CurrentUserIsAdmin)
         {
             model.Owner1 = USER.CurrentUserName;
         }
         else
         {
             model.Owner1 = USER.CurrentUserName;
         }
         var otherOwners = con.Owners.Where(u => u != USER.CurrentUserName);
         model.Owner2 = otherOwners.FirstOrDefault();
         model.Owner3 = otherOwners.Skip(1).FirstOrDefault();
         model.StartTime = con.AbsoluteStartTime;
         model.Type = con.Type;
         model.Weight = con.Weight;
     }
     catch (ContestNotFoundException)
     {
         return RedirectToAction("Error", "Shared", new { msg = "找不到相应比赛" });
     }
     return View(model);
 }