Beispiel #1
0
        public XmlDocument CheckPassHolderData(string surname, string forename, string dateOfBirth, string postcode, string ISRN)
        {
            if (log.IsInfoEnabled)
            {
                log.Info("Received request to search for cardholder data. ISRN:" + ISRN);
            }
            logParams(surname, forename, dateOfBirth, postcode, ISRN);
            // Call old method for now...
            //CTSelf_WS self = new CTSelf_WS();
            //return self.CheckPassHolderData(surname, forename, dateOfBirth, postcode, ISRN);

            // Redundant code here to be implemented with SmartCitizen switch.

            if (log.IsDebugEnabled)
            {
                log.Debug("Trimming spaces");
            }
            surname     = surname.Trim();
            forename    = forename.Trim();
            dateOfBirth = dateOfBirth.Trim();
            postcode    = postcode.Trim();
            ISRN        = ISRN.Trim();
            if (log.IsDebugEnabled)
            {
                log.Debug("Spaces Trimmed.");
            }

            XmlDocument responseDoc = new XmlDocument();

            responseDoc.Load(appDataPath + "CTSelfPassSearchResponse.xml");
            //Parse the DoB String
            DateTime parsedDob;

            if (log.IsDebugEnabled)
            {
                log.Debug("Parsing Date:" + dateOfBirth);
            }
            if (DateTime.TryParse(dateOfBirth, out parsedDob) == false)
            {
                throw new ArgumentException("Date: " + dateOfBirth + " is not a valid Date.");
            }
            //Validating a passholder on SC takes five steps if any of the first three fail, return a 'not found' response.:
            //1. Check Cardholder Exists
            try
            {
                if (log.IsDebugEnabled)
                {
                    log.Debug("Checking Cardholder Exists");
                }
                SmartCitizenConnector dataLayer = new SmartCitizenConnector();

                CTPassHolder[] searchResults;
                searchResults = dataLayer.SearchPassHolders(surname, forename, dateOfBirth, postcode,
                                                            ISRN);

                if (searchResults.Length == 0)
                {
                    //Search for an initial, but all other values match...
                    searchResults = dataLayer.SearchPassHolders(surname, forename[0].ToString(), dateOfBirth, postcode,
                                                                ISRN);
                }

                //No match found for initial. Search for forename, without DoB
                if (searchResults.Length == 0)
                {
                    searchResults = dataLayer.SearchPassHolders(surname, forename, String.Empty, postcode, ISRN);
                }

                // No match found for forename, no DoB. Search for initial without DoB
                if (searchResults.Length == 0)
                {
                    searchResults = dataLayer.SearchPassHolders(surname, forename[0].ToString(), String.Empty, postcode, ISRN);
                }

                //If we still have no unique matches, return a not found response.
                if (searchResults.Length == 0)
                {
                    return(responseDoc);
                }

                if (log.IsDebugEnabled)
                {
                    if (log.IsDebugEnabled)
                    {
                        log.Debug(searchResults.Length + " results returned");
                    }
                    if (log.IsDebugEnabled)
                    {
                        log.Debug("Output of results:");
                    }
                    foreach (CTPassHolder searchResult in searchResults)
                    {
                        try
                        {
                            if (log.IsDebugEnabled)
                            {
                                log.Debug(SerializeObj(searchResult));
                            }
                        }
                        catch (Exception ex)
                        {
                            if (log.IsErrorEnabled)
                            {
                                log.Error("Could not serialize object:" + ex.Message);
                            }
                        }
                    }
                }

                CTPassHolder passHolder = new CTPassHolder();
                for (int i = 0; i < searchResults.Length; i++)
                {
                    if (searchResults[i].CtPass.ISRN == ISRN)
                    {
                        passHolder = searchResults[i];
                    }
                    break;
                }


                if (passHolder.RecordID > 0)
                {
                    if (log.IsInfoEnabled)
                    {
                        log.Info("Result found for ISRN:" + ISRN);
                    }
                    if (log.IsDebugEnabled)
                    {
                        log.Debug("Passholder data and ISRN match. Returning Customer Data.");
                    }
                    if (log.IsDebugEnabled)
                    {
                        log.Debug("Passholder details:" + SerializeObj(passHolder));
                    }
                    //4. Return pass holder data:

                    responseDoc.SelectSingleNode("result/recordId").InnerText     = passHolder.RecordID.ToString();
                    responseDoc.SelectSingleNode("result/title").InnerText        = passHolder.Title;
                    responseDoc.SelectSingleNode("result/foreName").InnerText     = passHolder.FirstNameOrInitial;
                    responseDoc.SelectSingleNode("result/resultsFound").InnerText = "1";
                    //Reformat Dob to Firmstep pattern
                    if (passHolder.DateOfBirth != null)
                    {
                        responseDoc.SelectSingleNode("result/dob").InnerText = passHolder.DateOfBirth.Value.ToString("yyyy-MM-dd");
                    }

                    switch (passHolder.CtPass.PassType)
                    {
                    case CTPassType.Age:
                        responseDoc.SelectSingleNode("result/passType").InnerText = "Age";
                        break;

                    case CTPassType.Disabled:
                        responseDoc.SelectSingleNode("result/passType").InnerText         = "Disabled";
                        responseDoc.SelectSingleNode("result/disabledPassType").InnerText = "Permanent";


                        break;

                    case CTPassType.DisabledTemporary:
                        responseDoc.SelectSingleNode("result/passType").InnerText         = "Disabled";
                        responseDoc.SelectSingleNode("result/disabledPassType").InnerText = "Temporary";

                        break;
                    }

                    if (passHolder.DisabilityCategory != '\0')
                    {
                        responseDoc.SelectSingleNode("result/disabilityCategory").InnerText =
                            passHolder.DisabilityCategory.ToString();
                    }


                    responseDoc.SelectSingleNode("result/expiryDate").InnerText =
                        passHolder.CtPass.ExpiryDate.ToString("yyyy-MM-dd");

                    responseDoc.SelectSingleNode("result/gender").InnerText = passHolder.Gender;

                    if (passHolder.PhotoAssociated == 'Y')
                    {
                        responseDoc.SelectSingleNode("result/hasPhoto").InnerText             = "true";
                        responseDoc.SelectSingleNode("result/passHolderPhotograph").InnerText =
                            Convert.ToBase64String(passHolder.PhotographBytes);
                    }
                    else
                    {
                        responseDoc.SelectSingleNode("result/hasPhoto").InnerText = "false";
                    }


                    if (passHolder.PostCode != String.Empty)
                    {
                        responseDoc.SelectSingleNode("result/SCpostcode").InnerText = passHolder.PostCode;
                    }

                    responseDoc.SelectSingleNode("result/searchISRN").InnerText     = ISRN;
                    responseDoc.SelectSingleNode("result/searchSurname").InnerText  = surname;
                    responseDoc.SelectSingleNode("result/searchPostcode").InnerText = postcode;
                }
                else
                {
                    if (log.IsDebugEnabled)
                    {
                        log.Debug("Supplied pass number does not match passholder's latest pass number.");
                    }
                    if (log.IsInfoEnabled)
                    {
                        log.Info("No results found for ISRN:" + ISRN);
                    }
                }
            }
            catch (Exception ex)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error(ex.Message);
                }
                return(responseDoc);
            }

            if (log.IsDebugEnabled)
            {
                log.Debug("Returning Pass Data:" + responseDoc.OuterXml);
            }
            if (log.IsDebugEnabled)
            {
                log.Debug("Exiting");
            }
            return(responseDoc);
        }
