public static ProblemsModelDetails GetProblem(int problemID)
        {
            if (Users == null)
            {
                Initialize();
            }
            ProblemsModelDetails problem     = new ProblemsModelDetails();
            ProblemsModelBase    baseProblem = Problems.FirstOrDefault(x => x.ProblemID == problemID);

            problem.ProblemID          = baseProblem.ProblemID;
            problem.ProblemName        = baseProblem.ProblemName;
            problem.ProblemDescription = baseProblem.ProblemDescription;
            problem.ProblemChildren    = GetChildProblems(problem.ProblemID);
            return(problem);
        }
        public static List <ProblemsModelDetails> GetChildProblems(int problemID)
        {
            if (Users == null)
            {
                Initialize();
            }
            List <ProblemsModelDetails> children   = new List <ProblemsModelDetails>();
            ProblemsModelList           parentBase = Problems.FirstOrDefault(x => x.ProblemID == problemID);

            if (parentBase.ProblemChildren != null)
            {
                foreach (ProblemChild child in parentBase.ProblemChildren)
                {
                    ProblemsModelDetails childDetails = new ProblemsModelDetails();
                    ProblemsModelBase    childBase    = Problems.FirstOrDefault(x => x.ProblemID == child.ProblemID);
                    childDetails.ProblemID          = child.ProblemID;
                    childDetails.ProblemName        = childBase.ProblemName;
                    childDetails.ProblemDescription = childBase.ProblemDescription;
                    childDetails.ProblemChildren    = GetChildProblems(child.ProblemID);
                    children.Add(childDetails);
                }
            }
            return(children);
        }