Skip to content

Commit 2788eef

Browse files
Arne DumareyCumpsD
authored andcommitted
fix: completion of building was not registered in all cases
1 parent 521ac95 commit 2788eef

File tree

6 files changed

+422
-17
lines changed

6 files changed

+422
-17
lines changed

src/BuildingRegistry.Projections.Legacy/BuildingUnitDetail/BuildingUnitBuildingOsloIdItem.cs renamed to src/BuildingRegistry.Projections.Legacy/BuildingUnitDetail/BuildingUnitBuildingItem.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,32 @@ namespace BuildingRegistry.Projections.Legacy.BuildingUnitDetail
44
using Infrastructure;
55
using Microsoft.EntityFrameworkCore;
66
using Microsoft.EntityFrameworkCore.Metadata.Builders;
7+
using ValueObjects;
78

8-
public class BuildingUnitBuildingOsloIdItem
9+
public class BuildingUnitBuildingItem
910
{
1011
public Guid BuildingId { get; set; }
1112
public int? BuildingOsloId { get; set; }
13+
public bool? IsComplete { get; set; }
14+
public bool IsRemoved { get; set; }
15+
public BuildingStatus? BuildingRetiredStatus { get; set; }
1216
}
1317

14-
public class BuildingUnitBuildingOsloIdItemConfiguration : IEntityTypeConfiguration<BuildingUnitBuildingOsloIdItem>
18+
public class BuildingUnitBuildingOsloIdItemConfiguration : IEntityTypeConfiguration<BuildingUnitBuildingItem>
1519
{
16-
public const string TableName = "BuildingUnit_BuildingOsloIds";
20+
public const string TableName = "BuildingUnit_Buildings";
1721

18-
public void Configure(EntityTypeBuilder<BuildingUnitBuildingOsloIdItem> b)
22+
public void Configure(EntityTypeBuilder<BuildingUnitBuildingItem> b)
1923
{
2024
b.ToTable(TableName, Schema.Legacy)
2125
.HasKey(p => p.BuildingId)
2226
.ForSqlServerIsClustered(false);
2327

28+
b.Property(p => p.IsComplete);
29+
b.Property(p => p.IsRemoved);
30+
b.Property(p => p.BuildingOsloId);
31+
b.Property(p => p.BuildingRetiredStatus);
32+
2433
b.HasIndex(p => p.BuildingOsloId);
2534
}
2635
}

src/BuildingRegistry.Projections.Legacy/BuildingUnitDetail/BuildingUnitDetailProjections.cs

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ public BuildingUnitDetailProjections(WKBReader wkbReader)
2424
_wkbReader = wkbReader;
2525

2626
#region Building
27+
When<Envelope<BuildingWasRegistered>>(async (context, message, ct) =>
28+
{
29+
await context
30+
.BuildingUnitBuildings
31+
.AddAsync(
32+
new BuildingUnitBuildingItem
33+
{
34+
BuildingId = message.Message.BuildingId,
35+
IsRemoved = false
36+
}, ct);
37+
});
38+
2739
When<Envelope<BuildingWasRemoved>>(async (context, message, ct) =>
2840
{
2941
// possible of ALOT of units, might exceed SQL server IN (...) limitation, thats why we first get id by BuildingId
@@ -43,30 +55,45 @@ public BuildingUnitDetailProjections(WKBReader wkbReader)
4355
SetVersion(buildingUnitDetailItem, message.Message.Provenance.Timestamp);
4456
}
4557
}
58+
59+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
60+
building.IsRemoved = true;
4661
});
4762

4863
When<Envelope<BuildingWasRetired>>(async (context, message, ct) =>
4964
{
5065
var buildingUnits = await context.BuildingUnitDetails.Where(unit => unit.BuildingId == message.Message.BuildingId).ToListAsync(ct);
5166
RetireUnitsByBuilding(buildingUnits, message.Message.BuildingUnitIdsToNotRealize, message.Message.BuildingUnitIdsToRetire, message.Message.Provenance.Timestamp);
67+
68+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
69+
building.BuildingRetiredStatus = BuildingStatus.Retired;
5270
});
5371

5472
When<Envelope<BuildingWasCorrectedToRetired>>(async (context, message, ct) =>
5573
{
5674
var buildingUnits = await context.BuildingUnitDetails.Where(unit => unit.BuildingId == message.Message.BuildingId).ToListAsync(ct);
5775
RetireUnitsByBuilding(buildingUnits, message.Message.BuildingUnitIdsToNotRealize, message.Message.BuildingUnitIdsToRetire, message.Message.Provenance.Timestamp);
76+
77+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
78+
building.BuildingRetiredStatus = BuildingStatus.Retired;
5879
});
5980

