using BLL;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Word;
using Model;
using Model.APIItem.SYHSE;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net.Mime;
using System.Security.Policy;
using System.Web;
using System.Web.Http;
using System.Web.UI.WebControls;

namespace WebAPI.Controllers.SYHSE
{
    public class SYController : ApiController
    {
        #region 企业承诺
        /// <summary>
        /// 企业承诺
        /// </summary>
        /// <param name="newItem"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData SavePromise([FromBody] DataPromiseItem newItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.SYHSEData_Promise promise = new SYHSEData_Promise();
                    promise.PromiseId = Guid.NewGuid().ToString();
                    promise.ProjectId = newItem.ProjectId;
                    promise.UnitId = newItem.UnitId;
                    promise.PromiseDate = newItem.PromiseDate;
                    promise.Promise = newItem.Promise;
                    promise.CreateMan = newItem.CreateMan;
                    promise.CreateDate = DateTime.Now;
                    db.SYHSEData_Promise.InsertOnSubmit(promise);
                    db.SubmitChanges();
                    newItem.PromiseId = promise.PromiseId;
                    string contenttype = "application/json;charset=utf-8";
                    string url = ConfigurationManager.AppSettings["QHSE_URL"]+ "api/SYHSEData/SavePromise";
                    string messages = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(newItem));
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion

        #region 保存安全人工时
        /// <summary>
        /// 保存安全人工时
        /// </summary>
        /// <param name="newItem"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData SaveDataBase([FromBody] DataBaseItem newItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.SYHSEData_Base dataBase = new SYHSEData_Base();
                    dataBase.Id = Guid.NewGuid().ToString();
                    dataBase.ProjectId = newItem.ProjectId;
                    dataBase.UnitId = newItem.UnitId;
                    dataBase.ReportDate = newItem.ReportDate;
                    dataBase.SafeWorkinghours = newItem.SafeWorkinghours;
                    dataBase.CreateMan = newItem.CreateMan;
                    dataBase.CreateDate = DateTime.Now;  
                    db.SYHSEData_Base.InsertOnSubmit(dataBase);
                    db.SubmitChanges();

