using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace FrmHangBanUser
{
    public partial class FrmUser : Form
    {
        //1.连接字符串
        string connString = "Data Source = .;Initial Catalog=Ticket;User ID = sa; Pwd = sa";
        //3.创建DataSet对象
        DataSet set = new DataSet();
        public FrmUser()
        {
            InitializeComponent();
        }
        #region 窗体加载事件
        /// <summary>
        /// 窗体加载事件!!
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmUser_Load(object sender, EventArgs e)
        {
            //FlightInfo();
            AirwaysInfo();
            CityInfo();
        }
        #endregion
        #region 出发地
        /// <summary>
        /// 出发地
        /// </summary>
        public void AirwaysInfo()
        {
            try
            {
                //2.创建Connection对象
                SqlConnection conn = new SqlConnection(connString);
                //4.创建DataAdapter对象
                StringBuilder _sb = new StringBuilder();
                _sb.AppendLine(@"SELECT Id,CityName FROM CityInfo");
                SqlDataAdapter adapter = new SqlDataAdapter(_sb.ToString(), conn);
                //5.填充数据集
                adapter.Fill(set, "CityUser");
                //6.绑定数据源到ComboBox控件中
                this.cboAirways.DataSource = set.Tables["CityUser"];
                this.cboAirways.ValueMember = "Id";
                this.cboAirways.DisplayMember = "CityName";
                //7.添加行对象
                DataRow row = set.Tables["CityUser"].NewRow();
                row["Id"] = -1;
                row["CityName"] = "请选择";
                set.Tables["CityUser"].Rows.InsertAt(row, 0);
                //8.默认选中一行
                this.cboAirways.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion
        #region 非空验证
        /// <summary>
        /// 非空验证
        /// </summary>
        public void Check()
        {
            if(this.cboAirways.SelectedIndex == 0)
            {
                MessageBox.Show("请输入你要出发的城市啊!!","操作提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
            }
            else if (this.cboMudidi.SelectedIndex == 0)
            {
                MessageBox.Show("请输入你的目的地啊啊啊!!", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            }
        }
        #endregion
        #region 目的地
        /// <summary>
        /// 目的地
        /// </summary>
        public void CityInfo()
        {
            try
            {
                //2.创建Connection对象
                SqlConnection conn = new SqlConnection(connString);
                //4.创建DataAdapter对象
                StringBuilder _sb = new StringBuilder();
                _sb.AppendLine(@"SELECT Id,CityName FROM CityInfo");
                SqlDataAdapter adapter = new SqlDataAdapter(_sb.ToString(), conn);
                //5.填充数据集
                adapter.Fill(set, "City");
                //6.绑定数据源到ComboBox控件中
                this.cboMudidi.DataSource = set.Tables["City"];
                this.cboMudidi.ValueMember = "Id";
                this.cboMudidi.DisplayMember = "CityName";
                //7.添加行对象
                DataRow row = set.Tables["City"].NewRow();
                row["Id"] = -1;
                row["CityName"] = "请选择";
                set.Tables["City"].Rows.InsertAt(row, 0);
                //8.默认选中一行
                this.cboMudidi.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion
        #region 航班信息
        /// <summary>
        /// 航班信息
        /// </summary>
        public void FlightInfo()
        {
            try
            {
                //2.创建Connection对象
                SqlConnection conn = new SqlConnection(connString);
                //4.创建DataAdapter对象
                StringBuilder _sb = new StringBuilder();
                _sb.AppendLine(@"SELECT F.FlightNO,A.Airways,F.LeaveTime,F.LandTime,F.Price 
                FROM FlightInfo AS F INNER JOIN AirwaysInfo AS A ON F.AirwaysId = A.Id");
                SqlDataAdapter adapter = new SqlDataAdapter(_sb.ToString(), conn);
                //5.填充数据集
                if (set.Tables["Airways"]!=null)
                {
                    set.Tables["Airways"].Clear();
                }
                adapter.Fill(set, "Airways");
                //6.绑定数据源
                this.dvgUserInfo.DataSource = set.Tables["Airways"];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion
        #region 查询按钮功能
        /// <summary>
        /// 查询按钮功能
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnChaXun_Click(object sender, EventArgs e)
        {
            Check();
            Filter();
        }
        #endregion
        #region 按选择的条件筛选
        /// <summary>
        /// 按选择的条件筛选
        /// </summary>
        public void Filter()
        {
            try
            {
                SqlConnection conn=new SqlConnection(connString);
                //筛选条件
                DataSet ds = new DataSet();
                int city = Convert.ToInt32(cboAirways.SelectedValue);
                int Destination = Convert.ToInt32(cboMudidi.SelectedValue);
                StringBuilder sb = new StringBuilder();
                
                if(city!=-1 && Destination!=-1)
                {
                    sb.AppendLine(@"SELECT F.FlightNO,A.Airways,F.LandTime,F.LeaveTime,F.Price 
                    FROM FlightInfo AS F INNER JOIN AirwaysInfo AS A ON F.AirwaysId = A.Id");
                    sb.AppendFormat(@"WHERE LeaveCity = {0} AND Destination = {1}", city, Destination);
                }
                SqlDataAdapter adapter = new SqlDataAdapter(sb.ToString(),conn);
adapter.Fill(ds,"User");
this.dvgUserInfo.DataSource = ds.Tables["User"];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion         
        #region 关闭按钮功能
        /// <summary>
        /// 关闭按钮功能
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGuanbi_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("你确定要退出程序嘛~","退出提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Stop);
            if(result == DialogResult.OK)
            {
                Application.Exit();         //退出程序了。。 - - |||
            }
        }
        #endregion
        #region 实现航班选择功能
        /// <summary>
        /// 实现航班选择功能
        /// </summary>
        private void dvgUserInfo_MouseClick(object sender, MouseEventArgs e)
        {
            txtHNo.Text = dvgUserInfo.SelectedRows[0].Cells["FlightNO"].Value.ToString();
            txtGongSi.Text = dvgUserInfo.SelectedRows[0].Cells["Airways"].Value.ToString();
            this.txtChuFa.Text = this.cboAirways.Text;
            this.txtMuDi.Text = this.cboMudidi.Text;
            txtShijian.Text = dvgUserInfo.SelectedRows[0].Cells["LeaveTime"].Value.ToString();
            txtDaoDa.Text = dvgUserInfo.SelectedRows[0].Cells["LandTime"].Value.ToString();
            txtPiaoJia.Text = dvgUserInfo.SelectedRows[0].Cells["Price"].Value.ToString();
        }
         #endregion
        #region 航班预定功能
        /// <summary>
        /// 航班预定功能
        /// </summary>
        /// <returns></returns>
        public bool Insert()
        {
            Random _dom = new Random();
            int no = _dom.Next(100000, 1000000);
            SqlConnection conn = null;
            string No = this.txtHNo.Text;
            DateTime LeaveDate = this.dateTimePicker1.Value;
            string Number = this.nuShang.Value.ToString();
            try
            {
                conn = new SqlConnection(connString);
                //构建插入学生记录的SQL的语句
                StringBuilder _sbu = new StringBuilder();
                _sbu.AppendLine("INSERT INTO OrderInfo(OrderId,FlightNo,LeaveDate,Number)");
                _sbu.AppendFormat("VALUES(‘{0}‘,‘{1}‘,‘{2}‘,‘{3}‘)", no, No, LeaveDate, Number);
                _sbu.AppendFormat("SELECT @@IDENTITY");
                //创建Command对象
                SqlCommand command = new SqlCommand(_sbu.ToString(), conn);
                //打开连接
                conn.Open();
                //调用方法
                int result = command.ExecuteNonQuery();
                //对返回值进行处理
                if (result > 0)
                {
                    MessageBox.Show("恭喜你!预定成功!订单编号为"+no);
                    return true;
                }
                else
                {
                    MessageBox.Show("预定失败!请重试!");
                    return false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
            finally
            {
                //关闭连接
                conn.Close();
            }
        }
        #endregion
        #region 预定按钮
        /// <summary>
        /// 预定按钮!
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnYuDing_Click(object sender, EventArgs e)
        {
            Insert();
        }
        #endregion
    }
}