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; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// <summary> /// 異常工時原因資料檔 /// </summary> [Route("api/[controller]")] [ApiController] public class ExceptionReasonsController : ControllerBase { private readonly AMESContext _context; /// <summary> /// 建構式 /// </summary> /// <param name="context"></param> public ExceptionReasonsController(AMESContext context) { _context = context; } /// <summary> /// 查詢異常工時原因資料檔 /// </summary> /// <returns></returns> // GET: api/<ExceptionReasonsController> [HttpGet] public async Task<ActionResult<IEnumerable<ExceptionReason>>> GetExceptionReasons() { IQueryable<ExceptionReason> q = _context.ExceptionReasons; q = q.OrderBy(p => p.ReasonNo); var ExceptionReasons = await q.ToListAsync(); return ExceptionReasons; } /// <summary> /// 異常工時原因資料檔 /// </summary> /// <param name="id">ItemID</param> /// <returns></returns> [HttpGet("{id}")] public async Task<IEnumerable<ExceptionReason>> GetExceptionReasons(string id) { IQueryable<ExceptionReason> q = _context.ExceptionReasons; var result = await q.Where(p => p.ReasonNo == id).ToListAsync(); return result; } /// <summary> /// 異常工時原因資料檔 /// </summary> /// <param name="id">ItemID</param> /// <returns></returns> [HttpGet("Query/{id}")] public async Task<IEnumerable<ExceptionReason>> GetExceptionReasonsByQuery(string id) { IQueryable<ExceptionReason> q = _context.ExceptionReasons; var result = await q.Where(p => p.ExceptionNo == id).ToListAsync(); return result; } /// <summary> /// 新增異常工時原因資料檔 /// </summary> /// <param name="ExceptionReason"></param> /// <returns></returns> [HttpPost] public async Task<ResultModel<ExceptionReason>> PostExceptionReasons([FromBody] ExceptionReason ExceptionReason) { ResultModel<ExceptionReason> result = new ResultModel<ExceptionReason>(); Helper helper = new Helper(_context); if (ExceptionReasonExists(ExceptionReason.ReasonNo)) { result.Success = false; result.Msg = "代號重複"; return result; } _context.ExceptionReasons.Add(ExceptionReason); 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<ExceptionReason>> PutBarcodeItems(string id, [FromBody] ExceptionReason ExceptionReason) { ResultModel<ExceptionReason> result = new ResultModel<ExceptionReason>(); if (id != ExceptionReason.ReasonNo) { result.Success = false; result.Msg = "代碼錯誤"; return result; } _context.Entry(ExceptionReason).State = EntityState.Modified; try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; return result; } catch (DbUpdateConcurrencyException ex) { result.Success = false; result.Msg = ex.InnerException.Message; return result; //throw; } } /// <summary> /// 刪除異常工時原因 /// </summary> /// <param name="id"></param> /// <returns></returns> // DELETE: api/StandardWorkTimes/5 [HttpDelete("{id}")] public async Task<ResultModel<ExceptionReason>> DeleteExceptionReason(string id) { ResultModel<ExceptionReason> result = new ResultModel<ExceptionReason>(); var ExceptionReason = await _context.ExceptionReasons.FindAsync(id); if (ExceptionReason == null) { result.Success = false; result.Msg = "代碼不存在"; return result; } _context.ExceptionReasons.Remove(ExceptionReason); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; return result; } private bool ExceptionReasonExists(string id) { return _context.ExceptionReasons.Any(e => e.ReasonNo == id); } } }