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 cost : Office2007Form
    {
        public cost()
        {
            InitializeComponent();
        }

        // متد مقداردهی خاصیت های فرم ویرایش هزینه
        public void Fill_EditCost_Properties()
        {
            if (dgv_cost.Rows.Count > 0)
            {
                // تنظیم شناسه هزینه و قرار دادن در یک برچسب برای عملیات حذف
                lbl_cost_id.Text = dgv_cost.Rows[dgv_cost.CurrentRow.Index].Cells[2].Value.ToString();

                //********************************************************

                // تنظیم شناسه گروه هزینه
                edit_cost.cost_group_id= dgv_cost.Rows[dgv_cost.CurrentRow.Index].Cells[0].Value.ToString();
                
                // تنظیم شناسه هزینه
                edit_cost.cost_id = dgv_cost.Rows[dgv_cost.CurrentRow.Index].Cells[2].Value.ToString();

                // تنظیم مبلغ هزینه
                edit_cost.cost_price= dgv_cost.Rows[dgv_cost.CurrentRow.Index].Cells[3].Value.ToString();

                // تنظیم توضیحات هزینه
                edit_cost.cost_description= dgv_cost.Rows[dgv_cost.CurrentRow.Index].Cells[4].Value.ToString();

                // تنظیم تاریخ هزینه
                edit_cost.cost_date= dgv_cost.Rows[dgv_cost.CurrentRow.Index].Cells[5].Value.ToString();

            }
        }

        //   متد پر کردن اطلاعات جدول هزینه ها
        public void FillDataGrid()
        {
            DataTable ResultTable = bll_company.SelectAllRecord("tbl_cost");

            dgv_cost.DataSource = ResultTable;

            dgv_cost.Columns[0].HeaderText = "شناسه گروه هزینه";
            dgv_cost.Columns[1].HeaderText = "گروه";
            dgv_cost.Columns[2].HeaderText = "شناسه هزینه";
            dgv_cost.Columns[3].HeaderText = "مبلغ";
            dgv_cost.Columns[4].HeaderText = "توضیح";
            dgv_cost.Columns[5].HeaderText = "تاریخ";

            dgv_cost.Columns[0].Visible = false;
            dgv_cost.Columns[2].Visible = false;
            special_class.setRowNumber(dgv_cost);
        }

        private DataTable AddRowToCostGroupDataTable(DataTable InputDatatable)
        {

            DataRow dr = InputDatatable.NewRow();
            dr["cost_group_id"] = 0;
            dr["cost_group_name"] = "همه هزینه ها";
            InputDatatable.Rows.InsertAt(dr, 0);
            return InputDatatable;

        }

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

       
       
       

        // متد بارگذاری فرم هزینه ها
        private void company_Load(object sender, EventArgs e)
        {
            FillDataGrid();
            FillCostGroupComboBox();
        }

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

        // متد دکمه اضافه کردن هزینه جدید
        private void btn_new_Click(object sender, EventArgs e)
        {
            edit_cost.Is_Action_Edit = false;
            edit_cost frm_edit_cost = new edit_cost();
            frm_edit_cost.ShowDialog();
        }

        // متد دکمه ویرایش هزینه ی انتخاب شده
        private void btn_edit_Click(object sender, EventArgs e)
        {
            if (dgv_cost.Rows.Count > 0)
            {
                Fill_EditCost_Properties();
                edit_cost.Is_Action_Edit = true;
                edit_cost frm_edit_cost = new edit_cost();
                frm_edit_cost.ShowDialog();
            } 
        }

        // متد فعال شدن فرم هزینه ها
        private void cost_Activated(object sender, EventArgs e)
        {
            FillDataGrid();
        }

        // متد سل اینتر دیتا گرید هزینه ها
        private void dgv_cost_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            Fill_EditCost_Properties();
        }

        // متد دکمه حذف هزینه ی انتخاب شده
        private void btn_delete_Click(object sender, EventArgs e)
        {
            if (dgv_cost.Rows.Count > 0)
            {
                try
                {
                    string Cost_ID = lbl_cost_id.Text;


                    if (FMessegeBox.FarsiMessegeBox.Show("آیا از حذف اطلاعات این هزینه مطمئن هستید ؟", "تایید حذف اطلاعات", FMessegeBox.FMessegeBoxButtons.YesNo, FMessegeBox.FMessegeBoxIcons.Question) == DialogResult.Yes)
                    {

                        string Query = "DELETE FROM tbl_cost WHERE cost_id=" + Cost_ID;

                        bool result = bll_transport.RunQuery(Query);
                        if (result)
                        {
                            lblMessage.ForeColor = Color.Green;
                            lblMessage.Text = "اطلاعات با موفقيت حذف شد";
                        }
                        else
                        {
                            lblMessage.ForeColor = Color.Red;
                            lblMessage.Text = "خطا در حذف اطلاعات.لطفا دوباره سعي نماييد";
                        }
                        FillDataGrid();
                    }
                }
                catch (Exception)
                {
                    lblMessage.ForeColor = Color.Red;
                    lblMessage.Text = "لطفاً يک رکورد را براي حذف انتخاب کنيد";
                }



            }
        }
        
        // متغیری برای نگهداری رشته پرس و جو فیلد جستجوی هزینه ها
        public static string wherePart2 = "";
        public static string SQLQueryParameter = "";
        
        // متد تکست چنج فیلد جستجوی اطلاعات هزینه ها
        private void txt_search_TextChanged(object sender, EventArgs e)
        {
            wherePart2 = string.Format("AND ( cost_price like '%{0}%' or cost_date like '%{0}%' or cost_description like '%{0}%' or cost_group_name like '%{0}%' )", txt_search.Text);
            SQLQueryParameter = "SELECT tbl_cost.cost_group_id, tbl_cost_group.cost_group_name, tbl_cost.cost_id, tbl_cost.cost_price, tbl_cost.cost_description, tbl_cost.cost_date " +
                                 " FROM tbl_cost_group,tbl_cost WHERE tbl_cost_group.cost_group_id = tbl_cost.cost_group_id " + wherePart2;
            //SQLQueryParameter="SELECT tbl_cost.cost_group_id, tbl_cost_group.cost_group_name, tbl_cost.cost_id, tbl_cost.cost_price, tbl_cost.cost_description, tbl_cost.cost_date " +
            //                       " FROM tbl_cost_group,tbl_cost WHERE tbl_cost_group.cost_group_id = tbl_cost.cost_group_id "+wherePart2;
            //MessageBox.Show(SQLQueryParameter);
            dgv_cost.DataSource = bll_cost.search_in_cost(SQLQueryParameter);
            special_class.setRowNumber(dgv_cost);
        }

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

        // متد رویداد کی داوون فرم هزینه ها
        private void cost_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode==Keys.F3)
            {
                txt_search.Focus();
            }
        }

        // متد دکمه مشاهده نتیجه فیلتر هزینه ها
        private void buttonX1_Click(object sender, EventArgs e)
        {
            string costGroupID = "";
            if (cmb_cost_group.Items.Count>1 && cmb_cost_group.SelectedValue.ToString() !="0")
            {
                costGroupID = " AND tbl_cost.cost_group_id="+cmb_cost_group.SelectedValue.ToString();
            }
            string wherePart = "";

            if (txt_date_start.Text.Contains( "_")|| txt_date_end.Text.Contains("_"))
            {
                wherePart = "";
            }
            else
            {
                wherePart = string.Format(" AND  cost_date >='{0}' AND cost_date<='{1}' ", txt_date_start.Text, txt_date_end.Text);
            }
            
            
            SQLQueryParameter = "SELECT tbl_cost.cost_group_id, tbl_cost_group.cost_group_name, tbl_cost.cost_id, tbl_cost.cost_price, tbl_cost.cost_description, tbl_cost.cost_date " +
                               " FROM tbl_cost_group,tbl_cost WHERE tbl_cost_group.cost_group_id = tbl_cost.cost_group_id " +costGroupID+ wherePart;
            
            //MessageBox.Show(SQLQueryParameter);
            dgv_cost.DataSource = bll_cost.search_in_cost(SQLQueryParameter);
            special_class.setRowNumber(dgv_cost);
        }

        // متد ایجاد دیتا تیبل از اطلاعات دیتا گرید ویو
        private DataTable CreateCostSortedDatatable()
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("cost_group_id");
            dt.Columns.Add("cost_group_name");
            dt.Columns.Add("cost_id");
            dt.Columns.Add("cost_price");
            dt.Columns.Add("cost_date");
            dt.Columns.Add("cost_description");

            foreach (DataGridViewRow row in dgv_cost.Rows)
            {
                DataRow dRow = dt.NewRow();
                foreach (DataGridViewCell cell in row.Cells)
                {
                    dRow[cell.ColumnIndex] = cell.Value;
                }
                dt.Rows.Add(dRow);
            }

            DataTable dt2 = new DataTable();
            dt2.Columns.Add("cost_group_id");
            dt2.Columns.Add("cost_group_name");
            dt2.Columns.Add("cost_id");
            dt2.Columns.Add("cost_price");
            dt2.Columns.Add("cost_date");
            dt2.Columns.Add("cost_description");

            foreach (DataRow item in dt.Rows)
            {
                DataRow dr = dt2.NewRow();
                dr["cost_group_id"] = item["cost_group_id"];
                dr["cost_group_name"] = item["cost_group_name"];
                dr["cost_id"] = item["cost_id"];
                dr["cost_price"] =special_class.ToFormattedThousands(item["cost_price"].ToString());
                dr["cost_date"] = item["cost_date"];
                dr["cost_description"] = item["cost_description"];
                dt2.Rows.Add(dr);
                
            }

            return dt2;
        }

        // متد دکمه نسخه چاپی
        private void btn_showreport_Click(object sender, EventArgs e)
        {



            double all_cost_price = 0;
            int all_transport_price = 0;
            double all_remain_price = 0;


            for (int i = 0; i < dgv_cost.Rows.Count; ++i)
            {
                all_cost_price += Convert.ToDouble(dgv_cost.Rows[i].Cells[3].Value.ToString());
            }

            if (txt_date_start.Text.Contains("_") || txt_date_end.Text.Contains("_"))
            {
                cost_report.report_date = "همه تاریخ ها";
                all_remain_price = all_cost_price;
            }
            else
            {
                cost_report.report_date = txt_date_start.Text + "   *   " + txt_date_end.Text;
                all_remain_price = all_cost_price;
            }
           
            cost_report.report_cost_group = cmb_cost_group.Text;

            cost_report.CostReportDataTable = CreateCostSortedDatatable();

            cost_report.sum_all_cost = special_class.ToFormattedThousands(all_cost_price.ToString());
            cost_report.sum_all_transport = all_transport_price.ToString();
            cost_report.sum_all_remain = all_remain_price.ToString();

            cost_report frm_cost_report=new cost_report ();
            frm_cost_report.ShowDialog();
        }

        private void dgv_cost_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            dgv_cost.Columns[3].DefaultCellStyle.Format = "###,###,###,###,###";
        }
    }
}

