using APT.BaseData.Domain.Entities;
using APT.Infrastructure.Core;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.IServices.FM;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using APT.Utility;namespace APT.PF.WebApiControllers.Api.PF
{
	/// 
	/// 系统日志
	/// 
	[Route("api/PF/SysLog")]
	public class SysLogController : AuthorizeApiController
	{
		/// 
		/// 查询
		/// 
		/// 
		/// 
		[HttpPost, Route("Entities")]
		public JsonActionResult> Entities([FromBody]KeywordFilter filter)
		{
			return WitEntities(null, filter);
		}
		/// 
		/// 查询
		/// 
		/// 
		/// 
		/// 
		[HttpPost, Route("OrderEntities")]
		public JsonActionResult> OrderEntities([FromBody]KeywordFilter filter)
		{
			return WitOrderEntities(null, filter);
		}
		/// 
		/// 查询
		/// 
		/// 
		/// 
		[HttpPost, Route("Paged")]
		public PagedActionResult Paged([FromBody]KeywordPageFilter pageFilter)
		{
			return WitPaged(null, pageFilter);
		}
		/// 
		/// 查询
		/// 
		/// 
		/// 
		[HttpPost, Route("OrderPaged")]
		public PagedActionResult OrderPaged([FromBody]KeywordPageFilter pageFilter)
		{
			return WitOrderPaged(null, pageFilter);
		}
		/// 
		/// 删除
		/// 
		/// 
		/// 
		[HttpGet, Route("Delete")]
		public JsonActionResult Delete(string id)
		{
			return WitDelete(id);
		}
		/// 
		/// 更新
		/// 
		/// 
		/// 
		[HttpPost, Route("Update")]
		public JsonActionResult Update([FromBody]T_PF_SYS_LOG entity)
		{
			return WitUpdate(entity);
		}
		/// 
		/// 批量删除
		/// 
		/// 
		/// 
		[HttpGet, Route("BatchDelete")]
		public JsonActionResult BatchDelete(string ids)
		{
			return WitBatchDelete(ids);
		}
		/// 
		/// 获得单条实体数据
		/// 
		/// 
		/// 
		[HttpPost, Route("Get")]
		public JsonActionResult Get([FromBody] KeywordFilter filter)
		{
			return WitEntity(null, filter);
		}
		/// 
		/// 添加登出日志
		/// 
		/// 
		/// Keyword:用户 ;
		/// Parameter1:平台类型; 
		/// 
		/// 
		[HttpPost, Route("AddLoginOut")]
		public JsonActionResult AddLoginOut([FromBody] KeywordFilter filter)
		{
			return SafeExecute(() =>
			{
				try
				{
					string userId = filter.Keyword;//用户
					int platformType = LibUtils.ToInt( filter.Parameter1);//平台类型
					if (!string.IsNullOrEmpty(userId))
					{
						var sysLogService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); 
						sysLogService.AddLoginOut(new Guid(userId), platformType);
					}
				}
				catch
				{
				}
				return true;
			});
		}
		/// 
		/// 添加新增日志
		/// 
		/// 
		/// Keyword:用户 ;
		/// Parameter1:表单编号;
		/// Parameter2:表单ID; 
		/// Parameter3:ID列表; 
		/// Parameter4:编号列表
		/// Parameter5:表名
		/// 
		/// 
		[HttpPost, Route("AddAddLog")]
		public JsonActionResult AddAddLog([FromBody] KeywordFilter filter)
		{
			return SafeExecute(() =>
			{
				try
				{
					string userId = filter.Keyword;//用户
					string formCode = filter.Parameter1;//表单编号
					string formId = filter.Parameter2;//表单ID
					string ids = filter.Parameter3;//ID列表
					string codes = filter.Parameter4;//编号列表
					string extData = filter.Parameter5;//额外数据
					if (!string.IsNullOrEmpty(userId))
					{
						if (string.IsNullOrEmpty(formCode) && !string.IsNullOrEmpty(formId))
						{
							var form = this.GetEntity(formId);
							if (form != null)
								formCode = form.CODE;
						}
						var sysLogService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService();
						sysLogService.AddAddLog(new Guid(userId), formCode, ids, codes, extData);
					}
				}
				catch
				{
				}
				return true;
			});
		}
		/// 
		/// 添加编辑日志
		/// 
		/// 
		/// Keyword:用户 ;
		/// Parameter1:表单编号;
		/// Parameter2:表单ID; 
		/// Parameter3:ID列表; 
		/// Parameter4:编号列表
		/// Parameter5:额外数据
		/// 
		/// 
		[HttpPost, Route("AddEditLog")]
		public JsonActionResult AddEditLog([FromBody] KeywordFilter filter)
		{
			return SafeExecute(() =>
			{
				try
				{
					string userId = filter.Keyword;//用户
					string formCode = filter.Parameter1;//表单编号
					string formId = filter.Parameter2;//表单ID
					string ids = filter.Parameter3;//ID列表
					string codes = filter.Parameter4;//编号列表
					string extData = filter.Parameter5;//额外数据
					if (!string.IsNullOrEmpty(userId))
					{
						if (string.IsNullOrEmpty(formCode) && !string.IsNullOrEmpty(formId))
						{
							var form = this.GetEntity(formId);
							if (form != null)
								formCode = form.CODE;
						}
						var sysLogService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService();
						sysLogService.AddEditLog(new Guid(userId), formCode,  ids, codes, extData);
					}
				}
				catch
				{
				}
				return true;
			});
		}
		/// 
		/// 添加删除日志
		/// 
		/// 
		/// Keyword:用户 ;
		/// Parameter1:表单编号;
		/// Parameter2:表单ID; 
		/// Parameter3:ID列表; 
		/// Parameter4:表名
		/// 
		/// 
		[HttpPost, Route("AddDeleteLog")]
		public JsonActionResult AddDeleteLog([FromBody] KeywordFilter filter)
		{
			return SafeExecute(() =>
			{
				try
				{
					string userId = filter.Keyword;//用户
					string formCode = filter.Parameter1;//表单编号
					string formId = filter.Parameter2;//表单ID
					string ids = filter.Parameter3;//ID列表
					string tableName = filter.Parameter4;//表名
                    string extData = filter.Parameter5;//额外信息
                    if (!string.IsNullOrEmpty(userId))
					{
						if (string.IsNullOrEmpty(formCode) && !string.IsNullOrEmpty(formId))
						{
							var form = this.GetEntity(formId);
							if (form != null)
								formCode = form.CODE;
						}
						var sysLogService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService();
						sysLogService.AddDeleteLog(new Guid(userId), formCode, ids, tableName, extData);
					}
				}
				catch
				{
				}
				return true;
			});
		}
		/// 
		/// 添加删除日志
		/// 
		/// 
		/// Keyword:用户 ;
		/// Parameter1:表单编号;
		/// Parameter2:表单ID; 
		/// Parameter3:标题; 
		/// Parameter4:数据
		/// Parameter5:额外数据
		/// 
		/// 
		[HttpPost, Route("AddOtherLog")]
		public JsonActionResult AddOtherLog([FromBody] KeywordFilter filter)
		{
			return SafeExecute(() =>
			{
				try
				{
					string userId = filter.Keyword;//用户
					string formCode = filter.Parameter1;//表单编号
					string formId = filter.Parameter2;//表单ID
					string title = filter.Parameter3;//标题
					string data = filter.Parameter4;//数据
					string extData = filter.Parameter5;//额外数据
					if (!string.IsNullOrEmpty(userId))
					{
						if (string.IsNullOrEmpty(formCode) && !string.IsNullOrEmpty(formId))
						{
							var form = this.GetEntity(formId);
							if (form != null)
								formCode = form.CODE;
						}
						var sysLogService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService();
						sysLogService.AddOtherLog(new Guid(userId), formCode, title, data, extData);
					}
				}
				catch
				{
				}
				return true;
			});
		}
	}
}