summaryrefslogtreecommitdiff
path: root/Project-Unite/Controllers/ContestsController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Project-Unite/Controllers/ContestsController.cs')
-rw-r--r--Project-Unite/Controllers/ContestsController.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/Project-Unite/Controllers/ContestsController.cs b/Project-Unite/Controllers/ContestsController.cs
index 4b41f91..143f885 100644
--- a/Project-Unite/Controllers/ContestsController.cs
+++ b/Project-Unite/Controllers/ContestsController.cs
@@ -26,5 +26,58 @@ namespace Project_Unite.Controllers
return new HttpStatusCodeResult(404);
return View(c);
}
+
+ [RequiresAdmin]
+ public ActionResult CloseContest(string id)
+ {
+ var db = new ApplicationDbContext();
+ var c = db.Contests.FirstOrDefault(x => x.Id == id);
+ if (c == null)
+ return new HttpStatusCodeResult(404);
+ c.EndsAt = DateTime.Now;
+ db.SaveChanges();
+ return RedirectToAction("Index");
+
+ }
+
+ [RequiresAdmin]
+ public ActionResult CreateContest()
+ {
+ var model = new CreateContestViewModel();
+ return View(model);
+ }
+
+ [RequiresAdmin]
+ [HttpPost]
+ [ValidateAntiForgeryToken]
+ public ActionResult CreateContest(CreateContestViewModel model)
+ {
+ if (!ModelState.IsValid)
+ return View(model);
+
+ var db = new ApplicationDbContext();
+
+ string allowed = "abcdefghijklmnopqrstuvwxyz_0123456789";
+
+ var c = new Contest();
+
+ c.Name = model.Name;
+ c.Description = model.Description;
+ c.StartedAt = DateTime.Now;
+ c.EndsAt = model.EndDate;
+ c.VideoId = model.VideoId;
+ string id = c.Name.ToLower() + "_" + db.Contests.Count();
+ foreach (char ch in id.ToCharArray())
+ if (!allowed.Contains(ch))
+ id = id.Replace(ch, '_');
+ c.Id = id;
+ c.CodepointReward1st = model.GoldReward;
+ c.CodepointReward2nd = model.SilverReward;
+ c.CodepointReward3rd = model.BronzeReward;
+ db.Contests.Add(c);
+ db.SaveChanges();
+
+ return RedirectToAction("ViewContest", new { id = c.Id });
+ }
}
} \ No newline at end of file