Example #1
0
        public async Task <IActionResult> OnGetAsync(int id)
        {
            Solution = await _db.Solutions.FindAsync(id);

            if (Solution == null)
            {
                return(RedirectToPage("/Index"));
            }

            return(Page());
        }
Example #2
0
        public ActionResult ClassWorkProblem()
        {
            var problem = this.Data.Problems.All()
                .FirstOrDefault(p => p.ProblemType == ProblemType.Classwork &&
                p.ProblemStatus == ProblemStatus.Active);

            if (problem != null)
            {
                string loggeduserId = this.User.Identity.GetUserId();

                var userSoludtion = this.Data.Solutions.All().FirstOrDefault(
                    s => s.ProblemId == problem.Id && s.UserId == loggeduserId);

                if (userSoludtion != null)
                {
                    return RedirectToAction("Index", "Home");
                }

                var func = new Function(problem.Function, problem.Function2);

                ViewBag.func = FunctionParser.GetDisplayFunction(func);

                var dbMistakes = this.Data.Mistakes
                    .All()
                    .Where(m => m.ProblemId == problem.Id).ToList();

                Common.Mistake[] mistakes = new Common.Mistake[4];

                for (int i = 0; i < dbMistakes.Count(); i++)
                {
                    mistakes[i] = new Common.Mistake(
                        dbMistakes.ElementAt(i).MistakenProduct,
                        dbMistakes.ElementAt(i).MistakenValue,
                        dbMistakes.ElementAt(i).IndexOfX,
                        dbMistakes.ElementAt(i).DisplayProduct);
                }

                for (int i = 0; i < mistakes.Length; i++)
                {
                    ViewBag.func += "</br> T" + (i + 1) + " => " + mistakes[i].DisplayProduct + " = " +
                                    mistakes[i].MistakenValue;
                }

                var existingSolution = FunctionParser.Solve(func, mistakes);
                var viewModel = new Models.Solution(existingSolution, problem.Id);
                return View(viewModel);
            }

            return RedirectToAction("Index", "Home");
        }
Example #3
0
 public ActionResult TruthTable(int[,] firstTable, int[,] secondTable)
 {
     var model = new Models.Solution(firstTable, secondTable);
     return View(model);
 }
Example #4
0
        public ActionResult Exercise()
        {
            string loggedUserId = User.Identity.GetUserId();

            var existingProblem = this.Data.Problems
                .All().FirstOrDefault(p => p.UserId == loggedUserId &&
                    p.ProblemType == ProblemType.Train &&
                    p.ProblemStatus == ProblemStatus.Active);

            if (existingProblem != null)
            {
                var func = new Function(existingProblem.Function, existingProblem.Function2);

                ViewBag.func = FunctionParser.GetDisplayFunction(func);

                var existingMistakes = this.Data.Mistakes
                    .All()
                    .Where(m => m.ProblemId == existingProblem.Id).ToList();

                Common.Mistake[] existingMistakesForSolution = new Common.Mistake[4];

                for (int i = 0; i < existingMistakes.Count(); i++)
                {
                    existingMistakesForSolution[i] = new Common.Mistake(
                        existingMistakes.ElementAt(i).MistakenProduct,
                        existingMistakes.ElementAt(i).MistakenValue,
                        existingMistakes.ElementAt(i).IndexOfX,
                        existingMistakes.ElementAt(i).DisplayProduct);
                }

                for (int i = 0; i < existingMistakesForSolution.Length; i++)
                {
                    ViewBag.func += "</br> T" + (i + 1) + " => " + existingMistakesForSolution[i].DisplayProduct + " = " +
                                    existingMistakesForSolution[i].MistakenValue;
                }

                var existingSolution = FunctionParser.Solve(func, existingMistakesForSolution);
                var viewModel = new Models.Solution(existingSolution, existingProblem.Id);
                return View(viewModel);
            }

            function = FunctionParser.Generate();
            Common.Mistake[] mistakes = FunctionParser.GenerateMistakes(function);

            ViewBag.func = FunctionParser.GetDisplayFunction(function);

            for (int i = 0; i < mistakes.Length; i++)
            {
                ViewBag.func += "</br> T" + (i + 1) + " => " + mistakes[i].DisplayProduct + " = " +
                                mistakes[i].MistakenValue;
            }

            var solution = FunctionParser.Solve(function, mistakes);

            ViewBag.table1 = solution.FirstTable;

            if (solution.SecondTable != null)
            {
                ViewBag.table2 = solution.SecondTable;
            }

            Problem problem = new Problem(
                loggedUserId,
                this.function.Function1,
                this.function.Function2,
                ProblemType.Train,
                ProblemStatus.Active
                );

            this.Data.Problems.Add(problem);
            this.Data.SaveChanges();

            for (int i = 0; i < mistakes.Length; i++)
            {
                NDKS.Models.Mistake newMistake =
                    new NDKS.Models.Mistake(
                        problem.Id,
                        mistakes[i].MistakenProduct,
                        mistakes[i].MistakenValue,
                        mistakes[i].IndexOfX,
                        mistakes[i].DisplayProduct);

                this.Data.Mistakes.Add(newMistake);
            }

            this.Data.SaveChanges();

            var solutionModel = new Models.Solution(solution, problem.Id);

            return View(solutionModel);
        }