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
{
///
/// 錫膏規格流水碼表
///
[Route("api/[controller]")]
[ApiController]
public class SolderPasteSerialController : ControllerBase
{
private readonly AMESContext _context;
public SolderPasteSerialController(AMESContext context)
{
_context = context;
}
[HttpGet]
public async Task>> GetSolderPasteSerials()
{
return await _context.SolderPasteSerials.ToListAsync();
}
[HttpGet("{id}")]
public async Task> GetSolderPasteSerial(string id)
{
var solderPasteSerial = await _context.SolderPasteSerials.FindAsync(id);
return solderPasteSerial;
}
///
/// 自動取得編號
///
/// 規格
///
[HttpGet("AutoSerialNo/{id}")]
public async Task> GetSolderPasteSerialByAutoSerialNo(string id)
{
var item = await _context.SolderPasteSerials
.Where(w => w.Description.ToUpper() == id.Trim().ToUpper()).FirstOrDefaultAsync();
if (item == null)
return "";
else
{
var SerialNo = string.Empty;
var Infos = _context.SolderPasteInfos.Where(w => w.SolderPasteNo.StartsWith(item.SerialNo)).Select(s => s.SolderPasteNo).Max();
if (!string.IsNullOrWhiteSpace(Infos))
{
SerialNo = $"{item.SerialNo}{(int.Parse(Infos.Substring(2, 5)) + 1).ToString().PadLeft(5, '0')}";
}
else
{
// 根據規格對應的代碼(2碼)+流水碼(5碼)
SerialNo = $"{item.SerialNo}{(item.SerialNumber + 1).ToString().PadLeft(5, '0')}";
}
return SerialNo;
}
}
///
/// 更新錫膏規格流水碼表
///
///
///
[HttpPut]
public async Task> PutSolderPasteSerial(SolderPasteSerial solderPasteSerial)
{
ResultModel result = new ResultModel();
_context.Entry(solderPasteSerial).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;
}
///
/// 更新錫膏規格流水碼表
///
/// 規格
///
[HttpPut("AutoMatically/{id}")]
public async Task> PutSolderPasteSerialAutoMatically(string id)
{
ResultModel result = new ResultModel();
// 流水碼加1
string updateSql = @" UPDATE JHAMES.SOLDER_PASTE_SERIAL SET SERIAL_NUMBER = SERIAL_NUMBER + 1 ,
WHERE DESCRIPTION = :Description";
try
{
// 執行原生 SQL
_context.Database.ExecuteSqlRaw(updateSql);
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
///
/// 新增錫膏規格流水碼表
///
///
///
[HttpPost]
public async Task> PostSolderPasteSerial(SolderPasteSerial solderPasteSerial)
{
ResultModel result = new ResultModel();
_context.SolderPasteSerials.Add(solderPasteSerial);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
return result;
}
// DELETE: api/SolderPasteSerial/5
[HttpDelete("{id}")]
public async Task> DeleteSolderPasteSerial(string id)
{
var solderPasteSerial = await _context.SolderPasteSerials.FindAsync(id);
if (solderPasteSerial == null)
{
return NotFound();
}
_context.SolderPasteSerials.Remove(solderPasteSerial);
await _context.SaveChangesAsync();
return solderPasteSerial;
}
private bool SolderPasteSerialExists(string id)
{
return _context.SolderPasteSerials.Any(e => e.SerialNo == id);
}
}
}