using System;
using System.Drawing;
using DevComponents.DotNetBar;
using System.Windows.Forms;
using Transport.BLL;
using System.Data;


namespace Transport
{
    public partial class edit_company : Office2007Form
    {
        public edit_company()
        {
            InitializeComponent();
        }


        #region فیلد های لازم برای ویرایش
        public static bool  Is_Action_Edit { get; set; }
        public static string company_id { get; set; }
        public static string city_id { get; set; }
        public static string company_name { get; set; }
        public static string company_address { get; set; }
        public static string company_tel1 { get; set; }
        public static string company_tel2 { get; set; }
        
        public static string company_max_fix_weight { get; set; }
        public static string company_base_price { get; set; }
        public static string company_addition_price { get; set; }
        public static string company_agency_portion { get; set; }

        public static string company_max_fix_weight2 { get; set; }
        public static string company_base_price2 { get; set; }
        public static string company_addition_price2 { get; set; }
        public static string company_agency_portion2 { get; set; }

        #endregion


        //پر کردن لیست بازشونده شهر ها
        public void FillCityComboBox()
        {
            DataTable CityList = bll_city.SelectCityList();
            cmb_city.DataSource = CityList;
            cmb_city.ValueMember = "city_id";
            cmb_city.DisplayMember = "city_name";
        }

        // خواندن تنظیمات برنامه - اینکه آیا فیلدها بعد از ذخیره یا ویرایش پاک شوند یا خیر
        public bool IsClearNeeded()
        {

            System.Data.DataTable settingsDT = bll_settings.Select_App_Settings();
            bool ClearResult = false;

            if (settingsDT.Rows.Count > 0)
            {
                string clear_fields = settingsDT.Rows[0].ItemArray[1].ToString();

                if (clear_fields == "0")
                {
                    return true;
                }

            }

            return ClearResult;
        }

        // متدی برای پاک کردن فیلدهای فرم شرکت
        private void ClearAllFields()
        {
            txt_company_name.Text = string.Empty;
            txt_company_tel1.Text = string.Empty;
            txt_company_tel2.Text = string.Empty;
            txt_company_address.Text = string.Empty;
        }

        // پرکردن فیلدها با مقادیر ارسال شده از فرم شرکت ها
        private void FillFieldsWithProperties()
        {
            txt_company_name.Text = company_name;
            txt_company_tel1.Text = company_tel1;
            txt_company_tel2.Text = company_tel2;
            txt_company_address.Text = company_address;
            
            txt_company_max_fix_weight.Text = company_max_fix_weight;
            txt_company_base_price.Text = company_base_price;
            txt_company_addition_price.Text = company_addition_price;
            txt_company_agency_portion.Text = company_agency_portion;

            txt_company_max_fix_weight2.Text = company_max_fix_weight2;
            txt_company_base_price2.Text = company_base_price2;
            txt_company_addition_price2.Text = company_addition_price2;
            txt_company_agency_portion2.Text = company_agency_portion2;
        }

        //متد بارگزاری فرم شرکت 
        private void edit_company_Load(object sender, EventArgs e)
        {
            FillCityComboBox();
            txt_company_name.Focus();
            if (Is_Action_Edit)
            {
                FillFieldsWithProperties();
                btn_save.Text = "ثبت تغییرات";
                cmb_city.SelectedValue = city_id;
            }
            else
            {
                btn_save.Text = "ذخیره";
            }
        }

