mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 09:33:13 +00:00
SH-44 and SH-82 both left "blocks, or requires explicit confirmation" to be decided with the team, and the implementation took the blocking branch. SH-254 settles it the other way: the approved design offers "Deactivate anyway" beside the list of open work orders. Deactivation with open work orders is now permitted, but only when the caller says it has shown them: ConfirmOpenWorkOrders on the update DTO and a confirmOpenWorkOrders query parameter on the delete route. Absent the flag the existing guard still throws, so nothing deactivates by accident and no caller loses the check by omission. confirmOpenWorkOrders is a required parameter on DeleteVendorAsync rather than an optional one, so every call site states its intent.
44 lines
2.3 KiB
C#
44 lines
2.3 KiB
C#
using SeaHaven.Services.DTOs;
|
|
|
|
namespace SeaHaven.Services.Interfaces
|
|
{
|
|
public interface IVendorService
|
|
{
|
|
Task<VendorDTO?> GetVendorByIdAsync(int id);
|
|
Task<VendorDTO?> GetVendorByIdWithDetailsAsync(int id);
|
|
Task<IEnumerable<VendorDTO>> GetAllVendorsAsync();
|
|
Task<PagedResult<VendorDTO>> GetVendorsPagedAsync(
|
|
int page,
|
|
int pageSize,
|
|
string? search = null,
|
|
bool? isActive = true,
|
|
IReadOnlyCollection<string>? companies = null,
|
|
IReadOnlyCollection<string>? trades = null,
|
|
IReadOnlyCollection<string>? locations = null,
|
|
IReadOnlyCollection<string>? jobBuckets = null);
|
|
|
|
// SH-198 vendor directory: per-technician rows UNION company-only rows.
|
|
Task<PagedResult<VendorDirectoryItemDTO>> GetVendorDirectoryPagedAsync(
|
|
int page,
|
|
int pageSize,
|
|
string? search = null,
|
|
bool? isActive = true,
|
|
IReadOnlyCollection<string>? companies = null,
|
|
IReadOnlyCollection<string>? trades = null,
|
|
IReadOnlyCollection<string>? locations = null,
|
|
IReadOnlyCollection<string>? jobBuckets = null,
|
|
CancellationToken cancellationToken = default);
|
|
Task<VendorDTO> CreateVendorAsync(CreateVendorDTO dto, string userId);
|
|
Task<VendorDTO> UpdateVendorAsync(int id, UpdateVendorDTO dto, string userId);
|
|
Task DeleteVendorAsync(int id, string userId, bool confirmOpenWorkOrders);
|
|
Task<bool> VendorExistsAsync(int id);
|
|
Task<int> GetTotalVendorCountAsync();
|
|
Task<VendorDeactivationImpactDTO> GetDeactivationImpactAsync(int vendorId);
|
|
Task<VendorDTO> UpdateVendorFromWorkOrderAsync(int vendorId, WorkOrderVendorUpdateDTO dto, string userId);
|
|
Task<IEnumerable<VendorDropdownItemDTO>> GetDropdownAsync(string? trade, string? siteZip, CancellationToken cancellationToken);
|
|
Task<VendorFacetsDTO> GetFacetsAsync(bool? isActive, CancellationToken cancellationToken);
|
|
Task<VendorPortalTokenDTO?> GetPortalTokenAsync(int vendorId, CancellationToken cancellationToken);
|
|
Task<VendorPortalTokenDTO?> RotatePortalTokenAsync(int vendorId, CancellationToken cancellationToken);
|
|
Task<bool> RevokePortalTokenAsync(int vendorId, CancellationToken cancellationToken);
|
|
}
|
|
}
|