2022-12-07 09:25:43 +08:00
using FrontendWebApi.Models ;
using Microsoft.AspNetCore.Http ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.CodeAnalysis.CSharp ;
using Microsoft.Extensions.Logging ;
using Newtonsoft.Json ;
using Newtonsoft.Json.Linq ;
using Repository.BackendRepository.Interface ;
using Repository.FrontendRepository.Interface ;
using System ;
using System.Collections.Generic ;
using System.Collections.Specialized ;
using System.Diagnostics ;
using System.IO ;
using System.Linq ;
using System.Net ;
using System.Text ;
using System.Threading.Tasks ;
namespace FrontendWebApi.ApiControllers
{
//[Route("api/[controller]")]
//[ApiController]
public class UtilityController : MyBaseApiController < DeviceManageController >
{
private readonly IBackendRepository backendRepository ;
private readonly IFrontendRepository frontendRepository ;
public UtilityController ( IBackendRepository backendRepository , IFrontendRepository frontendRepository )
{
this . backendRepository = backendRepository ;
this . frontendRepository = frontendRepository ;
}
public async Task < ActionResult < ApiResult < bool > > > isShowMaiSys ( )
{
ApiResult < bool > apiResult = new ApiResult < bool > ( jwt_str ) ;
try
{
var isShow = await backendRepository . GetOneAsync < string > ( "select system_value from variable where system_type = 'show_main_system' and deleted = 0" ) ;
var isBool = bool . Parse ( isShow ) ;
apiResult . Data = isBool ;
apiResult . Code = "0000" ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
return Ok ( apiResult ) ;
}
return Ok ( apiResult ) ;
}
/// <summary>
/// 即時趨勢條件過濾條件面板
/// </summary>
/// <param name="account"></param>
/// <returns></returns>
[HttpPost]
[Route("api/GetMainSub")]
public async Task < ActionResult < ApiResult < History_MainSubBuildFloor > > > GetMainSub ( [ FromBody ] HistoryFind hf )
{
ApiResult < History_MainSubBuildFloor > apiResult = new ApiResult < History_MainSubBuildFloor > ( jwt_str ) ;
if ( ! jwtlife )
{
apiResult . Code = "5000" ;
return BadRequest ( apiResult ) ;
}
else if ( string . IsNullOrEmpty ( hf . building_tag ) )
{
apiResult . Code = "0002" ;
apiResult . Msg = "必須選擇東別" ;
return apiResult ;
}
try
{
var dbsub = await frontendRepository . GetAllAsync < HistoryDBMainSub > (
@ $ "select distinct v1.system_key main_name, v1.system_value main_system_tag, v2.system_key sub_name, v2.system_value sub_system_tag, v1.system_priority, v2.system_priority,
d . device_number , d . full_name as device_full_name , d . device_serial_tag
from role_auth a
join auth_page b on a . AuthCode = b . AuthCode
join userinfo c on c . role_guid = a . role_guid
join variable v2 on b . ShowView = v2 . id and v2 . system_type = @sub_system_type
join variable v1 on v1 . id = v2 . system_parent_id and v1 . system_type = @main_system_type
2022-12-22 17:18:29 +08:00
join device d on v1 . system_value = d . device_system_tag and v2 . system_value = d . device_name_tag and d . deleted = 0
2022-12-07 09:25:43 +08:00
where c . account = @account
order by v1 . system_priority , v2 . system_priority ", new { @account = myUser.account, @sub_system_type = sub_system_type, @main_system_type = main_system_type });
var dbbuilding = await frontendRepository . GetAllAsync < History_Build > (
@ $ "select distinct d.building_guid,d.full_name,d.priority from role_auth a
join auth_page b on a . AuthCode = b . AuthCode
join userinfo c on c . role_guid = a . role_guid
join building d on d . building_tag = b . building_tag
where c . account = @account and d . building_tag = @building_tag
order by d . priority
", new { @account = myUser.account, @building_tag = hf.building_tag });
var mains = dbsub . GroupBy ( a = > a . main_system_tag ) . ToList ( ) ;
apiResult . Data = new History_MainSubBuildFloor ( ) ;
apiResult . Data . history_Main_Systems = new List < History_Main_system > ( ) ;
foreach ( var main in mains )
{
History_Main_system history_Main_System = new History_Main_system ( ) ;
history_Main_System . main_system_tag = main . Select ( a = > a . main_system_tag ) . FirstOrDefault ( ) ;
history_Main_System . full_name = main . Select ( a = > a . main_name ) . FirstOrDefault ( ) ;
var subs = dbsub . Where ( x = > x . main_system_tag = = main . Select ( m = > m . main_system_tag ) . FirstOrDefault ( ) ) . GroupBy ( x = > x . sub_system_tag ) . ToList ( ) ;
history_Main_System . History_Sub_systems = subs . Count > 0 ? new List < History_Sub_system > ( ) : null ;
foreach ( var sub in subs )
{
History_Sub_system history_Sub_System = new History_Sub_system ( ) ;
history_Sub_System . full_name = sub . Select ( x = > x . sub_name ) . FirstOrDefault ( ) ;
history_Sub_System . sub_system_tag = sub . Select ( x = > x . sub_system_tag ) . FirstOrDefault ( ) ;
history_Main_System . History_Sub_systems . Add ( history_Sub_System ) ;
}
apiResult . Data . history_Main_Systems . Add ( history_Main_System ) ;
}
apiResult . Data . history_Builds = dbbuilding ;
apiResult . Code = "0000" ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
return Ok ( apiResult ) ;
}
return Ok ( apiResult ) ;
}
2022-12-22 17:18:29 +08:00
[HttpPost]
[Route("api/GetUsrFroList")]
public async Task < ApiResult < List < AuthPage > > > UsrAuthPageList ( )
{
ApiResult < List < AuthPage > > apiResult = new ApiResult < List < AuthPage > > ( ) ;
List < AuthPage > authPage = new List < AuthPage > ( ) ;
try
{
var sqlString = $ @ "select ap.* from auth_page ap
join role_auth ra on ap . AuthCode = ra . AuthCode
join userinfo ui on ra . role_guid = ui . role_guid
2022-12-28 13:00:17 +08:00
where ap . AuthCode like ' PF % ' and ui . userinfo_guid = @userinfo_guid
2022-12-22 17:18:29 +08:00
order by ap . AuthCode ";
authPage = await backendRepository . GetAllAsync < AuthPage > ( sqlString , new { @userinfo_guid = myUser . userinfo_guid } ) ;
apiResult . Code = "0000" ;
apiResult . Data = authPage ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
}
return apiResult ;
}
2023-05-29 18:47:35 +08:00
2023-06-26 15:41:38 +08:00
public async Task < ActionResult < ApiResult < bool > > > isShowBuilding ( )
{
ApiResult < bool > apiResult = new ApiResult < bool > ( jwt_str ) ;
try
{
var isShow = await backendRepository . GetOneAsync < string > ( "select system_value from variable where system_type = 'show_building' and deleted = 0" ) ;
var isBool = bool . Parse ( isShow ) ;
apiResult . Data = isBool ;
apiResult . Code = "0000" ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
return Ok ( apiResult ) ;
}
return Ok ( apiResult ) ;
}
2023-07-24 12:45:11 +08:00
[HttpPost]
[Route("api/DevGetWay")]
public async Task < ActionResult < ApiResult < string > > > GetDevGetWay ( [ FromBody ] DeviceGetWayInput input )
{
ApiResult < string > apiResult = new ApiResult < string > ( jwt_str ) ;
//check input
if ( input = = null | | string . IsNullOrEmpty ( input . device_number ) | | string . IsNullOrEmpty ( input . device_point ) )
{
apiResult . Code = "9998" ;
apiResult . Msg = "資料輸入錯誤。" ;
return Ok ( apiResult ) ;
}
try
{
var getWayStr = await backendRepository . GetOneAsync < string > ( $@"select parent_path from import_niagara_item_history where device_building_tag = '{input.device_number.Split(" _ ")[1]}'
and device_system_tag = ' { input . device_number . Split ( "_" ) [ 2 ] } ' and device_name_tag = ' { input . device_number . Split ( "_" ) [ 3 ] } '
and device_floor_tag = ' { input . device_number . Split ( "_" ) [ 4 ] } ' and device_master_tag = ' { input . device_number . Split ( "_" ) [ 5 ] } '
and device_last_name_tag = ' { input . device_number . Split ( "_" ) [ 6 ] } ' and device_serial_tag = ' { input . device_number . Split ( "_" ) [ 7 ] } '
and device_point_name = ' { input . device_point } ' ");
//check string
if ( string . IsNullOrEmpty ( getWayStr ) )
{
apiResult . Code = "9997" ;
apiResult . Msg = "資料獲取錯誤。" ;
return Ok ( apiResult ) ;
}
apiResult . Data = getWayStr ;
apiResult . Code = "0000" ;
}
catch ( Exception exception )
{
apiResult . Code = "9999" ;
apiResult . Msg = "系統內部錯誤,請聯絡管理者。" ;
Logger . LogError ( "【" + controllerName + "/" + actionName + "】" + exception . Message ) ;
return Ok ( apiResult ) ;
}
return Ok ( apiResult ) ;
}
2022-12-07 09:25:43 +08:00
}
}