using Attribute;
using Model;
using Model.Base;
using Repository;
using Service;
using Microsoft.AspNetCore.Mvc;
using Vo.Admin;
using Dto.Admin;
using System.Linq;
using Common;
using Custom;
using Tasks;
namespace Services
{
///
/// 数据字段Service业务层处理
///
[AppService(ServiceType = typeof(IDatabaseFieldService), ServiceLifetime = LifeTime.Transient)]
public class DatabaseFieldService : BaseService, IDatabaseFieldService
{
///
/// 数据字段-列表
///
/// 参数请求体
/// 分页参数
/// 列表
public PagedInfo getDatabaseFieldList([FromQuery] PagerInfo page, [FromQuery] DatabaseField param)
{
//拼装查询条件
var predicate = Expressionable.Create();
predicate = predicate.AndIF(param.databaseId > 0, m => m.databaseId == param.databaseId);
predicate = predicate.AndIF(param.tableId > 0, m => m.tableId == param.tableId);
predicate = predicate.AndIF(param.tabId > 0, m => m.tabId == param.tabId);
predicate = predicate.AndIF(!string.IsNullOrEmpty(param.fieldTitle), m => m.fieldTitle.Contains(param.fieldTitle));
predicate = predicate.AndIF(!string.IsNullOrEmpty(param.fieldName), m => m.fieldName.Contains(param.fieldName));
predicate = predicate.AndIF(!string.IsNullOrEmpty(param.fieldType), m => m.fieldType.Contains(param.fieldType));
var response = Queryable()
.Where(predicate.ToExpression())
.OrderByDescending(m => m.id)
.ToPage(page);
return response;
}
///
/// 克隆数据字段
///
/// 参数请求体
public void copyDatabaseField([FromBody] CopyDatabaseFieldDto param, DatabaseTable targetTable)
{
// var targetTable = _DatabaseTableService.GetFirst(m => m.id == param.targetTableId) ?? new DatabaseTable();
List fieldIdList = param.sourceFieldId.ToList();
var sourceFields = GetList(m => fieldIdList.Contains(m.id)).ToList();
foreach(DatabaseField sourceField in sourceFields)
{
DatabaseField newField = new DatabaseField();
newField.databaseId = targetTable.databaseId;
newField.tableId = param.targetTableId;
newField.tabId = sourceField.tabId;
newField.fieldTitle = sourceField.fieldTitle;
newField.fieldName = sourceField.fieldName;
newField.fieldType = sourceField.fieldType;
newField.fieldLength = sourceField.fieldLength;
newField.fieldDefaultValue = sourceField.fieldDefaultValue;
newField.fieldDetail = sourceField.fieldDetail;
newField.editType = sourceField.editType;
newField.validateAttribute = sourceField.validateAttribute;
newField.primaryKey = sourceField.primaryKey;
newField.autoIncrement = sourceField.autoIncrement;
newField.splitFlag = sourceField.splitFlag;
newField.showList = sourceField.showList;
newField.showQuery = sourceField.showQuery;
newField.showEdit = sourceField.showEdit;
newField.checkRepeat = sourceField.checkRepeat;
newField.exportFlag = sourceField.exportFlag;
newField.importFlag = sourceField.importFlag;
newField.listEditFlag = sourceField.listEditFlag;
newField.listEditPlaceholder = sourceField.listEditPlaceholder;
newField.statCondition = sourceField.statCondition;
newField.statData = sourceField.statData;
newField.linkTableId = sourceField.linkTableId;
newField.linkFieldId = sourceField.linkFieldId;
newField.apiId = sourceField.apiId;
newField.createTime = DateTime.Now;
Add(newField);
}
}
///
/// 生成SQL脚本
///
/// 参数请求体
/// 生成
public void makeDatabaseField([FromBody] MakeDatabaseFieldDto param, DatabaseTable table, TokenModel loginUser)
{
string tableName = table.tableName;
List fieldIds = param.id.ToList();
List fields = GetList(m => fieldIds.Contains(m.id));
Dictionary pushData = new Dictionary();pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
pushData.Add("author", loginUser.username);
pushData.Add("opType", "add");
pushData.Add("tableName", tableName);
pushData.Add("databaseField", fields);
MakeHelper.Push(pushData, "dbField", "dbField", loginUser);
}
}
}