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; using AMESCoreStudio.WebApi.DTO.AMES; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// /// 鋼板量測記錄資料檔 /// [Route("api/[controller]")] [ApiController] public class SteelPlateMeasureController : ControllerBase { private readonly AMESContext _context; public SteelPlateMeasureController(AMESContext context) { _context = context; } // GET: api/SteelPlateMeasure [HttpGet] public async Task>> GetSteelPlateMeasures() { return await _context.SteelPlateMeasures.ToListAsync(); } // GET: api/SteelPlateMeasure/5 [HttpGet("{id}")] public async Task> GetSteelPlateMeasure(int id) { var steelPlateMeasure = await _context.SteelPlateMeasures.FindAsync(id); if (steelPlateMeasure == null) { return NotFound(); } return steelPlateMeasure; } /// /// 鋼板編號紀錄 By 鋼板編號 /// /// /// /// /// [HttpGet("BySteelPlateID/{id}")] public async Task> GetSteelPlateMeasureBySteelPlateID(int id, int page = 0, int limit = 10) { var q = from q1 in _context.SteelPlateMeasures.Where(w => w.SteelPlateID == id) join q2 in _context.SteelPlateInfos on q1.SteelPlateID equals q2.SteelPlateID join q3 in _context.UserInfoes on q1.OnUserID equals q3.UserID into s from q3 in s.DefaultIfEmpty() join q4 in _context.UserInfoes on q1.OffUserID equals q4.UserID into s1 from q4 in s1.DefaultIfEmpty() select new SteelPlateMeasureDto { SpMeasureID = q1.SpMeasureID, SteelPlateID = q1.SteelPlateID, SteelPlateNo = q2.SteelPlateNo, WipNo = q1.WipNo, Items = q2.Items, OnTension1 = q1.OnTension1, OnTension2 = q1.OnTension2, OnTension3 = q1.OnTension3, OnTension4 = q1.OnTension4, OnTension5 = q1.OnTension5, OnUserID = q1.OnUserID, OnUserName = q3.UserName, OnDate = q1.OnDate, OffTension1 = q1.OffTension1, OffTension2 = q1.OffTension2, OffTension3 = q1.OffTension3, OffTension4 = q1.OffTension4, OffTension5 = q1.OffTension5, OffUserID = q1.OffUserID, OffUserName = q4.UserName, OffDate = q1.OffDate, }; 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(); if (result == null) { result.Msg = "查無資料"; result.Success = false; return result; } result.Success = true; result.Msg = "OK"; return result; } /// /// 更新鋼板量測記錄資料檔 /// /// /// [HttpPut] public async Task> PutSteelPlateMeasure(SteelPlateMeasure steelPlateMeasure) { ResultModel result = new ResultModel(); _context.Attach(steelPlateMeasure); // 指定更新某個欄位 _context.Entry(steelPlateMeasure).Property(p => p.OffTension1).IsModified = true; _context.Entry(steelPlateMeasure).Property(p => p.OffTension2).IsModified = true; _context.Entry(steelPlateMeasure).Property(p => p.OffTension3).IsModified = true; _context.Entry(steelPlateMeasure).Property(p => p.OffTension4).IsModified = true; _context.Entry(steelPlateMeasure).Property(p => p.OffTension5).IsModified = true; _context.Entry(steelPlateMeasure).Property(p => p.OffUserID).IsModified = true; _context.Entry(steelPlateMeasure).Property(p => p.OffDate).IsModified = true; try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// /// 新增鋼板量測記錄資料檔 /// /// /// [HttpPost] public async Task> PostSteelPlateMeasure(SteelPlateMeasure steelPlateMeasure) { ResultModel result = new ResultModel(); Helper helper = new Helper(_context); steelPlateMeasure.SpMeasureID = helper.GetIDKey("SP_MEASURE_ID").Result; _context.SteelPlateMeasures.Add(steelPlateMeasure); try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } // DELETE: api/SteelPlateMeasure/5 [HttpDelete("{id}")] public async Task> DeleteSteelPlateMeasure(int id) { var steelPlateMeasure = await _context.SteelPlateMeasures.FindAsync(id); if (steelPlateMeasure == null) { return NotFound(); } _context.SteelPlateMeasures.Remove(steelPlateMeasure); await _context.SaveChangesAsync(); return steelPlateMeasure; } private bool SteelPlateMeasureExists(int id) { return _context.SteelPlateMeasures.Any(e => e.SpMeasureID == id); } } }