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.BAS; using AMESCoreStudio.CommonTools.Result; namespace AMESCoreStudio.WebApi.Controllers.BAS { /// <summary> /// 工廠资料维护 /// </summary> [Route("api/[controller]")] [ApiController] public class FactoryInfoesController : ControllerBase { private readonly AMESContext _context; /// <summary> /// /// </summary> /// <param name="context"></param> public FactoryInfoesController(AMESContext context) { _context = context; } /// <summary> /// 获取全部工廠资料 /// </summary> /// <returns></returns> // GET: api/FactoryInfoes [HttpGet] public async Task<ActionResult<IEnumerable<FactoryInfo>>> GetFactoryInfo() { IQueryable<FactoryInfo> q = _context.FactoryInfos; q = q.Where(p => p.FactoryID > 0); //q = q.Where(p => p.StatusNo == "A"); q = q.OrderBy(p => p.FactoryNo); var FactoryInfo = await q.ToListAsync(); return FactoryInfo; //return await _context.FactoryInfo.ToListAsync(); } /// <summary> /// 用ID获取该工廠资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/FactoryInfoes/5 [HttpGet("{id}")] public async Task<ActionResult<IEnumerable<FactoryInfo>>> GetFactoryInfo(int id) { IQueryable<FactoryInfo> q = _context.FactoryInfos; q = q.Where(p => p.FactoryID.Equals(id)); var factoryInfo = await q.ToListAsync(); if (factoryInfo == null) { return NotFound(); } return factoryInfo; } /// <summary> /// 更新工廠资料 /// </summary> /// <param name="id"></param> /// <param name="factoryInfo"></param> /// <returns></returns> // PUT: api/FactoryInfoes/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<FactoryInfo>> PutFactoryInfo(int id, [FromBody] FactoryInfo factoryInfo) { ResultModel<FactoryInfo> result = new ResultModel<FactoryInfo>(); if (id != factoryInfo.FactoryID) { result.Success = false; result.Msg = "序號錯誤"; return result; } _context.Entry(factoryInfo).State = EntityState.Modified; factoryInfo.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="factoryInfo"></param> /// <returns></returns> // POST: api/FactoryInfoes // 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<FactoryInfo>> PostFactoryInfo(FactoryInfo factoryInfo) { ResultModel<FactoryInfo> result = new ResultModel<FactoryInfo>(); Helper helper = new Helper(_context); factoryInfo.FactoryID = helper.GetIDKey("FACTORY_ID").Result; factoryInfo.FactoryCode = "T" + factoryInfo.FactoryID.ToString(); _context.FactoryInfos.Add(factoryInfo); 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="id"></param> /// <returns></returns> // DELETE: api/FactoryInfoes/5 [HttpDelete("{id}")] public async Task<ResultModel<FactoryInfo>> DeleteFactoryInfo(int id) { ResultModel<FactoryInfo> result = new ResultModel<FactoryInfo>(); //var factoryInfo = await _context.FactoryInfo.FindAsync(id); var factoryInfo = await _context.FactoryInfos.Where(m => m.FactoryID == id).FirstOrDefaultAsync(); if (factoryInfo == null) { result.Success = false; result.Msg = "序號錯誤"; return result; } ////// var factoryInfoNew = new FactoryInfo(); factoryInfoNew = factoryInfo; _context.Entry(factoryInfoNew).State = EntityState.Modified; if (factoryInfo.StatusNo == "A") factoryInfoNew.StatusNo = "S"; else factoryInfoNew.StatusNo = "A"; factoryInfoNew.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; } private bool FactoryInfoExists(int id) { return _context.FactoryInfos.Any(e => e.FactoryID == id); } } }