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; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// <summary> /// 工時援入/外 /// </summary> [Route("api/[controller]")] [ApiController] public class SupportUsersController : ControllerBase { private readonly AMESContext _context; /// <summary> /// /// </summary> /// <param name="context"></param> public SupportUsersController(AMESContext context) { _context = context; } /// <summary> /// /// </summary> /// <returns></returns> // GET: api/SupportUsers [HttpGet] public async Task<ActionResult<IEnumerable<SupportUser>>> GetSupportUser() { IQueryable<SupportUser> q = _context.SupportUsers; q = q.OrderBy(p => p.SupportID); var supportUser = await q.ToListAsync(); return supportUser; } /// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/SupportUsers/5 [HttpGet("{id}")] public async Task<ActionResult<IEnumerable<SupportUser>>> GetSupportUser(int id) { IQueryable<SupportUser> q = _context.SupportUsers; q = q.Where(p => p.SupportID.Equals(id)); var supportUser = await q.ToListAsync(); if (supportUser == null) { return NotFound(); } return supportUser; } /// <summary> /// 援入援外綜合查詢 /// </summary> /// <param name="f">廠別</param> /// <param name="type">援入/外</param> /// <param name="unit">製程單位</param> /// <param name="sd">開始時間</param> /// <param name="ed">結束時間</param> /// <returns></returns> // GET: api/StandardWorkTimes/5 [HttpGet("Query/{f}/{type}/{unit}/{sd}/{ed}")] public async Task<ActionResult<IEnumerable<SupportUser>>> GetSupportUserByQuery(string f, string type, string unit, string sd, string ed) { IQueryable<SupportUser> q = _context.SupportUsers; //LINQ的 IN: //var queryResult = from p in q // where (array).Contains(p.LineID) // select p; var sd2 = System.DateTime.Parse(sd); var ed2 = System.DateTime.Parse(ed); if (type == "i") { q = q.Where(p => p.Werks.Equals(f) && p.UnitNoI.Equals(unit) && (DateTime.Compare(sd2, p.SupportDate) <=0 && DateTime.Compare(ed2, p.SupportDate)>=0) ); } else q = q.Where(p => p.Werks.Equals(f) && p.UnitNoO.Equals(unit) && (DateTime.Compare(sd2, p.SupportDate) <= 0 && DateTime.Compare(ed2, p.SupportDate) >= 0)); var supportUser = await q.ToListAsync(); if (supportUser == null) { return NotFound(); } return supportUser; } /// <summary> /// 修改工時援入/外 /// </summary> /// <param name="id"></param> /// <param name="supportUser"></param> /// <returns></returns> // PUT: api/SupportUsers/5 // To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. [HttpPut("{id}")] public async Task<ResultModel<SupportUser>> PutSupportUser(int id, [FromBody] SupportUser supportUser) { ResultModel<SupportUser> result = new ResultModel<SupportUser>(); if (id != supportUser.SupportID) { result.Success = false; result.Msg = "序號錯誤"; return result; } _context.Entry(supportUser).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SupportUserExists(id)) { result.Success = false; result.Msg = "序號不存在"; return result; } else { throw; } } result.Success = true; result.Msg = "OK"; return result; } /// <summary> /// 新增援入外资料 /// </summary> /// <param name="supportUser"></param> /// <returns></returns> // POST: api/SupportUsers // To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see https://go.microsoft.com/fwlink/?linkid=2123754. [HttpPost] public async Task<ResultModel<SupportUser>> PostSupportUser(SupportUser supportUser) { ResultModel<SupportUser> result = new ResultModel<SupportUser>(); Helper helper = new Helper(_context); supportUser.SupportID = helper.GetIDKey("SUPPORT_ID").Result; _context.SupportUsers.Add(supportUser); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { throw; } result.Success = true; result.Msg = "OK"; return result; // return CreatedAtAction("GetSupportUser", new { id = supportUser.SupportID }, supportUser); } /// <summary> /// 刪除援入外資料 /// </summary> /// <param name="id"></param> /// <returns></returns> // DELETE: api/SupportUsers/5 [HttpDelete("{id}")] public async Task<ResultModel<SupportUser>> DeleteSupportUser(int id) { ResultModel<SupportUser> result = new ResultModel<SupportUser>(); var supportUser = await _context.SupportUsers.FindAsync(id); if (supportUser == null) { result.Success = false; result.Msg = "序號不存在"; return result; } _context.SupportUsers.Remove(supportUser); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; return result; //var supportUser = await _context.SupportUsers.Where(p => p.SupportID == id).FirstOrDefaultAsync(); //if (supportUser == null) //{ // return NotFound(); //} //_context.SupportUsers.Remove(supportUser); //await _context.SaveChangesAsync(); //return supportUser; } private bool SupportUserExists(int id) { return _context.SupportUsers.Any(e => e.SupportID == id); } } }