using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Self_Project
{
    public partial class ReserveFood : Form
    {
        Color C1 = Color.DarkSlateGray, C2 = Color.White;
        long StdNum, MainPrice, Price;
        int Price1, Price2, Price3;
        short Model;
        Boolean AllowChange = false;
        Reserve R = new Reserve();
        Student Std = new Student();
        Food F = new Food();

        public ReserveFood()
        {
            InitializeComponent();
        }

        private void ReserveFood_Load(object sender, EventArgs e)
        {
            Week W = new Week();
            //-------------------------------------------------
            W.LoadWeek();
            for (int i = W.WeekNum; i <= 52; i++)
            {
                txt_WeekNum.Items.Add(i.ToString());
            }
            //-------------------------------------------------
            R.LoadDays(DGV1);
            //-------------------------------------------------
            DGV1.Columns[0].Width = DGV1.Columns[1].Width = DGV1.Columns[2].Width = DGV1.Columns[3].Width = DGV1.Columns[4].Width = DGV1.Columns[5].Width = DGV1.Columns[6].Width = 60;
        }

        private void T1_SelectedIndexChanged(object sender, EventArgs e)
        {
            btn_OK.Enabled = true;
            //---------------------------------پر کردن جدول
            DataSet dss = new DataSet();
            R.LoadReservedFood(DGV1, txt_WeekNum.Text, StdNum.ToString());
            //---------------------------------محدود کردن رزرو
            R.ApplyLimit_Model(DGV1, Model.ToString());
            if (txt_WeekNum.SelectedIndex == 0) R.ApplyLimit_CancelDay(DGV1, txt_WeekNum.Text);
            R.ApplyWeekVacation(DGV1, txt_WeekNum.Text);
            R.ApplyDayVacation(DGV1, txt_WeekNum.Text);
            //------------------
            if (StdNum != 0)
            {
                AllowChange = true;
                Price = MainPrice;
                MyPrice.Text = "موجودی حساب شما : " + Price.ToString() + " ریال می باشد.";
                DGV1.Enabled = true;
            }
            else
            {
                AllowChange = false;
                MyPrice.Text = "";
                Text = "رزرو غذا";
                txt_WeekNum.Enabled = false;
                DGV1.Enabled = false;
            }
        }

        private void S1_Click(object sender, EventArgs e)
        {
            try
            {
                Std.ShowInfo(txt_Student_ID.TEXT);
                txt_WeekNum.Focus();
            }
            catch
            {
                R.LoadDays(DGV1);
                MyPrice.Text = "";
                Text = "رزرو غذا";
                MessageBox.Show("دانشجویی با چنین مشخصاتی پیدا نشد", "رزرو غذا", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                DGV1.Enabled = btn_OK.Enabled = txt_WeekNum.Enabled = false;
                return;
            }
            txt_WeekNum.Enabled = true;

            if (Std.Active == false)
            {
                R.LoadDays(DGV1);
                MyPrice.Text = "";
                Text = "رزرو غذا";
                MessageBox.Show("دانشجوی انتخاب شده، غیر فعال بوده و اجازه فعالیت ندارد", "رزرو غذا", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                DGV1.Enabled = btn_OK.Enabled = txt_WeekNum.Enabled = false;
                return;
            }
            Text = "رزرو غذا : " + Std.Name;
            StdNum = Std.ID;
            MainPrice = Price = Std.Price;
            Model = Convert.ToInt16(Std.Type);
            MyPrice.Text = "موجودی حساب شما : " + Price.ToString() + " ریال می باشد.";
            if (txt_WeekNum.SelectedIndex >= 0)
            {
                btn_OK.Enabled = true;
                T1_SelectedIndexChanged(null, null);
            }
            //------------------------------
            R.LoadPrices(Convert.ToSByte(Model));
            Price1 = R.Price1;
            Price2 = R.Price2;
            Price3 = R.Price3;
        }

        private void S2_Click(object sender, EventArgs e)
        {
            try
            {
                Std.ShowInfo(Convert.ToInt64(txt_Cart_ID.TEXT));
                txt_WeekNum.Focus();
            }
            catch
            {
                R.LoadDays(DGV1);
                lbl_FoodName.Text = MyPrice.Text = "";
                Text = "رزرو غذا";
                MessageBox.Show("دانشجویی با چنین مشخصاتی پیدا نشد", "رزرو غذا", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                DGV1.Enabled = btn_OK.Enabled = txt_WeekNum.Enabled = false;
                return;
            }
            txt_WeekNum.Enabled = true;

            if (Std.Active == false)
            {
                R.LoadDays(DGV1);
                MyPrice.Text = "";
                Text = "رزرو غذا";
                MessageBox.Show("دانشجوی انتخاب شده، غیر فعال بوده و اجازه فعالیت ندارد", "رزرو غذا", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                DGV1.Enabled = btn_OK.Enabled = txt_WeekNum.Enabled = false;
                return;
            }
            Text = "رزرو غذا : " + Std.Name;
            StdNum = Std.ID;
            MainPrice = Price = Std.Price;
            Model = Convert.ToInt16(Std.Type);
            MyPrice.Text = "موجودی حساب شما : " + Price.ToString() + " ریال می باشد.";
            if (txt_WeekNum.SelectedIndex >= 0)
            {
                btn_OK.Enabled = true;
                T1_SelectedIndexChanged(null, null);
            }
            //------------------------------
            R.LoadPrices(Convert.ToSByte(Model));
            Price1 = R.Price1;
            Price2 = R.Price2;
            Price3 = R.Price3;
        }
        private void DGV1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (!AllowChange) return;
            if (DGV1.Rows[DGV1.CurrentCell.RowIndex].Cells[DGV1.CurrentCell.ColumnIndex].Value.ToString() == "False")
            {
                if (DGV1.CurrentCell.RowIndex == 0) Price += Price1;
                if (DGV1.CurrentCell.RowIndex == 1) Price += Price2;
                if (DGV1.CurrentCell.RowIndex == 2) Price += Price3;
            }//افزودن رزرو
            else
            {
                if (DGV1.CurrentCell.RowIndex == 0) Price -= Price1;
                if (DGV1.CurrentCell.RowIndex == 1) Price -= Price2;
                if (DGV1.CurrentCell.RowIndex == 2) Price -= Price3;
                if (Price < 0)//کمبود موجودی
                {
                    MessageBox.Show("موجودی حساب شما کافی نیست", "موجودی حساب", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    DGV1.Rows[DGV1.CurrentCell.RowIndex].Cells[DGV1.CurrentCell.ColumnIndex].Value = false;
                }
            }
            MyPrice.Text = "موجودی حساب شما : " + Price.ToString() + " ریال می باشد.";
        }

        private void btn_OK_Click(object sender, EventArgs e)
        {
            R.SaveReserve(DGV1, txt_WeekNum.Text, StdNum.ToString(), Convert.ToInt32(Price));
            MessageBox.Show("اطلاعات رزرو شما با موفقیت ثبت شد", "رزرو غذا", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
        }

        private void btn_Cancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void DGV1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                lbl_FoodName.Text = "نام غذا : " + F.GiveFoodName(txt_WeekNum.Text, DGV1.CurrentCell.RowIndex, DGV1.CurrentCell.ColumnIndex);
            }
            catch { }
        }
    }
}