using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.CommonTools.Result; using AMESCoreStudio.WebApi.DTO.AMES; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// <summary> /// 料號對應組件資料檔Controller /// </summary> [Route("api/[controller]")] [ApiController] public class MaterialKpController : ControllerBase { private readonly AMESContext _context; /// <summary> /// 建構式 /// </summary> /// <param name="context"></param> public MaterialKpController(AMESContext context) { _context = context; } /// <summary> /// 查詢料號基本資料檔 /// </summary> /// <returns></returns> // GET: api/<MaterialKpController> [HttpGet] public async Task<ActionResult<IEnumerable<MaterialKp>>> GetMaterialKp() { IQueryable<MaterialKp> q = _context.MaterialKps; q = q.OrderBy(p => p.ItemID); var MaterialKp = await q.ToListAsync(); return MaterialKp; } /// <summary> /// 料號基本資料檔 by ID /// </summary> /// <param name="id">MaterialKpID</param> /// <returns></returns> [HttpGet("{id}")] public async Task<IEnumerable<MaterialKp>> GetMaterialKp(int id) { IQueryable<MaterialKp> q = _context.MaterialKps; var result = await q.Where(p => p.MaterialKpID == id).ToListAsync(); return result; } /// <summary> /// 料號基本資料檔 to ItemID /// </summary> /// <param name="id">ItemID</param> /// <returns></returns> [HttpGet("ByItemID/{id}")] public async Task<IEnumerable<MaterialKp>> GetMaterialKpByItemID(int id) { IQueryable<MaterialKp> q = _context.MaterialKps; var result = await q.Where(p => p.ItemID == id).ToListAsync(); return result; } /// <summary> /// Keypart查詢 /// </summary> /// <param name="itemno">料號</param> /// <param name="station">站別</param> /// <returns></returns> [Route("[action]")] [HttpGet] public async Task<ActionResult<IEnumerable<MaterialKpDto>>> GetMaterialKpQuery(string itemno, string station) { IQueryable<MaterialKp> q = _context.MaterialKps; if (!string.IsNullOrWhiteSpace(itemno)) q = q.Where(w => w.Item.ItemNo == itemno); if (!string.IsNullOrWhiteSpace(station)) q = q.Where(w => w.StationType == station); var materialKpDtos = await q.Select(s => new MaterialKpDto { ItemName = s.Item.ItemNo, KpName = s.KpName, //Station = s.StationTypeList.TypeDesc, SHANI edit Station = s.Unit.UnitName, KpSeq = s.KpSeq, KpNo = s.KpNo, MaterialKpID = s.MaterialKpID, Length = s.Length, Title = s.Title }).ToListAsync(); return materialKpDtos; } /// <summary> /// 料號Key Parts 資料檔 to ItemNo /// </summary> /// <param name="id">料號No</param> /// <returns></returns> [HttpGet("ByItemNo/{id}")] public async Task<IEnumerable<MaterialKp>> GetMaterialKpByItemNo(string id) { MaterialItemController materialItemController = new MaterialItemController(_context); var result_Item = materialItemController.GetMaterialItemByItemNO(id); int ItemID = 0; if (result_Item.Result != null) ItemID = result_Item.Result.ItemID; IQueryable<MaterialKp> q = _context.MaterialKps.Where(w => w.ItemID == ItemID); return await q.ToListAsync(); } /// <summary> /// 新增料號基本資料檔 /// </summary> /// <param name="MaterialKp"></param> /// <returns></returns> [HttpPost] public async Task<ResultModel<MaterialKp>> PostMaterialKp([FromBody] MaterialKp MaterialKp) { ResultModel<MaterialKp> result = new ResultModel<MaterialKp>(); Helper helper = new Helper(_context); MaterialKp.MaterialKpID = helper.GetIDKey("MATERIALKP_ID").Result; _context.MaterialKps.Add(MaterialKp); 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> /// <returns></returns> [HttpPut("{id}")] public async Task<ResultModel<MaterialKp>> PutMaterialKp(int id,[FromBody] MaterialKp MaterialKp) { ResultModel<MaterialKp> result = new ResultModel<MaterialKp>(); if (id != MaterialKp.MaterialKpID) { result.Success = false; result.Msg = "序號錯誤"; return result; } _context.Entry(MaterialKp).State = EntityState.Modified; 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/<MaterialKpController>/5 [HttpDelete("{id}")] public async Task<ResultModel<MaterialKp>> DeleteMaterialKp(int id) { ResultModel<MaterialKp> result = new ResultModel<MaterialKp>(); var MaterialKp = await _context.MaterialKps.Where(m => m.MaterialKpID == id).FirstOrDefaultAsync(); if (MaterialKp == null) { result.Success = false; result.Msg = "序號不存在"; return result; } _context.MaterialKps.Remove(MaterialKp); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; return result; } /// <summary> /// 刪除料號KP By 料號ID /// </summary> /// <param name="id">料號ID</param> /// <returns></returns> [HttpDelete("ByItem/{id}")] public async Task<ResultModel<MaterialKp>> DeleteMaterialKpByItem(int id) { ResultModel<MaterialKp> result = new ResultModel<MaterialKp>(); var MaterialKp = await _context.MaterialKps.Where(m => m.ItemID == id).ToListAsync(); _context.MaterialKps.RemoveRange(MaterialKp); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; return result; } /// <summary> /// 刪除料號KP By KpNo(停用) /// </summary> /// <param name="id">KpNo</param> /// <returns></returns> [HttpDelete("ByKpNo/{id}")] public async Task<ResultModel<MaterialKp>> DeleteMaterialKpByKpNo(string id) { ResultModel<MaterialKp> result = new ResultModel<MaterialKp>(); var MaterialKp = await _context.MaterialKps.Where(m => m.KpNo == id).ToListAsync(); _context.MaterialKps.RemoveRange(MaterialKp); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; return result; } } }