Skip to content

Commit

Permalink
Tech debt/vite (#3920)
Browse files Browse the repository at this point in the history
* SPIKE: Vite  (#3760)

* UAT Release - IS75 (#3865)

* Automation refactoring - Change of models and functions to avois warning messages

* Automation refactoring - Change of models and functions to avois warning messages

* Automation fixes related to new modals

* Disposition Files - Offers and Sale Tab

* Disposition Files - Offers and Sale Tab

* Update Nuget packages

* Changes on automation to adapt changes on PIMS IS74

* Fixed property list sort by lot size (#3825)

Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-74.17

* Fixed lease not showing pids on view (#3824)

* CI: Bump version to v5.0.1-74.18

* Bump dev version - IS75 (#3827)

* CI: Bump version to v5.0.1-75.1

* psp-7880 disposition file number export display. (#3819)

* psp-7880 disposition file number export display.

* test correction.

---------

Co-authored-by: Smith <Devin.Smith@quartech.com>

* CI: Bump version to v5.0.1-75.2

* fix missed mapping of sale completion date on frontend. (#3828)

Co-authored-by: Smith <Devin.Smith@quartech.com>
Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-75.3

* psp-7925 text correction. (#3830)

Co-authored-by: Smith <Devin.Smith@quartech.com>

* CI: Bump version to v5.0.1-75.4

* PSP-7500 - UI/UX cleanup agreements create /edit (#3817)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>
Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-75.5

* IS-75.00 Database Schema Changes (#3818)

* IS-75.00 Database Schema Changes

PSP_PIMS | Development Sprint: S75.00 | Design Sprint: 74 | Date: 2024-Feb-27
- Altered seed scripts:
  - 135_DML_PIMS_PROP_MGMT_ACTIVITY_TYPE.sql
  - 136_DML_PIMS_PROP_MGMT_ACTIVITY_SUBTYPE.sql
- Requires additional metadata to meet standards

* Changed ZONING_POTENTIAL to 100 Bytes

- PIMS_PROPERTY.ZONING_POTENTIAL
- PIMS_PROPERTY_HIST.ZONING_POTENTIAL

---------

Co-authored-by: Manuel Rodriguez <marobej@gmail.com>

* CI: Bump version to v5.0.1-75.6

* Regenerated scaffold (#3832)

* CI: Bump version to v5.0.1-75.7

* PSP-7636 Prometheus/Sysdig alerts (#3831)

* Update sysdig team yaml with rest of devs

* Move sysdig config to monitoring folder

* Add a health check for the PIMS database via the PIMS API and Prometheus.

* Update local prometheus configuration to support alerting when database server goes down

* CI: Bump version to v5.0.1-75.8

* PSP-7849 : Stop user from completing acquisition file if take is in progress takes (#3833)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>
Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-75.9

* correct cancel modal behaviour. (#3838)

* CI: Bump version to v5.0.1-75.10

* psp-7622 Testing (#3821)

* Added tests for subdivision view

* Lint fixes

* CI: Bump version to v5.0.1-75.11

* psp-7854 property consolidation backend service. (#3834)

Co-authored-by: Smith <Devin.Smith@quartech.com>
Co-authored-by: Manuel Rodriguez <marobej@gmail.com>

* CI: Bump version to v5.0.1-75.12

* psp 7616 | Subdivision Consolidation navigation (#3836)

* Added functionality to navigate to subdivision and consolidation

* lint fixes

* more lint fixes

* CI: Bump version to v5.0.1-75.13

* PSP-7681 : FT-REG: Browser alerts should be replaced by established modal dialogs (#3790)

Co-authored-by: Eduardo Herrera <Eduardo.Herrera@quartech.com>

* CI: Bump version to v5.0.1-75.14

* Adding initial elements of Subdivision, changes on Acquisition Agreements

* psp-7975 ensure disposition file filter by D- is consistent

* psp-7975 user api corrections.

* min page range.

* CI: Bump version to v5.0.1-75.15

* psp-7896 add acquisition properties request to generate letter logic. (#3837)

* CI: Bump version to v5.0.1-75.16

* PSP-7869 Indicate "retired" on property information details  (#3840)

* CI: Bump version to v5.0.1-75.17

* PSP-7916 : Disposition file GST collected - correct the calculation (#3847)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>

* CI: Bump version to v5.0.1-75.18

* Psp 7984 node 20 update (#3846)

* node 20 update.

* node 20 dependency updates.

* test corrections.

* package json stylih update.

---------

Co-authored-by: Smith <Devin.Smith@quartech.com>

* CI: Bump version to v5.0.1-75.19

* CI: Bump version to v5.0.1-75.20

* psp 7385 | Consolidation frontend (#3845)

* Added consolidation front end and cleanup

* Updated property layer types

* Fixed tests

* Updated subdivision to match consolidation ui

* Pr fixes

* upated icon size

* CI: Bump version to v5.0.1-75.21

* Adding or improving list views and pagination

* psp-7993 correct recursive model object. (#3843)

* CI: Bump version to v5.0.1-75.22

* CI: Bump version to v5.0.1-75.23

* PSP-7907 Add representation of RETIRED properties on the map view and advance filter (#3853)

* Add retired map pin image

* Update map legend

* Add retired property toggle to advanced map filters

* Update backend filter queries

* Implement separate service call for retiring properties

* Map state-machine updates and frontend updates

* backend logic fix

* Update map clustering logic to not display retired properties

* Test corrections

* Update snapshots

* Properly exclude mockServiceWorker from any linting rules

* CI: Bump version to v5.0.1-75.24

* PSP-7860, psp-7962, psp-7963, psp-7964 | Added consolidation history view and fixed issues (#3848)

* Added consolidation history view and fixed issues

* CI: Bump version to v5.0.1-75.25

* psp-7658 display is retired in property list view. (#3835)

* psp-7658 display is retired in property list view.

* test updates.

* remove disposition completion date from add form.

* CI: Bump version to v5.0.1-75.26

* Psp-7818 display disposition errors with error modal (#3852)

* increase readability of error when pid not found in pims.

* display disposition errors with error modal

* CI: Bump version to v5.0.1-75.27

* psp-7313 change user override styling. (#3851)

* CI: Bump version to v5.0.1-75.28

* PSP-8002 : FT:UI/UX- Agreements: Agreement #(number) is not aligned accurately above the line (#3855)

* CI: Bump version to v5.0.1-75.29

* PSP-6920 replace toast with warning modal (#3861)

* PSP-6920 replace toast message with popup dialog

* Lint fixes

* CI: Bump version to v5.0.1-75.30

* PSP-8047 : FT-REG: Disposition Files - Net proceeds before & After SPP cost tool tips are not displaying the correct text (#3859)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>

* CI: Bump version to v5.0.1-75.31

* correct issue in gen env script. (#3863)

Co-authored-by: Smith <devin.smith@quartech.com>

* CI: Bump version to v5.0.1-75.32

* PSP-8046 : FT-REG: Disposition Files - Net proceeds before & After SP… (#3858)


Co-authored-by: Herrera <eduardo.herrera@quartech.com>

* CI: Bump version to v5.0.1-75.33

* Fix PSP-7927 (#3862)

* Updated timeouts to be 30s instead of 3s when retrieving information for adding properties

* Fixed lint

* Added timeout for subdivision

---------

Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-75.34

* Fix "retired" label on property information header (#3864)

* CI: Bump version to v5.0.1-75.35

---------

Co-authored-by: Sue Tairaku <sue.tairaku@gmail.com>
Co-authored-by: devinleighsmith <41091511+devinleighsmith@users.noreply.github.com>
Co-authored-by: Sue Tairaku <42981334+stairaku@users.noreply.github.com>
Co-authored-by: Manuel Rodriguez <marobej@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Smith <Devin.Smith@quartech.com>
Co-authored-by: Eduardo <eddherrera@users.noreply.github.com>
Co-authored-by: Herrera <eduardo.herrera@quartech.com>
Co-authored-by: Doug Filteau <dfilteau@users.noreply.github.com>
Co-authored-by: devinleighsmith <devinleighsmith@gmail.com>

* PSP-8093 label change/fix (#3883)

* Fix typo

* Fix label text

* Snapshot updates

* CI: Bump version to v5.0.1-76.17

* PSP-7929 : Backend error - For all files do not include a retired property on selection (#3884)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>

* CI: Bump version to v5.0.1-76.18

* PSP-7922 Completing disposition file - selected properties and errors (#3885)

* Refactor logic to validate disposition file upon closing file

* Disposition form styling fixes

* Update snapshots

* Test corrections

* CI: Bump version to v5.0.1-76.19

* PSP-7968, PSP-7967, PSP-8087 (#3886)

* Adding or improving list views and pagination

* Automation - changes based on Build updates

* Deleting unnecessary comments

---------

Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-76.20

* psp-7995 consolidation/subdivision restrictions. (#3877)

* psp-7995 consolidation/subdivision restrictions.

* psp-7993 fix research file save errors.

* PR correction.

* CI: Bump version to v5.0.1-76.21

* psp-7924 property operation sub-table. (#3888)

* psp-7924 property operation sub-table.

* test updates.

* CI: Bump version to v5.0.1-76.22

* PSP-8003 : FT:UI/UX- Agreements: Second word starting letter doesn't start with capital letter In the Agreement Details word (#3890)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>

* CI: Bump version to v5.0.1-76.23

* PSP-6765 empty file upload error (#3889)

* Lint fixes

* Fix NPE when uploading empty file

* Test updates

* PR feedback

* CI: Bump version to v5.0.1-76.24

* PSP-8051 : FT:User is able to add the retired property record to the … (#3893)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>

* CI: Bump version to v5.0.1-76.25

* psp-8125 order of file types. (#3895)

* CI: Bump version to v5.0.1-76.26

* Update image references and fixed tests

* Dev merges

* psp-7962 correct missing no rows message introduced by operation sect… (#3894)

* psp-7962 correct missing no rows message introduced by operation section subtable.

* snapshot update.

* test corrections.

---------

Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-76.27

* fix an error introduced in the isRetired conditional logic when getting properties by pid. (#3899)

* CI: Bump version to v5.0.1-76.28

* psp-8133 do not show retired properties unless isretired specified. (#3897)

* CI: Bump version to v5.0.1-76.29

* psp-8126 | Research files also match retired properties now (#3900)

* Research files also match retired properties now

* Updated tests

* CI: Bump version to v5.0.1-76.30

* Correct typo in file association display. (#3902)

* CI: Bump version to v5.0.1-76.31

* Changes to PIMS_DATA_SOURCE_TYPE (#3901)

Co-authored-by: Manuel Rodriguez <marobej@gmail.com>

* CI: Bump version to v5.0.1-76.32

* FT-REG: Consolidations - Incorrect instructions for selecting a child property. (#3903)

Co-authored-by: Herrera <eduardo.herrera@quartech.com>

* CI: Bump version to v5.0.1-76.33

* Fully fix property getByPid, add unit tests. (#3904)

* CI: Bump version to v5.0.1-76.34

* PSP-8144, PSP-8119 Disposition File bug fixes (#3906)

* PSP-8144 Fix file closing logic

* PSP-8119 Fix NPE when adding existing properties to a disposition file

* Fix invalid logic for MatchProperties by PIN

* CI: Bump version to v5.0.1-76.35

* psp-8150 fix consolidation/subdivision issues. (#3905)

Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>

* CI: Bump version to v5.0.1-76.36

* Increment DEV version - IS77 5.2

* CI: Bump version to v5.0.2-77.1

* ensure that max zoom is used consistently between map and map clusterer. (#3910)

* ensure that max zoom is used consistently between map and map clusterer.

* test corrections.

* re-order properties to ensure consolidation draft order correct. (#3908)

* Fix adding pre-existing properties to disposition file (#3911)

* CI: Bump version to v5.0.2-77.2

* vite build warning corrections.

---------

Co-authored-by: Alejandro Sanchez <emailforasr@gmail.com>
Co-authored-by: Eduardo <eddherrera@users.noreply.github.com>
Co-authored-by: Sue Tairaku <sue.tairaku@gmail.com>
Co-authored-by: Sue Tairaku <42981334+stairaku@users.noreply.github.com>
Co-authored-by: Manuel Rodriguez <marobej@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Smith <Devin.Smith@quartech.com>
Co-authored-by: Herrera <eduardo.herrera@quartech.com>
Co-authored-by: Doug Filteau <dfilteau@users.noreply.github.com>
  • Loading branch information
10 people committed Apr 2, 2024
1 parent 4a618a0 commit 870eb00
Show file tree
Hide file tree
Showing 185 changed files with 26,042 additions and 16,332 deletions.
8 changes: 4 additions & 4 deletions source/backend/api/Pims.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<UserSecretsId>0ef6255f-9ea0-49ec-8c65-c172304b4926</UserSecretsId>
<Version>5.0.1-76.16</Version>
<Version>5.0.1-76.16</Version>
<AssemblyVersion>5.0.1.76</AssemblyVersion>
<Version>5.0.2-77.2</Version>
<Version>5.0.2-77.2</Version>
<AssemblyVersion>5.0.2.77</AssemblyVersion>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<ProjectGuid>16BC0468-78F6-4C91-87DA-7403C919E646</ProjectGuid>
<TargetFramework>net8.0</TargetFramework>
Expand Down Expand Up @@ -76,4 +76,4 @@
<ItemGroup>
<Folder Include="Areas\Leases\Models\Lease\" />
</ItemGroup>
</Project>
</Project>
21 changes: 16 additions & 5 deletions source/backend/api/Services/AcquisitionFileService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -227,14 +227,15 @@ public PimsAcquisitionFile Add(PimsAcquisitionFile acquisitionFile, IEnumerable<
ValidateStaff(acquisitionFile);
ValidateOrganizationStaff(acquisitionFile);

acquisitionFile.AcquisitionFileStatusTypeCode = "ACTIVE";
MatchProperties(acquisitionFile, userOverrides);
ValidatePropertyRegions(acquisitionFile);

PopulateAcquisitionChecklist(acquisitionFile);

acquisitionFile.AcquisitionFileStatusTypeCode = AcquisitionStatusTypes.ACTIVE.ToString();
var newAcqFile = _acqFileRepository.Add(acquisitionFile);
_acqFileRepository.CommitTransaction();

return newAcqFile;
}

Expand Down Expand Up @@ -625,7 +626,12 @@ private void MatchProperties(PimsAcquisitionFile acquisitionFile, IEnumerable<Us
var pid = acquisitionProperty.Property.Pid.Value;
try
{
var foundProperty = _propertyRepository.GetByPid(pid);
var foundProperty = _propertyRepository.GetByPid(pid, true);
if (foundProperty.IsRetired.HasValue && foundProperty.IsRetired.Value)
{
throw new BusinessRuleViolationException("Retired property can not be selected.");
}

acquisitionProperty.PropertyId = foundProperty.Internal_Id;
_propertyService.UpdateLocation(acquisitionProperty.Property, ref foundProperty, userOverrideCodes);
acquisitionProperty.Property = foundProperty;
Expand All @@ -641,7 +647,12 @@ private void MatchProperties(PimsAcquisitionFile acquisitionFile, IEnumerable<Us
var pin = acquisitionProperty.Property.Pin.Value;
try
{
var foundProperty = _propertyRepository.GetByPin(pin);
var foundProperty = _propertyRepository.GetByPin(pin, true);
if (foundProperty.IsRetired.HasValue && foundProperty.IsRetired.Value)
{
throw new BusinessRuleViolationException("Retired property can not be selected.");
}

acquisitionProperty.PropertyId = foundProperty.Internal_Id;
_propertyService.UpdateLocation(acquisitionProperty.Property, ref foundProperty, userOverrideCodes);
acquisitionProperty.Property = foundProperty;
Expand Down Expand Up @@ -783,13 +794,13 @@ private void TransferPropertiesOfInterest(PimsAcquisitionFile acquisitionFile, b
isOtherInterest = false;
isPropertyOfInterest = false;
}
else if(property.IsOtherInterest || isOtherInterest)
else if (property.IsOtherInterest || isOtherInterest)
{
isOwned = false;
isOtherInterest = true;
isPropertyOfInterest = false;
}
else if(property.IsPropertyOfInterest || isPropertyOfInterest)
else if (property.IsPropertyOfInterest || isPropertyOfInterest)
{
isOwned = false;
isOtherInterest = false;
Expand Down
115 changes: 72 additions & 43 deletions source/backend/api/Services/DispositionFileService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using System.Globalization;
using System.Linq;
using System.Security.Claims;
using System.Text.RegularExpressions;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Pims.Api.Constants;
Expand Down Expand Up @@ -74,11 +73,9 @@ public PimsDispositionFile Add(PimsDispositionFile dispositionFile, IEnumerable<

dispositionFile.DispositionStatusTypeCode ??= EnumDispositionStatusTypeCode.UNKNOWN.ToString();
dispositionFile.DispositionFileStatusTypeCode ??= EnumDispositionFileStatusTypeCode.ACTIVE.ToString();

ValidateStaff(dispositionFile);

MatchProperties(dispositionFile, userOverrides);

ValidatePropertyRegions(dispositionFile);

var newDispositionFile = _dispositionFileRepository.Add(dispositionFile);
Expand Down Expand Up @@ -117,35 +114,18 @@ public PimsDispositionFile Update(long id, PimsDispositionFile dispositionFile,
throw new BusinessRuleViolationException("The file you are editing is not active or draft, so you cannot save changes. Refresh your browser to see file state.");
}

ValidateStaff(dispositionFile);
ValidateVersion(id, dispositionFile.ConcurrencyControlNumber);

dispositionFile.ThrowContractorRemovedFromTeam(_user, _userRepository);

var doNotAddToStatuses = new List<string>() { EnumDispositionFileStatusTypeCode.COMPLETE.ToString(), EnumDispositionFileStatusTypeCode.ARCHIVED.ToString(), EnumDispositionFileStatusTypeCode.CANCELLED.ToString(), };
// validate disposition file state before proceeding with any database updates
var currentDispositionFile = _dispositionFileRepository.GetById(id);
ValidateFileBeforeUpdate(dispositionFile, currentDispositionFile, userOverrides);

if (!userOverrides.Contains(UserOverrideCode.DispositionFileFinalStatus) && !doNotAddToStatuses.Contains(currentDispositionFile.DispositionFileStatusTypeCode)
&& doNotAddToStatuses.Contains(dispositionFile.DispositionFileStatusTypeCode))
{
throw new UserOverrideException(UserOverrideCode.DispositionFileFinalStatus, "You are changing this file to a non-editable state. (Only system administrators can edit the file when set to Archived, Cancelled or Completed state). Do you wish to continue?");
}
else if (currentDispositionFile.DispositionFileStatusTypeCode != EnumDispositionFileStatusTypeCode.COMPLETE.ToString()
&& dispositionFile.DispositionFileStatusTypeCode == EnumDispositionFileStatusTypeCode.COMPLETE.ToString())
{
if (currentDispositionFile?.PimsDispositionSales?.FirstOrDefault()?.SaleFinalAmt == null)
{
throw new BusinessRuleViolationException("You have not added a Sales Price. Please add a Sales Price before completion.");
}
else if (currentDispositionFile.PimsDispositionFileProperties.Count > 0)
{
DisposeOfProperties(dispositionFile, userOverrides);
}
}
var isFileClosing = currentDispositionFile.DispositionFileStatusTypeCode != EnumDispositionFileStatusTypeCode.COMPLETE.ToString() &&
dispositionFile.DispositionFileStatusTypeCode == EnumDispositionFileStatusTypeCode.COMPLETE.ToString();

if (!userOverrides.Contains(UserOverrideCode.UpdateRegion))
if (isFileClosing && currentDispositionFile.PimsDispositionFileProperties?.Count > 0)
{
ValidateMinistryRegion(id, dispositionFile.RegionCode);
DisposeOfProperties(dispositionFile);
}

_dispositionFileRepository.Update(id, dispositionFile);
Expand Down Expand Up @@ -560,30 +540,69 @@ public PimsDispositionFile UpdateProperties(PimsDispositionFile dispositionFile,
return _dispositionFileRepository.GetById(dispositionFile.Internal_Id);
}

/// <summary>
/// Attempt to dispose of any properties if all business rules are met.
/// </summary>
/// <param name="dispositionFile"></param>
private void DisposeOfProperties(PimsDispositionFile dispositionFile, IEnumerable<UserOverrideCode> userOverrides)
private void ValidateFileBeforeUpdate(PimsDispositionFile incomingDispositionFile, PimsDispositionFile currentDispositionFile, IEnumerable<UserOverrideCode> userOverrides)
{
var currentProperties = _dispositionFilePropertyRepository.GetPropertiesByDispositionFileId(dispositionFile.Internal_Id);
if (currentProperties.Any(p => p.Property.IsOwned) && !userOverrides.Contains(UserOverrideCode.DisposeOfProperties))
// Implement file validation logic before proceeding to update. This includes file closing validation.
// The order of validation checks is important as it has been requested by business users.
var isFileClosing = currentDispositionFile.DispositionFileStatusTypeCode != EnumDispositionFileStatusTypeCode.COMPLETE.ToString() &&
incomingDispositionFile.DispositionFileStatusTypeCode == EnumDispositionFileStatusTypeCode.COMPLETE.ToString();

var currentProperties = _dispositionFilePropertyRepository.GetPropertiesByDispositionFileId(incomingDispositionFile.Internal_Id);

// The following checks result in hard STOP errors
if (isFileClosing)
{
throw new UserOverrideException(UserOverrideCode.DisposeOfProperties, "You are completing this Disposition File with owned PIMS inventory properties. All properties will be removed from the PIMS inventory (any Other Interests will remain). Do you wish to proceed?");
if (currentProperties.Any(p => !p.Property.IsOwned))
{
throw new BusinessRuleViolationException("You have one or more properties attached to this Disposition file that is NOT in the \"Core Inventory\" (i.e. owned by BCTFA and/or HMK). To complete this file you must either, remove these non \"Non-Core Inventory\" properties, OR make sure the property is added to the PIMS inventory first.");
}

if (currentDispositionFile.PimsDispositionSales?.FirstOrDefault()?.SaleFinalAmt == null)
{
throw new BusinessRuleViolationException("You have not added a Sales Price. Please add a Sales Price before completion.");
}
}
else if (currentProperties.Any(p => p.Property.IsPropertyOfInterest))

ValidateStaff(incomingDispositionFile);
incomingDispositionFile.ThrowContractorRemovedFromTeam(_user, _userRepository);

// From here on - these checks result in warnings that require user confirmation
if (!userOverrides.Contains(UserOverrideCode.UpdateRegion))
{
throw new BusinessRuleViolationException("You have one or more properties attached to this Disposition file that is NOT in the \"Core Inventory\" (i.e. owned by BCTFA and/or HMK). To complete this file you must either, remove these non \"Non-Core Inventory\" properties, OR make sure the property is added to the PIMS inventory first.");
// confirm user action - file region was changed
ValidateMinistryRegion(incomingDispositionFile.Internal_Id, incomingDispositionFile.RegionCode);
}

// Get the current properties in the research file
var nonEditableStatuses = new List<string>() { EnumDispositionFileStatusTypeCode.COMPLETE.ToString(), EnumDispositionFileStatusTypeCode.ARCHIVED.ToString(), EnumDispositionFileStatusTypeCode.CANCELLED.ToString(), };
var isFileChangingToNonEditableState = !nonEditableStatuses.Contains(currentDispositionFile.DispositionFileStatusTypeCode) && nonEditableStatuses.Contains(incomingDispositionFile.DispositionFileStatusTypeCode);

// confirm user action - file is changing to non-editable state
if (!userOverrides.Contains(UserOverrideCode.DispositionFileFinalStatus) && isFileChangingToNonEditableState)
{
throw new UserOverrideException(UserOverrideCode.DispositionFileFinalStatus, "You are changing this file to a non-editable state. (Only system administrators can edit the file when set to Archived, Cancelled or Completed state). Do you wish to continue?");
}

if (isFileClosing && !userOverrides.Contains(UserOverrideCode.DisposeOfProperties))
{
throw new UserOverrideException(UserOverrideCode.DisposeOfProperties, "You are completing this Disposition File with owned PIMS inventory properties. All properties will be removed from the PIMS inventory (any Other Interests will remain). Do you wish to proceed?");
}
}

/// <summary>
/// Attempt to dispose of any properties if all business rules are met.
/// </summary>
/// <param name="dispositionFile">The disposition file entity.</param>
private void DisposeOfProperties(PimsDispositionFile dispositionFile)
{
// Get the current properties in the disposition file
var currentProperties = _dispositionFilePropertyRepository.GetPropertiesByDispositionFileId(dispositionFile.Internal_Id);
var ownedProperties = currentProperties.Where(p => p.Property.IsOwned);

// PSP-7275 Business rule: Transfer properties of interest to disposed when disposition file is completed
foreach (var dispositionProperty in ownedProperties)
{
var property = dispositionProperty.Property;
_propertyRepository.TransferFileProperty(property, new Dal.Models.PropertyOwnershipState() { isDisposed = true, isPropertyOfInterest = false, isOtherInterest = false, isOwned = false});
_propertyRepository.TransferFileProperty(property, new Dal.Models.PropertyOwnershipState() { isDisposed = true, isPropertyOfInterest = false, isOtherInterest = false, isOwned = false });
}
}

Expand Down Expand Up @@ -683,10 +702,15 @@ private void MatchProperties(PimsDispositionFile dispositionFile, IEnumerable<Us
var pid = dispProperty.Property.Pid.Value;
try
{
var foundProperty = _propertyRepository.GetByPid(pid);
var foundProperty = _propertyRepository.GetByPid(pid, true);
if (foundProperty.IsRetired.HasValue && foundProperty.IsRetired.Value)
{
throw new BusinessRuleViolationException("Retired property can not be selected.");
}

dispProperty.PropertyId = foundProperty.Internal_Id;
_propertyService.UpdateLocation(dispProperty.Property, ref foundProperty, overrideCodes);
dispProperty.Property = null;
dispProperty.Property = foundProperty;
}
catch (KeyNotFoundException)
{
Expand All @@ -697,7 +721,7 @@ private void MatchProperties(PimsDispositionFile dispositionFile, IEnumerable<Us
}
else
{
throw new UserOverrideException(UserOverrideCode.DisposingPropertyNotInventoried, "You have added one or more properties to the disposition file that are not in the MoTI Inventory. Do you want to proceed?");
throw new UserOverrideException(UserOverrideCode.DisposingPropertyNotInventoried, "You have added one or more properties to the disposition file that are not in the MOTI Inventory. Do you want to proceed?");
}
}
}
Expand All @@ -706,10 +730,15 @@ private void MatchProperties(PimsDispositionFile dispositionFile, IEnumerable<Us
var pin = dispProperty.Property.Pin.Value;
try
{
var foundProperty = _propertyRepository.GetByPin(pin);
var foundProperty = _propertyRepository.GetByPin(pin, true);
if (foundProperty.IsRetired.HasValue && foundProperty.IsRetired.Value)
{
throw new BusinessRuleViolationException("Retired property can not be selected.");
}

dispProperty.PropertyId = foundProperty.Internal_Id;
_propertyService.UpdateLocation(dispProperty.Property, ref foundProperty, overrideCodes);
dispProperty.Property = null;
dispProperty.Property = foundProperty;
}
catch (KeyNotFoundException)
{
Expand Down
Loading

0 comments on commit 870eb00

Please sign in to comment.