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.WebApi.DTO.AMES; using AMESCoreStudio.CommonTools.Result; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// <summary> /// 工單上傳圖檔資料表 /// </summary> [Route("api/[controller]")] [ApiController] public class WipInfoBlobController : ControllerBase { private readonly AMESContext _context; public WipInfoBlobController(AMESContext context) { _context = context; } // GET: api/WipInfoBlob [HttpGet] public async Task<ActionResult<IEnumerable<WipInfoBlob>>> GetWipInfoBlobs() { return await _context.WipInfoBlobs.ToListAsync(); } // GET: api/WipInfoBlob/5 [HttpGet("{id}")] public async Task<ActionResult<IEnumerable<WipInfoBlob>>> GetWipInfoBlob(int id) { var wipInfoBlob = await _context.WipInfoBlobs.Where(w => w.WipBlobID == id).ToListAsync(); return wipInfoBlob; } /// <summary> /// 工單上傳圖檔資料表 By 工單號碼 /// </summary> /// <param name="id">工單號碼</param> /// <returns></returns> [HttpGet("ByWipNo/{id}")] public async Task<ActionResult<IEnumerable<WipInfoBlob>>> GetWipInfoBlobByWipNo(string id) { var wipInfoBlob = await _context.WipInfoBlobs.Where(w => w.WipNo == id).ToListAsync(); return wipInfoBlob; } /// <summary> /// 更新工單上傳圖檔資料表 /// </summary> /// <param name="wipInfoBlob"></param> /// <returns></returns> [HttpPut("{id}")] public async Task<ResultModel<WipInfoBlob>> PutWipInfoBlob(WipInfoBlob wipInfoBlob) { ResultModel<WipInfoBlob> result = new ResultModel<WipInfoBlob>(); _context.Entry(wipInfoBlob).State = EntityState.Modified; //設置容器空間某一個模型的某一個欄位 不提交到資料庫 //DbContent.Entry是要更新到資料庫的整個對象 _context.Entry<WipInfoBlob>(wipInfoBlob).Property("CreateDate").IsModified = false; _context.Entry<WipInfoBlob>(wipInfoBlob).Property("CreateUserID").IsModified = false; wipInfoBlob.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="wipInfoBlob"></param> /// <returns></returns> [HttpPost] public async Task<ResultModel<WipInfoBlob>> PostWipInfoBlob(WipInfoBlob wipInfoBlob) { ResultModel<WipInfoBlob> result = new ResultModel<WipInfoBlob>(); Helper helper = new Helper(_context); wipInfoBlob.WipBlobID = helper.GetIDKey("WIP_BLOB_ID").Result; try { _context.WipInfoBlobs.Add(wipInfoBlob); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } // DELETE: api/WipInfoBlob/5 [HttpDelete("{id}")] public async Task<ActionResult<WipInfoBlob>> DeleteWipInfoBlob(int id) { var wipInfoBlob = await _context.WipInfoBlobs.FindAsync(id); if (wipInfoBlob == null) { return NotFound(); } _context.WipInfoBlobs.Remove(wipInfoBlob); await _context.SaveChangesAsync(); return wipInfoBlob; } /// <summary> /// 刪除工單上傳檔案 /// </summary> /// <param name="wipNo">工單號碼</param> /// <param name="fileName">檔案名稱</param> /// <returns></returns> [HttpDelete("ByFileName")] public async Task<ResultModel<WipInfoBlob>> DeleteWipInfoBlobByFileName(string wipNo, string fileName) { ResultModel<WipInfoBlob> result = new ResultModel<WipInfoBlob>(); if (string.IsNullOrWhiteSpace(wipNo) || string.IsNullOrWhiteSpace(fileName)) { result.Success = false; result.Msg = "請輸入要刪除的資料"; } else { var wipInfoBlob = await _context.WipInfoBlobs.Where(w => w.WipNo.Trim().ToUpper() == wipNo.Trim().ToUpper() && w.ImageName.Trim().ToUpper() == fileName.Trim().ToUpper()).ToListAsync(); if (wipInfoBlob.Count() != 0) { try { _context.WipInfoBlobs.Remove(wipInfoBlob.FirstOrDefault()); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } } } return result; } private bool WipInfoBlobExists(int id) { return _context.WipInfoBlobs.Any(e => e.WipBlobID == id); } } }