using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using SolarPower.Models; using SolarPower.Models.Role; using SolarPower.Repository.Interface; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace SolarPower.Controllers { public class OperationController : MyBaseController { private readonly IUserRepository userRepository; private readonly IOperationRepository operationRepository; private readonly IRoleRepository roleRepository; public OperationController( IUserRepository userRepository, IOperationRepository operationRepository) : base() { this.userRepository = userRepository; this.operationRepository = operationRepository; } public IActionResult Index() { return View(); } /// /// 取得電站Option /// /// /// public async Task GetPowerStationSelectOption(int post) { ApiResult> apiResult = new ApiResult>(); try { var PowerStationIdLists = new List(); PowerStationIdLists = await operationRepository.GetPowerStationIdList(myUser.Id) ; apiResult.Code = "0000"; apiResult.Data = PowerStationIdLists; } catch (Exception exception) { apiResult.Code = "9999"; Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } apiResult.Msg = errorCode.GetString(apiResult.Code); var result = Json(new { data = apiResult }); return result; } /// /// 儲存計畫 /// /// /// public async Task> SaveOperationPlan(OperationCreatePlanModal post) { ApiResult apiResult = new ApiResult(); try { var now = DateTime.Now.ToString("yyyy-MM-dd"); var finalid = await operationRepository.GetCurrentSerialNumber("operation_plan_create", $"PowerStationId = {post.PowerStationId} AND CreatedAt LIKE '%{now}%'"); var newSerialNumber = GetLastSerialNumber(finalid); var OperationPlan = new OperationCreatePlan() { EmailType = post.EmailType, ScheduleNum = post.ScheduleNum, Description = post.Description, WorkDay = post.WorkDay, ScheduleType = post.ScheduleType, SerialNumber = newSerialNumber, StartTime = post.StartTime, PowerStationId = post.PowerStationId, Type = post.Type, PlanId = DateTime.Now.ToString("yyyyMMdd") + newSerialNumber, CreatedBy = myUser.Id }; List properties = new List() { "EmailType", "ScheduleNum", "Description", "WorkDay", "ScheduleType", "SerialNumber", "StartTime", "PowerStationId", "Type", "PlanId", "CreatedBy" }; await operationRepository.AddOperationPlan(OperationPlan, properties); apiResult.Code = "0000"; apiResult.Msg = "新增成功"; } catch (Exception exception) { apiResult.Code = "9999"; Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } apiResult.Msg = errorCode.GetString(apiResult.Code); return apiResult; } /// /// 定時計畫datatable /// /// /// public async Task OperationPlanTable(List id) { List OperationPlanTable = new List(); ApiResult> apiResult = new ApiResult>(); try { apiResult.Code = "0000"; OperationPlanTable = await operationRepository.OperationPlanTable(id); foreach (OperationPlanTable a in OperationPlanTable) { if(a.Type == 0) { a.TypeName = "清洗"; } else { a.TypeName = "巡檢"; } if(a.ScheduleType == 0) { a.Schedule = "每" + a.ScheduleNum.ToString() + "天" ; } else if (a.ScheduleType == 1) { a.Schedule = "每" + a.ScheduleNum.ToString() + "周"; } else if (a.ScheduleType == 2) { a.Schedule = "每" + a.ScheduleNum.ToString() + "月"; } else if (a.ScheduleType == 3) { a.Schedule = "每" + a.ScheduleNum.ToString() + "季"; } else if (a.ScheduleType == 4) { a.Schedule = "每" + a.ScheduleNum.ToString() + "年"; } a.StartTimeString = a.StartTime.ToString("yyyy-MM-dd"); var crst = a.CreatedAt.Split(" "); a.CreateTimeString = crst[0]; if(a.EmailType == 0) { a.EmailTypeName = "當天"; } else if(a.EmailType == 1) { a.EmailTypeName = "前一天"; } else if (a.EmailType == 2) { a.EmailTypeName = "前兩天"; } else if (a.EmailType == 3) { a.EmailTypeName = "前三天"; } a.Function = @" "; } apiResult.Data = OperationPlanTable; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = exception.ToString(); } var result = Json(new { data = apiResult }); return result; } /// /// 刪除定時計畫 /// /// /// public async Task> DeleteOneOperationPlan(int Id) { ApiResult apiResult = new ApiResult(); OperationCreatePlan operation = new OperationCreatePlan(); try { operation = await operationRepository.GetOneOperation(Id); if (operation == null) { apiResult.Code = "9998"; apiResult.Msg = errorCode.GetString(apiResult.Code); return apiResult; } await operationRepository.DeleteOneOtherTable(Id, "operation_plan_create"); apiResult.Code = "0000"; apiResult.Msg = "刪除成功"; } catch (Exception exception) { apiResult.Code = "9999"; apiResult.Msg = errorCode.GetString(apiResult.Code); Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Id=" + Id); Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); } return apiResult; } } }