using System;
using System.Activities.Statements;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Models;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnPayment_Click(object sender, EventArgs e)
    {
        Models.DataBaseContext db = null;
        try
        {
            db = new Models.DataBaseContext();

            // در این قسمت میتوانید اطلاعات مورد نظر را در دیتابیس ذخیره کنید
            Payment payment = new Payment();

            payment.Amount = Int32.Parse(txtPrice.Text);

            payment.SaleReferenceId = "0";
            payment.ReferenceNumber = "0";
            payment.StatusPayment = "-100"; // عدم پرداخت

            payment.UserId = 1;


            db.Payments.Add(payment);
            db.SaveChanges();

            int paymentId = payment.PaymentId;

            string redirectPage = "http://localhost:9469/Return.aspx?paymentId=" + paymentId.ToString();

            //test Api
            string api = "adxcv-zzadq-polkjsad-opp13opoz-1sdf455aadzmck1244567";

            PayLine pay = new PayLine();

            double amount = double.Parse(txtPrice.Text) * 10;

            string result = pay.Send("http://payline.ir/payment-test/gateway-send", api, amount, redirectPage);

            if (int.Parse(result) > 0)
            {
                Response.Redirect("http://payline.ir/payment-test/gateway-" + result);
            }
            else
            {
                switch (result)
                {
                    case "-1":
                        lblMessage.Text = "api ارسالی با نوع api تعریف شده در payline ;'.سازگار نیست";
                        break;
                    case "-2":
                        lblMessage.Text = " مقدار amount ;'.داده عددي نمی باشد و یا کمتر از 1000 ریال است";
                        break;
                    case "-3":
                        lblMessage.Text = " مقدار redirect رشته null ;.است";
                        break;
                    case "-4":
                        lblMessage.Text = ".درگاهی با اطلاعات ارسالی شما یافت نشده و یا در حالت انتظار می باشد";
                        break;
                }

                Payment editPayment = db.Payments.Find(paymentId);

                if (editPayment != null)
                {
                    editPayment.StatusPayment = result;

                    db.Entry(payment).State = EntityState.Modified;
                    db.SaveChanges();

                }

                lblMessage.Text = "مشکلی در برقراری ارتباط بوجود آمد لطفا بعدا تلاش کنید";


            }
        }
        catch
        {
            lblMessage.Text = "پاسخی از درگاه دریافت نشد";

        }
        finally
        {
            if (db != null)
            {
                db.Dispose();
                db = null;
            }
        }

    }
}