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; using AMESCoreStudio.WebApi.Enum; namespace AMESCoreStudio.WebApi.Controllers.AMES { /// <summary> /// FQC報表自動派送維護 /// </summary> [Route("api/[controller]")] [ApiController] public class FqcNoticeMailController : ControllerBase { private readonly AMESContext _context; /// <summary> /// 建構式 /// </summary> /// <param name="context"></param> public FqcNoticeMailController(AMESContext context) { _context = context; } // GET: api/FqcNoticeMail [HttpGet] public async Task<ActionResult<IEnumerable<FqcNoticeMail>>> GetFqcNoticeMails() { return await _context.FqcNoticeMails.ToListAsync(); } // GET: api/FqcNoticeMail/5 [HttpGet("{id}")] public async Task<FqcNoticeMail> GetFqcNoticeMailBy(int id) { IQueryable<FqcNoticeMail> q = _context.FqcNoticeMails.Where(w => w.FqcNoticeMailID == id); var result = await q.FirstOrDefaultAsync(); return result; } /// <summary> /// FQC報表自動派送維護 by Table /// </summary> /// <param name="material">料號</param> /// <param name="fqcResult">檢驗結果</param> /// <param name="status">狀態</param> /// <param name="page">頁數</param> /// <param name="limit">筆數</param> /// <returns></returns> [HttpGet("Query")] public async Task<ResultModel<FqcNoticeMailDto>> GetFqcNoticeMailQuery(string material, string fqcResult, string status , int page = 0, int limit = 10) { var q = from q1 in _context.FqcNoticeMails join q2 in _context.MaterialItems on q1.MaterialID equals q2.ItemID join q3 in _context.MailGroups on q1.MailGroupID equals q3.GroupID select new FqcNoticeMailDto { FqcNoticeMailID = q1.FqcNoticeMailID, MaterialID = q2.ItemID, Material = q2.ItemNo, MailGroupID = q3.GroupID, MailGroup = q3.GroupNo, FqcResult = q1.FqcResult, Status = q1.Status, Remark = q1.Remark }; if (!string.IsNullOrWhiteSpace(material)) q = q.Where(w => w.Material.ToUpper().Contains(material.ToUpper())); if (!string.IsNullOrWhiteSpace(fqcResult)) q = q.Where(w => w.FqcResult == fqcResult); if (!string.IsNullOrWhiteSpace(status)) q = q.Where(w => w.Status == status); ResultModel<FqcNoticeMailDto> result = new ResultModel<FqcNoticeMailDto>(); // Table 頁數 if (page > 0) { q = q.Skip((page - 1) * limit).Take(limit); } result.Data = await q.Distinct().ToListAsync(); result.Data = result.Data.Select(s => { s.FqcResult = s.FqcResult == "P" ? "允收" : "拒收"; s.Status = s.Status == "Y" ? "啟用" : "停用"; return s; }).ToList(); // 紀錄筆數 result.DataTotal = q.Count(); return result; } /// <summary> /// 更新FQC 報表自動派送維護 /// </summary> /// <param name="fqcNoticeMail"></param> /// <returns></returns> [HttpPut] public async Task<ResultModel<FqcNoticeMail>> PutFqcInhouseMaster(FqcNoticeMail fqcNoticeMail) { ResultModel<FqcNoticeMail> result = new ResultModel<FqcNoticeMail>(); _context.Entry(fqcNoticeMail).State = EntityState.Modified; _context.Entry<FqcNoticeMail>(fqcNoticeMail).Property("CreateDate").IsModified = false; _context.Entry<FqcNoticeMail>(fqcNoticeMail).Property("CreateUserID").IsModified = false; fqcNoticeMail.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> /// 新增FQC 報表自動派送維護 /// </summary> /// <param name="fqcNoticeMail"></param> /// <returns></returns> [HttpPost] public async Task<ResultModel<FqcNoticeMail>> PostFqcResultMaster(FqcNoticeMail fqcNoticeMail) { ResultModel<FqcNoticeMail> result = new ResultModel<FqcNoticeMail>(); Helper helper = new Helper(_context); fqcNoticeMail.FqcNoticeMailID = helper.GetIDKey("FQC_NOTICE_MAIL_ID").Result; _context.FqcNoticeMails.Add(fqcNoticeMail); try { await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } /// <summary> /// 刪除FQC 報表自動派送維護 /// </summary> /// <param name="id">ID</param> /// <returns></returns> [HttpDelete("{id}")] public async Task<ResultModel<string>> DeleteFqcNoticeMail(int id) { ResultModel<string> result = new ResultModel<string>(); var fqcNoticeMail = await _context.FqcNoticeMails.FindAsync(id); try { if (fqcNoticeMail == null) { result.Success = false; result.Msg = "找不到要刪除資料"; } else { _context.FqcNoticeMails.Remove(fqcNoticeMail); await _context.SaveChangesAsync(); result.Success = true; result.Msg = "OK"; } } catch (Exception ex) { result.Success = false; result.Msg = ex.InnerException.Message; } return result; } private bool FqcNoticeMailExists(decimal id) { return _context.FqcNoticeMails.Any(e => e.FqcNoticeMailID == id); } } }