                    newItem.Id = dataBase.Id;
                    string contenttype = "application/json;charset=utf-8";
                    string url = ConfigurationManager.AppSettings["QHSE_URL"] + "api/SYHSEData/SaveDataBase";
                    string messages = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(newItem));
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion

        #region 保存重大危险源
        /// <summary>
        /// 保存重大危险源
        /// </summary>
        /// <param name="newItem"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData SaveMajorHazard([FromBody] DataMajorHazardItem newItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.SYHSEData_MajorHazard hazard = new SYHSEData_MajorHazard();
                    hazard.Id = Guid.NewGuid().ToString();
                    hazard.ProjectId = newItem.ProjectId;
                    hazard.UnitId = newItem.UnitId;
                    hazard.ReportDate = newItem.ReportDate;
                    hazard.HazardName = newItem.HazardName;
                    hazard.HazardCode = newItem.HazardCode;
                    hazard.Type = newItem.Type;
                    hazard.HazardLevel = newItem.HazardLevel;
                    hazard.DeviceName = newItem.DeviceName;
                    hazard.Material = newItem.Material;
                    hazard.Amount = newItem.Amount;
                    hazard.MaxAmount = newItem.MaxAmount;
                    hazard.MinAmount = newItem.MinAmount;
                    hazard.MainRespPerson = newItem.MainRespPerson;
                    hazard.MainRespDepartment = newItem.MainRespDepartment;
                    hazard.MainTechPerson = newItem.MainTechPerson;
                    hazard.MainOperaPerson = newItem.MainOperaPerson; 
                    hazard.CreateMan = newItem.CreateMan;
                    hazard.CrateDate = DateTime.Now;
                    db.SYHSEData_MajorHazard.InsertOnSubmit(hazard);
                    db.SubmitChanges();

                    newItem.Id=hazard.Id;
                    string contenttype = "application/json;charset=utf-8";
                    string url = ConfigurationManager.AppSettings["QHSE_URL"] + "api/SYHSEData/SaveMajorHazard";
                    string messages = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(newItem));
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion

        #region 保存隐患排查
        /// <summary>
        /// 保存隐患排查
        /// </summary>
        /// <param name="newItem"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData SaveHiddenDangers([FromBody] DataHiddenDangersItem newItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.SYHSEData_HiddenDangers dangers = new SYHSEData_HiddenDangers();
                    dangers.Id = Guid.NewGuid().ToString();
                    dangers.ProjectId = newItem.ProjectId;
                    dangers.UnitId = newItem.UnitId;
                    dangers.CheckDate = newItem.CheckDate;
                    dangers.DangerDes = newItem.DangerDes;                    
                    dangers.CheckUnit = newItem.CheckUnit;
                    dangers.CheckPerson = newItem.CheckPerson;
                    dangers.ConfirmPerson = newItem.ConfirmPerson;
                    dangers.RiskLevel = newItem.RiskLevel;
                    dangers.RiskAddress = newItem.RiskAddress;
                    dangers.ResponseMan = newItem.ResponseMan;
                    dangers.RectificationStatus = newItem.RectificationStatus;
                    dangers.Status = newItem.Status;
                    dangers.CreateMan = newItem.CreateMan;
                    dangers.ResponseUnit = newItem.ResponseUnit;
                    dangers.Type = newItem.Type;
                    dangers.CreateDate = DateTime.Now;
                    db.SYHSEData_HiddenDangers.InsertOnSubmit(dangers);
                    db.SubmitChanges();

                    SaveAttachFile(dangers.Id+"1", BLL.Const.SYHSE_HiddenDangersMenuId, newItem.ImgAfter);
                    SaveAttachFile(dangers.Id, BLL.Const.SYHSE_HiddenDangersMenuId, newItem.ImgBefore);
                    string urlFileUpLoad = ConfigurationManager.AppSettings["QHSE_URL"] + "api/FileUpload/Post";
                    if (!string.IsNullOrEmpty(newItem.ImgBefore))
                    {
                        string rootUrl = ConfigurationManager.AppSettings["localRoot"];

                        var urls = newItem.ImgBefore.Split(',');
                        string urlRes = "";
                        foreach (var u in urls)
                        {
                            urlRes += APIGetHttpService.HttpUploadFile(urlFileUpLoad, rootUrl + u, null).Trim('"') + ",";
                        }
                        newItem.ImgBefore = urlRes.TrimEnd(',');
                    }
                    if (!string.IsNullOrEmpty(newItem.ImgAfter))
                    {
                        string rootUrl = ConfigurationManager.AppSettings["localRoot"];

                        var urls = newItem.ImgAfter.Split(',');
                        string urlRes = "";
                        foreach (var u in urls)
                        {
                            urlRes += APIGetHttpService.HttpUploadFile(urlFileUpLoad, rootUrl + u, null).Trim('"') + ",";
                        }
                        newItem.ImgAfter = urlRes.TrimEnd(',');
                    }
                    newItem.Id = dangers.Id;
                    string contenttype = "application/json;charset=utf-8";
                    string url = ConfigurationManager.AppSettings["QHSE_URL"] + "api/SYHSEData/SaveHiddenDangers";
                    string messages = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(newItem));


                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion
        public static void SaveAttachFile(string dataId, string menuId, string url)
        {
            Model.ToDoItem toDoItem = new Model.ToDoItem
            {
                MenuId = menuId,
                DataId = dataId,
                UrlStr = url,
            };
            APIUpLoadFileService.SaveAttachUrl(toDoItem);
        }
        #region 保存风险
        /// <summary>
        /// 保存风险
        /// </summary>
        /// <param name="newItem"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData SaveRisk([FromBody] DataRiskItem newItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.SYHSEData_Risk risk = db.SYHSEData_Risk.FirstOrDefault(x => x.RiskEvent == newItem.RiskEvent && x.ProjectId == newItem.ProjectId);
                    if (risk == null)
                    {
                        risk = new SYHSEData_Risk();
                        risk.Id = Guid.NewGuid().ToString();
                        db.SYHSEData_Risk.InsertOnSubmit(risk);
                    }                       
                    risk.ProjectId = newItem.ProjectId;
                    risk.UnitId = newItem.UnitId;
                    risk.ControlObject = newItem.ControlObject; 
                    risk.ReportDate = newItem.ReportDate;
                    risk.RespDepartment = newItem.RespDepartment;
                    risk.RespPerson = newItem.RespPerson;
                    risk.AnalysisUnit = newItem.AnalysisUnit;
                    risk.RiskEvent = newItem.RiskEvent;
                    risk.RiskLevel = newItem.RiskLevel;  
                    risk.CreateMan = newItem.CreateMan; 
                    risk.CreateDate = DateTime.Now;                   
                    db.SubmitChanges();
                    newItem.Id = risk.Id;
                    string contenttype = "application/json;charset=utf-8";
                    string url = ConfigurationManager.AppSettings["QHSE_URL"] + "api/SYHSEData/SaveRisk";
                    string messages = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(newItem));
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion

        #region 保存作业票
        /// <summary>
        /// 保存作业票
        /// </summary>
        /// <param name="newItem"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData SaveLicence([FromBody] DataLicenceItem newItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.SYHSEData_Licence dangers = new SYHSEData_Licence();
                    dangers.Id = Guid.NewGuid().ToString();
                    dangers.ProjectId = newItem.ProjectId;
                    dangers.UnitId = newItem.UnitId;            
                    dangers.Amount = newItem.Amount;
                    dangers.CreateMan = newItem.CreateMan;
                    dangers.Type = newItem.Type;
                    dangers.ReportDate = newItem.ReportDate;
                    dangers.CreateDate = DateTime.Now;
                    db.SYHSEData_Licence.InsertOnSubmit(dangers);
                    db.SubmitChanges();
                    newItem.Id = dangers.Id;

                    string contenttype = "application/json;charset=utf-8";
                    string url = ConfigurationManager.AppSettings["QHSE_URL"] + "api/SYHSEData/SaveLicence";
                    string messages = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(newItem));
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion

        #region 保存环保数据
        /// <summary>
        /// 保存作业票
        /// </summary>
        /// <param name="newItem"></param>
        /// <returns></returns>
        [HttpPost]
        public Model.ResponeData SaveEnvironmentProtection([FromBody] DataEnvironmentProtectionItem newItem)
        {
            var responeData = new Model.ResponeData();
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.SYHSEData_EnvironmentProtection dangers = new SYHSEData_EnvironmentProtection();
                    dangers.Id = Guid.NewGuid().ToString();
                    dangers.ProjectId = newItem.ProjectId;
                    dangers.UnitId = newItem.UnitId;
                    dangers.DetectionTimeA = newItem.DetectionTimeA;
                    dangers.DetectionTimeZ = newItem.DetectionTimeZ;
                    dangers.DetectionAddress = newItem.DetectionAddress;
                    dangers.DetectionProject = newItem.DetectionProject;
                    dangers.DetectionValue = newItem.DetectionValue;
                    dangers.StandValue = newItem.StandValue;
                    dangers.AvgFlow = newItem.AvgFlow;
                    dangers.SumFlow = newItem.SumFlow;
                    dangers.IsOk = newItem.IsOk;
                    dangers.IsStop = newItem.IsStop;
                    dangers.ReMark = newItem.ReMark;
                    dangers.Type = newItem.Type;
					dangers.CreateMan = newItem.CreateMan;
					dangers.ShowIndex = 0;
					dangers.CreateDate = DateTime.Now;
                    db.SYHSEData_EnvironmentProtection.InsertOnSubmit(dangers);
                    db.SubmitChanges();
                    newItem.Id = dangers.Id;

                    string contenttype = "application/json;charset=utf-8";
                    string url = ConfigurationManager.AppSettings["QHSE_URL"] + "api/SYHSEData/SaveEnvironmentProtection";
                    string messages = APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(newItem));
                }
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }

            return responeData;
        }
        #endregion




    }
}