using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi.Models.SYS; using AMESCoreStudio.CommonTools.Result; namespace AMESCoreStudio.WebApi.Controllers.SYS { /// <summary> /// /// </summary> [Route("api/[controller]")] [ApiController] public class ModuleInfoesController : ControllerBase { private readonly AMESContext _context; /// <summary> /// /// </summary> /// <param name="context"></param> public ModuleInfoesController(AMESContext context) { _context = context; } /// <summary> /// /// </summary> /// <returns></returns> // GET: api/ModuleInfoes [HttpGet] public async Task<ActionResult<IEnumerable<ModuleInfo>>> GetModuleInfo() { IQueryable<ModuleInfo> q = _context.ModuleInfoes; q = q.OrderBy(p => p.ModuleNo); var moduleInfo = await q.ToListAsync(); return moduleInfo; //return await _context.ModuleInfoes.ToListAsync(); } /// <summary> /// 根據系統ID獲取該系統模組資料 /// </summary> /// <param name="id"></param> /// <param name="page"></param> /// <param name="limit"></param> /// <returns></returns> // GET: api/ModuleInfoes/System/5 [HttpGet("System/{id}")] public async Task<ResultModel<ModuleInfo>> GetModuleInfoBySystem(int id, int page = 0, int limit = 10) { ResultModel<ModuleInfo> result = new ResultModel<ModuleInfo>(); IQueryable<ModuleInfo> q = _context.ModuleInfoes; if (id > 0) { q = q.Where(p => p.SystemID.Equals(id)); } result.DataTotal = q.ToList().Count; if (page > 0) { q = q.OrderBy(p => p.SortSeq).Skip((page - 1) * limit).Take(limit); } else { q = q.OrderBy(p => p.SortSeq); } try { var moduleInfo = await q.ToListAsync(); result.Data = moduleInfo; if (moduleInfo == null) { result.Msg = "查無資料"; result.Success = false; return result; } result.Msg = "OK"; result.Success = true; return result; } catch (Exception e1) { string msg = e1.Message; } result.Msg = "OK"; result.Success = true; return result; } /// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> // GET: api/ModuleInfoes/5 [HttpGet("{id}")] public async Task<ActionResult<IEnumerable<ModuleInfo>>> GetModuleInfo(int id) { //var moduleInfo = await _context.ModuleInfoes.FindAsync(id); IQueryable<ModuleInfo> q = _context.ModuleInfoes; q = q.Where(p => p.ModuleID.Equals(id)); var moduleInfo = await q.ToListAsync(); if (moduleInfo == null) { return NotFound(); } return moduleInfo; } /// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="moduleInfo"></param> /// <returns></returns> // PUT: api/ModuleInfoes/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<ModuleInfo>> PutModuleInfo(int id, [FromBody] ModuleInfo moduleInfo) { ResultModel<ModuleInfo> result = new ResultModel<ModuleInfo>(); if (id != moduleInfo.ModuleID) { result.Msg = "模組編號錯誤"; result.Success = false; return result; } _context.Entry(moduleInfo).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ModuleInfoExists(id)) { result.Msg = "模組編號不存在"; result.Success = false; return result; } else { throw; } } result.Msg = "OK"; result.Success = true; return result; } /// <summary> /// /// </summary> /// <param name="moduleInfo"></param> /// <returns></returns> // POST: api/ModuleInfoes // 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<ModuleInfo>> PostModuleInfo([FromBody] ModuleInfo moduleInfo) { ResultModel<ModuleInfo> result = new ResultModel<ModuleInfo>(); Helper helper = new Helper(_context); moduleInfo.ModuleID = helper.GetIDKey("MODULE_ID").Result; moduleInfo.CreateDateTime = DateTime.Now; moduleInfo.CreateUserId = 0; _context.ModuleInfoes.Add(moduleInfo); await _context.SaveChangesAsync(); result.Msg = "OK"; result.Success = true; return result; } /// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> // DELETE: api/ModuleInfoes/5 [HttpDelete("{id}")] public async Task<ResultModel<ModuleInfo>> DeleteModuleInfo(int id) { ResultModel<ModuleInfo> result = new ResultModel<ModuleInfo>(); var moduleInfo = await _context.ModuleInfoes.Where(m => m.ModuleID == id).FirstOrDefaultAsync(); if (moduleInfo == null) { result.Msg = "模組編號不存在"; result.Success = false; return result; } _context.ModuleInfoes.Remove(moduleInfo); await _context.SaveChangesAsync(); result.Msg = "OK"; result.Success = true; return result; } private bool ModuleInfoExists(int id) { return _context.ModuleInfoes.Any(e => e.ModuleID == id); } } }