From 85d12d49f94e7fa2f36a26bdebbd4f9f694f7e28 Mon Sep 17 00:00:00 2001 From: Herrera Date: Fri, 3 May 2024 16:56:27 -0700 Subject: [PATCH 1/2] PSP-8186 : Property File Change Log Update --- .../CodeTypes/PropertyPPHStatusTypes.cs | 24 ++++++++ source/backend/dal/Pims.Dal.csproj | 1 + .../dal/Repositories/PropertyRepository.cs | 4 +- source/backend/tests/core/PrincipalHelper.cs | 1 + .../Repositories/PropertyRepositoryTest.cs | 55 +++++++++++++++++++ .../models/UpdatePropertyDetailsFormModel.ts | 4 +- ...ApiGen_CodeTypes_PropertyPPHStatusTypes.ts | 11 ++++ .../generated/ApiGen_CodeTypes_TakeTypes.ts | 8 +++ 8 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 source/backend/apimodels/CodeTypes/PropertyPPHStatusTypes.cs create mode 100644 source/frontend/src/models/api/generated/ApiGen_CodeTypes_PropertyPPHStatusTypes.ts create mode 100644 source/frontend/src/models/api/generated/ApiGen_CodeTypes_TakeTypes.ts diff --git a/source/backend/apimodels/CodeTypes/PropertyPPHStatusTypes.cs b/source/backend/apimodels/CodeTypes/PropertyPPHStatusTypes.cs new file mode 100644 index 0000000000..4cdb89f28e --- /dev/null +++ b/source/backend/apimodels/CodeTypes/PropertyPPHStatusTypes.cs @@ -0,0 +1,24 @@ +using System.Runtime.Serialization; +using System.Text.Json.Serialization; + +namespace Pims.Api.Models.CodeTypes +{ + [JsonConverter(typeof(JsonStringEnumMemberConverter))] + public enum PropertyPPHStatusTypes + { + [EnumMember(Value = "ARTERY")] + ARTERY, + + [EnumMember(Value = "COMBO")] + COMBO, + + [EnumMember(Value = "NONPPH")] + NONPPH, + + [EnumMember(Value = "PPH")] + PPH, + + [EnumMember(Value = "UNKNOWN")] + UNKNOWN, + } +} diff --git a/source/backend/dal/Pims.Dal.csproj b/source/backend/dal/Pims.Dal.csproj index ccaaac338b..d1f653dc4f 100644 --- a/source/backend/dal/Pims.Dal.csproj +++ b/source/backend/dal/Pims.Dal.csproj @@ -43,6 +43,7 @@ + diff --git a/source/backend/dal/Repositories/PropertyRepository.cs b/source/backend/dal/Repositories/PropertyRepository.cs index 813766584d..e055251b70 100644 --- a/source/backend/dal/Repositories/PropertyRepository.cs +++ b/source/backend/dal/Repositories/PropertyRepository.cs @@ -6,6 +6,7 @@ using LinqKit; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; +using Pims.Api.Models.CodeTypes; using Pims.Core.Exceptions; using Pims.Core.Extensions; using Pims.Core.Helpers; @@ -346,7 +347,8 @@ public PimsProperty Update(PimsProperty property, bool overrideLocation = false) property.IsVisibleToOtherAgencies = existingProperty.IsVisibleToOtherAgencies; property.IsSensitive = existingProperty.IsSensitive; - if (property.PphStatusTypeCode != existingProperty.PphStatusTypeCode) + if (property.PphStatusTypeCode != existingProperty.PphStatusTypeCode + && (property.PphStatusTypeCode != PropertyPPHStatusTypes.UNKNOWN.ToString() && existingProperty.PphStatusTypeCode != null)) { property.PphStatusUpdateTimestamp = DateTime.UtcNow; property.PphStatusUpdateUserid = User.GetUsername(); diff --git a/source/backend/tests/core/PrincipalHelper.cs b/source/backend/tests/core/PrincipalHelper.cs index fa2d0b7053..3e4fe8dc0c 100644 --- a/source/backend/tests/core/PrincipalHelper.cs +++ b/source/backend/tests/core/PrincipalHelper.cs @@ -62,6 +62,7 @@ public static ClaimsPrincipal CreateForPermission(params Permissions[] permissio var claims = new List { new Claim("idir_user_guid", Guid.NewGuid().ToString().Replace("-", string.Empty)), + new Claim("idir_username", "super-tester"), new Claim(ClaimTypes.Email, "test@test.com"), }; diff --git a/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs b/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs index 71b1157a19..3115f32d76 100644 --- a/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs +++ b/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs @@ -5,6 +5,7 @@ using System.Drawing; using System.Linq; using FluentAssertions; +using Pims.Api.Models.CodeTypes; using Pims.Core.Exceptions; using Pims.Core.Extensions; using Pims.Core.Test; @@ -668,6 +669,60 @@ public void Update_Property_ThrowIfNull() // Assert act.Should().Throw(); } + + [Fact] + public void Update_Property_DoesNOT_UPDATE_PPH_Audit() + { + // Arrange + var repository = CreateRepositoryWithPermissions(Permissions.PropertyView, Permissions.PropertyEdit); + var property = EntityHelper.CreateProperty(1); + property.PphStatusTypeCode = null; + property.PphStatusUpdateTimestamp = null; + property.PphStatusUpdateUserid = null; + property.PphStatusUpdateUserGuid = null; + + _helper.AddAndSaveChanges(property); + + var updateProperty = new PimsProperty(); + updateProperty.PropertyId = property.PropertyId; + updateProperty.PphStatusTypeCode = PropertyPPHStatusTypes.UNKNOWN.ToString(); + + // Act + var result = repository.Update(updateProperty); + + // Assert + Assert.Null(result.PphStatusUpdateTimestamp); + Assert.Null(result.PphStatusUpdateUserid); + Assert.Null(result.PphStatusUpdateUserGuid); + } + + [Fact] + public void Update_Property_Update_PPH_Audit() + { + // Arrange + var repository = CreateRepositoryWithPermissions(Permissions.PropertyView, Permissions.PropertyEdit); + var property = EntityHelper.CreateProperty(1); + property.PphStatusTypeCode = PropertyPPHStatusTypes.UNKNOWN.ToString(); + property.PphStatusUpdateTimestamp = null; + property.PphStatusUpdateUserid = null; + property.PphStatusUpdateUserGuid = null; + + _helper.AddAndSaveChanges(property); + + var updateProperty = new PimsProperty(); + updateProperty.PropertyId = property.PropertyId; + updateProperty.PphStatusTypeCode = PropertyPPHStatusTypes.COMBO.ToString(); + + // Act + var result = repository.Update(updateProperty); + + // Assert + Assert.Equal(PropertyPPHStatusTypes.COMBO.ToString(), result.PphStatusTypeCode); + Assert.NotNull(result.PphStatusUpdateTimestamp); + Assert.NotNull(result.PphStatusUpdateUserid); + Assert.NotNull(result.PphStatusUpdateUserGuid); + } + #endregion #region Delete diff --git a/source/frontend/src/features/mapSideBar/property/tabs/propertyDetails/update/models/UpdatePropertyDetailsFormModel.ts b/source/frontend/src/features/mapSideBar/property/tabs/propertyDetails/update/models/UpdatePropertyDetailsFormModel.ts index 87e51bf35e..430687d596 100644 --- a/source/frontend/src/features/mapSideBar/property/tabs/propertyDetails/update/models/UpdatePropertyDetailsFormModel.ts +++ b/source/frontend/src/features/mapSideBar/property/tabs/propertyDetails/update/models/UpdatePropertyDetailsFormModel.ts @@ -1,6 +1,7 @@ import { GeoJsonProperties } from 'geojson'; import { isEmpty } from 'lodash'; +import { ApiGen_CodeTypes_PropertyPPHStatusTypes } from '@/models/api/generated/ApiGen_CodeTypes_PropertyPPHStatusTypes'; import { ApiGen_Concepts_Address } from '@/models/api/generated/ApiGen_Concepts_Address'; import { ApiGen_Concepts_CodeType } from '@/models/api/generated/ApiGen_Concepts_CodeType'; import { ApiGen_Concepts_Property } from '@/models/api/generated/ApiGen_Concepts_Property'; @@ -152,7 +153,8 @@ export class UpdatePropertyDetailsFormModel { model.description = base.description ?? undefined; model.isSensitive = base.isSensitive; model.isRetired = base.isRetired; - model.pphStatusTypeCode = base.pphStatusTypeCode ?? 'UNKNOWN'; + model.pphStatusTypeCode = + base.pphStatusTypeCode ?? ApiGen_CodeTypes_PropertyPPHStatusTypes.UNKNOWN.toString(); model.isRwyBeltDomPatent = base.isRwyBeltDomPatent ?? undefined; model.pphStatusUpdateUserid = base.pphStatusUpdateUserid ?? undefined; model.pphStatusUpdateUserGuid = base.pphStatusUpdateUserGuid ?? undefined; diff --git a/source/frontend/src/models/api/generated/ApiGen_CodeTypes_PropertyPPHStatusTypes.ts b/source/frontend/src/models/api/generated/ApiGen_CodeTypes_PropertyPPHStatusTypes.ts new file mode 100644 index 0000000000..f4948781ee --- /dev/null +++ b/source/frontend/src/models/api/generated/ApiGen_CodeTypes_PropertyPPHStatusTypes.ts @@ -0,0 +1,11 @@ +/** + * File autogenerated by TsGenerator. + * Do not manually modify, changes made to this file will be lost when this file is regenerated. + */ +export enum ApiGen_CodeTypes_PropertyPPHStatusTypes { + ARTERY = 'ARTERY', + COMBO = 'COMBO', + NONPPH = 'NONPPH', + PPH = 'PPH', + UNKNOWN = 'UNKNOWN', +} diff --git a/source/frontend/src/models/api/generated/ApiGen_CodeTypes_TakeTypes.ts b/source/frontend/src/models/api/generated/ApiGen_CodeTypes_TakeTypes.ts new file mode 100644 index 0000000000..86db49a77a --- /dev/null +++ b/source/frontend/src/models/api/generated/ApiGen_CodeTypes_TakeTypes.ts @@ -0,0 +1,8 @@ +/** + * File autogenerated by TsGenerator. + * Do not manually modify, changes made to this file will be lost when this file is regenerated. + */ +export enum ApiGen_CodeTypes_TakeTypes { + TOTAL = 'TOTAL', + PARTIAL = 'PARTIAL', +} From f14b8188311a83c1ab6a96b28bacc8294c60b044 Mon Sep 17 00:00:00 2001 From: Herrera Date: Fri, 3 May 2024 17:26:48 -0700 Subject: [PATCH 2/2] - test updates --- source/backend/tests/core/PrincipalHelper.cs | 2 +- .../tests/unit/dal/Repositories/PropertyRepositoryTest.cs | 1 + .../backend/tests/unit/dal/Repositories/UserRepositoryTest.cs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/source/backend/tests/core/PrincipalHelper.cs b/source/backend/tests/core/PrincipalHelper.cs index 3e4fe8dc0c..6182338338 100644 --- a/source/backend/tests/core/PrincipalHelper.cs +++ b/source/backend/tests/core/PrincipalHelper.cs @@ -62,7 +62,7 @@ public static ClaimsPrincipal CreateForPermission(params Permissions[] permissio var claims = new List { new Claim("idir_user_guid", Guid.NewGuid().ToString().Replace("-", string.Empty)), - new Claim("idir_username", "super-tester"), + new Claim("idir_username", "username@"), new Claim(ClaimTypes.Email, "test@test.com"), }; diff --git a/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs b/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs index 3115f32d76..ee2895316a 100644 --- a/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs +++ b/source/backend/tests/unit/dal/Repositories/PropertyRepositoryTest.cs @@ -701,6 +701,7 @@ public void Update_Property_Update_PPH_Audit() { // Arrange var repository = CreateRepositoryWithPermissions(Permissions.PropertyView, Permissions.PropertyEdit); + var property = EntityHelper.CreateProperty(1); property.PphStatusTypeCode = PropertyPPHStatusTypes.UNKNOWN.ToString(); property.PphStatusUpdateTimestamp = null; diff --git a/source/backend/tests/unit/dal/Repositories/UserRepositoryTest.cs b/source/backend/tests/unit/dal/Repositories/UserRepositoryTest.cs index be3826ae5a..3458992f7f 100644 --- a/source/backend/tests/unit/dal/Repositories/UserRepositoryTest.cs +++ b/source/backend/tests/unit/dal/Repositories/UserRepositoryTest.cs @@ -99,6 +99,7 @@ public void Activate_Success() // Arrange var helper = new TestHelper(); var user = PrincipalHelper.CreateForPermission(Permissions.AdminUsers); + var updatedUser = user.AddClaim("idir_username", "username@"); updatedUser = updatedUser.AddClaim(ClaimTypes.GivenName, "first"); updatedUser = updatedUser.AddClaim(ClaimTypes.Surname, "last");