using DAL;
using DBUtility;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using SQLHelper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI;
using WebAPI.Models;
using WebAPI.Service;
namespace WebAPI.Controllers
{
    public class WebAPIController : ApiController
    {
        public string sWhere = "";
        public WebServer webserver = new WebServer();
        public DataSet ds = new DataSet();
        private json objjson = new json();
        private json objJsonResult = new json();
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        //public static string sUrl = "http://183.129.128.86:9090/WEBS-WMSTest/WebService1.asmx";
        //  private POInStockBillServices oclscg_poinstockbillmain = new POInStockBillServices();
        /// 
        /// 送货单表头信息
        /// 
        /// 
        /// 
        [Route("Web/GetMAXNum")]
        [HttpGet]
        public object GetMAXNum(string HBillType)
        {
            try
            {
                string HBillNo = "";
                Int64 HInterID = 0;//显示的字段
                HInterID = DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo);
                HBillNo = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true);
                //----------创建虚表------------------------
                DataTable dt_Main = new DataTable("Json");
                dt_Main.Columns.Add("HBillNo", typeof(string));
                dt_Main.Columns.Add("HInterID", typeof(int));
                //---------创建新行------------------------
                DataRow dr_main = dt_Main.NewRow();//创建新行 
                dt_Main.Rows.Add(dr_main);//将新行加入到表中
                dr_main["HBillNo"] = DBUtility.ClsPub.isStrNull(HBillNo);
                dr_main["HInterID"] = DBUtility.ClsPub.isLong(HInterID);
                if (HBillNo == null || HInterID == 0)
                {
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = "获取失败";
                    objjson.data = null;
                    return objjson;
                }
                else
                {
                    objjson.code = "0";
                    objjson.count = 1;
                    objjson.Message = "获取成功";
                    objjson.data = dt_Main;
                    return objjson;
                }
            }
            catch (Exception e)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "获取失败" + e.ToString();
                objjson.data = null;
                return objjson;
            }
        }
        [Route("Web/GetMAXNumPDA")]
        [HttpGet]
        public object GetMAXNumPDA(string HBillType)
        {
            try
            {
                string HBillNo = "";
                string sErrMsg = "";
                Int64 HInterID = 0;//显示的字段
                HInterID = DBUtility.ClsPub.CreateBillID_Prod(HBillType, ref sErrMsg);
                HBillNo = DBUtility.ClsPub.CreateBillCode_Prod(HBillType, ref sErrMsg, true);
                DataSet ds;
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ds = oCN.RunProcReturn("exec h_p_IF_CheckBillIDExists_WMS  " + HInterID + ",'" + HBillNo + "'", "h_p_IF_CheckBillIDExists_WMS");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "存在重复单据内码或单据号的单据,不允许新增,请退出后重新登录!";
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = sErrMsg;
                    objjson.data = null;
                    return objjson;
                }
                else if (DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0][0]) == "1")
                {
                    sErrMsg = "存在重复单据内码或单据号的单据,不允许新增,请退出后重新登录!";
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = sErrMsg;
                    objjson.data = null;
                    return objjson;
                }
                else
                {
                    //----------创建虚表------------------------
                    DataTable dt_Main = new DataTable("Json");
                    dt_Main.Columns.Add("HBillNo", typeof(string));
                    dt_Main.Columns.Add("HInterID", typeof(int));
                    //---------创建新行------------------------
                    DataRow dr_main = dt_Main.NewRow();//创建新行 
                    dt_Main.Rows.Add(dr_main);//将新行加入到表中
                    dr_main["HBillNo"] = DBUtility.ClsPub.isStrNull(HBillNo);
                    dr_main["HInterID"] = DBUtility.ClsPub.isLong(HInterID);
                    //返回数据
                    objjson.code = "0";
                    objjson.count = 1;
                    objjson.Message = "获取成功";
                    objjson.data = dt_Main;
                    return objjson;
                }
            }
            catch (Exception e)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "获取失败" + e.ToString();
                objjson.data = null;
                return objjson;
            }
        }
        //[Route("Web/Get_MaxBillNoAndID")]
        //[HttpGet]
        //public object Get_MaxBillNoAndID(string HBillType)
        //{
        //    try
        //    {
        //        string HBillNo = "";
        //        Int64 HInterID = 0;//显示的字段
        //        HInterID = DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo);
        //        HBillNo = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true);
        //        //----------创建虚表------------------------
        //        DataTable dt_Main = new DataTable("Json");
        //        dt_Main.Columns.Add("HBillNo", typeof(string));
        //        dt_Main.Columns.Add("HInterID", typeof(int));
        //        //---------创建新行------------------------
        //        DataRow dr_main = dt_Main.NewRow();//创建新行 
        //        dt_Main.Rows.Add(dr_main);//将新行加入到表中
        //        dr_main["HBillNo"] = DBUtility.ClsPub.isStrNull(HBillNo);
        //        dr_main["HInterID"] = DBUtility.ClsPub.isLong(HInterID);
        //        if (HBillNo == null || HInterID == 0)
        //        {
        //            objjson.code = "0";
        //            objjson.count = 0;
        //            objjson.Message = "获取失败";
        //            objjson.data = null;
        //            return objjson;
        //        }
        //        else
        //        {
        //            objjson.code = "0";
        //            objjson.count = 1;
        //            objjson.Message = "获取成功";
        //            objjson.data = dt_Main;
        //            return objjson;
        //        }
        //    }
        //    catch (Exception e)
        //    {
        //        objjson.code = "0";
        //        objjson.count = 0;
        //        objjson.Message = "获取失败" + e.ToString();
        //        objjson.data = null;
        //        return objjson;
        //    }
        //}
        /// 
        /// 登录
        /// 
        /// 用户名
        /// 密码
        /// 组织
        /// 
        [Route("Web/GetUser")]
        [HttpGet]
        public object GetUser(string UserName, string PassWord, string HOrgName)
        {
            try
            {                              
                DataSet ds = null;
                ClsCN oCnLoc = new ClsCN();
                DAL.ClsUser oUser = new DAL.ClsUser();
                ds = oUser.CheckMainID(UserName.Trim(), DBUtility.ClsPub.StrToPsd(PassWord.Trim()));
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = "密码错误!";
                    objjson.data = null;
                    return objjson;
                }
                string sql = string.Format(@" select a.* from Gy_UserByOrgRelation a
                                              where a.HUserID = '{0}' and a.HOrgID = '{1}'", UserName, HOrgName);
                DataSet _ds = oCnLoc.RunProcReturn(sql, "h_p_Xt_UserRelationOrg_Check");
                //if (_ds == null || _ds.Tables[0].Rows.Count == 0)
                //{
                //    objjson.code = "0";
                //    objjson.count = 0;
                //    objjson.Message = "用户" + UserName + "没有该组织权限";
                //    objjson.data = null;
                //    return objjson;
                //}
                objjson.code = "0";
                objjson.count = 1;
                objjson.Message = "登录成功!";
                objjson.data = ds.Tables[0];
                return objjson;
            }
            catch (Exception e)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "登录异常!" + e.Message;
                objjson.data = null;
                return objjson; ;
            }
        }
        /// 
        /// 菜单栏
        /// 
        /// 
        [Route("Web/MenuBar")]
        [HttpGet]
        public object MenuBar(string UserName)
        {
            try
            {
                //获取系统参数
                string Ret = "";
                if (oSystemParameter.ShowBill(ref Ret))
                {
                    //判断客户为龙山汽配
                    if (oSystemParameter.omodel.WMS_CampanyName == "龙山汽配")
                    {
                        //判断是否有查询权限
                        if (!DBUtility.ClsPub.Security_Log("Xt_MenuBar_Unfold", 1, false, UserName))
                        {
                            objjson.code = "0";
                            objjson.count = 0;
                            objjson.Message = "无展开菜单栏权限!";
                            objjson.data = null;
                            return objjson;
                        }
                    }
                }                
                objjson.code = "0";
                objjson.count = 1;
                objjson.Message = "展开成功!";
                objjson.data = 1;
                return objjson;
            }
            catch (Exception e)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "异常!" + e.Message;
                objjson.data = null;
                return objjson; ;
            }
        }
        /// 
        /// 修改密码
        /// 
        /// 
        /// 
        /// 
        [Route("Web/GetXGPassword")]
        [HttpGet]
        public object GetXGPassword(string UserName, string oldPassword, string PassWord, string Repassword)
        {
            try
            {
                ClsCN oCn = new ClsCN();
                DataSet oDs = new DataSet();
                //==========
                oDs = oCn.RunProcReturn("select Czmm from  Gy_Czygl where Czybm='" + UserName + "'", "Gy_Czygl");
                if (PassWord.Trim() != Repassword.Trim())
                {
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = "2次密码不一致!";
                    objjson.data = oDs.Tables[0];
                    return objjson; ;
                }
                //===========
                if (oDs == null || oDs.Tables[0].Rows.Count == 0)
                {
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = "没有这个用户,不能修改密码!";
                    objjson.data = null;
                    return objjson; ;
                }
                else
                {
                    oCn.RunProc("update  Gy_Czygl set Czmm='" + ClsPub.StrToPsd(PassWord.Trim()) + "' where Czybm='" + UserName.Trim() + "'");
                    objjson.code = "0";
                    objjson.count = 1;
                    objjson.Message = "* 密码修改成功!";
                    objjson.data = null;
                    return objjson; ;
                }
            }
            catch (Exception)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "修改密码异常!";
                objjson.data = null;
                return objjson; ;
            }
        }
        #region 用户设置
        #region 获取用户信息
        [Route("Gy_USERSet_PDA/GetGy_Czygl_Info")]
        [HttpGet]
        public object GetGy_Czygl_Info(string Czybm, string user)
        {
            try
            {
                //查看权限
                //if (!DBUtility.ClsPub.Security_Log("Gy_ProjectStage_Query", 1, false, user))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "无查看权限!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                string sql = @"select Czybm, Czymc, HWhID, HWhName, HSecManagerID, HSecManager, HKeeperID, HKeeper, HDeptID, HDept, HCloudUserName, HCloudUserPsd from Gy_Czygl where Czybm = '" + Czybm + "'";
                ds = oCN.RunProcReturn(sql, "Gy_Czygl");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "未找到相关数据!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                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 保存用户信息
        [Route("Gy_USERSet_PDA/SaveGy_Czygl_Info")]
        [HttpPost]
        public object SaveGy_Czygl_Info([FromBody] JObject sMainSub)
        {
            try
            {
                //获取参数
                var _value = sMainSub["sMainSub"].ToString();
                string msg1 = _value.ToString();
                string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                Int64 HWhID = Int64.Parse(sArray[0].ToString());
                string HWhName = sArray[1].ToString();
                Int64 HSecManagerID = Int64.Parse(sArray[2].ToString());
                string HSecManager = sArray[3].ToString();
                Int64 HKeeperID = Int64.Parse(sArray[4].ToString());
                string HKeeper = sArray[5].ToString();
                Int64 HDeptID = Int64.Parse(sArray[6].ToString());
                string HDept = sArray[7].ToString();
                string HCloudUserName = sArray[8].ToString().Trim();
                string HCloudUserPsd = sArray[9].ToString().Trim();
                string Czybm = sArray[10].ToString();
                string user = sArray[11].ToString();                     //操作用户的用户名
                ////判断是否有新增权限
                //if (!DBUtility.ClsPub.Security_Log("Sc_ICMOBillQualityStatus_Tmp_Edit", 1, false, user))
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "无新增权限!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                string sql = "update Gy_Czygl set " + 
                    "HWhID = " + HWhID + 
                    ", HWhName = '" + HWhName +
                    "', HSecManagerID = " + HSecManagerID +
                    ", HSecManager = '" + HSecManager +
                    "', HKeeperID = " + HKeeperID +
                    ", HKeeper = '" + HKeeper +
                    "', HDeptID = " + HDeptID +
                    ", HDept = '" + HDept +
                    "', HCloudUserName = '" + HCloudUserName +
                    "', HCloudUserPsd = '" + HCloudUserPsd +
                    "' where Czybm = '" + Czybm + "'";
                oCN.RunProc(sql);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #endregion
        //撤销缓存列表记录
        [Route("Web/Rescind_Json")]
        [HttpGet]
        public object Rescind_Json(long sHInterID, string sBillNo, string sBillType)
        {
            string sErrMsg = string.Empty;
            try
            {
                if (webserver.RescindBillList(sHInterID, sBillNo, sBillType, ref sErrMsg))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "删除成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "删除失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //删除缓存列表记录
        [Route("Web/Delete_Json")]
        [HttpGet]
        public object Delete_Json(long sHInterID)
        {
            string sErrMsg = string.Empty;
            try
            {
                if (webserver.DeleteBillList(sHInterID, ref sErrMsg))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "删除成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "删除失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //缓存列表刷新
        [Route("Web/DisBillEntryList_Mate_Webs_Json")]
        [HttpGet]
        public object DisBillEntryList_Webs_Json(string HBillType, string sWhere)
        {
            try
            {
                ds = webserver.GetKf_PonderationBillMain_TempList(HBillType, sWhere);
                List