public LandRegistryResModel BuildResModel(ResponseOCWithSummaryV2_1Type response, string titleNumber = "titleNumber")
        {
            var model = new LandRegistryResModel();

            if (response.GatewayResponse.Acknowledgement != null)
            {
                model.Acknowledgement = GetAcknowledgement(response.GatewayResponse.Acknowledgement.AcknowledgementDetails);
                model.TitleNumber     = titleNumber;
            }
            else if (response.GatewayResponse.Rejection != null)
            {
                model.Rejection   = GetRejection(response.GatewayResponse.Rejection.RejectionResponse);
                model.TitleNumber = titleNumber;
            }
            else
            {
                var data = response.GatewayResponse.Results.OCSummaryData;
                model.Indicators = new List <string>();
                try {
                    FillSummaryData(model, data);
                } catch (Exception ex) {
                    ms_oLog.ErrorFormat("Error parsing lr data for title {0} {1}\n{2}", titleNumber, model.TitleNumber, ex);
                    model.Indicators.Add("Error parsing the data (tell dev)");
                }
            }
            return(model);
        }
        private void FillSummaryData(LandRegistryResModel model, Q1OCSummaryDataType data)
        {
            model.TitleNumber = data.Title.TitleNumber.Value;

            if (data.Title.CommonholdIndicator != null && data.Title.CommonholdIndicator.Value == false)
            {
                model.Indicators.Add(LandRegistryIndicatorText.CommonholdIndicator);
            }

            if (data.PricePaidEntry != null && data.PricePaidEntry.EntryDetails != null)
            {
                model.PricePaidInfills = GetInfills(data.PricePaidEntry.EntryDetails.Infills);
            }

            model.PropertyAddresses = GetAddresses(data.PropertyAddress);

            model.Proprietorship = new LandRegistryProprietorshipModel {
                CurrentProprietorshipDate = data.Proprietorship.CurrentProprietorshipDate != null?DateTime.SpecifyKind(data.Proprietorship.CurrentProprietorshipDate.Value, DateTimeKind.Utc) : (DateTime?)null,
                                                ProprietorshipParties = new List <ProprietorshipPartyModel>()
            };

            if (data.Proprietorship.Items != null)
            {
                for (int i = 0; i < data.Proprietorship.Items.Length; ++i)
                {
                    model.Proprietorship.ProprietorshipParties.Add(GetProprietorship(data.Proprietorship.Items[i], data.Proprietorship.ItemsElementName[i]));
                }
            }

            model.Restrictions = new List <LandRegistryRestrictionModel>();

            if (data.RestrictionDetails != null)
            {
                foreach (var restriction in data.RestrictionDetails)
                {
                    model.Restrictions.Add(GetRestriction(restriction));
                }
            }

            model.Indicators.AddRange(GetIndicators(data.RegisterEntryIndicators));

            model.Charges = new List <LandRegistryChargeModel>();
            if (data.Charge != null && data.Charge.Length > 0)
            {
                foreach (var charge in data.Charge)
                {
                    model.Charges.Add(GetCharge(charge));
                }
            }
        }