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 { /// <summary> /// 工單治具資料檔 /// </summary> [Route("api/[controller]")] [ApiController] public class WipOutfitController : ControllerBase { private readonly AMESContext _context; public WipOutfitController(AMESContext context) { _context = context; } // GET: api/WipOutfit [HttpGet] public async Task<ActionResult<IEnumerable<WipOutfit>>> GetWipOutfits() { return await _context.WipOutfits.ToListAsync(); } // GET: api/WipOutfit/5 [HttpGet("{id}")] public async Task<ActionResult<WipOutfit>> GetWipOutfit(int id) { var wipOutfit = await _context.WipOutfits.FindAsync(id); if (wipOutfit == null) { return NotFound(); } return wipOutfit; } /// <summary> /// ByWipNo /// </summary> /// <param name="id">工單號碼</param> /// <returns></returns> [HttpGet("ByWipNo/{id}")] public async Task<ActionResult<IEnumerable<WipOutfitDto>>> GetWipOutfitByWipNo(string id) { var q = from q1 in _context.WipOutfits.Where(w => w.WipNo.Contains(id)) join q2 in _context.FactoryUnits on q1.UnitNo equals q2.UnitNo join q3 in _context.Stationses on q1.StationID equals q3.StationID into cp from q3 in cp.DefaultIfEmpty() join q4 in _context.OutfitCommodityInfoes on q1.PartNo equals q4.CommodityNo select new WipOutfitDto { WipOutfitID = q1.WipOutfitID, WipNo = q1.WipNo, ItemNo = q1.ItemNo, OutfitNo = q1.OutfitNo, PartNo = q1.PartNo, PartNoName = q4.CommodityName, UnitNo = q1.UnitNo, UnitNoName = q2.UnitName, StationID = q1.StationID, StationName = q3.StationName ?? "" }; return await q.ToListAsync(); } /// <summary> /// 更新工單治具資料檔 /// </summary> /// <param name="wipOutfit"></param> /// <returns></returns> [HttpPut] public async Task<ResultModel<WipOutfit>> PutWipOutfit(WipOutfit wipOutfit) { ResultModel<WipOutfit> result = new ResultModel<WipOutfit>(); _context.Entry(wipOutfit).State = EntityState.Modified; //設置容器空間某一個模型的某一個欄位 不提交到資料庫 //DbContent.Entry是要更新到資料庫的整個對象 _context.Entry<WipOutfit>(wipOutfit).Property("CreateDate").IsModified = false; _context.Entry<WipOutfit>(wipOutfit).Property("CreateUserID").IsModified = false; wipOutfit.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; } /// <summary> /// 新增工單治具資料檔 /// </summary> /// <param name="wipOutfit"></param> /// <returns></returns> [HttpPost] public async Task<ResultModel<WipOutfit>> PostWipOutfit(WipOutfit wipOutfit) { ResultModel<WipOutfit> result = new ResultModel<WipOutfit>(); Helper helper = new Helper(_context); wipOutfit.WipOutfitID = helper.GetIDKey("WIP_OUTFIT_ID").Result; try { _context.WipOutfits.Add(wipOutfit); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 刪除工單治具資料檔 /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpDelete("{id}")] public async Task<ResultModel<WipOutfit>> DeleteWipOutfit(int id) { ResultModel<WipOutfit> result = new ResultModel<WipOutfit>(); var wipOutfit = await _context.WipOutfits.FindAsync(id); try { if (wipOutfit != null) { _context.WipOutfits.Remove(wipOutfit); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } else { result.Success = true; result.Msg = "找不到資料刪除"; } } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } private bool WipOutfitExists(int id) { return _context.WipOutfits.Any(e => e.WipOutfitID == id); } } }