using BLL;
using FineUIPro.Web.BaseInfo;
using Microsoft.Office.Interop.Word;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using static System.Windows.Forms.AxHost;

namespace FineUIPro.Web.ProjectData
{
	public partial class MainDataProjectList : PageBase
	{
		/// <summary>
		/// 定义项
		/// </summary>
		public string URLToken
		{
			get
			{
				return (string)ViewState["URLToken"];
			}
			set
			{
				ViewState["URLToken"] = value;
			}
		}


		#region 加载
		/// <summary>
		/// 加载页面
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				////权限按钮方法
				this.GetButtonPower();
				Funs.DropDownPageSize(this.ddlPageSize);
				if (this.CurrUser != null && this.CurrUser.PageSize.HasValue)
				{
					Grid1.PageSize = this.CurrUser.PageSize.Value;
				}
				this.ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
				// 绑定表格
				this.BindGrid();
			}
		}
		#endregion

		#region 绑定数据
		/// <summary>
		/// 绑定数据
		/// </summary>
		private void BindGrid()
		{
			string strSql = @"SELECT [project_id]
								  ,[project_name]
								  ,[project_code]
								  ,[project_short_name]
								  ,[project_category_code]
								  ,[project_category]
								  ,[project_type]
								  ,[project_state_code]
								  ,[project_state]
								  ,[configuration_project_manager]
								  ,[project_planned_start_time]
								  ,[project_planned_complete_time]
								  ,[sysdataid]
								  ,[createtime]
								  ,[modifytime]
								  ,[version]
								  ,[isusedcode]
								  ,[sourceappcode]
								  ,[state]
							  FROM [dbo].[MainData_Project] ";
			List<SqlParameter> listStr = new List<SqlParameter>();
			if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim()))
			{
				strSql += "where   ProjectName LIKE @ProjectName";
				listStr.Add(new SqlParameter("@ProjectName", "%" + this.txtProjectName.Text.Trim() + "%"));
			}
			strSql += " order by createtime desc";


			SqlParameter[] parameter = listStr.ToArray();
			System.Data.DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
			Grid1.RecordCount = tb.Rows.Count;
			Grid1.DataSource = this.GetPagedDataTable(Grid1, tb);
			Grid1.DataBind();
		}
		#endregion

		#region Grid
		/// <summary>
		/// 
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
		{
			BindGrid();
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
		{
			Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
			BindGrid();
		}

		protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
		{
			BindGrid();
		}
		#endregion


		/// <summary>
		/// 右键编辑事件
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void btnMenuEnable_Click(object sender, EventArgs e)
		{

			if (Grid1.SelectedRowIndexArray.Length > 0)
			{
				bool isShow = false;
				if (Grid1.SelectedRowIndexArray.Length == 1)
				{
					isShow = true;
				}
				foreach (int rowIndex in Grid1.SelectedRowIndexArray)
				{
					string rowID = Grid1.DataKeys[rowIndex][0].ToString();
					var getBaseProject = Funs.DB.MainData_Project.FirstOrDefault(x => x.Project_id == rowID);
					if (getBaseProject != null)
					{
						var getProject = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectCode == getBaseProject.Project_code || x.ProjectName == getBaseProject.Project_name);
						if (getProject != null)
						{
							getProject.ProjectName = getBaseProject.Project_name;
							getProject.ProjectCode = getBaseProject.Project_code;
							getProject.ShortName = getBaseProject.Project_short_name;
							getProject.StartDate =  getBaseProject.Project_planned_start_time ;
							getProject.EndDate = getBaseProject.Project_planned_complete_time;
							if (getBaseProject.Project_state == "完工")
							{
								getProject.ProjectState = "3";
								getProject.ProjectState2 = "5";
							}
							else if (getBaseProject.Project_state == "暂停")
							{
								getProject.ProjectState = "2";
								getProject.ProjectState2 = "9";
							}
							else if (getBaseProject.Project_state == "运行")
							{
								getProject.ProjectState = "1";
								getProject.ProjectState2 = "3";

							}
							else if (getBaseProject.Project_state == "立项")
							{
								getProject.ProjectState = "2";
								getProject.ProjectState2 = "1";
							}
							else if (getBaseProject.Project_state == "关闭")
							{
								getProject.ProjectState = "3";
								getProject.ProjectState2 = "7";
							}
							getProject.DataSource = "数据同步";
							Funs.DB.SubmitChanges();
						}
						else
						{
							Model.Base_Project newProject = new Model.Base_Project
							{
								ProjectId = getBaseProject.Project_id
						};
							newProject.ProjectName = getBaseProject.Project_name;
							newProject.ShortName = getBaseProject.Project_short_name;
							newProject.ProjectCode = getBaseProject.Project_code;
							newProject.StartDate = getBaseProject.Project_planned_start_time;
							newProject.EndDate = getBaseProject.Project_planned_complete_time;
							newProject.ProjectAttribute = "GONGCHENG";
							if (getBaseProject.Project_state == "完工")
							{
								newProject.ProjectState = "3";
								newProject.ProjectState2 = "5";
							}
							else if (getBaseProject.Project_state == "暂停")
							{
								newProject.ProjectState = "2";
								newProject.ProjectState2 = "9";
							}
							else if (getBaseProject.Project_state == "运行")
							{
								newProject.ProjectState = "1";
								newProject.ProjectState2 = "3";

							}
							else if (getBaseProject.Project_state == "立项")
							{
								newProject.ProjectState = "2";
								newProject.ProjectState2 = "1";
							}
							else if (getBaseProject.Project_state == "关闭")
							{
								newProject.ProjectState = "3";
								newProject.ProjectState2 = "7";
							}
							newProject.DataSource = "数据同步";
							Funs.DB.Base_Project.InsertOnSubmit(newProject);
							Funs.DB.SubmitChanges();
						} 
					}

				}
				BindGrid();
			}

		}

		protected string ConvertEnable(object projectId)
		{
			string res = "";
			var project  = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == projectId.ToString());
			if (project != null)
			{
				res = "已启用";
			}
			return res;
		}
		#region 获取按钮权限
		/// <summary>
		/// 获取按钮权限
		/// </summary>
		/// <param name="button"></param>
		/// <returns></returns>
		private void GetButtonPower()
		{
			if (Request.Params["value"] == "0")
			{
				return;
			}

			var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.SeverProjectListMenuId);
			if (buttonList.Count() > 0)
			{
			}
		}
		#endregion

		#region 查询
		/// <summary>
		/// 查询
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void TextBox_TextChanged(object sender, EventArgs e)
		{
			this.BindGrid();
		}
		#endregion

		 

		 

	 
	    protected void btnImport_Click(object sender, EventArgs e)
		{
			//同步项目
			int total = 10;
			int pageSize = 20;
			int pageIndex = 0;
			while (pageSize * pageIndex <= total)
			{
				string pushContent = string.Empty;
				var dictTypeCode = new
				{
					criteria = new { _expr = new[] { new { _property = "project_state_code", _value = "1", _op = "=" }, new { _property = "isusedcode", _value = "0", _op = "=" } } },
					pageSize = pageSize,
					pageIndex = pageIndex
				};
				Hashtable newToken = new Hashtable
				{
					{ "userName", "nuobida_construction" },
					{ "password", "nuobida@2023" },
					{ "ClientId", "com.tcc.pm.sggl" },
					{ "OperationCode", "com.tcc.dm.mdm.pm.basicinfo" }
				};
				pushContent = JsonConvert.SerializeObject(dictTypeCode);
				string returndata = APIGetHttpService.OutsideHttp("https://esb.china-tcc.com:9090/com/tcc/dm/mdm/TCC_TM_PM_BASIC_INFO", "POST", "application/json;charset=utf-8", newToken, pushContent);
				if (!string.IsNullOrEmpty(returndata))
				{
					JObject obj = JObject.Parse(returndata);
					total = int.Parse(obj["total"].ToString());
					string datas = obj["datas"].ToString();
					JArray arr = JArray.Parse(datas);
					foreach (var item in arr)
					{
						string project_name = item["project_name"] != null ? item["project_name"].ToString():"";
						string project_code = item["project_code"] != null ? item["project_code"].ToString():"";
						string project_short_name = item["project_short_name"] != null ? item["project_short_name"].ToString():"";
						string project_category_code = item["project_category_code"] != null ? item["project_category_code"].ToString():"";
						string project_category = item["project_category"] != null ? item["project_category"].ToString():"";
						string project_type = item["project_type"] != null ? item["project_type"].ToString():"";
						string project_state_code = item["project_state_code"] != null ? item["project_state_code"].ToString():"";
						string project_state = item["project_state"] != null ? item["project_state"].ToString():"";
						string configuration_project_manager = item["configuration_project_manager"] != null ? item["configuration_project_manager"].ToString():"";
						string project_planned_start_time = item["project_planned_start_time"] != null ? item["project_planned_start_time"].ToString():"";
						string project_planned_complete_time = item["project_planned_complete_time"] != null ? item["project_planned_complete_time"].ToString():"";
						string sysdataid = item["sysdataid"] != null ? item["sysdataid"].ToString():"";
						string createtime = item["createtime"] != null ? item["createtime"].ToString():"";
						string modifytime = item["modifytime"] != null ? item["modifytime"].ToString():"";
						string version = item["version"] != null ? item["version"].ToString():"";
						string isusedcode = item["isusedcode"] != null ? item["isusedcode"].ToString():"";
						string sourceappcode = item["sourceappcode"] != null ? item["sourceappcode"].ToString():"";
						string state = item["state"]!=null?item["state"].ToString():""; 


						if (!string.IsNullOrEmpty(project_code))
						{
							var getProject = Funs.DB.MainData_Project.FirstOrDefault(x => x.Project_code == project_code || x.Project_name == project_name);
							if (getProject != null)
							{
								getProject.Project_name = project_name;
								getProject.Project_code = project_code;
								getProject.Project_short_name = project_short_name;
								getProject.Project_category_code = project_category_code;
								getProject.Project_category = project_category;
								getProject.Project_type = project_type;
								getProject.Project_state_code = project_state_code;
								getProject.Project_state = project_state;
								getProject.Configuration_project_manager = configuration_project_manager;
								getProject.Project_planned_start_time = Funs.GetNewDateTime(project_planned_start_time);
								getProject.Project_planned_complete_time = Funs.GetNewDateTime(project_planned_complete_time);
								getProject.Sysdataid = sysdataid;
								getProject.Createtime = Funs.GetNewDateTime(createtime);
								getProject.Modifytime = Funs.GetNewDateTime(modifytime);
								getProject.Version = version;
								getProject.Isusedcode = isusedcode;
								getProject.Sourceappcode = sourceappcode;
								getProject.State = state;


								Funs.DB.SubmitChanges();
							}
							else
							{
							var baseProject = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectCode == project_code || x.ProjectName == project_name);    

								getProject = new Model.MainData_Project
								{
									Project_id = SQLHelper.GetNewID(),
								};
								if (baseProject != null)
								{
									getProject.Project_id = baseProject.ProjectId;
								}

								getProject.Project_name = project_name;
								getProject.Project_code = project_code;
								getProject.Project_short_name = project_short_name;
								getProject.Project_category_code = project_category_code;
								getProject.Project_category = project_category;
								getProject.Project_type = project_type;
								getProject.Project_state_code = project_state_code;
								getProject.Project_state = project_state;
								getProject.Configuration_project_manager = configuration_project_manager;
								getProject.Project_planned_start_time = Funs.GetNewDateTime(project_planned_start_time);
								getProject.Project_planned_complete_time = Funs.GetNewDateTime(project_planned_complete_time);
								getProject.Sysdataid = sysdataid;
								getProject.Createtime = Funs.GetNewDateTime(createtime);
								getProject.Modifytime = Funs.GetNewDateTime(modifytime);
								getProject.Version = version;
								getProject.Isusedcode = isusedcode;
								getProject.Sourceappcode = sourceappcode;
								getProject.State = state;
								Funs.DB.MainData_Project.InsertOnSubmit(getProject);
								Funs.DB.SubmitChanges();
							}
						}
					}

				}
				pageIndex++;
			}

			BindGrid();
		}
	}
}