Beispiel #2
0
        public XmlDocument UpdateAndRenewPass(int RecordId, string Title, string ForeName, string Gender, string DateOfBirth, string DisabilityCategory, int caseNumber)
        {
            if (log.IsInfoEnabled)
            {
                log.Info("Request to renew pass received for RecordID [" + RecordId + "]*");
            }
            logParams(RecordId, Title, ForeName, DateOfBirth, DisabilityCategory, caseNumber);
            if (log.IsDebugEnabled)
            {
                log.Debug("Gender:" + Gender);
            }
            if (log.IsDebugEnabled)
            {
                log.Debug("Initialising response document.");
            }
            XmlDocument response = new XmlDocument();

            if (log.IsDebugEnabled)
            {
                log.Debug("Response document initialised.");
            }
            if (log.IsDebugEnabled)
            {
                log.Debug("Initialising connection to the data layer");
            }
            CT_DataLayerSoapClient dataLayer = new CT_DataLayerSoapClient();

            if (log.IsDebugEnabled)
            {
                log.Debug("Data Layer initialised.");
            }

            if (log.IsDebugEnabled)
            {
                log.Debug("Retrieving existing record By ID.");
            }
            CTPassHolder existingPassHolderRecord = dataLayer.RetrieveDataByID(RecordId);

            if (log.IsDebugEnabled)
            {
                log.Debug("Passholder retrieved. Updating record.");
            }
            try
            {
                if (existingPassHolderRecord.Title != Title)
                {
                    existingPassHolderRecord.Title = Title;
                }
                if (existingPassHolderRecord.FirstNameOrInitial.Length <= 1)
                {
                    existingPassHolderRecord.FirstNameOrInitial = ForeName;
                }

                if (log.IsDebugEnabled)
                {
                    log.Debug("Passholder Gender before tampering:" + existingPassHolderRecord.Gender);
                }
                if (existingPassHolderRecord.Gender != Gender)
                {
                    existingPassHolderRecord.Gender = Gender;
                }

                if (existingPassHolderRecord.DateOfBirth != DateTime.Parse(DateOfBirth))
                {
                    existingPassHolderRecord.DateOfBirth = DateTime.Parse(DateOfBirth);
                }


                if (DisabilityCategory != String.Empty)
                {
                    existingPassHolderRecord.DisabilityCategory = DisabilityCategory[0];
                }
                existingPassHolderRecord.CtPass.ExpiryDate = calculateNewExpiryDate(existingPassHolderRecord.CtPass.PassType, DateOfBirth, String.Empty);
                if (log.IsDebugEnabled)
                {
                    log.Debug("Pass Holder Record updated. Saving to Data Layer.");
                }
            }
            catch (Exception ex)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("Error updating existing pass record for recordID [" + RecordId + "]");
                }
                if (log.IsErrorEnabled)
                {
                    log.Error(ex.Message);
                }
                response.LoadXml("<result>Fail</result>");
                return(response);
            }

            if (log.IsDebugEnabled)
            {
                log.Debug("Existing Gender:" + existingPassHolderRecord.Gender);
            }
            dataLayer.UpdateAndRenewPass(existingPassHolderRecord, caseNumber);

            if (log.IsInfoEnabled)
            {
                log.Info("Pass renew request processed. Returning response.");
            }
            response.LoadXml("<result>Success</result>");
            return(response);
        }