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; namespace Backend.Controllers { public class ServicePlanController : MybaseController { private readonly IBackendRepository backendRepository; public ServicePlanController(IBackendRepository backendRepository) { this.backendRepository = backendRepository; } public IActionResult Index() { return View(); } public async Task> SavePlan (BackgroundServicePlan plan) { ApiResult apiResult = new ApiResult(); try { if (plan.Id == 0) { Dictionary Plan = new Dictionary() { { "@status", plan.status}, { "@plan_name", plan.Plane_name}, { "@building_guid", plan.building_guid}, { "@target_table", plan.Target_table}, { "@execution_time", plan.Execution_time}, { "@execution_type", plan.Execution_type}, { "@start_time", plan.Start_time} }; if(plan.End_time == "0001-01-01 00:00:00") { Plan.Add("@end_time", null); } else { Plan.Add("@end_time", plan.End_time); } await backendRepository.AddOneByCustomTable(Plan, "background_service_plan"); apiResult.Code = "0000"; apiResult.Msg = "新增成功"; } else { Dictionary Plan = new Dictionary() { { "@status", plan.status}, { "@plan_name", plan.Plane_name}, { "@building_guid", plan.building_guid}, { "@target_table", plan.Target_table}, { "@execution_time", plan.Execution_time}, { "@execution_type", plan.Execution_type}, { "@start_time", plan.Start_time} }; if (plan.End_time == "0001-01-01 00:00:00") { Plan.Add("@end_time", null); } else { Plan.Add("@end_time", plan.End_time); } await backendRepository.UpdateOneByCustomTable(Plan, "background_service_plan", "id='" + plan.Id + "'"); apiResult.Code = "0000"; apiResult.Msg = "修改成功"; } } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; string json = System.Text.Json.JsonSerializer.Serialize(plan); Logger.LogError("【" + controllerName + "/" + actionName + "】" + json); Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } return apiResult; } public async Task>> GetPlanTable() { ApiResult> apiResult = new ApiResult>(); try { var plans = await backendRepository.GetAllAsync("select bsp.*,b.full_name building from background_service_plan bsp left join building b on bsp.building_guid = b.building_guid where bsp.deleted = 0 order by bsp.id desc"); foreach(var plan in plans) { var timetype = plan.Execution_type switch { 0 => "分", 1 => "小時", 2 => "天", 3 => "週", 4 => "月", _ => "", }; plan.execution = "每" + plan.Execution_time + timetype; plan.time = plan.Start_time + @"
-
"; if(plan.End_time != "0001-01-01 00:00:00") { plan.time += plan.End_time; } } apiResult.Code = "0000"; apiResult.Data = plans; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } return apiResult; } public async Task> GetonePlan (int id) { ApiResult apiResult = new ApiResult(); try { var plan = await backendRepository.GetOneAsync("background_service_plan", $" id = {id}"); apiResult.Data = plan; apiResult.Code = "0000"; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; Logger.LogError("【" + controllerName + "/" + actionName + "】" + id); Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } return apiResult; } [HttpPost] public async Task> DeletePlan(int id) { ApiResult apiResult = new ApiResult(); try { await backendRepository.DeleteOne(id.ToString(), "background_service_plan", "id"); apiResult.Code = "0000"; apiResult.Msg = "刪除成功"; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; Logger.LogError("【" + controllerName + "/" + actionName + "】" + "id=" + id); Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } return apiResult; } } }