6081
When<Envelope<BuildingWasNotRealized>>(async (context, message, ct) =>
6182
{
6283
var buildingUnits = await context.BuildingUnitDetails.Where(unit => unit.BuildingId == message.Message.BuildingId).ToListAsync(ct);
6384
RetireUnitsByBuilding(buildingUnits, message.Message.BuildingUnitIdsToNotRealize, message.Message.BuildingUnitIdsToRetire, message.Message.Provenance.Timestamp);
85+
86+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
87+
building.BuildingRetiredStatus = BuildingStatus.NotRealized;
6488
});
6589

6690
When<Envelope<BuildingWasCorrectedToNotRealized>>(async (context, message, ct) =>
6791
{
6892
var buildingUnits = await context.BuildingUnitDetails.Where(unit => unit.BuildingId == message.Message.BuildingId).ToListAsync(ct);
6993
RetireUnitsByBuilding(buildingUnits, message.Message.BuildingUnitIdsToNotRealize, message.Message.BuildingUnitIdsToRetire, message.Message.Provenance.Timestamp);
94+
95+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
96+
building.BuildingRetiredStatus = BuildingStatus.NotRealized;
7097
});
7198

7299
When<Envelope<BuildingGeometryWasRemoved>>(async (context, message, ct) =>
@@ -88,6 +115,9 @@ public BuildingUnitDetailProjections(WKBReader wkbReader)
88115
buildingUnit.IsBuildingComplete = true;
89116
SetVersion(buildingUnit, message.Message.Provenance.Timestamp);
90117
}
118+
119+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
120+
building.IsComplete = true;
91121
});
92122

93123
When<Envelope<BuildingBecameIncomplete>>(async (context, message, ct) =>
@@ -98,17 +128,15 @@ public BuildingUnitDetailProjections(WKBReader wkbReader)
98128
buildingUnit.IsBuildingComplete = false;
99129
SetVersion(buildingUnit, message.Message.Provenance.Timestamp);
100130
}
131+
132+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
133+
building.IsComplete = false;
101134
});
102135

103136
When<Envelope<BuildingOsloIdWasAssigned>>(async (context, message, ct) =>
104137
{
105-
await context
106-
.BuildingUnitBuildingOsloIds
107-
.AddAsync(new BuildingUnitBuildingOsloIdItem
108-
{
109-
BuildingId = message.Message.BuildingId,
110-
BuildingOsloId = message.Message.OsloId,
111-
}, cancellationToken: ct);
138+
var building = await context.BuildingUnitBuildings.FindAsync(message.Message.BuildingId, cancellationToken: ct);
139+
building.BuildingOsloId = message.Message.OsloId;
112140

113141
foreach (var buildingUnit in context
114142
.BuildingUnitDetails
@@ -384,15 +412,16 @@ private static async Task AddUnit(LegacyContext context,
384412
bool isCommon,
385413
CancellationToken ct)
386414
{
387-
var buildingOsloId = await context
388-
.BuildingUnitBuildingOsloIds
415+
var building = await context
416+
.BuildingUnitBuildings
389417
.FindAsync(buildingId, cancellationToken: ct);
390418

391419
var buildingUnitDetailItem = new BuildingUnitDetailItem
392420
{
393421
BuildingUnitId = buildingUnitId,
394422
BuildingId = buildingId,
395-
BuildingOsloId = buildingOsloId?.BuildingOsloId,
423+
BuildingOsloId = building?.BuildingOsloId,
424+
IsBuildingComplete = building?.IsComplete ?? false,
396425
Version = version,
397426
Function = isCommon ? BuildingUnitFunction.Common : BuildingUnitFunction.Unknown,
398427
};

src/BuildingRegistry.Projections.Legacy/LegacyContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class LegacyContext : RunnerDbContext<LegacyContext>
1818
public DbSet<BuildingDetailItem> BuildingDetails { get; set; }
1919
public DbSet<BuildingSyndicationItem> BuildingSyndication { get; set; }
2020
public DbSet<BuildingUnitDetailItem> BuildingUnitDetails { get; set; }
21-
public DbSet<BuildingUnitBuildingOsloIdItem> BuildingUnitBuildingOsloIds { get; set; }
21+
public DbSet<BuildingUnitBuildingItem> BuildingUnitBuildings { get; set; }
2222
public DbSet<BuildingUnitDetailAddressItem> BuildingUnitAddresses { get; set; }
2323

2424
public LegacyContext() { }

0 commit comments

Comments
 (0)