using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Pub_Class;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Web.Http;
using WebAPI.Models;
namespace WebAPI.Controllers
{
    public class Gy_ColorClassController : ApiController
    {
        //获取系统参数
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;
        private json objJsonResult = new json();
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        DataSet ds;
        #region 获取颜色列表
        /// 
        /// 获取颜色分类列表
        ///  
        ///  columnNameList = new List();
                //查看权限
                if (!DBUtility.ClsPub.Security_Log("Gy_ColorClass", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                string sql1 = string.Format(@"select a.HItemID,a.HNumber 编码,a.HName 名称
                                            ,case when a.HEndFlag<>0 then 'Y' else ' 'end 明细标记
                                            ,case when a.HStopFlag<>0 then 'Y' else ' 'end 禁用标记
                                            ,a.HMakeEmp 创建,a.HMakeTime 创建时间
                                            ,a.HCheckEmp 审核,a.HCheckTime 审核时间
                                            ,a.HRemark 备注
                                            ,a.HUSEORGID
                                            ,isnull(o.Hname,'') 使用组织
                                            from Gy_ColorClass a
                                            left join Xt_ORGANIZATIONS o on a.HUSEORGID=o.HItemID where o.Hname='" + Organization + "'");
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn(sql1 + sWhere + "order by 编码", "Gy_ColorClass"); 
                }
                else
                {
                    string sql = sql1 + sWhere + "order by 编码";
                    ds = oCN.RunProcReturn(sql, "Gy_ColorClass");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = columnNameList;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 颜色列表删除
        /// 
        /// 颜色分类列表删除
        ///  
        /// 
        /// 根据基础资料ID 查找记录
        ///参数:string sql。
        ///返回值:object。
        ///  
        [Route("Gy_ColorClass/cx")]
        [HttpGet]
        public object cx(long HInterID)
        {
            try
            {
                ds = oCN.RunProcReturn("select * from Gy_ColorClass where HitemID =  " + HInterID, "Gy_ColorClass");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "false!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 保存按钮(新增或者修改)
        /// 
        /// 保存按钮
        ///  
        ///  list = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg2);
                long HItemID = list[0].HItemID;
                string HNumber = list[0].HNumber;
                string HName = list[0].HName;
                string HHelpCode = list[0].HHelpCode;
                string HRemark = list[0].HRemark;
                bool HStopflag = list[0].HStopflag;
                string HMakeEmp = msg3;
                string HModifyEmp = msg3;
                //末级标志
                bool HEndFlag = true;
                long HUSEORGID = list[0].HUSEORGID;
                long HCREATEORGID = msg4;
                //string HCreator = list[0].HCreator;
                //DateTime HCreateDate = list[0].HCreateDate;
                //DateTime HUpdateDate = list[0].HUpDateDate;
                //DateTime HCheckDate = list[0].HCheckDate;
                //DateTime HDeleteDate = list[0].HDeleteDate;
                
                //得到短代码
                string HShortNumber = DBUtility.ClsPub.GetShortNumber(HNumber);
                if (HShortNumber.Trim() == "")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!短代码为空!";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                //等级
                int HLevel = DBUtility.ClsPub.GetLevel(HNumber);
                //检查父级是否存在
                long HParentID = 0;
                string sParent = DBUtility.ClsPub.GetParentCode(HNumber);
                if (sParent.Trim() == "")
                {
                    HParentID = 0;
                }
                else
                {
                    ds = oCN.RunProcReturn("select * from Gy_ColorClass where HNumber='" + sParent + "' and HStopFlag=0 ", "Gy_ColorClass");
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        HParentID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!上级代码不存在或被禁用!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                }
              
                //判断权限
                //if (!ClsPub.Security_Log(msg5, 1, false, msg4))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "没有找到该功能模块!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                //if (!DBUtility.ClsPub.AllowNumber(HNumber))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "代码中不能出现连续‘.’并且首位末位不能为‘.’!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                //if (oDept.HavSameNumber(HItemID, HNumber))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "代码重复!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                //保存
                //保存完毕后处理
                if (HItemID == 0)
                {
                    //新增
                    oCN.BeginTran();
                    if (HStopflag)
                    {
                        //如果新增时就禁用
                        oCN.RunProc("Insert into Gy_ColorClass " +
                    " (HNumber,HName,HHelpCode,HShortNumber,HParentID" +
                    ",HLevel,HEndFlag,HStopflag,HRemark,HMakeEmp,HCREATEORGID,HUSEORGID,HMakeTime,HStopEmp,HStopTime) " +
                    " Values('" + HNumber + "','" + HName + "','" + HHelpCode + "','" + HShortNumber + "'," + HParentID.ToString() +
                    "," + HLevel.ToString() + "," + Convert.ToString(HEndFlag ? 1 : 0) + "," + Convert.ToString(HStopflag ? 1 : 0) + ",'" + HRemark + "','" + HMakeEmp + "',"
                    + HCREATEORGID + "," + HUSEORGID + ",getdate(),'" + HMakeEmp + "',getdate())", ref DBUtility.ClsPub.sExeReturnInfo);
                    }
                    else
                    {
                        oCN.RunProc("Insert into Gy_ColorClass " +
                    " (HNumber,HName,HHelpCode,HShortNumber,HParentID" +
                    ",HLevel,HEndFlag,HStopflag,HRemark,HMakeEmp,HCREATEORGID,HUSEORGID,HMakeTime) " +
                    " Values('" + HNumber + "','" + HName + "','" + HHelpCode + "','" + HShortNumber + "'," + HParentID.ToString() +
                    "," + HLevel.ToString() + "," + Convert.ToString(HEndFlag ? 1 : 0) + "," + Convert.ToString(HStopflag ? 1 : 0) + ",'" + HRemark + "','" + HMakeEmp + "',"
                    + HCREATEORGID + "," + HUSEORGID + ",getdate())", ref DBUtility.ClsPub.sExeReturnInfo);
                    }
                    //修改上级为非末级代码
                    oCN.RunProc("Update Gy_ColorClass set HEndflag=0 where HItemID=" + HParentID, ref DBUtility.ClsPub.sExeReturnInfo);
                    oCN.Commit();
                }
                //更新
                else
                {
                    oCN.BeginTran();
                    //主表
                    //判断禁用标志进行相关内容更新
                    if (HStopflag)
                    {
                        var ds = oCN.RunProcReturn("select * from Gy_ColorClass where HItemID=" + HItemID, "Gy_ColorClass");
                        if (ds.Tables[0].Rows[0]["HStopEmp"].ToString() == "")//如果原来无禁用
                        {
                            oCN.RunProc("update Gy_ColorClass set HStopEmp='" + msg3 + "',HStopTime=getdate(),HStopflag=1 where HItemID=" + HItemID);
                        }
                    }
                    else
                    {
                        var ds = oCN.RunProcReturn("select * from Gy_ColorClass where HItemID=" + HItemID, "Gy_ColorClass");
                        if (ds.Tables[0].Rows[0]["HStopEmp"].ToString() != "")//如果原来有禁用
                        {
                            oCN.RunProc("update Gy_ColorClass set HStopEmp='',HStopTime=null,HStopflag=0 where HItemID=" + HItemID);
                        }
                    }
                    oCN.RunProc("Update Gy_ColorClass set " +
                        " HNumber='" + HNumber + "'" +
                        ",HName='" + HName + "'" +
                        ",HHelpCode='" + HHelpCode + "'" +
                        ",HLevel='" + HLevel + "'" +
                        ",HShortNumber='" + HShortNumber + "'" +
                        ",HParentID=" + HParentID +
                        ",HUSEORGID=" + HUSEORGID.ToString() +
                        ",HCREATEORGID=" + HCREATEORGID.ToString() +
                        ",HStopflag=" + Convert.ToString(HStopflag ? 1 : 0) +
                        ",HModifyEmp='" + HModifyEmp + "'" +
                        ",HModifyTime= getdate()" +
                        ",HRemark= '" + HRemark + "' Where HItemID=" + HItemID, ref DBUtility.ClsPub.sExeReturnInfo);
                    //修改子项目代码
                    //oCN.RunProc("exec h_p_Gy_UpdateNumber Gy_Department,'" + HNumber + ".','" + this.HOldNumber + ".'", ref DBUtility.ClsPub.sExeReturnInfo);
                    //将上级 为非末级
                    oCN.RunProc("Update Gy_ColorClass set HEndflag=0 where HItemID=" + HParentID, ref DBUtility.ClsPub.sExeReturnInfo);
                    oCN.Commit();
                }
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                //WebAPIController.Add_Log("送货单下推", UserName, "生成送货单");
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                //oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        
        #region 部门审核、反审核
        /// 
        /// 
        ///  
        /// 
        /// 
        ///  
        ///