using PostFundManagement.Domain; namespace PostFundManagement.Application.Services.Projects; public sealed record UpdateSiteVisitRequest([Required] long SiteVisitId, [Required][MaxLength(LabelLength)] string InspectorName, [Required][MaxLength(TextLength)] string Findings, [Required] ApprovalStatus Status, [Required] DateTime VisitedAt); public sealed record CreateSiteVisitRequest([Required] long ProjectId, [Required][MaxLength(LabelLength)] string InspectorName, [Required][MaxLength(TextLength)] string Findings, [Required] DateTime VisitedAt); public sealed record UpdateOutcomeRequest([Required] long OutcomeId, [Required][MaxLength(LabelLength)] string Name, [Required][MaxLength(TextLength)] string Description, [Required] ComplianceStatus Status = ComplianceStatus.NotMet); public sealed record CreateOutcomeRequest([Required] long BeneficiaryId, [Required][MaxLength(LabelLength)] string Name, [Required][MaxLength(TextLength)] string Description, ComplianceStatus Status = ComplianceStatus.NotMet); public sealed record UpdateIssueRequest([Required] long IssueId, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Description, [Required][MaxLength(TextLength)] string Resolution, [Required] DateTime? ResolvedAt, [Required] Priority Priority, [Required] ActivityStatus Status, [Required] Guid AssignedTo); public sealed record CreateIssueRequest([Required] long ProjectId, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Description, [Required] Priority Priority, [Required] Guid AssignedTo); public sealed record UpdateBeneficiaryRequest([Required] long BeneficiaryId, [Required][MaxLength(LabelLength)] string Name, [Required][MaxLength(LabelLength)] string Category, [Required][MaxLength(LabelLength)] string Location, [Required] int TargetCount, [Required] int ReachedCount); public sealed record CreateBeneficiaryRequest([Required] long ProjectId, [Required][MaxLength(LabelLength)] string Name, [Required][MaxLength(LabelLength)] string Category, [Required][MaxLength(LabelLength)] string Location, [Required] int TargetCount, [Required] int ReachedCount); public sealed record UpdateComplianceItemRequest([Required] long ComplianceItemId, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Requirements, [Required] ComplianceStatus Status, long? BeneficiaryId = null); public sealed record CreateComplianceItemRequest([Required] long ProjectId, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Requirements, ComplianceStatus Status = ComplianceStatus.NotMet, long? BeneficiaryId = null); public sealed record UpdateChangeRequest([Required] long ChangeRequestId, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Justification, [Required] decimal RevisedBudget, [Required] ApprovalStatus Status); public sealed record CreateChangeRequest([Required] long ProjectId, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Justification, [Required] decimal RevisedBudget, [Required] DateTime RevisionDate); public sealed record UpdateProgrammeRequest([Required] long ProgrammeId, [Required][MaxLength(LabelLength)] string Name, [Required] Guid OwnerId, [Required] ApprovalStatus Status); public sealed record CreateProgrammeRequest(long PortfolioId, string Name, Guid OwnerId); public sealed record UpdateProjectRequest([Required] long ProjectId, [Required][MaxLength(LabelLength)] string Name, [Required][MaxLength(TextLength)] string Description, DateTime? StartedAt, DateTime? EndedAt, [Required] IndustrySector Sector, [Required] ProjectType ProjectType); public sealed record UpdateMilestoneRequest([Required] long MilestoneId, [Required] DateTime DueAt, [Required][MaxLength(LabelLength)] string Name, [Required] Priority Priority, [Required] ApprovalStatus Status); public sealed record UpdateProjectStatusRequest([Required] long ProjectId, [Required] ApprovalStatus Status); public sealed record CreateProjectRequest([Required] long ProgrammeId, [Required][MaxLength(LabelLength)] string Name, [Required][MaxLength(TextLength)] string Description, [Required] IndustrySector Sector, [Required] ProjectType ProjectType); public sealed record CreateActivityRequest([Required] long ProjectId, [Required] long? MilestoneId, [Required][MaxLength(LabelLength)] string Category, [Required] decimal Amount, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Description, DateTime? PerformedAt); public sealed record UpdateActivityRequest([Required] long ActivityId, [Required] long ProjectId, long? MilestoneId, [Required][MaxLength(LabelLength)] string Category, [Required] decimal Amount, [Required][MaxLength(LabelLength)] string Title, [Required][MaxLength(TextLength)] string Description, DateTime? PerformedAt);