mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 11:53:12 +00:00
Adds an extra safety note and an ordered procedure list to completion document templates, name search, creator and last-updated audit fields, a tenant-scoped count of open work orders that depend on a template, and a delete that unlinks Services while they keep requiring a document. Writes are gated by the create/edit/delete completion template team permissions instead of the Admin role.
67 lines
3 KiB
C#
67 lines
3 KiB
C#
using Data.SeaHavenIndustries;
|
|
using Data.SeaHavenIndustries.Enums;
|
|
using SeaHaven.DataServices.Interfaces;
|
|
|
|
namespace SeaHaven.DataServices.Interfaces
|
|
{
|
|
public interface IWorkOrderDetailDataService
|
|
{
|
|
Task<bool> ExistsAsync(
|
|
int workOrderId,
|
|
CancellationToken cancellationToken = default,
|
|
int? accountId = null);
|
|
Task<WorkOrderDetailExtendedFields?> GetExtendedFieldsAsync(int workOrderId);
|
|
Task<IReadOnlyList<Comments>> GetCommentsAsync(int workOrderId);
|
|
Task<IReadOnlyList<WorkOrderAuditLog>> GetAuditLogsAsync(int workOrderId, int? limit = null);
|
|
Task<IReadOnlyList<WorkOrderAttachments>> GetAttachmentsAsync(
|
|
int workOrderId,
|
|
CancellationToken cancellationToken = default);
|
|
Task<IReadOnlyList<DispatchSignoffRow>> GetDispatchSignoffsAsync(int workOrderId);
|
|
Task<WorkOrder?> GetWorkOrderForMediaAsync(
|
|
int workOrderId,
|
|
CancellationToken cancellationToken = default,
|
|
int? accountId = null);
|
|
}
|
|
|
|
public interface ICompletionDocTemplateDataService
|
|
{
|
|
Task<CompletionDocTemplateRow?> ResolveForWorkOrderAsync(string? trade, WorkOrderType? workOrderType);
|
|
|
|
Task<IReadOnlyList<CompletionDocTemplateDetailRow>> ListAsync(
|
|
string? search,
|
|
string? serviceKey,
|
|
WorkOrderType? workOrderType,
|
|
CancellationToken cancellationToken);
|
|
|
|
Task<CompletionDocTemplateDetailRow?> GetDetailAsync(int id, CancellationToken cancellationToken);
|
|
|
|
/// <summary>Tracked, not-deleted template with its procedures loaded, for editing.</summary>
|
|
Task<CompletionDocTemplate?> GetTrackedForEditAsync(int id, CancellationToken cancellationToken);
|
|
|
|
Task<int> CreateAsync(CompletionDocTemplate template, CancellationToken cancellationToken);
|
|
|
|
/// <summary>
|
|
/// Commits edits to a template from <see cref="GetTrackedForEditAsync"/>. A non-null
|
|
/// <paramref name="replacementProcedures"/> replaces the whole procedure list.
|
|
/// </summary>
|
|
Task SaveEditAsync(
|
|
CompletionDocTemplate template,
|
|
IReadOnlyList<CompletionDocTemplateProcedure>? replacementProcedures,
|
|
CancellationToken cancellationToken);
|
|
|
|
/// <summary>
|
|
/// Soft-deletes the template and clears every Service link to it in the same commit.
|
|
/// Services keep RequiresCompletionDocument. False when the template does not exist.
|
|
/// </summary>
|
|
Task<bool> DeleteAndUnlinkServicesAsync(int id, string? deleterUserId, CancellationToken cancellationToken);
|
|
|
|
/// <summary>
|
|
/// Ids of open (non-terminal) work orders whose Service links this template,
|
|
/// restricted to <paramref name="accountId"/> when set.
|
|
/// </summary>
|
|
Task<IReadOnlyList<int>> GetOpenLinkedWorkOrderIdsAsync(
|
|
int templateId,
|
|
int? accountId,
|
|
CancellationToken cancellationToken);
|
|
}
|
|
}
|