mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 08:23:12 +00:00
38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
|
|
using Data.SeaHavenIndustries;
|
||
|
|
using Microsoft.EntityFrameworkCore;
|
||
|
|
using SeaHaven.Services.Interfaces;
|
||
|
|
|
||
|
|
namespace SeaHaven.Services.Implementation
|
||
|
|
{
|
||
|
|
public class WorkOrderFieldLockService : IWorkOrderFieldLockService
|
||
|
|
{
|
||
|
|
private readonly ApplicationDbContext _context;
|
||
|
|
|
||
|
|
public WorkOrderFieldLockService(ApplicationDbContext context)
|
||
|
|
{
|
||
|
|
_context = context;
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<bool> IsLockedAsync(int workOrderId, string fieldName)
|
||
|
|
{
|
||
|
|
return await _context.WorkOrderFieldLocks
|
||
|
|
.AnyAsync(l => l.WorkOrderId == workOrderId && l.FieldName == fieldName);
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task LockFieldAsync(int workOrderId, string fieldName, string? userId)
|
||
|
|
{
|
||
|
|
var exists = await IsLockedAsync(workOrderId, fieldName);
|
||
|
|
if (exists) return;
|
||
|
|
|
||
|
|
_context.WorkOrderFieldLocks.Add(new WorkOrderFieldLock
|
||
|
|
{
|
||
|
|
WorkOrderId = workOrderId,
|
||
|
|
FieldName = fieldName,
|
||
|
|
LockedAt = DateTime.UtcNow,
|
||
|
|
LockedByUserId = userId
|
||
|
|
});
|
||
|
|
await _context.SaveChangesAsync();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|