mirror of
https://github.com/Sea-Haven-Industries/proposal-system.git
synced 2026-09-30 14:43:13 +00:00
- Add dev-login endpoint with local JWT signing for local development - Add InternalApiKeyMiddleware with timing-safe comparison for Lambda-to-API auth - Add DevS3Service and NoOpJobPublisher for running without AWS services - Implement CurrentUserService cascading user resolution (ID → sub → email → create) - Add async ResolveAsync() to avoid synchronous DB calls in request pipeline - Add /proposals/stats endpoint for efficient server-side status counts - Guard status transitions: only allow Draft → InReview via update endpoint - Add vendor proposals, generated PDFs, and similar proposals controllers - Add ISimilarProposalService and SimilarProposalService - Add [Authorize] to AddSimilarReference endpoint
17 lines
1.1 KiB
C#
17 lines
1.1 KiB
C#
using ProposalSystem.Application.DTOs;
|
|
|
|
namespace ProposalSystem.Application.Interfaces;
|
|
|
|
public interface IProposalService
|
|
{
|
|
Task<ProposalResponse> CreateAsync(CreateProposalRequest request, CancellationToken ct = default);
|
|
Task<ProposalResponse?> GetByIdAsync(Guid id, CancellationToken ct = default);
|
|
Task<PagedResponse<ProposalListResponse>> GetAllAsync(ProposalFilterRequest filter, CancellationToken ct = default);
|
|
Task<ProposalResponse> UpdateAsync(Guid id, UpdateProposalRequest request, CancellationToken ct = default);
|
|
Task<ProposalResponse> ApproveAsync(Guid id, CancellationToken ct = default);
|
|
Task<ProposalResponse> MarkSentAsync(Guid id, CancellationToken ct = default);
|
|
Task<ProposalResponse> ReviseAsync(Guid id, CancellationToken ct = default);
|
|
Task<IReadOnlyList<ProposalResponse>> GetRevisionHistoryAsync(Guid id, CancellationToken ct = default);
|
|
Task<IReadOnlyList<AuditLogResponse>> GetAuditTrailAsync(Guid id, CancellationToken ct = default);
|
|
Task<ProposalStatsResponse> GetStatsAsync(CancellationToken ct = default);
|
|
}
|