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 ClassInfoesController : ControllerBase { private readonly AMESContext _context; /// <summary> /// /// </summary> /// <param name="context"></param> public ClassInfoesController(AMESContext context) { _context = context; } /// <summary> /// 获取全部班別资料 /// </summary> /// <returns></returns> // GET: api/ClassInfoes [HttpGet] public async Task<ActionResult<IEnumerable<ClassInfo>>> GetClassInfo() { IQueryable<ClassInfo> q = _context.ClassInfoes; q = q.OrderBy(p => p.ClassID); var classInfo = await q.ToListAsync(); foreach (var data in classInfo) { data.Unit = _context.FactoryUnits.Find(data.UnitNo); // data.TestCol = data.BeginTime + " ~ " + data.EndTime; } return classInfo; //return await _context.ClassInfo.ToListAsync(); } /// <summary> /// 用ID获取该班別资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/ClassInfoes/5 [HttpGet("{id}")] public async Task<ActionResult<IEnumerable<ClassInfo>>> GetClassInfo(int id) { IQueryable<ClassInfo> q = _context.ClassInfoes; q = q.Where(p => p.ClassID.Equals(id)); var classInfo = await q.ToListAsync(); if (classInfo == null) { return NotFound(); } return classInfo; } /// <summary> /// 根据單位ID获取该班別资料 /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/MailGroupDetails/Unit/5 [HttpGet("Unit/{id}")] public async Task<ActionResult<IEnumerable<ClassInfo>>> GetClassInfoByUnit(String id) { IQueryable<ClassInfo> q = _context.ClassInfoes; if (id != "0") { q = q.Where(p => p.UnitNo.Equals(id)); } q.OrderBy(p => p.ClassID); var classInfo = await q.ToListAsync(); //foreach (var data in classInfo) //{ // data.TestCol = data.BeginTime + " ~ " + data.EndTime; //} if (classInfo is null) { return NotFound(); } return classInfo; } /// <summary> /// 更新班別资料 /// </summary> /// <param name="id"></param> /// <param name="classInfo"></param> /// <returns></returns> // PUT: api/ClassInfoes/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<ClassInfo>> PutClassInfo(int id, [FromBody] ClassInfo classInfo) { ResultModel<ClassInfo> result = new ResultModel<ClassInfo>(); classInfo.UpdateDate = System.DateTime.Now; classInfo.StatusNo = "A"; if (id != classInfo.ClassID) { result.Success = false; result.Msg = "序號錯誤"; return result; } _context.Entry(classInfo).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; } /// <summary> /// 新增班別资料 /// </summary> /// <param name="classInfo"></param> /// <returns></returns> // POST: api/ClassInfoes // 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<ClassInfo>> PostClassInfo(ClassInfo classInfo) { ResultModel<ClassInfo> result = new ResultModel<ClassInfo>(); Helper helper = new Helper(_context); classInfo.ClassID = helper.GetIDKey("CLASS_ID").Result; classInfo.StatusNo = "A"; if (string.IsNullOrEmpty(classInfo.ClassDesc)) classInfo.ClassDesc = " "; _context.ClassInfoes.Add(classInfo); 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/ClassInfoes/5 [HttpDelete("{id}")] public async Task<ResultModel<ClassInfo>> DeleteClassInfo(int id) { ResultModel<ClassInfo> result = new ResultModel<ClassInfo>(); var classInfo = await _context.ClassInfoes.Where(m => m.ClassID == id).FirstOrDefaultAsync(); if (classInfo == null) { result.Success = false; result.Msg = "序號錯誤"; return result; } var classInfoNew = new ClassInfo(); classInfoNew = classInfo; _context.Entry(classInfoNew).State = EntityState.Modified; if (classInfo.StatusNo == "A") { classInfoNew.StatusNo = "S"; classInfoNew.StopDate = DateTime.Now; } else { classInfoNew.StatusNo = "A"; classInfoNew.SartDate = 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 ClassInfoExists(int id) { return _context.ClassInfoes.Any(e => e.ClassID == id); } } }