Exemplo n.º 1
0
        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);
        }