using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;

namespace WebAPI.Controllers
{
    /// <summary>
    /// 上报集团数据接口
    /// </summary>
    public class CNCECServerController : ApiController
    {
        /// <summary>
        /// 获取质量统计数据
        /// </summary>
        /// <returns></returns>
        public Model.ReturnData PostGetCQMSData()
        {
            var returnData = new Model.ReturnData();
            returnData.type = "CQMS";
            returnData.time = DateTime.Now.ToString();
            ServerService.GetToken();
            returnData.token = BLL.SysConstSetService.CNCECToken;
            returnData.expiryTime = BLL.SysConstSetService.CNCECTTokenExTime;
            if (!string.IsNullOrEmpty(returnData.token) && !string.IsNullOrEmpty(returnData.expiryTime) && DateTime.Parse(returnData.expiryTime) > DateTime.Now)
            {
                returnData.data = CQMSDataService.GetTodayCQMSData_CQMS();
            }
            else
            {
                returnData.code = 500;
                returnData.message = "token失效";
            }
            return returnData;
        }
        /// <summary>
        /// 获取质量统计数据成功后,回调通知上报成功
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public Model.ReturnData PostGetCQMSData_CallBalk([FromBody] CQMSData data)
        {
            var returnData = new Model.ReturnData();
            try
            {
                returnData.type = "CQMS_Back";
                returnData.time = DateTime.Now.ToString();
                foreach (var item in data.CQMSDataItems)
                {
                    var cQMSData_CQMS = CQMSDataService.GetCQMSData_CQMSById(item.Id);
                    cQMSData_CQMS.State = Const.CNCEC_State_S;
                    CQMSDataService.UpdateCQMSData_CQMS(cQMSData_CQMS);
                }

            }
            catch (Exception ex)
            {

                returnData.code = 404;
                returnData.message = ex.ToString();
            }
            return returnData;
        }
        /// <summary>
        /// 获取焊接统计数据
        /// </summary>
        /// <returns></returns>
        public Model.ReturnData PostGetHJGLData()
        {
            var returnData = new Model.ReturnData();
            returnData.type = "HJGL";
            returnData.time = DateTime.Now.ToString();
            ServerService.GetToken();
            returnData.token = BLL.SysConstSetService.CNCECToken;
            returnData.expiryTime = BLL.SysConstSetService.CNCECTTokenExTime;
            if (!string.IsNullOrEmpty(returnData.token) && !string.IsNullOrEmpty(returnData.expiryTime) && DateTime.Parse(returnData.expiryTime) > DateTime.Now)
            {
                returnData.data = HJGLData_HJGLService.GetTodayHJGLData_HJGL();
            }
            else
            {
                returnData.code = 500;
                returnData.message = "token失效";
            }
            return returnData;
        }
        /// <summary>
        /// 获取焊接统计数据    成功后,回调通知上报成功
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public Model.ReturnData PostGetHJGLData_CallBalk([FromBody] Model.HJGLData data)
        {
            var returnData = new Model.ReturnData();
            try
            {
                returnData.type = "HJGL_Back";
                returnData.time = DateTime.Now.ToString();
                foreach (var item in data.HJGLDataItems)
                {
                    var hJGLData_HJGL = HJGLData_HJGLService.GetHJGLData_HJGLById(item.Id);
                    hJGLData_HJGL.State = Const.CNCEC_State_S;
                    HJGLData_HJGLService.UpdateHJGLData_HJGL(hJGLData_HJGL);
                }
            }
            catch (Exception ex)
            {

                returnData.code = 404;
                returnData.message = ex.ToString();
            }
            return returnData;
        }
        /// <summary>
        /// 获取安全统计数据
        /// </summary>
        /// <returns></returns>
        public async Task<Model.ReturnData> PostGetHSSEData()
        {
            var returnData = new Model.ReturnData();
            returnData.type = "HSSE";
            returnData.time = DateTime.Now.ToString();
            ServerService.GetToken();
            returnData.token = BLL.SysConstSetService.CNCECToken;
            returnData.expiryTime = BLL.SysConstSetService.CNCECTTokenExTime;
            if (!string.IsNullOrEmpty(returnData.token) && !string.IsNullOrEmpty(returnData.expiryTime) && DateTime.Parse(returnData.expiryTime) > DateTime.Now.AddYears(-20))
            {
                try
                {
                    returnData.data = await HSSEData_HSSEService.GetTodayHSSEData_HSSE();
                }
                catch (Exception ex)
                {
                    returnData.code = 0;
                    returnData.message = ex.ToString();
                }
            }
            else
            {
                returnData.code = 500;
                returnData.message = "token失效";
            }
            return returnData;
        }
        /// <summary>
        /// 获取安全统计数据成功后,回调通知上报成功
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public Model.ReturnData PostGetHSSEData_CallBalk([FromBody] HSSEData data)
        {
            var returnData = new Model.ReturnData();
            try
            {
                returnData.type = "HSSE_Back";
                returnData.time = DateTime.Now.ToString();

                foreach (var item in data.HSSEDataItems)
                {
                    var hSSEData_HSSE = HSSEData_HSSEService.GetHSSEData_HSSEById(item.Id);
                    hSSEData_HSSE.State = Const.CNCEC_State_S;
                    HSSEData_HSSEService.UpdateHSSEData_HSSE(hSSEData_HSSE);
                }
            }
            catch (Exception ex)
            {

                returnData.code = 404;
                returnData.message = ex.ToString();
            }
            return returnData;
        }

