public async void SendMatchSms(List <MatchSms> Ids) { List <SmsContainer> message = new List <SmsContainer>(); foreach (var m in Ids) { bool shoulSendSms = LocalDefault.ShouldSendSms(Configuration, m.DateLastSms, m.MatchedDate); if (shoulSendSms) { var txtmsgTemplate = string.Empty; string othersCount = string.Empty; PaymentRepository _pay = new PaymentRepository(Configuration); _pay.GetPaymentInfo(m.PaymentId.ToString()); //Language lang = _pay.Language.ToLower() == "en" || _pay.Language.ToLower() == "english" || _pay.Language.ToLower() == "primary" ? Language.Primary : Language.Secondary; ImisSms sms = new ImisSms(Configuration, WebRootPath, ContentRootPath, _pay.Language); if (_pay.PaymentId != null) { if (_pay.InsureeProducts.Count > 1) { txtmsgTemplate = sms.GetMessage("PaidAndNotMatchedV2"); othersCount = Convert.ToString(_pay.InsureeProducts.Count - 1); } else { txtmsgTemplate = sms.GetMessage("PaidAndNotMatched"); } var familyproduct = _pay.InsureeProducts.FirstOrDefault(); var txtmsg = string.Format(txtmsgTemplate, _pay.PaidAmount, DateTime.UtcNow.ToLongDateString(), _pay.ControlNum, familyproduct.InsureeNumber, familyproduct.InsureeName, familyproduct.ProductCode, familyproduct.ProductName, othersCount); message.Add(new SmsContainer() { Message = txtmsg, Recipient = _pay.PhoneNumber }); _pay.UnMatchedSmsSent(m.PaymentId); } else { throw new Exception(); } var fileName = "PayNotMatched_"; string test = await sms.SendSMS(message, fileName); } } }
private void SetLanguage(IntentOfPay intent) { var languages = LocalDefault.PrimaryLanguageRepresentations(_configuration); if (intent.language == null || languages.Contains(intent.language.ToLower())) { UserLanguage = ePayment.Models.Language.Primary; } else { UserLanguage = ePayment.Models.Language.Secondary; } }
public void GetPaymentInfo(string Id) { var sSQL = @"SELECT tblPayment.PaymentID, tblPayment.ExpectedAmount,tblPayment.LanguageName,tblPayment.TypeOfPayment, tblPaymentDetails.ExpectedAmount AS ExpectedDetailAmount, tblPayment.ReceivedAmount, tblPayment.PaymentDate, tblInsuree.LastName, tblInsuree.OtherNames,tblPaymentDetails.InsuranceNumber,tblPayment.PhoneNumber, tblProduct.ProductName, tblPaymentDetails.ProductCode, tblPolicy.ExpiryDate, tblPolicy.EffectiveDate,tblControlNumber.ControlNumber,tblPolicy.PolicyStatus, tblPolicy.PolicyValue - ISNULL(mp.PrPaid,0) Outstanding FROM tblControlNumber RIGHT OUTER JOIN tblInsuree RIGHT OUTER JOIN tblProduct RIGHT OUTER JOIN tblPayment INNER JOIN tblPaymentDetails ON tblPayment.PaymentID = tblPaymentDetails.PaymentID ON tblProduct.ProductCode = tblPaymentDetails.ProductCode ON tblInsuree.CHFID = tblPaymentDetails.InsuranceNumber ON tblControlNumber.PaymentID = tblPayment.PaymentID LEFT OUTER JOIN tblPremium LEFT OUTER JOIN tblPolicy LEFT OUTER JOIN ( select P.PolicyID PolID, SUM(P.Amount) PrPaid from tblpremium P inner join tblPaymentDetails PD ON PD.PremiumID = P.PremiumId INNER JOIN tblPayment Pay ON Pay.PaymentID = PD.PaymentID where P.ValidityTo IS NULL AND Pay.PaymentStatus = 5 GROUP BY P.PolicyID ) MP ON MP.PolID = tblPolicy.PolicyID ON tblPremium.PolicyID = tblPolicy.PolicyID ON tblPaymentDetails.PremiumID = tblPremium.PremiumId WHERE (tblPayment.PaymentID = @PaymentID) AND (tblProduct.ValidityTo IS NULL) AND (tblInsuree.ValidityTo IS NULL)"; SqlParameter[] parameters = { new SqlParameter("@PaymentID", Id) }; try { var data = dh.GetDataTable(sSQL, parameters, CommandType.Text); if (data.Rows.Count > 0) { var row1 = data.Rows[0]; PaymentId = Id; ControlNum = row1["ControlNumber"] != System.DBNull.Value ? Convert.ToString(row1["ControlNumber"]) : null; ExpectedAmount = row1["ExpectedAmount"] != System.DBNull.Value ? Convert.ToDecimal(row1["ExpectedAmount"]) : 0; var language = row1["LanguageName"] != System.DBNull.Value ? Convert.ToString(row1["LanguageName"]) : "en"; var languages = LocalDefault.PrimaryLangReprisantations(Configuration); if (language == null || languages.Contains(language.ToLower())) { Language = Language.Primary; } else { Language = Language.Secondary; } typeOfPayment = row1["TypeOfPayment"] != System.DBNull.Value ? (TypeOfPayment?)Enum.Parse(typeof(TypeOfPayment), Convert.ToString(row1["TypeOfPayment"]), true) : null; PhoneNumber = row1["PhoneNumber"] != System.DBNull.Value ? Convert.ToString(row1["PhoneNumber"]) : null; PaymentDate = (DateTime?)(row1["PaymentDate"] != System.DBNull.Value ? row1["PaymentDate"] : null); PaidAmount = (decimal?)(row1["ReceivedAmount"] != System.DBNull.Value ? row1["ReceivedAmount"] : null); OutStAmount = (decimal?)(row1["Outstanding"] != System.DBNull.Value ? row1["Outstanding"] : null); InsureeProducts = new List <InsureeProduct>(); for (int i = 0; i < data.Rows.Count; i++) { var rw = data.Rows[i]; bool active = false; if (rw["PolicyStatus"] != System.DBNull.Value && Convert.ToInt32(rw["PolicyStatus"]) == 2) { active = true; } var othernames = rw["OtherNames"] != System.DBNull.Value ? Convert.ToString(rw["OtherNames"]) : null; var lastname = rw["LastName"] != System.DBNull.Value ? Convert.ToString(rw["LastName"]) : null; InsureeProducts.Add( new InsureeProduct() { InsureeNumber = rw["InsuranceNumber"] != System.DBNull.Value ? Convert.ToString(rw["InsuranceNumber"]) : null, InsureeName = othernames + " " + lastname, ProductName = rw["ProductName"] != System.DBNull.Value ? Convert.ToString(rw["ProductName"]) : null, ProductCode = rw["ProductCode"] != System.DBNull.Value ? Convert.ToString(rw["ProductCode"]) : null, ExpiryDate = (DateTime?)(rw["ExpiryDate"] != System.DBNull.Value ? rw["ExpiryDate"] : null), EffectiveDate = (DateTime?)(rw["EffectiveDate"] != System.DBNull.Value ? rw["EffectiveDate"] : null), PolicyActivated = active, ExpectedProductAmount = rw["ExpectedDetailAmount"] != System.DBNull.Value ? Convert.ToDecimal(rw["ExpectedDetailAmount"]) : 0 } ); } } else { throw new DataException("3-Wrong Control Number"); } } catch (Exception e) { throw e; } }
public DataMessage SaveIntent(IntentOfPay _intent, int?errorNumber = 0, string errorMessage = null) { var Proxyfamily = LocalDefault.FamilyMembers(Configuration); List <PaymentDetail> policies = new List <PaymentDetail>(); if (_intent.policies != null) { policies = _intent.policies; } XElement PaymentIntent = new XElement("PaymentIntent", new XElement("Header", new XElement("OfficerCode", _intent.enrolment_officer_code), new XElement("RequestDate", _intent.request_date), new XElement("PhoneNumber", _intent.phone_number), new XElement("LanguageName", _intent.language), new XElement("AuditUserId", -1) ), new XElement("Details", policies.Select(x => new XElement("Detail", new XElement("InsuranceNumber", x.insurance_number), new XElement("ProductCode", x.insurance_product_code), new XElement("EnrollmentDate", DateTime.UtcNow), new XElement("IsRenewal", x.IsRenewal()) ) ) ), new XElement("ProxySettings", new XElement("AdultMembers", Proxyfamily.Adults), new XElement("ChildMembers", Proxyfamily.Children), new XElement("OAdultMembers", Proxyfamily.OtherAdults), new XElement("OChildMembers", Proxyfamily.OtherChildren) ) ); SqlParameter[] sqlParameters = { new SqlParameter("@Xml", PaymentIntent.ToString()), new SqlParameter("@ErrorNumber", errorNumber), new SqlParameter("@ErrorMsg", errorMessage), new SqlParameter("@PaymentID", SqlDbType.Int) { Direction = ParameterDirection.Output }, new SqlParameter("@ExpectedAmount", SqlDbType.Decimal) { Direction = ParameterDirection.Output }, new SqlParameter("@ProvidedAmount", _intent.amount_to_be_paid), new SqlParameter("@PriorEnrollment", LocalDefault.PriorEnrolmentRequired(Configuration)) }; DataMessage message; try { bool error = true; var data = dh.ExecProcedure("uspInsertPaymentIntent", sqlParameters); var rv = int.Parse(data[2].Value.ToString()); if (rv == 0) { error = false; } DataTable dt = new DataTable(); dt.Clear(); dt.Columns.Add("internal_identifier"); dt.Columns.Add("control_number"); DataRow rw = dt.NewRow(); var PaymentId = data[0].Value.ToString(); rw["internal_identifier"] = PaymentId; dt.Rows.Add(rw); ExpectedAmount = decimal.Parse(data[1].Value.ToString()); var languages = LocalDefault.PrimaryLangReprisantations(Configuration); if (_intent.language == null || languages.Contains(_intent.language.ToLower())) { Language = Language.Primary; } else { Language = Language.Secondary; } message = new SaveIntentResponse(rv, error, dt, (int)Language).Message; GetPaymentInfo(PaymentId); } catch (Exception e) { message = new SaveIntentResponse(e).Message; } return(message); }
public void GetPaymentInfo(int Id) { var sSQL = @"DECLARE @MatchedPoliciesInPayment TABLE (PolicyId int) INSERT INTO @MatchedPoliciesInPayment SELECT DISTINCT(Premium.PolicyId) FROM tblPayment AS Payment INNER JOIN tblPaymentDetails AS PaymentDetails ON PaymentDetails.PaymentID=Payment.PaymentID INNER JOIN tblPremium AS Premium ON Premium.PremiumID=PaymentDetails.PremiumID WHERE (Payment.PaymentID = @PaymentID) SELECT Payment.PaymentID, Payment.ExpectedAmount, Payment.LanguageName, Payment.TypeOfPayment, Payment.SmsRequired, PaymentDetails.ExpectedAmount AS ExpectedDetailAmount, Payment.ReceivedAmount, Payment.PaymentDate, Insuree.LastName, Insuree.OtherNames, PaymentDetails.InsuranceNumber, Payment.PhoneNumber, Payment.PayerPhoneNumber, Product.ProductName, PaymentDetails.ProductCode, Policy.ExpiryDate, Policy.EffectiveDate, ControlNumber.ControlNumber, Policy.PolicyStatus, Policy.PolicyValue - ISNULL(MatchPayments.PrPaid,0) Outstanding, CASE WHEN Region.LocationId IS NULL THEN District.LocationName ELSE Region.LocationName END AS Location FROM tblPayment AS Payment LEFT JOIN tblPaymentDetails AS PaymentDetails ON PaymentDetails.PaymentID=Payment.PaymentID LEFT JOIN tblInsuree AS Insuree ON Insuree.CHFID=PaymentDetails.InsuranceNumber LEFT JOIN tblProduct AS Product ON Product.ProductCode=PaymentDetails.ProductCode LEFT JOIN tblLocations AS District ON Product.LocationId=District.LocationId AND District.LocationType='D' LEFT JOIN tblLocations AS Region ON Product.LocationId=Region.LocationId AND Region.LocationType='R' LEFT JOIN tblControlNumber AS ControlNumber ON ControlNumber.PaymentID=Payment.PaymentID LEFT JOIN tblPremium AS Premium ON Premium.PremiumID=PaymentDetails.PremiumID LEFT JOIN tblPolicy AS Policy ON Policy.PolicyID=Premium.PolicyID LEFT JOIN (SELECT P.PolicyID AS PolicyID, SUM(P.Amount) PrPaid FROM tblPremium P INNER JOIN tblPaymentDetails PD ON PD.PremiumID = P.PremiumId INNER JOIN tblPayment Pay ON Pay.PaymentID = PD.PaymentID WHERE P.PolicyID IN (SELECT PolicyId FROM @MatchedPoliciesInPayment) AND Pay.PaymentStatus = 5 AND P.ValidityTo IS NULL GROUP BY P.PolicyID) AS MatchPayments ON MatchPayments.PolicyID=Policy.PolicyId WHERE (Payment.PaymentID = @PaymentID) AND (Product.ValidityTo IS NULL) AND (Insuree.ValidityTo IS NULL) "; SqlParameter[] parameters = { new SqlParameter("@PaymentID", Id) }; try { var data = dh.GetDataTable(sSQL, parameters, CommandType.Text); if (data.Rows.Count > 0) { var row1 = data.Rows[0]; PaymentId = Id; ControlNum = row1["ControlNumber"] != System.DBNull.Value ? Convert.ToString(row1["ControlNumber"]) : null; ExpectedAmount = row1["ExpectedAmount"] != System.DBNull.Value ? Convert.ToDecimal(row1["ExpectedAmount"]) : 0; SmsRequired = row1["SmsRequired"] != System.DBNull.Value ? Convert.ToBoolean(row1["SmsRequired"]) : false; Location = row1["Location"] != System.DBNull.Value ? Convert.ToString(row1["Location"]) : null; var language = row1["LanguageName"] != System.DBNull.Value ? Convert.ToString(row1["LanguageName"]) : "en"; var languages = LocalDefault.PrimaryLanguageRepresentations(Configuration); if (language == null || languages.Contains(language.ToLower())) { Language = Language.Primary; } else { Language = Language.Secondary; } typeOfPayment = row1["TypeOfPayment"] != System.DBNull.Value ? (TypeOfPayment?)Enum.Parse(typeof(TypeOfPayment), Convert.ToString(row1["TypeOfPayment"]), true) : null; PhoneNumber = row1["PhoneNumber"] != System.DBNull.Value ? Convert.ToString(row1["PhoneNumber"]) : null; PaymentDate = (DateTime?)(row1["PaymentDate"] != System.DBNull.Value ? row1["PaymentDate"] : null); PaidAmount = (decimal?)(row1["ReceivedAmount"] != System.DBNull.Value ? row1["ReceivedAmount"] : null); OutStAmount = (decimal?)(row1["Outstanding"] != System.DBNull.Value ? row1["Outstanding"] : null); InsureeProducts = new List <InsureeProduct>(); for (int i = 0; i < data.Rows.Count; i++) { var rw = data.Rows[i]; bool active = false; if (rw["PolicyStatus"] != System.DBNull.Value && Convert.ToInt32(rw["PolicyStatus"]) == 2) { active = true; } var othernames = rw["OtherNames"] != System.DBNull.Value ? Convert.ToString(rw["OtherNames"]) : null; var lastname = rw["LastName"] != System.DBNull.Value ? Convert.ToString(rw["LastName"]) : null; InsureeProducts.Add( new InsureeProduct() { InsureeNumber = rw["InsuranceNumber"] != System.DBNull.Value ? Convert.ToString(rw["InsuranceNumber"]) : null, InsureeName = othernames + " " + lastname, ProductName = rw["ProductName"] != System.DBNull.Value ? Convert.ToString(rw["ProductName"]) : null, ProductCode = rw["ProductCode"] != System.DBNull.Value ? Convert.ToString(rw["ProductCode"]) : null, ExpiryDate = (DateTime?)(rw["ExpiryDate"] != System.DBNull.Value ? rw["ExpiryDate"] : null), EffectiveDate = (DateTime?)(rw["EffectiveDate"] != System.DBNull.Value ? rw["EffectiveDate"] : null), PolicyActivated = active, ExpectedProductAmount = rw["ExpectedDetailAmount"] != System.DBNull.Value ? Convert.ToDecimal(rw["ExpectedDetailAmount"]) : 0 } ); } } else { throw new DataException("3-Wrong Control Number"); } } catch (Exception e) { throw e; } }