using APT.BaseData.Domain.Enums;
using APT.Infrastructure.Core;
using APT.BaseData.Domain.Entities.FM;
using System;
using APT.Infrastructure.Api;
namespace APT.BaseData.Domain.IServices.FM
{
    public interface IPFSysLogService : ICommonService
	{
		/// <summary>
		/// 添加登入系统日志
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="platformType">平台类型 PFPlatTypeEnum</param>
		void AddLoginLog(Guid userId, int platformType);

		void AddLoginLogByApp(Guid userId, int platformType, KeywordFilter filter);
		/// <summary>
		/// 添加登出系统日志
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="platformType">平台类型 PFPlatTypeEnum</param>
		void AddLoginOut(Guid userId, int platformType);
		/// <summary>
		/// 添加新增日志
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="formCode"></param>
		/// <param name="ids">实体ID列表 多个逗号隔开</param>
		/// <param name="codes">实体编号 多个逗号隔开</param>
		/// <param name="extData">额外数据</param>
		void AddAddLog(Guid userId, string formCode, string ids, string codes, string extData);

		/// <summary>
		/// 添加编辑日志
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="formCode"></param>
		/// <param name="ids">实体ID列表 多个逗号隔开</param>
		/// <param name="codes">实体编号 多个逗号隔开</param>
		/// <param name="extData">额外数据</param>
		void AddEditLog(Guid userId, string formCode, string ids, string codes, string extData);


		/// <summary>
		/// 添加删除日志
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="formCode"></param>
		/// <param name="ids">实体ID列表 多个逗号隔开</param>
		/// <param name="tableName">实体名称</param>
		void AddDeleteLog(Guid userId, string formCode, string ids, string tableName, string extData);


		/// <summary>
		/// 添加其他日志
		/// </summary>
		/// <param name="userId"></param>
		/// <param name="formCode"></param>
		/// <param name="title">标题</param>
		/// <param name="data">数据</param>
		/// <param name="extData">额外数据</param>
		void AddOtherLog(Guid userId, string formCode, string title, string data, string extData);



		/// <summary>
		/// 添加系统日志
		/// </summary>
		/// <param name="orgId">组织</param>
		/// <param name="userId">用户</param>
		/// <param name="type">类型</param>
		/// <param name="title">标题</param>
		/// <param name="data">数据</param>
		void AddLog(Guid orgId, Guid userId, PFSysLogTypeEnum type, string title, string data);

		/// <summary>
		/// 添加系统日志
		/// </summary>
		/// <param name="orgId">组织</param>
		/// <param name="userId">用户</param> 
		/// <param name="title">标题</param>
		/// <param name="data">数据</param>
		void AddLog(Guid orgId, Guid userId, string title, string data);

		/// <summary>
		/// 添加系统日志
		/// </summary>
		/// <param name="orgId">组织</param>
		/// <param name="userId">用户</param> 
		/// <param name="title">标题</param>
		/// <param name="data">数据</param>
		/// <param name="extData">额外数据</param>
		void AddLog(Guid orgId, Guid userId, string title, string data, string extData);

		/// <summary>
		/// 添加系统日志
		/// </summary>
		/// <param name="orgId">组织</param>
		/// <param name="userId">用户</param>
		/// <param name="formCode">表单编号</param>
		/// <param name="title">标题</param>
		/// <param name="data">数据</param>
		/// <param name="extData">额外数据</param>
		void AddLog(Guid orgId, Guid userId, string formCode, string title, string data, string extData);

		/// <summary>
		/// 添加系统日志
		/// </summary>
		/// <param name="orgId">组织</param>
		/// <param name="userId">用户</param>
		/// <param name="type">类型</param>
		/// <param name="formCode">表单编号</param>
		/// <param name="title">标题</param>
		/// <param name="data">数据</param>
		/// <param name="extData">额外数据</param>
		void AddLog(Guid orgId, Guid userId, PFSysLogTypeEnum type, string formCode, string title, string data, string extData);

	}
}