        /// <summary>
        /// 获取实业统计数据 
        /// </summary>
        /// <returns></returns>
        public Model.ReturnData PostGetSYHSEData()
        {
            var returnData = new Model.ReturnData();
            returnData.type = "SYHSE";
            returnData.time = DateTime.Now.ToString();
            ServerService.GetToken();
            returnData.token = BLL.SysConstSetService.CNCECToken;
            returnData.expiryTime = BLL.SysConstSetService.CNCECTTokenExTime;
            if (!string.IsNullOrEmpty(returnData.token) && !string.IsNullOrEmpty(returnData.expiryTime) && DateTime.Parse(returnData.expiryTime) > DateTime.Now)
            {
                returnData.data = SYHSEData_SYHSEService.GetTodaySYHSEData_SYHSE();
            }
            else
            {
                returnData.code = 500;
                returnData.message = "token失效";
            }
            return returnData;
        }
        /// <summary>
        /// 获取实业统计数据成功后,回调通知上报成功
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public Model.ReturnData PostGetSYHSEData_CallBalk([FromBody] SYHSEData data)
        {
            var returnData = new Model.ReturnData();
            try
            {
                returnData.type = "SYHSE_Back";
                returnData.time = DateTime.Now.ToString();
                foreach (var item in data.SYHSEDataItems)
                {
                    var sYHSEData_SYHSE = SYHSEData_SYHSEService.GetSYHSEData_SYHSEById(item.Id);
                    sYHSEData_SYHSE.State = Const.CNCEC_State_S;
                    SYHSEData_SYHSEService.UpdateSYHSEData_SYHSE(sYHSEData_SYHSE);
                }
                //SYHSEData_SYHSE data = _data;
                //data.State = Const.CNCEC_State_S;
                //SYHSEData_SYHSEService.UpdateSYHSEData_SYHSE(data);
            }
            catch (Exception ex)
            {

                returnData.code = 404;
                returnData.message = ex.ToString();
            }
            return returnData;
        }



        #region 推送项目安全隐患风险数据

        /// <summary>
        /// 推送项目安全隐患风险数据
        /// </summary>
        /// <returns></returns> 
        //[HttpPost]
        public Model.ResponeData PushProjectHSSEData()
        {
            var responeData = new Model.ResponeData();
            try
            {
                var returndata = Project_HSSEData_HSSEService.PushProjectHSSEData();
                responeData.code = returndata.code;
                responeData.message = returndata.message;
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }

        #endregion

        #region 推送项目质量数据

        /// <summary>
        /// 推送项目质量数据
        /// </summary>
        /// <returns></returns> 
        //[HttpPost]
        public Model.ResponeData PushProjectCQMSData()
        {
            var responeData = new Model.ResponeData();
            try
            {
                var returndata = Project_CQMSDataService.PushProjectCQMSData();
                responeData.code = returndata.code;
                responeData.message = returndata.message;
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }

        #endregion

        #region 推送项目焊接数据数据

        /// <summary>
        /// 推送项目焊接数据数据
        /// </summary>
        /// <returns></returns> 
        //[HttpPost]
        public Model.ResponeData PushProjectHJGLData()
        {
            var responeData = new Model.ResponeData();
            try
            {
                var returndata = Project_HJGLData_HJGLService.PushProjectHJGLData();
                responeData.code = returndata.code;
                responeData.message = returndata.message;
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }

        #endregion
    }
}