using PostFundManagement.Application.Services.Grants; using PostFundManagement.Domain; using PostFundManagement.Domain.Attributes; using PostFundManagement.Domain.Models; namespace PostFundManagement.Application.Abstractions.Services; public interface IGrantsService { [Log] [Audit] Task UpdateBudgetAsync(UpdateBudgetRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetContractsAsync(Pagination pagination, CancellationToken cancellationToken = default); [Log] Task> GetContractAsync(string contractIdHash, CancellationToken cancellationToken = default); [Log] Task> GetBudgetsAsync(Pagination pagination, CancellationToken cancellationToken = default); [Log] Task> GetBudgetAsync(string budgetIdHash, CancellationToken cancellationToken = default); [Log] Task> GetAwardsAsync(Pagination pagination, CancellationToken cancellationToken = default); [Log] Task> GetAwardAsync(string awardIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task ExecuteContractAsync(ExecuteContractRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateContractAsync(CreateContractRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateBudgetAsync(CreateBudgetRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateAwardAsync(CreateAwardRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateAwardAsync(UpdateAwardRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task> GetContractUrlAsync(string contractIdHash, CancellationToken cancellationToken = default); [Log] [Audit] Task UploadContractAsync(string contractIdHash, Guid userId, IFormFile file, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateContractAsync(UpdateContractRequest request, CancellationToken cancellationToken = default); }