using System;
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 Return : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataBaseContext db = null;
        try
        {
            db = new DataBaseContext();
            string transId = Request.Form["trans_id"];
            string idGet = Request.Form["id_get"];
            string strPaymentId = Request.QueryString["paymentId"];

            int paymentId = Int32.Parse(strPaymentId);

            if (!String.IsNullOrEmpty(transId) && !String.IsNullOrEmpty(idGet))
            {
                PayLine GetPayline = new PayLine();

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

                //GetPayline.Get(url,"Your-API", trans_id, id_get)
                string result = GetPayline.Get("http://payline.ir/payment-test/gateway-result-second", api, transId, idGet);

                switch (result)
                {
                    case "-1":                        
                        lblStatus.Text = "api ارسالی با نوع api تعریف شده در payline .سازگار نیست";
                        break;
                    case "-2":
                        lblStatus.Text = "trans_id .ارسال شده معتبر نمی باشد";
                        break;
                    case "-3":
                        lblStatus.Text = "id_get .ارسالی معتبر نمی باشد";
                        break;
                    case "-4":
                        lblStatus.Text = ".چنین تراکنشی در سیستم وجود ندارد و یا موفقیت آمیز نبوده است ";
                        break;
                    case "1":
                        lblStatus.Text = ".تراکنش موفقیت آمیز بوده است";
                        break;
                }

                lblTransId.Text = transId;
                lblRefId.Text = idGet;

                // در این قسمت می توانید اطلاعات دریافتی را در دیتابیس ذخیره کنید
                Payment payment = db.Payments.Find(paymentId);

                if (payment != null)
                {
                    payment.ReferenceNumber = idGet;
                    payment.SaleReferenceId = transId;
                    payment.StatusPayment = result;

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

                }
            }
            else
            {
                lblStatus.Text = "دسترسی امکانپذیر نیست";
            }
        }
        catch
        {
            lblStatus.Text = "پاسخی دریافت نشد";
        }
        finally
        {
            if (db != null)
            {
                db.Dispose();
                db = null;
            }
        }
    }
}