public ActionResult PassportInputForm(SuperPassportModel superPassportModel, string PassportAction)
        {
            List <RequestDetails> requestDetails = superPassportModel.RequestDetails;

            IEnumerable <RequestDetails> requestdetails = superPassportModel.RequestDetails;
            string retVal = "";

            switch (PassportAction)
            {
            case "CountryCountRefresh":

                //Form is submitted when the user selects the number of countries
                List <PassportDetails> passportDetails = new List <PassportDetails>();
                string sex = (superPassportModel.StaffADProfile.gender.Equals(1)) ? SEX_FEMALE: SEX_MALE;

                for (int i = 0; i < superPassportModel.StaffADProfile.countryCount; i++)
                {
                    PassportDetails pDetails = new PassportDetails();
                    pDetails.entry_key            = "";
                    pDetails.passportAuthority    = "";
                    pDetails.passportDateOfExpiry = "";
                    pDetails.passportDateOfIssue  = "";
                    pDetails.passportNationality  = "";
                    pDetails.passportNumber       = "";
                    pDetails.passportOtherNames   = "";
                    pDetails.passportPlaceOfBirth = "";
                    pDetails.passportSex          = sex;
                    pDetails.passportSurname      = "";
                    pDetails.passportType         = "P";
                    pDetails.passportDateOfBirth  = superPassportModel.StaffADProfile.dob;
                    pDetails.Nationality          = SelectListItemHelper.GetCountries();
                    passportDetails.Add(pDetails);
                }

                superPassportModel.PassportDetails = passportDetails;
                break;

            case "Deny":
                // Good. let's send this f@*ker back
                //requestDetails.Select(c => { c.entry_key = c.employee_number + "_" + superPassportModel.StaffADProfile.appperiod + "_" + superPassportModel.StaffADProfile.branch_code; return c; }).ToList();
                requestDetails.Select(c => { c.workflowid = superPassportModel.WorkflowID; return(c); }).ToList();

                // SAVE the value to the DATABASE
                requestdetails = superPassportModel.RequestDetails;
                //dataTable = DataHandlers.ToDataTable(requestdetails);

                //retVal = new AppDatabase().inputPassportEntries(dataTable, superPassportModel, "AppraisalDbConnectionString", DENIED_STATUS);

                if (retVal != null)
                {
                    TempData["UploadComplete"]     = "false";
                    TempData["ErrorMessage"]       = retVal;
                    TempData["superPassportModel"] = superPassportModel;
                }
                else
                {
                    //String.format(SUMBMITTEDMSG)--add the approvers
                    var approvers = LINQCalls.getApproverNames(superPassportModel.WorkflowID, -1);
                    TempData["PostBackMessage"] = DENIEDMSG;
                    TempData["Approvers"]       = string.Join("\\n", approvers.ToArray());
                    return(RedirectToAction("AwaitingMyApproval", "AwaitingApproval"));
                }
                break;

            case "Submit":
                if (ModelState.IsValid)
                {
                    if (!checkVlaidFileTypes(superPassportModel.PassportDetails))
                    {
                        ViewBag.ErrorMessage = "Invalid file type. Only \"pdf\" files are supported.";
                        //TempData["superPassportModel"] = superPassportModel;
                    }
                    else
                    {
                        IEnumerable <PassportDetails> _passportDetails = superPassportModel.PassportDetails;
                        _passportDetails.Select(c => { c.entry_key = superPassportModel.StaffADProfile.employee_number + "_" + c.passportNumber.ToUpper(); return(c); }).ToList();
                        _passportDetails.Select(c => { c.passportFileName = c.passportUpload.FileName; return(c); }).ToList();

                        _passportDetails.Select(c => { c.passportNumber = c.passportNumber.ToUpper();       return(c); }).ToList();
                        _passportDetails.Select(c => { c.passportSurname = c.passportSurname.ToUpper();      return(c); }).ToList();
                        _passportDetails.Select(c => { c.passportOtherNames = c.passportOtherNames.ToUpper();   return(c); }).ToList();
                        _passportDetails.Select(c => { c.passportPlaceOfBirth = c.passportPlaceOfBirth.ToUpper(); return(c); }).ToList();
                        _passportDetails.Select(c => { c.passportAuthority = c.passportAuthority.ToUpper();    return(c); }).ToList();

                        _passportDetails.Select(c => { c.passportContentType = c.passportUpload.ContentType; return(c); }).ToList();
                        _passportDetails.Select(c => {
                            Stream fs           = c.passportUpload.InputStream;
                            BinaryReader br     = new BinaryReader(fs);
                            byte[] bytes        = br.ReadBytes((Int32)fs.Length);
                            c.passportFileBytes = bytes;
                            return(c);
                        }).ToList();

                        DataTable dataTable = new DataTable();
                        dataTable = DataHandlers.ToDataTable(_passportDetails);

                        string _retVal = new AppDatabase().inputPassportEntries(dataTable, superPassportModel, "AppraisalDbConnectionString", SUBMIT_STATUS);

                        if (_retVal != null)
                        {
                            TempData["UploadComplete"]     = "false";
                            TempData["ErrorMessage"]       = _retVal;
                            TempData["superPassportModel"] = superPassportModel;
                        }
                        else
                        {
                            int newstageid = 0;
                            switch (superPassportModel.RequestStageID)
                            {
                            case 0:
                                newstageid = 3;
                                break;

                            case -1:
                                newstageid = 3;
                                break;

                            case 3:
                                newstageid = 20;
                                break;

                            case 20:
                                newstageid = 100;
                                break;
                            }

                            var approvers = LINQCalls.getHRApproverNames(superPassportModel.WorkflowID, newstageid);
                            TempData["PostBackMessage"] = SUMBMITTEDMSG;
                            TempData["Approvers"]       = string.Join("\\n", approvers.ToArray());
                            return(RedirectToAction("AwaitingMyApproval", "AwaitingApproval"));
                        }
                    }
                }
                break;
            }

            //superPassportModel.RequestDetails = requestDetails;
            TempData["superPassportModel"] = superPassportModel;
            return(RedirectToAction("PassportInputForm"));
        }