API ลบรายการเฉพาะสิทธิ์ OWNER #1586
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 2m5s
Build & Deploy Placement Service / build (push) Successful in 1m43s
Build & Deploy Retirement Service / build (push) Successful in 1m47s

This commit is contained in:
harid 2026-05-28 14:53:32 +07:00
parent 3f98e07419
commit dc5ac329e2
7 changed files with 268 additions and 2 deletions

View file

@ -932,6 +932,60 @@ namespace BMA.EHR.Placement.Service.Controllers
return Success();
}
/// <summary>
/// API ลบรายการคำขอโอน (ADMIN)
/// </summary>
/// <param name="id">Id คำขอโอน</param>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpDelete("admin/{id:length(36)}")]
public async Task<ActionResult<ResponseObject>> DeleteForAdminAsync(Guid id)
{
var jsonData = await _permission.GetPermissionWithActingAPIAsync("DELETE", "SYS_TRANSFER_REQ");
if (jsonData!.status != 200)
{
return Error(jsonData.message, StatusCodes.Status403Forbidden);
}
// ตรวจสอบว่า role ต้องเป็น OWNER เท่านั้น
if (jsonData.result.privilege != "OWNER")
{
return Error("ไม่มีสิทธิ์ในการลบรายการคำขอโอน", StatusCodes.Status403Forbidden);
}
var deleted = await _context.PlacementTransfers.AsQueryable()
.Include(x => x.PlacementTransferDocs)
.ThenInclude(x => x.Document)
.FirstOrDefaultAsync(x => x.Id == id);
if (deleted == null)
return NotFound();
// ห้ามลบเฉพาะสถานะ REPORT, WAITING, DONE
if (new[] { "REPORT", "WAITING", "DONE" }.Contains(deleted.Status))
{
return Error("ไม่สามารถลบรายการคำขอโอนสถานะนี้ได้");
}
var placementTransferDocs = new List<dynamic>();
foreach (var doc in deleted.PlacementTransferDocs)
{
if (doc.Document != null)
placementTransferDocs.Add(doc.Document.Id);
}
_context.PlacementTransferDocs.RemoveRange(deleted.PlacementTransferDocs);
await _context.SaveChangesAsync();
_context.PlacementTransfers.Remove(deleted);
foreach (var doc in placementTransferDocs)
{
if (doc != null)
await _documentService.DeleteFileAsync(doc);
}
await _context.SaveChangesAsync();
return Success();
}
/// <summary>
/// สั่งรายชื่อไปออกคำสั่ง
/// </summary>