diff --git a/PostFundManagement.Domain/Configuration/AuditLog.cs b/PostFundManagement.Domain/Configuration/AuditLog.cs index bc19c51..c0bd320 100644 --- a/PostFundManagement.Domain/Configuration/AuditLog.cs +++ b/PostFundManagement.Domain/Configuration/AuditLog.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class AuditLog : IEntityTypeConfiguration @@ -7,9 +9,9 @@ public sealed class AuditLog : IEntityTypeConfiguration builder.ToTable(nameof(Entities.AuditLog).Pluralize()); builder.HasKey(pk => pk.Id); - builder.Property(f => f.EntityName).IsRequired().HasMaxLength(128); + builder.Property(f => f.EntityName).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.EntityId).IsRequired(); - builder.Property(f => f.Action).IsRequired().HasMaxLength(64); + builder.Property(f => f.Action).IsRequired().HasMaxLength(ShortLabelLength); builder.Property(f => f.Changes).IsRequired(false).HasColumnType("jsonb"); builder.Property(f => f.PerformedBy).IsRequired(); builder.Property(f => f.Timestamp).IsRequired().HasDefaultValueSql("now()"); diff --git a/PostFundManagement.Domain/Configuration/Beneficiary.cs b/PostFundManagement.Domain/Configuration/Beneficiary.cs index f4da593..7763db5 100644 --- a/PostFundManagement.Domain/Configuration/Beneficiary.cs +++ b/PostFundManagement.Domain/Configuration/Beneficiary.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Beneficiary : IEntityTypeConfiguration @@ -11,8 +13,8 @@ public sealed class Beneficiary : IEntityTypeConfiguration builder.Property(f => f.CreatedBy).IsRequired(); builder.Property(f => f.UserId).IsRequired(); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); - builder.Property(f => f.Category).IsRequired().HasMaxLength(50); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Category).IsRequired().HasMaxLength(ShortLabelLength); builder.Property(f => f.TargetCount).IsRequired(); builder.Property(f => f.ReachedCount).IsRequired(); builder.Property(f => f.Location).IsRequired(); diff --git a/PostFundManagement.Domain/Configuration/Budget.cs b/PostFundManagement.Domain/Configuration/Budget.cs index 8600b9d..dd8606f 100644 --- a/PostFundManagement.Domain/Configuration/Budget.cs +++ b/PostFundManagement.Domain/Configuration/Budget.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Budget : IEntityTypeConfiguration @@ -12,7 +14,7 @@ public sealed class Budget : IEntityTypeConfiguration builder.Property(f => f.ApprovedBy).IsRequired(false); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.UpdatedAt).IsRequired(false); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.Amount).IsRequired().HasPrecision(18, 2); builder.HasOne(f => f.Project) diff --git a/PostFundManagement.Domain/Configuration/ChangeRequest.cs b/PostFundManagement.Domain/Configuration/ChangeRequest.cs index 84e6c14..6767dac 100644 --- a/PostFundManagement.Domain/Configuration/ChangeRequest.cs +++ b/PostFundManagement.Domain/Configuration/ChangeRequest.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class ChangeRequest : IEntityTypeConfiguration @@ -12,8 +14,8 @@ public sealed class ChangeRequest : IEntityTypeConfiguration f.ApprovedBy).IsRequired(false); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.UpdatedAt).IsRequired(false); - builder.Property(f => f.Title).IsRequired().HasMaxLength(256); - builder.Property(f => f.Justification).IsRequired().HasMaxLength(1024); + builder.Property(f => f.Title).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Justification).IsRequired().HasMaxLength(TextLength); builder.Property(f => f.RevisedBudget).IsRequired(false).HasPrecision(18, 2); builder.Property(f => f.RevisedEndedAt).IsRequired(false); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); diff --git a/PostFundManagement.Domain/Configuration/ComplianceItem.cs b/PostFundManagement.Domain/Configuration/ComplianceItem.cs index 4fec8da..ca7c6da 100644 --- a/PostFundManagement.Domain/Configuration/ComplianceItem.cs +++ b/PostFundManagement.Domain/Configuration/ComplianceItem.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class ComplianceItem : IEntityTypeConfiguration @@ -12,8 +14,8 @@ public sealed class ComplianceItem : IEntityTypeConfiguration f.VerifiedBy).IsRequired(false); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.UpdatedAt).IsRequired(false); - builder.Property(f => f.Title).IsRequired().HasMaxLength(256); - builder.Property(f => f.Requirements).IsRequired().HasMaxLength(2048); + builder.Property(f => f.Title).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Requirements).IsRequired().HasMaxLength(MediumTextLength); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); builder.HasOne(f => f.Project) diff --git a/PostFundManagement.Domain/Configuration/Indicator.cs b/PostFundManagement.Domain/Configuration/Indicator.cs index 140bc75..5a0cde7 100644 --- a/PostFundManagement.Domain/Configuration/Indicator.cs +++ b/PostFundManagement.Domain/Configuration/Indicator.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Indicator : IEntityTypeConfiguration @@ -10,7 +12,7 @@ public sealed class Indicator : IEntityTypeConfiguration builder.Property(f => f.ProjectId).IsRequired(); builder.Property(f => f.CreatedBy).IsRequired(); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.UnitOfMeasure).IsRequired().HasConversion().HasDefaultValueSql("2"); builder.Property(f => f.BaselineAmount).IsRequired().HasPrecision(18, 2); builder.Property(f => f.TargetAmount).IsRequired().HasPrecision(18, 2); diff --git a/PostFundManagement.Domain/Configuration/Instrument.cs b/PostFundManagement.Domain/Configuration/Instrument.cs index 911dc8b..28618ec 100644 --- a/PostFundManagement.Domain/Configuration/Instrument.cs +++ b/PostFundManagement.Domain/Configuration/Instrument.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Instrument : IEntityTypeConfiguration @@ -7,9 +9,9 @@ public sealed class Instrument : IEntityTypeConfiguration builder.ToTable(nameof(Entities.Instrument).Pluralize()); builder.HasKey(pk => pk.Id); - builder.Property(f => f.Code).IsRequired().HasMaxLength(50); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); - builder.Property(f => f.Description).IsRequired(false).HasMaxLength(1024); + builder.Property(f => f.Code).IsRequired().HasMaxLength(ShortLabelLength); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Description).IsRequired(false).HasMaxLength(TextLength); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("2"); builder.Property(f => f.CreatedBy).IsRequired(); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); diff --git a/PostFundManagement.Domain/Configuration/Issue.cs b/PostFundManagement.Domain/Configuration/Issue.cs index 2a61024..3e42e2d 100644 --- a/PostFundManagement.Domain/Configuration/Issue.cs +++ b/PostFundManagement.Domain/Configuration/Issue.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Issue : IEntityTypeConfiguration @@ -11,8 +13,8 @@ public sealed class Issue : IEntityTypeConfiguration builder.Property(f => f.CreatedBy).IsRequired(); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.ResolvedAt).IsRequired(false); - builder.Property(f => f.Title).IsRequired().HasMaxLength(256); - builder.Property(f => f.Description).IsRequired().HasMaxLength(1024); + builder.Property(f => f.Title).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength); builder.Property(f => f.Priority).IsRequired().HasConversion().HasDefaultValueSql("1"); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); diff --git a/PostFundManagement.Domain/Configuration/Milestone.cs b/PostFundManagement.Domain/Configuration/Milestone.cs index 4f19795..5f16428 100644 --- a/PostFundManagement.Domain/Configuration/Milestone.cs +++ b/PostFundManagement.Domain/Configuration/Milestone.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Milestone : IEntityTypeConfiguration @@ -13,7 +15,7 @@ public sealed class Milestone : IEntityTypeConfiguration builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.UpdatedAt).IsRequired(false); builder.Property(f => f.DueAt).IsRequired(); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); builder.HasOne(f => f.Project) diff --git a/PostFundManagement.Domain/Configuration/Organisation.cs b/PostFundManagement.Domain/Configuration/Organisation.cs index 7d57cb7..050c24f 100644 --- a/PostFundManagement.Domain/Configuration/Organisation.cs +++ b/PostFundManagement.Domain/Configuration/Organisation.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Organisation : IEntityTypeConfiguration @@ -9,9 +11,9 @@ public sealed class Organisation : IEntityTypeConfiguration pk.Id); builder.Property(f => f.CreatedBy).IsRequired(); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); - builder.Property(f => f.RegistrationNo).IsRequired().HasMaxLength(256); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); - builder.Property(f => f.Email).IsRequired().HasMaxLength(256); + builder.Property(f => f.RegistrationNo).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Email).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.Type).IsRequired().HasConversion().HasDefaultValueSql("5"); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); diff --git a/PostFundManagement.Domain/Configuration/Outcome.cs b/PostFundManagement.Domain/Configuration/Outcome.cs index da9e17d..bd1c1a4 100644 --- a/PostFundManagement.Domain/Configuration/Outcome.cs +++ b/PostFundManagement.Domain/Configuration/Outcome.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Outcome : IEntityTypeConfiguration @@ -10,8 +12,8 @@ public sealed class Outcome : IEntityTypeConfiguration builder.Property(f => f.BeneficiaryId).IsRequired(); builder.Property(f => f.CreatedBy).IsRequired(); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); - builder.Property(f => f.Description).IsRequired().HasMaxLength(1024); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength); builder.HasOne(f => f.Beneficiary) .WithMany() diff --git a/PostFundManagement.Domain/Configuration/Portfolio.cs b/PostFundManagement.Domain/Configuration/Portfolio.cs index f6f6a19..60e5627 100644 --- a/PostFundManagement.Domain/Configuration/Portfolio.cs +++ b/PostFundManagement.Domain/Configuration/Portfolio.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Portfolio : IEntityTypeConfiguration @@ -10,8 +12,8 @@ public sealed class Portfolio : IEntityTypeConfiguration builder.Property(f => f.CreatedBy).IsRequired(); builder.Property(f => f.OwnedBy).IsRequired(); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); - builder.Property(f => f.Description).IsRequired(false).HasMaxLength(1024); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Description).IsRequired(false).HasMaxLength(TextLength); builder.HasOne(f => f.Creator) .WithMany() diff --git a/PostFundManagement.Domain/Configuration/Programme.cs b/PostFundManagement.Domain/Configuration/Programme.cs index 70049ff..8a2f211 100644 --- a/PostFundManagement.Domain/Configuration/Programme.cs +++ b/PostFundManagement.Domain/Configuration/Programme.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Programme : IEntityTypeConfiguration @@ -14,7 +16,7 @@ public sealed class Programme : IEntityTypeConfiguration builder.Property(f => f.UpdatedBy).IsRequired(false); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.UpdatedAt).IsRequired(false); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); builder.HasOne(f => f.Portfolio) diff --git a/PostFundManagement.Domain/Configuration/Project.cs b/PostFundManagement.Domain/Configuration/Project.cs index 11aed2e..3ea0a79 100644 --- a/PostFundManagement.Domain/Configuration/Project.cs +++ b/PostFundManagement.Domain/Configuration/Project.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Project : IEntityTypeConfiguration @@ -14,8 +16,8 @@ public sealed class Project : IEntityTypeConfiguration builder.Property(f => f.UpdatedAt).IsRequired(false); builder.Property(f => f.StartedAt).IsRequired(false); builder.Property(f => f.EndedAt).IsRequired(false); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); - builder.Property(f => f.Description).IsRequired().HasMaxLength(1024); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); builder.HasOne(f => f.Programme) diff --git a/PostFundManagement.Domain/Configuration/Risk.cs b/PostFundManagement.Domain/Configuration/Risk.cs index 6d82e19..9f7584d 100644 --- a/PostFundManagement.Domain/Configuration/Risk.cs +++ b/PostFundManagement.Domain/Configuration/Risk.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Risk : IEntityTypeConfiguration @@ -12,8 +14,8 @@ public sealed class Risk : IEntityTypeConfiguration builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.Likelihood).IsRequired().HasConversion().HasDefaultValueSql("3"); builder.Property(f => f.Impact).IsRequired().HasConversion().HasDefaultValueSql("1"); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); - builder.Property(f => f.Description).IsRequired().HasMaxLength(1024); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); + builder.Property(f => f.Description).IsRequired().HasMaxLength(TextLength); builder.HasOne(f => f.Project) .WithMany() diff --git a/PostFundManagement.Domain/Configuration/Rule.cs b/PostFundManagement.Domain/Configuration/Rule.cs index ad11bb5..c602ef2 100644 --- a/PostFundManagement.Domain/Configuration/Rule.cs +++ b/PostFundManagement.Domain/Configuration/Rule.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class Rule : IEntityTypeConfiguration @@ -12,7 +14,7 @@ public sealed class Rule : IEntityTypeConfiguration builder.Property(f => f.UpdatedBy).IsRequired(false); builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.UpdatedAt).IsRequired(false); - builder.Property(f => f.Name).IsRequired().HasMaxLength(256); + builder.Property(f => f.Name).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.Version).IsRequired().HasDefaultValue(1); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("2"); diff --git a/PostFundManagement.Domain/Configuration/SiteVisit.cs b/PostFundManagement.Domain/Configuration/SiteVisit.cs index 88ed258..b395ed8 100644 --- a/PostFundManagement.Domain/Configuration/SiteVisit.cs +++ b/PostFundManagement.Domain/Configuration/SiteVisit.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class SiteVisit : IEntityTypeConfiguration @@ -12,7 +14,7 @@ public sealed class SiteVisit : IEntityTypeConfiguration builder.Property(f => f.CreatedAt).IsRequired().HasDefaultValueSql("now()"); builder.Property(f => f.VisitedAt).IsRequired(); builder.Property(f => f.InspectorName).IsRequired(); - builder.Property(f => f.Findings).IsRequired(false).HasMaxLength(4096); + builder.Property(f => f.Findings).IsRequired(false).HasMaxLength(LargeTextLength); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("1"); builder.HasOne(f => f.Project) diff --git a/PostFundManagement.Domain/Configuration/User.cs b/PostFundManagement.Domain/Configuration/User.cs index 89c1a7e..0562e43 100644 --- a/PostFundManagement.Domain/Configuration/User.cs +++ b/PostFundManagement.Domain/Configuration/User.cs @@ -1,3 +1,5 @@ +using static PostFundManagement.Domain.Extensions.Constants; + namespace PostFundManagement.Domain.Configuration; public sealed class User : IEntityTypeConfiguration @@ -7,7 +9,7 @@ public sealed class User : IEntityTypeConfiguration builder.ToTable(nameof(Entities.User).Pluralize()); builder.HasKey(pk => pk.Id); - builder.Property(f => f.Email).IsRequired().HasMaxLength(256); + builder.Property(f => f.Email).IsRequired().HasMaxLength(LabelLength); builder.Property(f => f.Status).IsRequired().HasConversion().HasDefaultValueSql("2"); builder.Property(f => f.LastLoginAt).IsRequired(false); } diff --git a/PostFundManagement.Domain/Extensions/Constants.cs b/PostFundManagement.Domain/Extensions/Constants.cs new file mode 100644 index 0000000..6d7291a --- /dev/null +++ b/PostFundManagement.Domain/Extensions/Constants.cs @@ -0,0 +1,14 @@ +namespace PostFundManagement.Domain.Extensions; + +public static class Constants +{ + public const int LabelLength = 256; + + public const int ShortLabelLength = 100; + + public const int TextLength = 1024; + + public const int MediumTextLength = 2048; + + public const int LargeTextLength = 4096; +} \ No newline at end of file diff --git a/PostFundManagement.Domain/Extensions/Mappers.cs b/PostFundManagement.Domain/Extensions/Mappers.cs new file mode 100644 index 0000000..fc720d9 --- /dev/null +++ b/PostFundManagement.Domain/Extensions/Mappers.cs @@ -0,0 +1,269 @@ +using PostFundManagement.Domain.Models; + +namespace PostFundManagement.Domain.Extensions; + +public static class Mappers +{ + public static AuditLog Map(this Entities.AuditLog entity) => new() + { + Id = entity.Id, + Action = entity.Action, + Changes = entity.Changes, + EntityId = entity.EntityId, + EntityName = entity.EntityName, + PerformedBy = entity.PerformedBy, + Timestamp = entity.Timestamp + }; + + public static Award Map(this Entities.Award entity) => new() + { + Id = entity.Id, + Amount = entity.Amount, + ApprovedBy = entity.ApprovedBy, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + OrganisationId = entity.OrganisationId, + ProgrammeId = entity.ProgrammeId, + ProjectId = entity.ProjectId, + Status = entity.Status, + UpdatedAt = entity.UpdatedAt, + UpdatedBy = entity.UpdatedBy + }; + + public static Beneficiary Map(this Entities.Beneficiary entity) => new() + { + Id = entity.Id, + Category = entity.Category, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Location = entity.Location, + Name = entity.Name, + ProjectId = entity.ProjectId, + ReachedCount = entity.ReachedCount, + TargetCount = entity.TargetCount, + UserId = entity.UserId + }; + + public static Budget Map(this Entities.Budget entity) => new() + { + Id = entity.Id, + Amount = entity.Amount, + ApprovedBy = entity.ApprovedBy, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Name = entity.Name, + ProjectId = entity.ProjectId, + UpdatedAt = entity.UpdatedAt + }; + + public static ComplianceItem Map(this Entities.ComplianceItem entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + ProjectId = entity.ProjectId, + Requirements = entity.Requirements, + Status = entity.Status, + Title = entity.Title, + UpdatedAt = entity.UpdatedAt, + VerifiedBy = entity.VerifiedBy + }; + + public static Contract Map(this Entities.Contract entity) => new() + { + Id = entity.Id, + AwardId = entity.AwardId, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + EffectiveAt = entity.EffectiveAt, + ExpiresAt = entity.ExpiresAt, + ExternalSignatureId = entity.ExternalSignatureId, + SignedDocumentUrl = entity.SignedDocumentUrl, + Status = entity.Status, + TotalValue = entity.TotalValue + }; + + public static Disbursement Map(this Entities.Disbursement entity) => new() + { + Id = entity.Id, + Amount = entity.Amount, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + MilestoneId = entity.MilestoneId, + ProjectId = entity.ProjectId, + Status = entity.Status, + UpdatedAt = entity.UpdatedAt, + UpdatedBy = entity.UpdatedBy + }; + + public static Evidence Map(this Entities.Evidence entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + DocumentUrl = entity.DocumentUrl, + IndicatorId = entity.IndicatorId, + MilestoneId = entity.MilestoneId, + ProjectId = entity.ProjectId, + Status = entity.Status, + UpdatedAt = entity.UpdatedAt, + UpdatedBy = entity.UpdatedBy, + Version = entity.Version + }; + + public static Indicator Map(this Entities.Indicator entity) => new() + { + Id = entity.Id, + ActualAmount = entity.ActualAmount, + BaselineAmount = entity.BaselineAmount, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Name = entity.Name, + ProjectId = entity.ProjectId, + TargetAmount = entity.TargetAmount, + UnitOfMeasure = entity.UnitOfMeasure + }; + + public static Instrument Map(this Entities.Instrument entity) => new() + { + Id = entity.Id, + Code = entity.Code, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Description = entity.Description, + Name = entity.Name, + Status = entity.Status + }; + + public static Issue Map(this Entities.Issue entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Description = entity.Description, + Priority = entity.Priority, + ProjectId = entity.ProjectId, + ResolvedAt = entity.ResolvedAt, + Status = entity.Status, + Title = entity.Title + }; + + public static Milestone Map(this Entities.Milestone entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + DueAt = entity.DueAt, + Name = entity.Name, + ProjectId = entity.ProjectId, + Status = entity.Status, + UpdatedAt = entity.UpdatedAt, + UpdatedBy = entity.UpdatedBy + }; + + public static Organisation Map(this Entities.Organisation entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Email = entity.Email, + Name = entity.Name, + RegistrationNo = entity.RegistrationNo, + Status = entity.Status, + Type = entity.Type + }; + + public static Outcome Map(this Entities.Outcome entity) => new() + { + Id = entity.Id, + BeneficiaryId = entity.BeneficiaryId, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Description = entity.Description, + Name = entity.Name + }; + + public static Portfolio Map(this Entities.Portfolio entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Description = entity.Description, + Name = entity.Name, + OwnedBy = entity.OwnedBy + }; + + public static Programme Map(this Entities.Programme entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + InstrumentId = entity.InstrumentId, + Name = entity.Name, + OwnedBy = entity.OwnedBy, + PortfolioId = entity.PortfolioId, + Status = entity.Status, + UpdatedAt = entity.UpdatedAt, + UpdatedBy = entity.UpdatedBy + }; + + public static Project Map(this Entities.Project entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Description = entity.Description, + EndedAt = entity.EndedAt, + Name = entity.Name, + ProgrammeId = entity.ProgrammeId, + StartedAt = entity.StartedAt, + Status = entity.Status, + UpdatedAt = entity.UpdatedAt, + UpdatedBy = entity.UpdatedBy + }; + + public static Risk Map(this Entities.Risk entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Description = entity.Description, + Impact = entity.Impact, + Likelihood = entity.Likelihood, + Name = entity.Name, + ProjectId = entity.ProjectId + }; + + public static Rule Map(this Entities.Rule entity) => new() + { + Id = entity.Id, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Name = entity.Name, + ProgrammeId = entity.ProgrammeId, + Status = entity.Status, + UpdatedAt = entity.UpdatedAt, + UpdatedBy = entity.UpdatedBy, + Version = entity.Version + }; + + public static SiteVisit Map(this Entities.SiteVisit entity) => new() + { + Id = entity.Id, + ProjectId = entity.ProjectId, + CreatedAt = entity.CreatedAt, + CreatedBy = entity.CreatedBy, + Findings = entity.Findings, + InspectorName = entity.InspectorName, + Status = entity.Status, + VisitedAt = entity.VisitedAt + }; + + public static User Map(this Entities.User entity) => new() + { + Id = entity.Id, + Email = entity.Email, + LastLoginAt = entity.LastLoginAt, + Status = entity.Status + }; +} \ No newline at end of file