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_ClassTimePrjSubController : ApiController
    {
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;
        private json objJsonResult = new json();
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        DataSet ds;
        /// 
        /// 返回列表
        ///参数:string sql。
        ///返回值:object。
        /// 
        [Route("Gy_ClassTimePrjSub/list")]
        [HttpGet]
        public object list(string sWhere, string user)
        {
            try
            {
                if (!DBUtility.ClsPub.Security_Log("Gy_ClassTimePrjSub", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from h_v_Gy_ClassTimePrjSubList where 1=1 order by HInterID desc", "h_v_Gy_ClassTimePrjSubList");
                }
                else
                {
                    string sql1 = "select * from h_v_Gy_ClassTimePrjSubList where 1=1 ";
                    string sql = sql1 + sWhere + " order by HInterID desc";
                    ds = oCN.RunProcReturn(sql, "h_v_Gy_ClassTimePrjSubList");
                }
                //if (ds.Tables[0].Rows.Count != 0 || ds != null)
                //{
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
                //}
                //else
                //{
                //objJsonResult.code = "0";
                //objJsonResult.count = 0;
                //objJsonResult.Message = "无数据";
                //objJsonResult.data = null;
                //return objJsonResult;
                //}
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 根据基础资料ID 查找记录
        ///参数:string sql。
        ///返回值:object。
        /// 
        [Route("Gy_ClassTimePrjSub/cx")]
        [HttpGet]
        public object cx(long HInterID)
        {
            try
            {
                ds = oCN.RunProcReturn("select * from h_v_Gy_ClassTimePrjSubList where HInterID=" + HInterID, "h_v_Gy_ClassTimePrjSubList");
                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;
            }
        }
        /// 
        /// 保存按钮
        ///参数:string sql。
        ///返回值:object。
        /// 
        [Route("Gy_ClassTimePrjSub/ModifyByID")]
        [HttpPost]
        public object ModifyByID([FromBody] JObject oMain)
        {
            try
            {
                DAL.ClsGy_ClassTimePrjSub_Ctl oDept = new DAL.ClsGy_ClassTimePrjSub_Ctl();
                DAL.ClsGy_ClassTimePrjSub_View oDeptHlp = new DAL.ClsGy_ClassTimePrjSub_View();
                var _value = oMain["oMain"].ToString();
                string msg1 = _value.ToString();
                string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                string msg2 = sArray[0].ToString();
                string msg3 = sArray[1].ToString();
                //判断权限
                if (!ClsPub.Security_Log("Gy_ClassTimePrjSub_Edit", 1, false, msg3))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无保存权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //反序列化
                msg2 = "[" + msg2.ToString() + "]";
                List list = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg2);
                long HInterID = list[0].HInterID;
                long HEntryID = list[0].HEntryID;
                string HYear = list[0].HYear;
                decimal HPeriod = list[0].HPeriod;
                string HSumWorkTimes = list[0].HSumWorkTimes;
                decimal HSumMoney = list[0].HSumMoney;
                string HRate = list[0].HRate;
                decimal HOldRate = list[0].HOldRate;
                string HNumber = list[0].HNumber;
                string HName = list[0].HName;
                string HMaker = list[0].HMaker;
                //保存
                //保存完毕后处理
                if (HInterID == 0)
                {
                    oCN.BeginTran();
                    oCN.RunProc("Insert into Gy_ClassTimePrjSub" +
                    " (HEntryID,HMaker,HMakeDate,HSumWorkTimes" +
                    ",HRate,HSumMoney,HYear,HPeriod" +
                    ",HOldRate) " +
                    " Values(" + HEntryID + ",'" + HMaker + "','" + DBUtility.ClsPub.GetServerDate(-1) + "'," + HSumWorkTimes.ToString() +
                    "," + HRate + "," + HSumMoney.ToString() + "," + HYear.ToString() + "," + HPeriod.ToString() +
                    "," + HOldRate.ToString() + ")", ref DBUtility.ClsPub.sExeReturnInfo);
                    //修改上级为非末级代码
                    oCN.Commit();
                }
                else
                {
                    //若MAINDI重复则重新获取
                    oCN.BeginTran();
                    //主表
                    oCN.RunProc("Update Gy_ClassTimePrjSub set " +
                        "HMaker='" + HMaker + "'" +
                        ",HSumWorkTimes=" + HSumWorkTimes.ToString() +
                        ",HSumMoney=" + HSumMoney.ToString() +
                        ",HYear=" + HYear.ToString() +
                        ",HPeriod=" + HPeriod.ToString() +
                        ",HOldRate=" + HOldRate.ToString() +
                        ",HEntryID=" + HEntryID.ToString() +
                        ",HRate= '" + HRate + "' Where HInterID=" + HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                    //修改子项目代码
                    //oCN.RunProc("exec h_p_Gy_UpdateNumber Gy_Warehouse,'" + HNumber + ".','" + this.HOldNumber + ".'", 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;
            }
        }
        /// 
        /// 核算记录删除功能
        /// 
        /// 
        [Route("DeltetGy_ClassTimePrjSub")]
        [HttpGet]
        public object DeltetGy_ClassTimePrjSub(string HItemID, string user)
        {
            DataSet ds;
            DataSet ds1;
            try
            {
                if (!DBUtility.ClsPub.Security_Log("Gy_ClassTimePrjSub_Delete", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无删除权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (string.IsNullOrWhiteSpace(HItemID))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.BeginTran();//开始事务
                oCN.RunProc("delete from Gy_ClassTimePrjSub where HInterID=" + HItemID);
                oCN.Commit();//提交事务
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "数据删除成功!";
                objJsonResult.data = null;
                return objJsonResult; ;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "删除失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 保存按钮
        ///参数:string sql。
        ///返回值:object。
        /// 
        [Route("Gy_ClassTimePrjSub/Calc")]
        [HttpGet]
        public object Calc(string HEntryID, string HYear, string HPeriod)
        {
            try
            {
                if (string.IsNullOrEmpty(HEntryID) || HEntryID == "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请选择核算方式组!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (HYear == "" || HPeriod == "" || !IsDate($"{HYear}-{HPeriod}-1"))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请输入有限的年月份!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                string sql = $"exec h_p_Pay_GetAvgMoneyTest {HYear},{HPeriod},{HEntryID}";
                ds = oCN.RunProcReturn(sql, "Pay_GetAvgMoneyTest");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        public bool IsDate(string strDate)
        {
            try
            {
                DateTime.Parse(strDate);
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}