public ActionResult Create( Problem problem )
        {
            if ( ModelState.IsValid )
            {
                problem.CreateDate = DateTime.UtcNow;
                problem.Description = HttpUtility.HtmlDecode( problem.Description );
                problem.Content = HttpUtility.HtmlDecode( problem.Content );

                db.Problems.Add( problem );
                db.SaveChanges();
                return RedirectToAction( "Index" );
            }

            ViewBag.ChallengeId = new SelectList( db.Challenges, "Id", "Name", problem.ChallengeId );
            return View( problem );
        }
        public YourProblem( Problem problem, int userId )
        {
            Entities db = new Entities();

            Problem = problem;

            CanOpen = Security.CanOpen( problem.Id, userId );
            CanSubmit = Security.CanSubmit( problem.Id, userId );

            Solving solving = db.Solvings.SingleOrDefault( s => s.ProblemId == problem.Id && s.UserId == userId );

            if ( solving == null )
            {
                Status = SolvingStatus.NOT_OPEN;
                return;
            }

            FirstAttempt = solving.FirstOpenTime;
            LastAttempt = solving.LastOpenTime;

            Submissions = db.Submissions.Where( s => s.SolvingId == solving.Id ).OrderByDescending( s => s.Time );

            if ( Submissions == null || Submissions.Count() == 0 )
            {
                Status = SolvingStatus.NOT_SUBMIT;
                return;
            }

            Submission firstResolved = Submissions.FirstOrDefault( s => s.Result != null && s.Result != 0 );

            if ( firstResolved == null )
                Status = SolvingStatus.NOT_RESOLVED;
            else
            {
                Status = SolvingStatus.RESOLVED;
                FirstResolved = firstResolved.Time;
            }
        }
        public ActionResult Edit( Problem problem )
        {
            if ( ModelState.IsValid )
            {
                problem.Description = HttpUtility.HtmlDecode( problem.Description );
                problem.Content = HttpUtility.HtmlDecode( problem.Content );

                db.Entry( problem ).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction( "Index" );
            }
            ViewBag.ChallengeId = new SelectList( db.Challenges, "Id", "Name", problem.ChallengeId );
            return View( problem );
        }