public static MemberCreateStatus CreateChallenge(Member creator, ChallengeModel model, OnGameContext _db) { MemberCreateStatus success = MemberCreateStatus.UserRejected; try { DateTime date = DateTime.Parse(model.startDate); var gameModel = from g in _db.games where g.ID == model.gameID select g; Trace.WriteLine(gameModel.Count()); Game game = gameModel.First(); if (model.size == 1) // Player vs Player { _db.challenges.Add(new Challenge { homeID = creator.ID, size = model.size, gameID = game, price = model.price, startDate = date, comment = model.comment, endDate = DateTime.Now, status = 0 }); _db.SaveChanges(); Member newModel = _db.members.Find(creator.ID); newModel.solde -= model.price; _db.Entry(newModel).State = EntityState.Modified; _db.SaveChanges(); success = MemberCreateStatus.Success; } else // Team vs Team { _db.challenges.Add(new Challenge { homeID = model.teamID, size = model.size, gameID = game, price = model.price, startDate = date, comment = model.comment, endDate = DateTime.Now, status = 0 }); _db.SaveChanges(); Team newModel = _db.teams.Find(model.teamID); newModel.solde -= model.price; _db.Entry(newModel).State = EntityState.Modified; _db.SaveChanges(); success = MemberCreateStatus.Success; } } catch (Exception ex) { Trace.WriteLine(ex.StackTrace); } return success; }
public ActionResult CreateChallenge(ChallengeModel newChallenge) { if (Session["user"] != null) { if (ModelState.IsValid) { if((newChallenge.size == 1 && newChallenge.teamID == 0) || (newChallenge.size != 1 && newChallenge.teamID != 0)) { Boolean fundsClear = false; if (newChallenge.size == 1) { Trace.WriteLine(((Member)Session["user"]).solde); if (((Member)Session["user"]).solde >= newChallenge.price) { fundsClear = true; } } else { var teamModel2 = from t in db.teams where t.ID == newChallenge.teamID select t; Team currentTeam = teamModel2.First(); Trace.WriteLine(currentTeam.solde); if (currentTeam.solde >= newChallenge.price) { fundsClear = true; } } if(fundsClear){ Member user = (Member)Session["user"]; MemberCreateStatus createStatus; createStatus = ChallengeManager.CreateChallenge(user, newChallenge, db); if (createStatus == MemberCreateStatus.Success) { var _model = from c in db.challenges where c.homeID == user.ID select c; Session["user"] = db.members.Find(user.ID); Trace.WriteLine("Challenge has been created."); //return RedirectToAction("ChallengeDetails", "Challenge", new { id = chal.ID }); return RedirectToAction("ChallengeList", "Challenge"); } else { ModelState.AddModelError("", ErrorCodeToString(createStatus)); Trace.WriteLine("Challenge has not been created."); } } } } return RedirectToAction("CreateChallenge", "Challenge"); } return RedirectToAction("LogOn", "Account"); }