using FrontendWebApi.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; namespace FrontendWebApi.Controllers { public class EmergencyRecordController : MyBaseController { private readonly IBackendRepository backendRepository; public EmergencyRecordController(IBackendRepository backendRepository) { this.backendRepository = backendRepository; } public IActionResult Index() { return View(); } [HttpPost] public async Task>> DisasterList() { ApiResult> apiResult = new ApiResult>(); List Variable = new List(); try { var sqlString = @$"select system_value as Value, system_key as Name from variable a where a.system_type = 'disaster' and a.deleted = 0"; Variable = await backendRepository.GetAllAsync(sqlString); apiResult.Code = "0000"; apiResult.Data = Variable; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } return apiResult; } [HttpPost] public async Task>> BuildInfoList() { ApiResult> apiResult = new ApiResult>(); List KeyValue = new List(); try { var sqlString = @$"select building_guid as Value, full_name as Name from building a where a.deleted = 0 and a.status = 0 ORDER BY A.priority ASC, A.created_at DESC"; KeyValue = await backendRepository.GetAllAsync(sqlString); apiResult.Code = "0000"; apiResult.Data = KeyValue; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } return apiResult; } [HttpPost] public async Task EmergencyRecordTable(EmergencyRecordEventPost post) { List EmergencyRecordEvent = new List(); ApiResult> apiResult = new ApiResult>(); try { var sqlplus = ""; if(post.selectaType != 2 ) { sqlplus = $"and ee.type = '{post.selectaType}'"; } if (post.dateranger != null) { var date = post.dateranger.Replace(" ", "").Split("-"); sqlplus += $"and ee.created_at between '{date[0].Replace(" / ", " - ")} 00:00:00' and '{date[1].Replace(" / ", " - ")} 23:59:59'"; } EmergencyRecordEvent = await backendRepository.GetAllAsync($@" select d.device_number device_name,v.system_key disaster_name,ee.*,b.full_name building_name from emergency_event ee left join (select * from variable v where v.system_type = 'disaster') v on v.system_value = ee.disaster left join device d on d.device_guid = ee.device_guid left join building b on b.building_guid = ee.building_guid where ee.deleted = 0 and ee.building_guid = '{post.selectaBuild}' and ee.disaster = '{post.selectaDisaster}' {sqlplus} "); apiResult.Code = "0000"; apiResult.Data = EmergencyRecordEvent; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; Logger.LogError("【" + controllerName + "/" + actionName + "】"); Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } var result = Json(new { data = apiResult }); return result; } [HttpPost] public async Task EmergencyItemTable(string event_guid) { List EmergencyRecordEvent = new List(); ApiResult> apiResult = new ApiResult>(); try { EmergencyRecordEvent = await backendRepository.GetAllAsync($@" select * from emergency_item where event_guid = '{event_guid}' order by created_at desc "); apiResult.Code = "0000"; apiResult.Data = EmergencyRecordEvent; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; Logger.LogError("【" + controllerName + "/" + actionName + "】"); Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } var result = Json(new { data = apiResult }); return result; } } }