using PostFundManagement.Application.Services.Projects; using PostFundManagement.Domain; using PostFundManagement.Domain.Attributes; using PostFundManagement.Domain.Models; namespace PostFundManagement.Application.Abstractions.Services; public interface IProjectService { [Log] [Audit] Task UpdateProjectStatusAsync(UpdateProjectStatusRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetProjectsAsync(Pagination pagination, CancellationToken cancellationToken = default); [Log] Task> GetProjectAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetActivitiesAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateProjectAsync(CreateProjectRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateActivityAsync(CreateActivityRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetProjectMilestonesAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetProjectIndicatorsAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetMilestoneAsync(string milestoneIdHash, CancellationToken cancellationToken = default); [Log] Task> GetMilestonesAsync(Pagination pagination, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateMilestoneAsync(UpdateMilestoneRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateProjectAsync(UpdateProjectRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetActivityAsync(string activityIdHash, CancellationToken cancellationToken = default); [Log] Task> GetProjectRisksAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateProgrammeAsync(CreateProgrammeRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateProgrammeAsync(UpdateProgrammeRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetProgrammeAsync(string programmeIdHash, CancellationToken cancellationToken = default); [Log] Task> GetProgrammesAsync(Pagination pagination, CancellationToken cancellationToken = default); [Log] Task> GetProgrammeProjectsAsync(string programmeIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateChangeRequestAsync(CreateChangeRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateChangeRequestAsync(UpdateChangeRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetChangeRequestsAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetChangeRequestAsync(string changeRequestIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateComplianceItemAsync(CreateComplianceItemRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateComplianceItemAsync(UpdateComplianceItemRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetComplianceItemsAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetComplianceItemAsync(string complianceItemIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateBeneficiaryAsync(CreateBeneficiaryRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateBeneficiaryItemAsync(UpdateBeneficiaryRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetBeneficiariesAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetBeneficiaryAsync(string beneficiaryIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateIssueAsync(CreateIssueRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateIssueAsync(UpdateIssueRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetIssuesAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetIssueAsync(string issueIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateOutcomeAsync(CreateOutcomeRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateOutcomeAsync(UpdateOutcomeRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetOutcomesAsync(string beneficiaryIdHash, CancellationToken cancellationToken = default); [Log] Task> GetOutcomeAsync(string outcomeIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateSiteVisitAsync(CreateSiteVisitRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateSiteVisitAsync(UpdateSiteVisitRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetSiteVisitsAsync(string projectIdHash, CancellationToken cancellationToken = default); [Log] Task> GetSiteVisitAsync(string siteVisitIdHash, CancellationToken cancellationToken = default); }