using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using Transport.BLL;

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

        #region فیلد های لازم برای ویرایش
        public static bool Is_Action_Edit { get; set; }
        public static string cost_id { get; set; }
        public static string cost_group_id { get; set; }
        public static string cost_price { get; set; }
        public static string cost_date{ get; set; }
        public static string cost_description{ get; set; }
        #endregion

        // خواندن تنظیمات برنامه - اینکه آیا فیلدها بعد از ذخیره یا ویرایش پاک شوند یا خیر
        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;
        }

        //پر کردن لیست بازشونده گروه هزینه ها
        public void FillCostGroupComboBox()
        {
            DataTable CostGroupList = bll_cost.SelectCostGroupList();
            cmb_cost_group.DataSource = CostGroupList;
            cmb_cost_group.ValueMember = "cost_group_id";
            cmb_cost_group.DisplayMember = "cost_group_name";
        }

        // متدی برای پاک کردن فیلدهای فرم هزینه
        private void ClearAllFields()
        {
            txt_cost_price.Text = string.Empty;
            txt_cost_description.Text = string.Empty;
        }

        // پرکردن فیلدها با مقادیر ارسال شده از فرم هزینه ها
        private void FillFieldsWithProperties()
        {
            txt_cost_price.Text = cost_price;
            txt_cost_description.Text = cost_description;
            txt_cost_date.Text = cost_date;
        }

        //متد بارگذاری فرم هزینه
        private void edit_company_Load(object sender, EventArgs e)
        {
            FillCostGroupComboBox();
            if (Is_Action_Edit)
            {
                FillFieldsWithProperties();
                btn_save.Text = "ثبت تغییرات";
                cmb_cost_group.SelectedValue = cost_group_id;
            }
            else
            {
                btn_save.Text = "ذخیره";
            }
            txt_cost_price.Focus();
        }

        // متد دکمه ذخیره یا ویرایش هزینه 
        private void btn_save_Click(object sender, EventArgs e)
        {
            if (btn_save.Text == "ذخیره")
            {
                bool date_checker = txt_cost_date.Text.Contains("_");

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

                else if (date_checker)
                {
                    lblMessage.ForeColor = Color.Red;
                    lblMessage.Text = "لطفاً تاریخ را صحیح وارد کنید";
                }
                else if (txt_cost_price.Text !="" && txt_cost_description.Text !="" && txt_cost_date.Text !="")
                {

                    //تعریف متغیرهای مورد نیاز برای نگهداری فیلدهای فرم بارنامه
                    string cost_price = "";
                    string cost_description= "";
                    string cost_date= "";
                    string selected_cost_group_id = cmb_cost_group.SelectedValue.ToString();

                    string cost_price_holder = txt_cost_price.TextValue.ToString();
                    cost_price = cost_price_holder;

                    cost_description = txt_cost_description.Text;
                    cost_date = txt_cost_date.Text;
                    


                    // ایجاد رشته پرس و جو برای ذخیره اطلاعات بارنامه
                    string SQLQuery = string.Format("INSERT INTO tbl_cost(cost_group_id,cost_price,cost_description,cost_date) VALUES({0},{1},'{2}','{3}')", selected_cost_group_id, cost_price, cost_description, cost_date);

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

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

                        if (IsClearNeeded())
                        {
                            ClearAllFields();
                        }
                        txt_cost_price.Focus();
                    }
                    else
                    {
                        lblMessage.ForeColor = Color.Red;
                        lblMessage.Text = "خطا در ذخیره سازی اطلاعات";
                    }
                }
                else
                {
                    lblMessage.Text = "لطفاً اطلاعات الزامی را پر کنید";
                    lblMessage.ForeColor = Color.Red;
                }
            }
            else
            {
                bool date_checker = txt_cost_date.Text.Contains("_");

                if (date_checker)
                {
                    lblMessage.ForeColor = Color.Red;
                    lblMessage.Text = "لطفاً تاریخ را صحیح وارد کنید";
                }
                else if (cmb_cost_group.Items.Count < 1)
                {
                    lblMessage.Text = "لطفاً یک گروه انتخاب کنید";
                    lblMessage.ForeColor = Color.Red;
                }

                else  if (txt_cost_price.Text != "" && txt_cost_description.Text != "" && txt_cost_date.Text != "")
                {

                    //تعریف متغیرهای مورد نیاز برای نگهداری فیلدهای فرم بارنامه
                    string cost_price = "";
                    string cost_description = "";
                    string cost_date = "";
                    string selected_cost_group_id = cmb_cost_group.SelectedValue.ToString();
                    string cost_price_holder = txt_cost_price.TextValue.ToString();
                    cost_price = cost_price_holder;

                    cost_description = txt_cost_description.Text;
                    cost_date = txt_cost_date.Text;



                    // ایجاد رشته پرس و جو برای ذخیره اطلاعات بارنامه
                    string SQLQuery = string.Format("UPDATE tbl_cost SET cost_group_id={0}, cost_price={1},cost_description='{2}',cost_date='{3}' WHERE cost_id={4}", selected_cost_group_id, cost_price, cost_description, cost_date, cost_id);

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

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

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

        private void labelX3_Click(object sender, EventArgs e)
        {

        }

        private void lblMessage_Click(object sender, EventArgs e)
        {

        }

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