2022-10-14 16:08:54 +08:00
using Backend.Models ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.Extensions.Logging ;
using Repository.BackendRepository.Interface ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Threading.Tasks ;
2023-01-05 18:42:49 +08:00
using System.IO ;
2022-10-14 16:08:54 +08:00
namespace Backend.Controllers
{
public class VariableController : MybaseController < VariableController >
{
private readonly IBackendRepository backendRepository ;
2023-01-05 18:42:49 +08:00
private string variableFilePath = "" ;
2022-10-14 16:08:54 +08:00
public VariableController ( IBackendRepository backendRepository )
{
this . backendRepository = backendRepository ;
2023-01-05 18:42:49 +08:00
variableFilePath = Path . Combine ( Directory . GetCurrentDirectory ( ) , "wwwroot" , "img" ) ;
2022-10-14 16:08:54 +08:00
}
public IActionResult Index ( )
{
return View ( ) ;
}
/// <summary>
/// SystemType列表
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task < ApiResult < List < KeyValue > > > SystemTypeList ( )
{
ApiResult < List < KeyValue > > apiResult = new ApiResult < List < KeyValue > > ( ) ;
try
{
var sqlString = @ $"SELECT DISTINCT system_type as Name, system_type as Value FROM variable v WHERE v.deleted = 0 ORDER BY v.system_type" ;
var KeyValue = await backendRepository . GetAllAsync < KeyValue > ( sqlString ) ;
apiResult . Code = "0000" ;
apiResult . Data = KeyValue ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
}
return apiResult ;
}
/// <summary>
/// 系統變數資料列表
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task < ApiResult < List < VariableInfo > > > VariableInfoList ( PostVariableInfoFilter post )
{
ApiResult < List < VariableInfo > > apiResult = new ApiResult < List < VariableInfo > > ( ) ;
try
{
var sWhere = "deleted = 0" ;
if ( ! string . IsNullOrEmpty ( post . SelectedSystemType ) )
{
sWhere + = " AND system_type = @SystemType" ;
}
var variableInfos = await backendRepository . GetAllAsync < VariableInfo > ( "variable" , sWhere , new { SystemType = post . SelectedSystemType } , "system_type, system_priority" ) ;
apiResult . Code = "0000" ;
apiResult . Data = variableInfos ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
}
return apiResult ;
}
/// <summary>
/// 系統變數資料列表
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task < ApiResult < VariableInfo > > GetOneVariable ( int id )
{
ApiResult < VariableInfo > apiResult = new ApiResult < VariableInfo > ( ) ;
try
{
string sWhere = @ $"deleted = 0 AND id = @Id" ;
object param = new { Id = id } ;
var variableInfo = await backendRepository . GetOneAsync < VariableInfo > ( "variable" , sWhere , param ) ;
apiResult . Code = "0000" ;
apiResult . Data = variableInfo ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
}
return apiResult ;
}
/// <summary>
/// 新增 / 修改 系統變數資料
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
[HttpPost]
2023-01-05 18:42:49 +08:00
public async Task < ApiResult < string > > SaveVariable ( [ FromForm ] VariableInfo post )
2022-10-14 16:08:54 +08:00
{
ApiResult < string > apiResult = new ApiResult < string > ( ) ;
try
{
2023-08-04 11:52:36 +08:00
var check = await backendRepository . GetOneAsync < string > ( $ @ "select id from variable where id != {post.id} and system_type = '{post.System_type}' and system_value = '{post.system_value}'
2023-08-10 14:14:33 +08:00
and system_key = ' { post . System_key } ' and deleted = 0 ; ");
2023-08-04 11:52:36 +08:00
if ( ! string . IsNullOrEmpty ( check ) )
{
apiResult . Code = "9998" ;
apiResult . Msg = "已有相同系統變數" ;
return apiResult ;
}
2022-10-14 16:08:54 +08:00
string sWhere = @ $"deleted = 0 AND id = @Id" ;
object param = new { Id = post . id } ;
var variableInfo = await backendRepository . GetOneAsync < VariableInfo > ( "variable" , sWhere , param ) ;
2023-01-05 18:42:49 +08:00
Guid file_guid = Guid . Empty ;
if ( post . file ! = null )
{
file_guid = Guid . NewGuid ( ) ;
var fileName = file_guid + "." + post . extName ;
var fullPath = Path . Combine ( variableFilePath , fileName ) ;
if ( ! System . IO . Directory . Exists ( variableFilePath ) )
System . IO . Directory . CreateDirectory ( variableFilePath ) ;
2022-10-14 16:08:54 +08:00
2023-01-05 18:42:49 +08:00
using ( var stream = new FileStream ( fullPath , FileMode . Create ) )
{
post . file . CopyTo ( stream ) ;
}
}
2022-10-14 16:08:54 +08:00
if ( variableInfo = = null )
{
//新增
Dictionary < string , object > variableInfoDic = new Dictionary < string , object > ( )
{
{ "@system_type" , post . System_type } ,
{ "@system_key" , post . System_key } ,
2023-01-05 18:42:49 +08:00
{ "@system_value" , file_guid ! = Guid . Empty ? file_guid . ToString ( ) + "." + post . extName : post . system_value } ,
2022-10-14 16:08:54 +08:00
{ "@system_remark" , post . system_remark } ,
{ "@system_priority" , post . system_priority } ,
{ "@system_parent_id" , post . system_parent_id } ,
{ "@created_by" , myUserInfo . Userinfo_guid } ,
} ;
await backendRepository . AddOneByCustomTable ( variableInfoDic , "variable" ) ;
apiResult . Code = "0000" ;
apiResult . Msg = "新增成功" ;
}
else
{
Dictionary < string , object > variableInfoDic = new Dictionary < string , object > ( )
{
{ "@system_type" , post . System_type } ,
{ "@system_key" , post . System_key } ,
2023-01-05 18:42:49 +08:00
{ "@system_value" , file_guid ! = Guid . Empty ? file_guid . ToString ( ) + "." + post . extName : post . system_value } ,
2022-10-14 16:08:54 +08:00
{ "@system_remark" , post . system_remark } ,
{ "@system_priority" , post . system_priority } ,
{ "@system_parent_id" , post . system_parent_id } ,
{ "@updated_by" , myUserInfo . Userinfo_guid } ,
{ "@updated_at" , DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) } ,
} ;
await backendRepository . UpdateOneByCustomTable ( variableInfoDic , "variable" , "id=" + variableInfo . id ) ;
apiResult . Code = "0000" ;
apiResult . Msg = "修改成功" ;
}
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
string json = System . Text . Json . JsonSerializer . Serialize ( post ) ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + json ) ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
}
return apiResult ;
}
/// <summary>
/// 刪除單一系統變數
/// </summary>
/// <param name="guid"></param>
/// <returns></returns>
[HttpPost]
public async Task < ApiResult < string > > DeleteOneVariable ( int id )
{
ApiResult < string > apiResult = new ApiResult < string > ( ) ;
try
{
string sWhere = @ $"deleted = 0 AND id = @Id" ;
object param = new { Id = id } ;
var variableInfo = await backendRepository . GetOneAsync < VariableInfo > ( "variable" , sWhere , param ) ;
if ( variableInfo = = null )
{
apiResult . Code = "9998" ;
apiResult . Msg = "查無該系統變數" ;
return apiResult ;
}
await backendRepository . DeleteOne ( id . ToString ( ) , "variable" , "id" ) ;
apiResult . Code = "0000" ;
apiResult . Msg = "刪除成功" ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + "id=" + id . ToString ( ) ) ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
}
return apiResult ;
}
2023-04-21 17:40:18 +08:00
2023-05-16 10:52:15 +08:00
2022-10-14 16:08:54 +08:00
}
}