using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

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

    }
//مقایسه کد قبض با کدهای قبلی
    private Boolean UDF_Duplicate(Decimal Dec_CodeGhabz)
    {
        LSC_WareHouseDataContext db = new LSC_WareHouseDataContext();
        try
        {
            tblDeliverAssetsGe DlvAssets = db.tblDeliverAssetsGes.Single(n => n.CodeGhabz == Dec_CodeGhabz);

            if (DlvAssets.DeliverDate.ToString().Trim() != "")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch
        {
            return false;
        }
        
    }
   
    //مقایسه موجودی انبار با مقدار درخواست شده
    private Boolean UDF_ReternMojodi(Decimal Dec_AssetID)
    {
        float  Dec_Qu = 0;
        Dec_Qu = float.Parse(Txt_CountAssets.Text.Trim());

        if (Session["dtOrderDetails7"] != null)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["dtOrderDetails7"];

            foreach (DataRow Row in dt.Rows)
            {
                if (Decimal.Parse(Row[1].ToString()) == Decimal.Parse(Drp_Assets.SelectedValue.ToString()))
                {
                    Dec_Qu = Dec_Qu + float.Parse(Row[4].ToString());
                }
            }
        }

        LSC_WareHouseDataContext db = new LSC_WareHouseDataContext();
        try
        {
            xtblMojodiAssetsGe MAssetsG = db.xtblMojodiAssetsGes.Single(n => n.AssetID == Dec_AssetID);
            if (float.Parse(MAssetsG.Mogodi.ToString().Trim()) < Dec_Qu)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        catch
        {
            return false;
        }
    }

    protected void Btn_Insert_Click(object sender, EventArgs e)
    {
        Lbl_Error.Text = "";
       
        if (UDF_ReternMojodi(Decimal.Parse(Drp_Assets.SelectedValue.ToString())) == true)
        {
            // بررسی اینکه شماره قبض قبلا در دیتابیس ثبت نشده باشد
            if (UDF_Duplicate(Decimal.Parse(Txt_CodeGhabz.Text.Trim())) == false)
            {
                if (Session["dtOrderDetails7"] != null)
                {
                    int int_Allow = 0;
                    int int_DuplicateUser = 0;
                    DataTable dt = new DataTable();
                    dt = (DataTable)Session["dtOrderDetails7"];

                    foreach (DataRow Row in dt.Rows)
                    {/////////////////////////////////////////////////////
                        if (Decimal.Parse(Row[0].ToString().Trim()) == Decimal.Parse(Txt_CodeGhabz.Text.Trim()))
                        {
                            if (Row[3].ToString().Trim() != Drp_UserName.SelectedValue.ToString().Trim())
                            {
                                Lbl_Error.Visible = true;
                                Lbl_Error.Text = "این قبض قبلا به کاربر دیگری اختصاص داده شده است";
                                int_DuplicateUser = 1;
                                break;
                            }
                            else
                            {
                                if (Decimal.Parse(Row[1].ToString().Trim()) == Decimal.Parse(Drp_Assets.SelectedValue.ToString().Trim()))
                                {
                                    Decimal Dec_QuantityMain = Decimal.Parse(Row[4].ToString());
                                    Decimal Dec_QuantityTxt = (Decimal.Parse(Txt_CountAssets.Text.Trim()) + Dec_QuantityMain);
                                    Row[4] = Dec_QuantityTxt.ToString().Trim();
                                    int_Allow = 1;
                                }
                            }
                        }
                    }
                    if (int_Allow == 0 && int_DuplicateUser == 0)
                    {

                        dt.Rows.Add(new Object[] { Txt_CodeGhabz.Text.Trim(), Decimal.Parse(Drp_Assets.SelectedValue.ToString()), Drp_Assets.SelectedItem.ToString(), Drp_UserName.SelectedItem.ToString(), Txt_CountAssets.Text.Trim(), Txt_UseCase.Text.Trim() });

                        //Txt_CodeGhabz.Text = String.Empty;
                        Txt_CountAssets.Text = String.Empty;
                        Txt_UseCase.Text = String.Empty;

                    }

                    Session.Add("dtOrderDetails7", dt);
                    Grd_OrderDetailsM.DataSource = dt;
                    Grd_OrderDetailsM.DataBind();
                }
                else
                {
                    DataTable dt = new DataTable();

                    dt.Columns.Add("CodeGhabz", typeof(String));
                    dt.Columns.Add("AssetsID", typeof(Decimal));
                    dt.Columns.Add("AssetsName", typeof(String));
                    dt.Columns.Add("UserName", typeof(String));
                    dt.Columns.Add("Quantity", typeof(float));
                    dt.Columns.Add("UseCase", typeof(String));


                    dt.Rows.Add(new Object[] { Txt_CodeGhabz.Text.Trim(), Decimal.Parse(Drp_Assets.SelectedValue.ToString()), Drp_Assets.SelectedItem.ToString(), Drp_UserName.SelectedItem.ToString(), Txt_CountAssets.Text.Trim(), Txt_UseCase.Text.Trim() });

                    //Txt_CodeGhabz.Text = String.Empty;
                    Txt_CountAssets.Text = String.Empty;
                    Txt_UseCase.Text = String.Empty;

                    Session.Add("dtOrderDetails7", dt);
                    Grd_OrderDetailsM.DataSource = dt;
                    Grd_OrderDetailsM.DataBind();
                }


                if (Session["dtOrderDetails7"] == null)
                {
                    Btn_Save.Enabled = false;
                }
                else
                {
                    Btn_Save.Enabled = true;
                }
            }
            else
            {
                Lbl_Error.Visible = true;
                Lbl_Error.Text = "شماره قبض تکراری است";
            }
        }
        else
        {
            Lbl_Error.Visible = true;
            Lbl_Error.Text = "موجودی کالا در انبار کافی نمی باشد";
        }
    }


    protected void Btn_Save_Click(object sender, EventArgs e)
    {
        if (Session["dtOrderDetails7"] != null)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["dtOrderDetails7"];
            if (dt.Rows.Count > 0)
            {

                foreach (DataRow Row in dt.Rows)
                {
                    Class_tblDeliverAssetsGe tblDlvAssetG = new Class_tblDeliverAssetsGe(Decimal.Parse(Row[0].ToString()), Decimal.Parse(Row[1].ToString()), Row[3].ToString(), float.Parse(Row[4].ToString()), Row[5].ToString());
                    tblDlvAssetG.UDF_SaveDelivAssetsGe();
                }
                Session.Remove("dtOrderDetails7");
                Response.Redirect("DeliverAssetsGe.aspx?ID=" + DateTime.Now.Ticks.ToString());
            }
            else
            {
                Session.Remove("dtOrderDetails7");
                Lbl_Error.Visible = true;
                Lbl_Error.Text = "رکوردی برای ثبت موجود نمی باشد";
                Btn_Save.Enabled = false;
            }
        }

        else
        {
            Lbl_Error.Visible = true;
            Lbl_Error.Text = "رکوردی برای ثبت موجود نمی باشد";
            Btn_Save.Enabled = false;
        }

    }
    protected void Grd_OrderDetailsM_SelectedIndexChanged(object sender, EventArgs e)
    {
         DataTable dt = new DataTable();
        dt = (DataTable)Session["dtOrderDetails7"];

        foreach (DataRow Row in dt.Rows)
        {
            if (Decimal.Parse(Row[0].ToString()) == Decimal.Parse(Grd_OrderDetailsM.SelectedDataKey.Value.ToString()))
            {
                Row.Delete();
                Row.EndEdit();
                break;
            }
        }

        Grd_OrderDetailsM.DataSource = dt;
        Grd_OrderDetailsM.DataBind();

        if (Session["dtOrderDetails7"] == null)
        {
            Btn_Save.Enabled = false;
        }
        else
        {
            Btn_Save.Enabled = true;
        }
    }

    
    
    
}
