using Data.SeaHavenIndustries; using Data.SeaHavenIndustries.Enums; using Microsoft.AspNetCore.Http; using SeaHaven.DataServices.Models; using SeaHaven.Services.DTOs; namespace SeaHaven.Services.Interfaces { public interface IWorkOrderService { Task GetWorkOrderByIdAsync(int id); Task GetWorkOrderByIdWithDetailsAsync(int id); Task> GetAllWorkOrdersAsync(); Task> GetWorkOrdersPagedAsync(int page, int pageSize, string? search = null, string? status = null, string? priority = null); Task CreateWorkOrderAsync(CreateWorkOrderDTO dto, string userId); Task UpdateWorkOrderAsync(int id, UpdateWorkOrderDTO dto, string userId); Task DeleteWorkOrderAsync(int id, string userId); Task WorkOrderExistsAsync(int id); Task GenerateNextInternalWONumberAsync(); Task GetTotalWorkOrderCountAsync(); Task<(IEnumerable Items, int TotalCount)> GetWorkOrderListPagedAsync( int page, int pageSize, string? search, string? status, string? assignee, int? locationId, string? sortBy, string? sortDir); Task GetWorkOrderDetailAsync(int id); Task GetFilteredWorkOrdersAsync( string[] assignto, int[]? location, string[]? priority, string[]? status, string[]? duedate, string search, string sort, string sortby, int page, int pageSize); Task GetFilteredWorkOrders2Async( string[] assignto, int[]? location, string[]? priority, string[]? status, string[]? duedate, string search, string sort, string sortby, int page, int pageSize); Task ChangeStatusAsync(int id, string status, string userId); Task ChangeAssignmentAsync(int id, string? assignTo, string userId); Task CreateWorkOrderWithDetailsAsync(CreateWorkOrderWithDetailsInput input, string userId); Task UpdateWorkOrderWithDetailsAsync(UpdateWorkOrderWithDetailsInput input, string userId); Task DeleteWorkOrderCascadeAsync(int id, string userId); Task AddCommentAsync(AddCommentInput input, string userId); Task AddCommentJsonAsync(AddCommentInput input, string userId); Task> GetCommentsAsync(); Task> GetCommentsByWorkorderIdAsync(int woid); Task> GetWorkordersDDAsync(); Task> GetWorkordersAsync(); } }