using AIMSBLL;
using AIMSExtension;
using AIMSModel;
using DrawGraph;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace AIMS.PublicUI.UI
{
    public partial class frmChargsTemplateNew : Form
    {
        /// 
        /// 收费类型集合
        /// 
        public List list;
        /// 
        /// 声明保存数据时的状态
        /// 
        public EditState _state;
        public string TemplateType;
        public frmChargsTemplateNew()
        {
            InitializeComponent();
        }
        private void frmApplianceUseType_Load(object sender, EventArgs e)
        {
            if (PublicMethod.OperatorNo == "admin" || PublicMethod.RoleName.Contains("创建收费模板"))
            {
                chkAll.Visible = true;
                tsbAdd.Visible = true;
                tsbModify.Visible = true;
                tsbSave.Visible = true;
                toolStripSeparator2.Visible = true;
                toolStripSeparator4.Visible = true;
                panel1.Visible = true;
                dgvApplianceUseType.Columns["IsValid"].Visible = true;
                dgvApplianceUseType.Columns["SelectC"].Visible = true;
            }
            ControlExtension.EnabledControl(panel1, false);
            txtName.Enabled = true;
            BindDgv();
            txtName.TextChanged += new EventHandler(txtName_TextChanged);
        }
        /// 
        /// 为DataGridView绑定数据
        /// 
        private void BindDgv()
        {
            string IsValid = chkAll.Checked == false ? "0" : "1";
            if (IsValid == "1")
            {
                list = BChargsTemplate.Select(" TemplateType='" + TemplateType + "' and  TemplateName like '%" + txtName.Text.Trim() + "%' or HCode like '%" + txtName.Text.Trim() + "%'", new ParameterList(), RecursiveType.None, 0);
            }
            else
            {
                list = BChargsTemplate.Select(" TemplateType='" + TemplateType + "' and  IsValid= 1 and ( TemplateName like '%" + txtName.Text.Trim() + "%' or HCode like '%" + txtName.Text.Trim() + "%' )", new ParameterList(), RecursiveType.None, 0);
            }
            dgvApplianceUseType.AutoGenerateColumns = false;
            dgvApplianceUseType.Rows.Clear();
            int num = 1;
            foreach (ChargsTemplate item in list)
            {
                int index = this.dgvApplianceUseType.Rows.Add();
                this.dgvApplianceUseType.Rows[index].Cells["Id"].Value = item.Id;
                this.dgvApplianceUseType.Rows[index].Cells["Index"].Value = num;
                num++;
                this.dgvApplianceUseType.Rows[index].Cells["oName"].Value = item.TemplateName;
                this.dgvApplianceUseType.Rows[index].Cells["HCode"].Value = item.HCode;
                this.dgvApplianceUseType.Rows[index].Cells["IsValid"].Value = item.IsValid == 1 ? "有效" : "无效";
            }
            dgvApplianceUseType.ClearSelection();
        }
        /// 
        /// 退出收费
        /// 
        /// 
        /// 
        private void tsbExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        /// 
        /// 新增收费
        /// 
        /// 
        /// 
        private void tsbAdd_Click(object sender, EventArgs e)
        {
            //设置状态为新增
            _state = EditState.ADD;
            txtName.TextChanged -= new EventHandler(txtName_TextChanged);
            txtName.TextChanged += new EventHandler(txtName_TextChanged_1);
            ControlExtension.EnabledControl(panel1, true);
            ControlExtension.ClearControl(panel1);
            chkIsValid.Checked = true;
        }
        int autid;
        /// 
        /// 修改收费
        /// 
        /// 
        /// 
        private void tsbModify_Click(object sender, EventArgs e)
        {
            //设置状态为修改
            _state = EditState.EDIT;
            if (!(dgvApplianceUseType.SelectedRows.Count > 0))
            {
                MessageBox.Show("请选择列表中的一项!");
                return;
            }
            txtName.TextChanged -= new EventHandler(txtName_TextChanged);
            txtName.TextChanged -= new EventHandler(txtName_TextChanged);
            txtName.TextChanged += new EventHandler(txtName_TextChanged_1);
            ControlExtension.EnabledControl(panel1, true);
            autid = Convert.ToInt32(dgvApplianceUseType.SelectedRows[0].Cells["Id"].Value);
            txtName.Text = dgvApplianceUseType.SelectedRows[0].Cells["oName"].Value.ToString();
            txtHCode.Text = dgvApplianceUseType.SelectedRows[0].Cells["HCode"].Value.ToString();
            chkIsValid.Checked = dgvApplianceUseType.SelectedRows[0].Cells["IsValid"].Value.ToString() == "有效" ? true : false;
        }
        /// 
        /// 取消收费
        /// 
        /// 
        /// 
        private void tsbCancel_Click(object sender, EventArgs e)
        {
            ControlExtension.ClearControl(panel1);
            ControlExtension.EnabledControl(panel1, false);
            txtName.Enabled = true;
            txtName.TextChanged -= new EventHandler(txtName_TextChanged_1);
            txtName.TextChanged -= new EventHandler(txtName_TextChanged);
            txtName.TextChanged += new EventHandler(txtName_TextChanged);
            BindDgv();
        }
        /// 
        /// 保存数据收费
        /// 
        /// 
        /// 
        private void tsbSave_Click(object sender, EventArgs e)
        {
            if (!ValidInput())
            {
                return;
            }
            if (_state == EditState.ADD)
            {
                ChargsTemplate temp = BChargsTemplate.SelectSingle(" TemplateName='" + txtName.Text.Trim() + "'", null);
                if (temp != null && temp.Id > 0)
                {
                    MessageBox.Show("该模板已存在,请重新输入!");
                    txtName.Focus();
                    return;
                }
            }
            ChargsTemplate aut = new ChargsTemplate();
            if (_state == EditState.EDIT) aut = BChargsTemplate.SelectSingle(autid);
            aut.TemplateType = TemplateType;
            aut.TemplateName = txtName.Text.Trim();
            aut.HCode = txtHCode.Text.Trim();
            aut.IsValid = chkIsValid.Checked == true ? 1 : 0;
            aut.OperatorId = PublicMethod.OperatorId;
            aut.OperatorTime = DateTime.Now;
            int num = 0;
            if (_state == EditState.ADD)
            {
                num = BChargsTemplate.Insert(aut);
            }
            else if (_state == EditState.EDIT)
            {
                aut.Id = autid;
                num = BChargsTemplate.Update(aut);
            }
            if (num > 0)
            {
                new frmMessageBox().Show();
                tsbCancel_Click(null, null);
            }
        }
        /// 
        /// 输入验证
        /// 
        /// 
        private bool ValidInput()
        {
            bool key = false;
            if (txtName.Text.Trim().Length < 1)
            {
                MessageBox.Show("请输入收费名称!");
            }
            else if (txtHCode.Text.Trim().Length < 1)
            {
                MessageBox.Show("请输入助记码!");
            }
            else
            {
                key = true;
            }
            return key;
        }
        /// 
        /// 输入字典名称时为助记码文本框赋值
        /// 
        /// 
        /// 
        private void txtName_TextChanged(object sender, EventArgs e)
        {
            BindDgv();
        }
        /// 
        /// 输入字典名称时为助记码文本框赋值
        /// 
        /// 
        /// 
        private void txtName_TextChanged_1(object sender, EventArgs e)
        {
            txtHCode.Text = PublicMethod.GetFirstLetter(txtName.Text);
        }
        /// 
        /// 判断DataGridView是否显示全部记录
        /// 
        /// 
        /// 
        private void chkAll_CheckedChanged(object sender, EventArgs e)
        {
            BindDgv();
        }
        private void dgvApplianceUseType_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvApplianceUseType.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex > -1)
            {
                int id = Convert.ToInt32(dgvApplianceUseType.CurrentRow.Cells["Id"].Value);
                dgvApplianceUseType.CurrentRow.Cells["check"].Value = false;
                this.Tag = null;
                frmChargSelect fs = new frmChargSelect(id);
                fs.ShowDialog();
                dgvApplianceUseType.ClearSelection();
            }
        }
        public List SelTemps;
        private void dgvApplianceUseType_Click(object sender, EventArgs e)
        {
            if (dgvApplianceUseType.CurrentRow == null) return;
            string oName = dgvApplianceUseType.CurrentRow.Cells["oName"].Value.ToString();
            if (SelTemps == null) SelTemps = new List();
            string id = dgvApplianceUseType.CurrentRow.Cells["Id"].Value.ToString();
            if (dgvApplianceUseType.CurrentRow.Cells["check"].EditedFormattedValue.ToString() == "True")
            {
                dgvApplianceUseType.CurrentRow.Cells["check"].Value = false;
                if (SelTemps.Contains(oName)) SelTemps.Remove(oName);
                this.Tag = SelTemps;
            }
            else
            {
                dgvApplianceUseType.CurrentRow.Cells["check"].Value = true;
                if (!SelTemps.Contains(oName)) SelTemps.Add(oName);
                this.Tag = SelTemps;
            }
        }
        private void dgvApplianceUseType_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //this.Close();
        }
    }
}