        // متد دکمه برگشت
        private void btn_back_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        // متد دکمه ذخیره یا ویرایش شرکت
        private void btn_save_Click(object sender, EventArgs e)
        {
            if (btn_save.Text=="ذخیره")
            {

                if (cmb_city.Items.Count < 1)
                {
                    lblMessage.Text = "لطفاً یک شهر انتخاب کنید";
                    lblMessage.ForeColor = Color.Red;
                }

                else if (txt_company_name.Text != "" && txt_company_max_fix_weight.Text != "" &&
                    txt_company_base_price.Text != "" && txt_company_addition_price.Text != "" && txt_company_agency_portion.Text != "" && txt_company_max_fix_weight2.Text != "" &&
                    txt_company_base_price2.Text != "" && txt_company_addition_price2.Text != "" && txt_company_agency_portion2.Text != "")
                    {
                
                    //تعریف متغیرهای مورد نیاز برای نگهداری فیلدهای فرم بارنامه
                    string city_id = "";
                    string company_name = "";
                    string company_tel1= "";
                    string company_tel2 = "";
                    string company_address= "";

                   string str_company_max_fix_weight = "";
                   string str_company_base_price= "";
                   string str_company_addition_price = "";
                   string str_company_agency_portion = "";
                  
                   string str_company_max_fix_weight2 = "";
                   string str_company_base_price2 = "";
                   string str_company_addition_price2 = "";
                   string str_company_agency_portion2 = "";

                   //مقداردهی شماره شهر
                    city_id = cmb_city.SelectedValue.ToString();

                    company_name = txt_company_name.Text;
                    company_tel1 = txt_company_tel1.Text;
                    company_tel2 = txt_company_tel2.Text;
                    company_address = txt_company_address.Text;

                    str_company_max_fix_weight =txt_company_max_fix_weight.TextValue.ToString();
                    str_company_base_price = txt_company_base_price.TextValue.ToString();
                    str_company_addition_price = txt_company_addition_price.TextValue.ToString();
                    str_company_agency_portion = txt_company_agency_portion.TextValue.ToString();


                    str_company_max_fix_weight2 = txt_company_max_fix_weight2.TextValue.ToString();
                    str_company_base_price2 = txt_company_base_price2.TextValue.ToString();
                    str_company_addition_price2 = txt_company_addition_price2.TextValue.ToString();
                    str_company_agency_portion2 = txt_company_agency_portion2.TextValue.ToString();

                    // ایجاد رشته پرس و جو برای ذخیره اطلاعات بارنامه
                    string SQLQuery = string.Format("INSERT INTO tbl_company (company_name,company_city_id,company_tel1,company_tel2,company_address,company_max_fix_weight,company_base_price,company_addition_price,company_agency_portion,company_max_fix_weight2,company_base_price2,company_addition_price2,company_agency_portion2) VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}')",
                                                                        company_name, city_id, company_tel1, company_tel2, company_address, str_company_max_fix_weight, str_company_base_price, str_company_addition_price, str_company_agency_portion, str_company_max_fix_weight2, str_company_base_price2, str_company_addition_price2, str_company_agency_portion2);

                  
                    //تعریف یک متغیر برای نگهداری نتیجه عملیات ذخیره سازی
                    bool QueryResult = false;
                    QueryResult = bll_company.RunQuery(SQLQuery);

                    if (QueryResult)
                    {
                        lblMessage.ForeColor = Color.Green;
                        lblMessage.Text = "ذخیره سازی اطلاعات با موفقیت انجام شد";

                        if (IsClearNeeded())
                        {
                            ClearAllFields();
                        }
                        txt_company_name.Focus();
                    }
                    else
                    {
                        lblMessage.ForeColor = Color.Red;
                        lblMessage.Text = "خطا در ذخیره سازی اطلاعات";
                    }
                }
                else
                {
                    lblMessage.Text = "لطفاً اطلاعات الزامی را پر کنید";
                    lblMessage.ForeColor = Color.Red;
                }
            }
            else
            {
                if (cmb_city.Items.Count < 1)
                {
                    lblMessage.Text = "لطفاً یک شهر انتخاب کنید";
                    lblMessage.ForeColor = Color.Red;
                }
                else if (txt_company_name.Text != "" && txt_company_max_fix_weight.Text != "" &&
                     txt_company_base_price.Text != "" && txt_company_addition_price.Text != "" && txt_company_agency_portion.Text != "" && txt_company_max_fix_weight2.Text != "" &&
                     txt_company_base_price2.Text != "" && txt_company_addition_price2.Text != "" && txt_company_agency_portion2.Text != "")
                {

                    //تعریف متغیرهای مورد نیاز برای نگهداری فیلدهای فرم بارنامه
                    string city_id = "";
                    string company_name = "";
                    string company_tel1 = "";
                    string company_tel2 = "";
                    string company_address = "";

                    string str_company_max_fix_weight = "";
                    string str_company_base_price = "";
                    string str_company_addition_price = "";
                    string str_company_agency_portion = "";

                    string str_company_max_fix_weight2 = "";
                    string str_company_base_price2 = "";
                    string str_company_addition_price2 = "";
                    string str_company_agency_portion2 = "";

                    //مقداردهی شماره شهر
                    city_id = cmb_city.SelectedValue.ToString();

                    company_name = txt_company_name.Text;
                    company_tel1 = txt_company_tel1.Text;
                    company_tel2 = txt_company_tel2.Text;
                    company_address = txt_company_address.Text;

                    str_company_max_fix_weight = txt_company_max_fix_weight.TextValue.ToString();
                    str_company_base_price = txt_company_base_price.TextValue.ToString();
                    str_company_addition_price = txt_company_addition_price.TextValue.ToString();
                    str_company_agency_portion = txt_company_agency_portion.TextValue.ToString();


                    str_company_max_fix_weight2 = txt_company_max_fix_weight2.TextValue.ToString();
                    str_company_base_price2 = txt_company_base_price2.TextValue.ToString();
                    str_company_addition_price2 = txt_company_addition_price2.TextValue.ToString();
                    str_company_agency_portion2 = txt_company_agency_portion2.TextValue.ToString();


                    // ایجاد رشته پرس و جو برای ذخیره اطلاعات بارنامه
                    string SQLQuery = string.Format("UPDATE tbl_company  SET company_name='{0}',company_city_id='{1}',company_tel1='{2}',company_tel2='{3}',company_address='{4}'," +
                                                    " company_max_fix_weight='{5}',company_base_price='{6}',company_addition_price='{7}',company_agency_portion='{8}'" +
                                                    ",company_max_fix_weight2='{9}',company_base_price2='{10}',company_addition_price2='{11}',company_agency_portion2='{12}'" +
                                                    " WHERE company_id={13}", company_name, city_id, company_tel1, company_tel2, company_address,
                                                    str_company_max_fix_weight, str_company_base_price, str_company_addition_price, str_company_agency_portion,
                                                    str_company_max_fix_weight2, str_company_base_price2, str_company_addition_price2, str_company_agency_portion2,company_id);

              
                    //تعریف یک متغیر برای نگهداری نتیجه عملیات ذخیره سازی
                    bool QueryResult = false;
                    QueryResult = bll_company.RunQuery(SQLQuery);

                    if (QueryResult)
                    {
                        lblMessage.ForeColor = Color.Green;
                        lblMessage.Text = "ویرایش اطلاعات با موفقیت انجام شد";
                        txt_company_name.Focus();
                    }
                    else
                    {
                        lblMessage.ForeColor = Color.Red;
                        lblMessage.Text = "خطا در ویرایش اطلاعات";
                    }
                }
                else
                {
                    lblMessage.Text = "لطفاً اطلاعات الزامی را پر کنید";
                    lblMessage.ForeColor = Color.Red;
                }
            }
        }

        private void cmb_city_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode==Keys.Enter)
            {
                SendKeys.Send("{TAB}");
            }
        }
    }
}
