Exemple #1
0
        public static CreateQuoteResponse CreateSubscribeRecord(Quote q, Submission s, ILogHandler logHandler, IPolicyService subsribeService)
        {
            var insuredList = new InsuredCollection();

            if (q.AdditionalInsuredList != null)
            {
                insuredList.AddRange(q.AdditionalInsuredList
                                     .Select(insured => new Insured
                {
                    AddlInsdId = insured.InsuredId,
                    AddlInsdNm = insured.InsuredId == 0 ? insured.InsuredName : null,
                    AddlInsdTy = insured.InsuredType
                }));
            }

            var policyContract = new PolicyContract
            {
                AccYr                 = q.AccountYear.ToString(),
                BenchPrm              = q.BenchmarkPremium,
                BindSt                = q.TechnicalPricingBindStatus,
                BkrNo                 = "???",             // TODO - not referenced in CreateQuote sp
                BkrPsu                = q.BrokerPseudonym, // No validation carried out in service validation sp
                BkrSeqId              = q.BrokerSequenceId,
                Brokerage             = q.Brokerage,
                COB                   = q.COBId,
                DeclineReason         = q.DeclinatureReason,
                DOM                   = q.Domicile,
                EntSt                 = q.EntryStatus,
                ExpyDt                = (q.ExpiryDate.HasValue) ? q.ExpiryDate.Value.ToString("yyyyMMdd") : null,
                ExsAmt                = q.ExcessAmount,
                FacyPolId             = (String.IsNullOrEmpty(q.RenPolId) ? q.FacilityRef : String.Empty),
                LdrNo                 = q.LeaderNo,
                Ldr                   = q.Leader,
                IncpDt                = (q.InceptionDate.HasValue) ? q.InceptionDate.Value.ToString("yyyyMMdd") : null,
                InsdId                = q.InsuredId,
                InsdNm                = q.InsuredName,
                AddlInsuredCollection = insuredList,
                LmtAmt                = q.LimitAmount,
                LmtCcy                = q.LimitCCY,
                MOA                   = q.MOA,
                OrigOff               = q.OriginatingOfficeId,
                PolTy                 = q.PolicyType,
                PricingCcy            = q.Currency,
                RenPolId              = q.RenPolId,
                Status                = q.SubmissionStatus,
                TechPrm               = q.TechnicalPremium,
                UnitPsu               = "AGY",
                Uwr                   = q.UnderwriterCode,
                ExsCcy                = q.ExcessCCY,
                Method                = q.TechnicalPricingMethod,
                NonLonBkr             = q.NonLondonBrokerCode,
                PctgAmt               = q.TechnicalPricingPremiumPctgAmt,

                TechPmTy = "TechPm",     // TODO - not referenced in CreateQuote sp
                PolDsc   = q.Description,

                //  These are the fields required for edit only
                TimeStamp = q.SubscribeTimestamp,
                PolId     = q.SubscribeReference,

                // PolAnlyCd
                // TODO: Update this win value from form.
                WordReqd  = (string.IsNullOrEmpty(q.WordingRequired)) ? "" : q.WordingRequired,
                AggsReqd  = (string.IsNullOrEmpty(q.AggsRequired)) ? "" : q.AggsRequired,
                FSA_Class = (string.IsNullOrEmpty(q.FSAClass)) ? "" : q.FSAClass,

                CtcNm = q.BrokerContact,
                //CtcTelNo = q.BrokerContactPhone,
                //CtcEmail = q.BrokerContactEmail
            };

            if (q.QuoteExpiryDate != null)
            {
                policyContract.SettDueDt = SetSettlementDueDate(q.QuoteExpiryDate.Value, s.ExpiryDateOffset, q.InceptionDate);
            }
            if (!string.IsNullOrEmpty(q.BrokerContactPhone))
            {
                policyContract.CtcTelNo = q.BrokerContactPhone;
            }
            if (!string.IsNullOrEmpty(q.BrokerContactEmail))
            {
                policyContract.CtcEmail = q.BrokerContactEmail;
            }

            if (q.RenewalRate.HasValue)
            {
                policyContract.RenewalRate = q.RenewalRate;
            }
            if (q.RenewalConditions.HasValue)
            {
                policyContract.RenewalConditions = q.RenewalConditions;
            }
            if (q.RenewalDeductibles.HasValue)
            {
                policyContract.RenewalDeductibles = q.RenewalDeductibles;
            }
            if (q.RenewalExposure.HasValue)
            {
                policyContract.RenewalExposurePctg = q.RenewalExposure;
            }
            if (q.RenewalBase.HasValue)
            {
                policyContract.RenewalBase = q.RenewalBase;
            }
            if (q.RenewalFull.HasValue)
            {
                policyContract.RenewalFull = q.RenewalFull;
            }

            var createQuoteResponse = subsribeService.CreateQuote(new CreateQuoteRequest
            {
                objPolicyContract = policyContract
            });

            if (createQuoteResponse.CreateQuoteResult.ErrorInfo == null)
            {
                q.SubscribeReference = createQuoteResponse.objInfoCollection.PolId;

                var doc = new XmlDocument();

                doc.LoadXml(createQuoteResponse.CreateQuoteResult.OutputXml);

                var subscribeTimestamp = default(long);

                q.SubscribeTimestamp = long.TryParse(doc.GetElementsByTagName("TimeStamp")[0].InnerText,
                                                     out subscribeTimestamp)
                                                   ? subscribeTimestamp
                                                   : 0;

                SyncQuoteCreateAndUpdate(s, q, subsribeService);
            }
            else
            {
                logHandler.WriteLog(createQuoteResponse.CreateQuoteResult.ErrorInfo.ErrorXML, LogSeverity.Error,
                                    LogCategory.BusinessComponent);

                throw new ApplicationException(
                          string.IsNullOrEmpty(createQuoteResponse.CreateQuoteResult.ErrorInfo.Description)
                                    ? ParseDetailedError(createQuoteResponse.CreateQuoteResult.ErrorInfo.DetailedDescription)
                                    : createQuoteResponse.CreateQuoteResult.ErrorInfo.Description);
            }

            return(createQuoteResponse);
        }
        public static UpdatePolicyResponse UpdateSubscribeRecord(Quote q, Submission s, ILogHandler logHandler, IPolicyService subsribeService)
        {
            var insuredList = new InsuredCollection();
            if (s.AdditionalInsuredList != null)
            {
                insuredList.AddRange(s.AdditionalInsuredList
                                      .Select(insured => new Insured
                                      {
                                          AddlInsdId = insured.InsuredId,
                                          AddlInsdNm = insured.InsuredId == 0 ? insured.InsuredName : null,
                                          AddlInsdTy = insured.InsuredType
                                      }));
            }

            var policyContract = new PolicyContract
            {
                AccYr = q.AccountYear.ToString(),
                BenchPrm = q.BenchmarkPremium,
                BindSt = q.TechnicalPricingBindStatus,
                BkrNo = "???", // TODO - not referenced in CreateQuote sp
                BkrPsu = s.BrokerPseudonym, // No validation carried out in service validation sp
                BkrSeqId = s.BrokerSequenceId,
                Brokerage = s.Brokerage,
                COB = q.COBId,
                DeclineReason = q.DeclinatureReason,
                DOM = s.Domicile,
                EntSt = q.EntryStatus,
                ExpyDt = (q.ExpiryDate.HasValue) ? q.ExpiryDate.Value.ToString("yyyyMMdd") : null,
                ExsAmt = q.ExcessAmount,
                FacyPolId = q.FacilityRef,
                LdrNo = s.LeaderNo,
                Ldr = s.Leader,
                IncpDt = (q.InceptionDate.HasValue) ? q.InceptionDate.Value.ToString("yyyyMMdd") : null,
                InsdId = s.InsuredId,
                InsdNm = s.InsuredName,
                AddlInsuredCollection = insuredList,
                LmtAmt = q.LimitAmount,
                LmtCcy = q.LimitCCY,
                MOA = q.MOA,
                OrigOff = q.OriginatingOfficeId,
                PolTy = q.PolicyType,
                PricingCcy = q.Currency,
                RenPolId = q.RenPolId,
                Status = q.SubmissionStatus,
                TechPrm = q.TechnicalPremium,
                UnitPsu = "AGY",
                Uwr = s.UnderwriterCode,
                ExsCcy = q.ExcessCCY,
                Method = q.TechnicalPricingMethod,
                NonLonBkr = s.NonLondonBrokerCode,
                PctgAmt = q.TechnicalPricingPremiumPctgAmt,
                SettDueDt = q.QuoteExpiryDate.ToString("yyyyMMdd"),
                TechPmTy = "TechPm", // TODO - not referenced in CreateQuote sp
                PolDsc = q.Description,

                //  These are the fields required for edit only
                TimeStamp = q.SubscribeTimestamp,
                PolId = q.SubscribeReference,

                CtcNm = (string.IsNullOrEmpty(s.BrokerContact)) ? s.NewBrokerContactName : s.BrokerContact,
                CtcTelNo = s.NewBrokerContactPhoneNumber,
                CtcEmail = s.NewBrokerContactEmail
            };

            if (q.RenewalRate.HasValue) policyContract.RenewalRate = q.RenewalRate;
            if (q.RenewalConditions.HasValue) policyContract.RenewalConditions = q.RenewalConditions;
            if (q.RenewalDeductibles.HasValue) policyContract.RenewalDeductibles = q.RenewalDeductibles;
            if (q.RenewalExposure.HasValue) policyContract.RenewalExposurePctg = q.RenewalExposure;
            if (q.RenewalBase.HasValue) policyContract.RenewalBase = q.RenewalBase;
            if (q.RenewalFull.HasValue) policyContract.RenewalFull = q.RenewalFull;

            var updateResp = subsribeService.UpdatePolicy(new UpdatePolicyRequest
            {
                objPolicyContract = policyContract
            });
          
            if (updateResp.UpdatePolicyResult.ErrorInfo == null)
            {
                
                    var doc = new XmlDocument();

                    doc.LoadXml(updateResp.UpdatePolicyResult.OutputXml);

                    q.SubscribeTimestamp = long.Parse(doc.GetElementsByTagName("TimeStamp")[0].InnerText);

                    q.FacilityRef = string.IsNullOrEmpty(doc.GetElementsByTagName("NewFacyPolId")[0].InnerText)
                                        ? q.FacilityRef
                                        : doc.GetElementsByTagName("NewFacyPolId")[0].InnerText;
               
               
            }
            else
            {
                logHandler.WriteLog(updateResp.UpdatePolicyResult.ErrorInfo.ErrorXML, LogSeverity.Error,
                                     LogCategory.BusinessComponent);

                throw new ApplicationException(
                    string.IsNullOrEmpty(updateResp.UpdatePolicyResult.ErrorInfo.Description)
                        ? ParseDetailedError(updateResp.UpdatePolicyResult.ErrorInfo.DetailedDescription)
                        : updateResp.UpdatePolicyResult.ErrorInfo.Description);
            }

            return updateResp;
        }
        public static CreateQuoteResponse CreateSubscribeRecord(Quote q, Submission s, ILogHandler logHandler, IPolicyService subsribeService)
        {
            var insuredList = new InsuredCollection();
            if (q.AdditionalInsuredList != null)
            {
                insuredList.AddRange(q.AdditionalInsuredList
                                      .Select(insured => new Insured
                                          {
                                              AddlInsdId = insured.InsuredId,
                                              AddlInsdNm = insured.InsuredId == 0 ? insured.InsuredName : null,
                                              AddlInsdTy = insured.InsuredType
                                          }));
            }

            var policyContract = new PolicyContract
                {
                    AccYr = q.AccountYear.ToString(),
                    BenchPrm = q.BenchmarkPremium,
                    BindSt = q.TechnicalPricingBindStatus,
                    BkrNo = "???", // TODO - not referenced in CreateQuote sp
                    BkrPsu = q.BrokerPseudonym, // No validation carried out in service validation sp
                    BkrSeqId = q.BrokerSequenceId,
                    Brokerage = q.Brokerage,
                    COB = q.COBId,
                    DeclineReason = q.DeclinatureReason,
                    DOM = q.Domicile,
                    EntSt = q.EntryStatus,
                    ExpyDt = (q.ExpiryDate.HasValue) ? q.ExpiryDate.Value.ToString("yyyyMMdd") : null,
                    ExsAmt = q.ExcessAmount,
                    FacyPolId = (String.IsNullOrEmpty(q.RenPolId) ? q.FacilityRef : String.Empty),
                    LdrNo = q.LeaderNo,
                    Ldr = q.Leader,
                    IncpDt = (q.InceptionDate.HasValue) ? q.InceptionDate.Value.ToString("yyyyMMdd") : null,
                    InsdId = q.InsuredId,
                    InsdNm = q.InsuredName,
                    AddlInsuredCollection = insuredList,
                    LmtAmt = q.LimitAmount,
                    LmtCcy = q.LimitCCY,
                    MOA = q.MOA,
                    OrigOff = q.OriginatingOfficeId,
                    PolTy = q.PolicyType,
                    PricingCcy = q.Currency,
                    RenPolId = q.RenPolId,
                    Status = q.SubmissionStatus,
                    TechPrm = q.TechnicalPremium,
                    UnitPsu = "AGY",
                    Uwr = q.UnderwriterCode,
                    ExsCcy = q.ExcessCCY,
                    Method = q.TechnicalPricingMethod,
                    NonLonBkr = q.NonLondonBrokerCode,
                    PctgAmt = q.TechnicalPricingPremiumPctgAmt,
                    
                    TechPmTy = "TechPm", // TODO - not referenced in CreateQuote sp
                    PolDsc = q.Description,

                    //  These are the fields required for edit only
                    TimeStamp = q.SubscribeTimestamp,
                    PolId = q.SubscribeReference,  

                    // PolAnlyCd
                    // TODO: Update this win value from form.
                    WordReqd = (string.IsNullOrEmpty(q.WordingRequired)) ? "" : q.WordingRequired,
                    AggsReqd = (string.IsNullOrEmpty(q.AggsRequired)) ? "" : q.AggsRequired,
                    FSA_Class = (string.IsNullOrEmpty(q.FSAClass)) ? "" : q.FSAClass,

					CtcNm = q.BrokerContact,
                    //CtcTelNo = q.BrokerContactPhone,
                    //CtcEmail = q.BrokerContactEmail
                };
            if (q.QuoteExpiryDate != null)
                policyContract.SettDueDt = SetSettlementDueDate(q.QuoteExpiryDate.Value, s.ExpiryDateOffset, q.InceptionDate);
            if (!string.IsNullOrEmpty(q.BrokerContactPhone)) policyContract.CtcTelNo = q.BrokerContactPhone;
            if (!string.IsNullOrEmpty(q.BrokerContactEmail)) policyContract.CtcEmail = q.BrokerContactEmail;

            if (q.RenewalRate.HasValue) policyContract.RenewalRate = q.RenewalRate;
            if (q.RenewalConditions.HasValue) policyContract.RenewalConditions = q.RenewalConditions;
            if (q.RenewalDeductibles.HasValue) policyContract.RenewalDeductibles = q.RenewalDeductibles;
            if (q.RenewalExposure.HasValue) policyContract.RenewalExposurePctg = q.RenewalExposure;
            if (q.RenewalBase.HasValue) policyContract.RenewalBase = q.RenewalBase;
            if (q.RenewalFull.HasValue) policyContract.RenewalFull = q.RenewalFull;

            var createQuoteResponse = subsribeService.CreateQuote(new CreateQuoteRequest
                {
                    objPolicyContract = policyContract
                });

            if (createQuoteResponse.CreateQuoteResult.ErrorInfo == null)
            {
                q.SubscribeReference = createQuoteResponse.objInfoCollection.PolId;

                var doc = new XmlDocument();

                doc.LoadXml(createQuoteResponse.CreateQuoteResult.OutputXml);
                
				var subscribeTimestamp = default(long);

	            q.SubscribeTimestamp = long.TryParse(doc.GetElementsByTagName("TimeStamp")[0].InnerText,
	                                                 out subscribeTimestamp)
		                                   ? subscribeTimestamp
		                                   : 0;

                SyncQuoteCreateAndUpdate(s, q, subsribeService);
            }
            else
            {
                logHandler.WriteLog(createQuoteResponse.CreateQuoteResult.ErrorInfo.ErrorXML, LogSeverity.Error,
                                     LogCategory.BusinessComponent);

	            throw new ApplicationException(
		            string.IsNullOrEmpty(createQuoteResponse.CreateQuoteResult.ErrorInfo.Description)
			            ? ParseDetailedError(createQuoteResponse.CreateQuoteResult.ErrorInfo.DetailedDescription)
			            : createQuoteResponse.CreateQuoteResult.ErrorInfo.Description);
            }

            return createQuoteResponse;
        }