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 MaterialItemController : ControllerBase { private readonly AMESContext _context; /// <summary> /// 建構式 /// </summary> /// <param name="context"></param> public MaterialItemController(AMESContext context) { _context = context; } /// <summary> /// 查詢料號基本資料檔 /// </summary> /// <returns></returns> // GET: api/<MaterialItemController> [HttpGet] public async Task<ActionResult<IEnumerable<MaterialItem>>> GetMaterialItem() { IQueryable<MaterialItem> q = _context.MaterialItems; q = q.OrderBy(p => p.ItemID); var MaterialItem = await q.ToListAsync(); return MaterialItem; } /// <summary> /// 料號基本資料檔 to ItemID /// </summary> /// <param name="id">ItemID</param> /// <returns></returns> [HttpGet("{id}")] public async Task<ResultModel<MaterialItem>> GetMaterialItem(int id) { IQueryable<MaterialItem> q = _context.MaterialItems; ResultModel<MaterialItem> result = new ResultModel<MaterialItem>(); result.Data = await q.Where(p => p.ItemID == id).ToListAsync(); return result; } /// <summary> /// 料號基本資料檔 to ItemNO /// </summary> /// <param name="id">料號</param> /// <returns></returns> [HttpGet("ByItemNO/{id}")] public async Task <MaterialItem> GetMaterialItemByItemNO(string id) { IQueryable<MaterialItem> q = _context.MaterialItems; var result = q.Where(p => p.ItemNo == id).FirstOrDefault(); return result; } /// <summary> /// 料號基本資料檔 to ItemNO /// </summary> /// <param name="id">料號</param> /// <returns></returns> [HttpGet("ByItemNO2/{id}")] public async Task<ActionResult<IEnumerable<MaterialItem>>> GetMaterialItemByItemNO2(string id) { IQueryable<MaterialItem> q = _context.MaterialItems; var result = await q.Where(p => p.ItemNo == id).ToListAsync(); return result; } /// <summary> /// 新增料號基本資料檔 /// </summary> /// <param name="MaterialItem"></param> /// <returns></returns> [HttpPost] public async Task<ResultModel<MaterialItem>> PostMaterialItem([FromBody] MaterialItem MaterialItem) { ResultModel<MaterialItem> result = new ResultModel<MaterialItem>(); Helper helper = new Helper(_context); MaterialItem.ItemID = helper.GetIDKey("ITEM_ID").Result; _context.MaterialItems.Add(MaterialItem); try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = MaterialItem.ItemID.ToString(); } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 修改料號基本資料檔 /// </summary> /// <returns></returns> [HttpPut] public async Task<ResultModel<MaterialItem>> PutMaterialItem([FromBody] MaterialItem MaterialItem) { ResultModel<MaterialItem> result = new ResultModel<MaterialItem>(); _context.Attach(MaterialItem); // 指定更新某個欄位 _context.Entry(MaterialItem).Property(p => p.ItemDesc).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; } // DELETE api/<MaterialItemController>/5 [HttpDelete("{id}")] public void DeleteMaterialItem(int id) { } } }