using SeaHaven.Services.DTOs; namespace SeaHaven.Services.Interfaces { public interface IVendorService { Task GetVendorByIdAsync(int id); Task GetVendorByIdWithDetailsAsync(int id); Task> GetAllVendorsAsync(); Task> GetVendorsPagedAsync( int page, int pageSize, string? search = null, bool? isActive = true, IReadOnlyCollection? companies = null, IReadOnlyCollection? trades = null, IReadOnlyCollection? locations = null, IReadOnlyCollection? jobBuckets = null); // SH-198 legacy vendor directory contract backing GetVendorList: one row per // technician (per-technician rows UNION company-only rows), raw pagination. Task> GetVendorTechnicianDirectoryPagedAsync( int page, int pageSize, string? search = null, bool? isActive = true, IReadOnlyCollection? companies = null, IReadOnlyCollection? trades = null, IReadOnlyCollection? locations = null, IReadOnlyCollection? jobBuckets = null, CancellationToken cancellationToken = default); // SH-281 company directory backing GetVendorDirectoryList: company-grouped // rows with nested technicians and bounded page sizes. Task> GetVendorCompanyDirectoryPagedAsync( int page, int pageSize, string? search = null, bool? isActive = true, IReadOnlyCollection? companies = null, IReadOnlyCollection? trades = null, IReadOnlyCollection? locations = null, IReadOnlyCollection? jobBuckets = null, IReadOnlyCollection? areas = null, CancellationToken cancellationToken = default); Task CreateVendorAsync(CreateVendorDTO dto, string userId); Task UpdateVendorAsync(int id, UpdateVendorDTO dto, string userId); Task DeleteVendorAsync(int id, string userId, bool confirmOpenWorkOrders); Task VendorExistsAsync(int id); Task GetTotalVendorCountAsync(); Task GetDeactivationImpactAsync(int vendorId); Task UpdateVendorFromWorkOrderAsync(int vendorId, WorkOrderVendorUpdateDTO dto, string userId); Task> GetDropdownAsync(string? trade, string? siteZip, CancellationToken cancellationToken); Task GetFacetsAsync(bool? isActive, CancellationToken cancellationToken); Task GetPortalTokenAsync(int vendorId, CancellationToken cancellationToken); Task RotatePortalTokenAsync(int vendorId, CancellationToken cancellationToken); Task RevokePortalTokenAsync(int vendorId, CancellationToken cancellationToken); } }