AwesomeKiosk.Controllers.ApplicantController.Results C# (CSharp) Метод

Results() приватный Метод

private Results ( System.Web.Mvc.FormCollection collection ) : System.Web.Mvc.ActionResult
collection System.Web.Mvc.FormCollection
Результат System.Web.Mvc.ActionResult
        public ActionResult Results(FormCollection collection)
        {
            //True = passed questionaire
            //False = failed questionaire
               int results = 0;
               /*Grading Code
            *   Check all answers to determine there are no wrong answers
            *       Find the associated question, check that it isn't short answer.
            *       if it is short answer then check that the value isn't null or empty.
            *       if it isn't short answer check that the value matches the other value.
            *   if correct, save it
            *   otherwise, go to fail screen.
            */
            String[] collectionKeys = collection.AllKeys;
            var udContext = context.UserData_DbSet;
            var appcontext = context.CompletedApps_DbSet;
            var qcontext = context.Question_DbSet;

            bool pass = true;
            String collectionValue = "";
            for(int i = 0; i < collectionKeys.Length; i++)
            {
                String[] id = collectionKeys[i].Split('_');
                var q = qcontext.Find(Convert.ToInt32(id[2]));
                collectionValue = collection.GetValue(collectionKeys[i]).AttemptedValue;
                if( q != null )
                {
                    if( q.QuestionType == 0 && null == collectionValue)
                    {
                        pass = false;
                        break;
                    }
                    else if( q.QuestionType != 0 && q.CorrectAns != Convert.ToInt32(collectionValue) )
                    {
                        pass = false;
                        break;
                    }
                }
            }
            /* some psuedo code
             * try to do the following
             *      Insert the answers into the completed applications DbSet
             *      Parse through the list of answers and encapsulate it as a string as follows
             *                  A_<type>_<id>_<Input Answer>;A_<type>_<qsetid>_<id>_<Input Answer>;
             *      Save all the other session variables needed (userInformation)
             *      save the context
             *      Display win
             * if it fails display a page that says the application process failed and needs to be restarted.
             *      Don't do anything with the information
             *      Reinitialize the datamembers
             */
              /*Save data code.*/
            if (pass)
            {
                try
                {

                    List<String> userInformation = (List<String>)HttpContext.Session["userInformation"];

                    String appString = "";

                    List<int> selectedJobIds = (List<int>)HttpContext.Session["selectedJobIds"];
                    for (int i = 0; i < collectionKeys.Length; i++)
                    {
                        appString += collectionKeys[i] + "_" + collection.GetValue(collectionKeys[i]).AttemptedValue + ";";
                    }
                    String positions = "";
                    foreach(int i in selectedJobIds)
                    {
                        positions += context.Job_DbSet.Find(i).Position + ";";
                    }
                    UserData userdat;
                    if (userInformation.Count == 8)
                    {
                        userdat = new UserData
                        {
                            FirstName = userInformation[0],
                            LastName = userInformation[1],
                            Address = userInformation[2],
                            City = userInformation[3],
                            State = userInformation[4],
                            ZipCode = userInformation[5],
                            Email = userInformation[6],
                            Phone = userInformation[7]
                        };
                        udContext.Add(userdat);
                    context.SaveChanges();
                    CompletedApp cApp = new CompletedApp { UserDataId = userdat.UserDataId, Date = DateTime.Today.ToShortDateString(), Answers = appString, Status = "pending_review", Position = positions, Comments = "" };
                    appcontext.Add(cApp);
                    context.SaveChanges();
                    }
                }
                catch (Exception)
                {
                    results = -1;
                }
            }
            else
            {
                results = 1;
            }
            return View(results);
        }