2026-07-24 17:35:34 -03:00
|
|
|
using Data.SeaHavenIndustries;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
2026-08-11 14:52:02 -03:00
|
|
|
using SeaHaven.DataServices.Helpers;
|
2026-07-24 17:35:34 -03:00
|
|
|
using SeaHaven.DataServices.Interfaces;
|
|
|
|
|
|
|
|
|
|
namespace SeaHaven.DataServices.Implementation
|
|
|
|
|
{
|
|
|
|
|
public class WorkOrderCompletionDataService : IWorkOrderCompletionDataService
|
|
|
|
|
{
|
|
|
|
|
private readonly ApplicationDbContext _context;
|
|
|
|
|
|
|
|
|
|
public WorkOrderCompletionDataService(ApplicationDbContext context)
|
|
|
|
|
{
|
|
|
|
|
_context = context;
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-11 14:52:02 -03:00
|
|
|
public Task<WorkOrder?> GetWorkOrderForCompletionAuthAsync(
|
|
|
|
|
int workOrderId,
|
|
|
|
|
int? accountId,
|
|
|
|
|
CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
var query = WorkOrderBoardQueryFilters.ApplyBaseScope(_context.workOrders.AsNoTracking());
|
|
|
|
|
if (accountId.HasValue)
|
|
|
|
|
query = WorkOrderBoardQueryFilters.ApplyAccountScope(query, accountId.Value);
|
|
|
|
|
|
|
|
|
|
return query.FirstOrDefaultAsync(w => w.Id == workOrderId, cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Task<WorkOrder?> GetTrackedWorkOrderAsync(
|
|
|
|
|
int workOrderId,
|
|
|
|
|
int? accountId,
|
|
|
|
|
CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
var query = WorkOrderBoardQueryFilters.ApplyBaseScope(_context.workOrders);
|
|
|
|
|
if (accountId.HasValue)
|
|
|
|
|
query = WorkOrderBoardQueryFilters.ApplyAccountScope(query, accountId.Value);
|
|
|
|
|
|
|
|
|
|
return query.FirstOrDefaultAsync(w => w.Id == workOrderId, cancellationToken);
|
|
|
|
|
}
|
2026-07-24 17:35:34 -03:00
|
|
|
|
|
|
|
|
public void SetExpectedWorkOrderVersion(WorkOrder workOrder, byte[] version)
|
|
|
|
|
=> _context.Entry(workOrder).Property(w => w.RowVersion).OriginalValue = version;
|
|
|
|
|
|
|
|
|
|
public Task SaveAsync(CancellationToken cancellationToken)
|
|
|
|
|
=> _context.SaveChangesAsync(cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
}
|