using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using BLL;
namespace FineUIPro.Web.HJGL.MaterialManage
{
    public partial class StockIn : PageBase
    {
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
                this.drpWeldType.DataTextField = "Text";
                this.drpWeldType.DataValueField = "Value";
                this.drpWeldType.DataSource = BLL.DropListService.HJGL_ConsumablesTypeList();
                this.drpWeldType.DataBind();
                Funs.FineUIPleaseSelect(this.drpWeldType);
                UnitService.InitUnitByProjectIdUnitTypeDropDownList(drpUnit, this.CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_2, true);
                // 绑定表格
                BindGrid();
            }
        }
        /// 
        /// 绑定数据
        /// 
        private void BindGrid()
        {
            string strSql = @"SELECT StockIn.StockInId,StockIn.WeldId,StockIn.Amount,StockIn.Weight,Users.UserName AS Materialman,StockIn.InStockDate,StockIn.MaterialCertificateNumber,
                                     ReviewDate,Weld.ConsumablesCode,Weld.ConsumablesName,Weld.SteelFormat,StockIn.Warrantybook, StockIn.HeartNo,
                                    case Weld.ConsumablesType when '1' then '焊丝' when '2' then '焊条' when '3' then '焊剂' else '' end as WeldTypeName,Weld.WeldUnit,(unit.UnitName+'('+store.UnitStoreName+')') AS UnitStoreName,
                                     '否' IsUploadAttach
                              FROM dbo.Weld_StockIn AS StockIn
                              LEFT JOIN dbo.Base_Consumables AS Weld ON Weld.ConsumablesId=StockIn.WeldId
                              LEFT JOIN dbo.Sys_User AS Users ON Users.UserId=StockIn.Materialman
                              LEFT JOIN dbo.Weld_UnitStore store ON store.UnitStoreId=StockIn.UnitStoreId
							  LEFT JOIN dbo.Base_Unit unit ON unit.UnitId=store.UnitId
                              WHERE StockIn.Flag='1' and StockIn.ProjectId=@ProjectId ";
            List listStr = new List();
            listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
            if (!string.IsNullOrEmpty(this.txtWeldName.Text.Trim()))
            {
                strSql += " AND Weld.ConsumablesCode LIKE @ConsumablesCode";
                listStr.Add(new SqlParameter("@ConsumablesCode", "%" + this.txtWeldName.Text.Trim() + "%"));
            }
            if (drpWeldType.SelectedValue != BLL.Const._Null)
            {
                strSql += " AND Weld.ConsumablesType = @WeldTypeId";
                listStr.Add(new SqlParameter("@WeldTypeId", drpWeldType.SelectedValue));
            }
            if (drpUnit.SelectedValue != BLL.Const._Null)
            {
                strSql += " AND store.UnitId = @UnitId";
                listStr.Add(new SqlParameter("@UnitId", drpUnit.SelectedValue));
            }
            //if (CurrUser.Account != Const.Gly)
            //{
            //    strSql += " AND store.UnitId = @UnitId";
            //    listStr.Add(new SqlParameter("@UnitId", CurrUser.UnitId));
            //}
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);           
            tb = GetFilteredTable(Grid1.FilteredData, tb);
            foreach (DataRow row in tb.Rows)
            {
                var attach = AttachFileService.GetAttachFile(row["StockInId"].ToString(), Const.CLGL_StockInMenuId);
                if (attach != null && !string.IsNullOrEmpty(attach.AttachUrl))
                {
                    row["IsUploadAttach"] = "是";
                }
            }
            Grid1.RecordCount = tb.Rows.Count;
            var table = this.GetPagedDataTable(Grid1, tb);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        #endregion
        #region 表头过滤
        protected void Grid1_FilterChange(object sender, EventArgs e)
        {
            BindGrid();
        }
        #endregion
        #region 页索引改变事件
        /// 
        /// 页索引改变事件
        /// 
        /// 
        /// 
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            Grid1.PageIndex = e.NewPageIndex;
            BindGrid();
        }
        #endregion
        #region 排序
        /// 
        /// 排序
        /// 
        /// 
        /// 
        protected void Grid1_Sort(object sender, GridSortEventArgs e)
        {
            Grid1.SortDirection = e.SortDirection;
            Grid1.SortField = e.SortField;
            BindGrid();
        }
        #endregion
        #region 分页选择下拉改变事件
        /// 
        /// 分页选择下拉改变事件
        /// 
        /// 
        /// 
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
            BindGrid();
        }
        #endregion
        #region 弹出编辑窗口关闭事件
        /// 
        /// 弹出编辑窗体关闭事件
        /// 
        /// 
        /// 
        protected void Window1_Close(object sender, WindowCloseEventArgs e)
        {
            BindGrid();
        }
        #endregion
        #region 查询
        /// 
        /// 查询
        /// 
        /// 
        /// 
        protected void TextBox_TextChanged(object sender, EventArgs e)
        {
            BindGrid();
        }
        protected void drpWeldType_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindGrid();
        }
        #endregion
        #region 增加按钮
        /// 
        /// 增加按钮
        /// 
        /// 
        /// 
        protected void btnNew_Click(object sender, EventArgs e)
        {
            if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.CLGL_StockInMenuId, BLL.Const.BtnAdd))
            {
                PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("StockInEdit.aspx?StockInId={0}", string.Empty, "编辑 - ")));
            }
            else
            {
                Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
                return;
            }
        }
        #endregion
        protected void btnMoveStore_Click(object sender, EventArgs e)
        {
            if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.CLGL_StockInMenuId, BLL.Const.BtnModify))
            {
                if (CurrUser.UserId != Const.sysglyId && CurrUser.UserId != Const.hfnbdId)
                {
                    PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("StockMove.aspx", "移库 - ")));
                }
                else
                {
                    Alert.ShowInTop("管理员不能操作!", MessageBoxIcon.Warning);
                    return;
                }
            }
            else
            {
                Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
                return;
            }
        }
        #region 编辑
        /// 
        /// 双击Grid事件
        /// 
        /// 
        /// 
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            this.EditData();
        }
        /// 
        /// 编辑按钮
        /// 
        /// 
        /// 
        protected void btnMenuEdit_Click(object sender, EventArgs e)
        {
            this.EditData();
        }
        /// 
        /// 编辑数据方法
        /// 
        private void EditData()
        {
            if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.CLGL_StockInMenuId, BLL.Const.BtnModify))
            {
                if (Grid1.SelectedRowIndexArray.Length == 0)
                {
                    Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
                    return;
                }
                string id = Grid1.SelectedRowID;
                if (!string.IsNullOrEmpty(id))
                {
                    var q = BLL.StockInService.GetStockInById(id);
                    if (q.UnitStoreId != null)
                    {
                        var s = BLL.UnitStoreService.GetUnitStoreById(q.UnitStoreId);
                        //if (s != null && s.UnitId == CurrUser.UnitId)
                        //{
                        PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("StockInEdit.aspx?StockInId={0}", id, "编辑 - ")));
                        //}
                        //else
                        //{
                        //    Alert.ShowInTop("非本单位的数据,不能修改!", MessageBoxIcon.Warning);
                        //    return;
                        //}
                    }
                }
            }
            else
            {
                Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
                return;
            }
        }
        #endregion
        #region 删除
        /// 
        /// 右键删除事件
        /// 
        /// 
        /// 
        protected void btnMenuDelete_Click(object sender, EventArgs e)
        {
            this.DeleteData();
        }
        /// 
        /// 删除方法
        /// 
        private void DeleteData()
        {
            if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.CLGL_StockInMenuId, BLL.Const.BtnDelete))
            {
                if (Grid1.SelectedRowIndexArray.Length == 1)
                {
                    string rowID = Grid1.SelectedRowID.ToString();
                    if (this.judgementDelete(rowID))
                    {
                        var q = BLL.StockInService.GetStockInById(rowID);
                        BLL.StockInService.DeleteStockInById(rowID);
                        BLL.LogService.AddSys_Log(this.CurrUser, q.HeartNo, rowID, BLL.Const.CLGL_StockInMenuId, "删除焊材入库录入");
                    }
                }
                else
                {
                    Alert.ShowInTop("请选择要删除的记录!", MessageBoxIcon.Warning);
                    return;
                }
                this.BindGrid();
                ShowNotify("删除数据成功!", MessageBoxIcon.Success);
            }
            else
            {
                Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
                return;
            }
        }
        /// 
        /// 判断是否可删除
        /// 
        /// 
        /// 
        /// 
        private bool judgementDelete(string rowID)
        {
            string content = string.Empty;
            var q = from x in Funs.DB.Weld_UsingMat where x.StockInId == rowID select x;
            if (q.Count() > 0)
            {
                content = "该入库材料已有领用,不能删除!";
            }
            if (string.IsNullOrEmpty(content))
            {
                return true;
            }
            else
            {
                Alert.ShowInTop(content);
                return false;
            }
        }
        #endregion
        #region 导入
        /// 
        /// 导入
        /// 
        /// 
        /// 
        protected void btnImport_Click(object sender, EventArgs e)
        {
            PageContext.RegisterStartupScript(Window3.GetShowReference(String.Format("StockInImport.aspx", "导入 - ")));
        }
        #endregion
    }
}