using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.CommonTools.Result; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// /// 報工生產單位別维护 /// [Route("api/[controller]")] [ApiController] public class WorkingStationsController : ControllerBase { private readonly AMESContext _context; /// /// /// /// public WorkingStationsController(AMESContext context) { _context = context; } /// /// 获取全部報工生產單位別 /// /// [HttpGet] public async Task> GetWorkingStations(int page = 0, int limit = 10) { IQueryable q = _context.WorkingStations; ResultModel result = new ResultModel(); // 紀錄筆數 result.DataTotal = q.Count(); // Table 頁數 if (page > 0) { q = q.Skip((page - 1) * limit).Take(limit); } result.Data = await q.ToListAsync(); return result; } /// /// 获取全部報工生產單位別 /// /// [HttpGet("byALL")] public async Task>> GetWorkingStationALLs() { IQueryable q = _context.WorkingStations; q = q.OrderBy(p => p.WorkingStationID); var WorkingStations = await q.ToListAsync(); return WorkingStations; } /// /// 用ID获取该報工生產單位別 /// /// /// [HttpGet("{id}")] public async Task>> GetWorkingStation(int id) { IQueryable q = _context.WorkingStations; q = q.Where(p => p.WorkingStationID.Equals(id)); var WorkingStation = await q.ToListAsync(); if (WorkingStation == null) { return NotFound(); } return WorkingStation; } /// /// 用Name获取该報工生產單位別 /// /// /// [HttpGet("Name/{id}")] public async Task>> GetWorkingStationbyName(string id) { IQueryable q = _context.WorkingStations; q = q.Where(p => p.WorkingStationName.Equals(id)); var WorkingStation = await q.ToListAsync(); if (WorkingStation == null) { return NotFound(); } return WorkingStation; } /// /// 用生產單位获取该報工線別基本資料 /// /// 報工生產單位 /// [HttpGet("Unit/{id}")] public async Task>> GetWorkingStations(string id) { try { IQueryable q = _context.WorkingStations; if (id != "all") { q = q.Where(p => p.WorkingUnitNo.Equals(id)); } var WorkingStation = await q.ToListAsync(); if (WorkingStation == null) { return NotFound(); } return WorkingStation; } catch (Exception ex) { var aa= ex.InnerException.Message; throw; } } /// /// 用用生產單位获取该報工線別基本資料 /// /// 報工生產單位 /// [HttpGet("MultiUnit/{id}")] public async Task>> GetWorkingStationsMulti(string id) { // IQueryable q = _context.WorkingLines; var q = from q1 in _context.WorkingStations join q2 in _context.WorkingUnits on q1.WorkingUnitNo equals q2.WorkingUnitNo select new { WorkingStationID = q1.WorkingStationID, WorkingStationName = q1.WorkingStationName, WorkingStationDesc = q1.WorkingStationDesc, WorkingUnitNo = q1.WorkingUnitNo, TypeNo = q1.TypeNo, StatusNo = q1.StatusNo, CreateUserID = q1.CreateUserID, CreateDate = q1.CreateDate, UpdateDate = q1.UpdateDate, WorkingUnitName = q2.WorkingUnitName }; if (id != "all") { q = q.Where(p => p.WorkingUnitNo.Equals(id)); } var WorkingLine = await q.ToListAsync(); if (WorkingLine == null) { return NotFound(); } return WorkingLine; } /// /// 更新條報工生產單位別 /// /// /// /// [HttpPut("{id}")] public async Task> PutWorkingStations(int id, [FromBody] WorkingStation WorkingStation) { ResultModel result = new ResultModel(); if (id != WorkingStation.WorkingStationID) { result.Success = false; result.Msg = "序號錯誤"; return result; } WorkingStation.UpdateDate = DateTime.Now; _context.Entry(WorkingStation).State = EntityState.Modified; try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; return result; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; return result; //throw; } } /// /// 新增報工生產單位別 /// /// /// [HttpPost] public async Task> PostWorkingStations(WorkingStation WorkingStation) { ResultModel result = new ResultModel(); Helper helper = new Helper(_context); WorkingStation.WorkingStationID = helper.GetIDKey("WorkingStation_ID").Result; WorkingStation.CreateDate = DateTime.Now; WorkingStation.UpdateDate = DateTime.Now; _context.WorkingStations.Add(WorkingStation); try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (DbUpdateException ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// /// 停用/啟用報工生產單位別 /// /// /// [HttpDelete("{id}")] public async Task> DeleteWorkingStations(int id) { ResultModel result = new ResultModel(); var WorkingStation = await _context.WorkingStations.Where(m => m.WorkingStationID == id).FirstOrDefaultAsync(); if (WorkingStation == null) { result.Success = false; result.Msg = "序號錯誤"; return result; } ////// var WorkingStationNew = new WorkingStation(); WorkingStationNew = WorkingStation; _context.Entry(WorkingStationNew).State = EntityState.Modified; if (WorkingStation.StatusNo == "A") WorkingStationNew.StatusNo = "S"; else WorkingStationNew.StatusNo = "A"; WorkingStationNew.UpdateDate = DateTime.Now; try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } } }