Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -225,5 +225,26 @@ public IActionResult GetCompensationRequisitionFinancials([FromRoute] long id)

return new JsonResult(_mapper.Map<IEnumerable<CompensationFinancialModel>>(compReqFinancials));
}

[HttpGet("{id:long}/payees")]
[HasPermission(Permissions.CompensationRequisitionView)]
[Produces("application/json")]
[ProducesResponseType(typeof(List<CompReqPayeeModel>), 200)]
[SwaggerOperation(Tags = new[] { "compensation-requisition" })]
[TypeFilter(typeof(NullJsonResultFilter))]
public IActionResult GetCompensationRequisitionPayees([FromRoute] long id)
{
_logger.LogInformation(
"Request received by Controller: {Controller}, Action: {ControllerAction}, User: {User}, DateTime: {DateTime}",
nameof(CompensationRequisitionController),
nameof(GetCompensationRequisitionPayees),
User.GetUsername(),
DateTime.Now);
_logger.LogInformation("Dispatching to service: {Service}", _compensationRequisitionService.GetType());

var compReqFinancials = _compensationRequisitionService.GetCompensationRequisitionPayees(id);

return new JsonResult(_mapper.Map<IEnumerable<CompReqPayeeModel>>(compReqFinancials));
}
}
}
42 changes: 22 additions & 20 deletions source/backend/api/Services/AcquisitionFileService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -844,34 +844,35 @@ private void ValidatePayeeDependency(PimsAcquisitionFile acquisitionFile)
{
var currentAcquisitionFile = _acqFileRepository.GetById(acquisitionFile.Internal_Id);
var compensationRequisitions = _compensationRequisitionRepository.GetAllByAcquisitionFileId(acquisitionFile.Internal_Id);
var compReqPayees = compensationRequisitions.SelectMany(x => x.PimsCompReqPayees).ToList();

if (compensationRequisitions.Count == 0)
if (compReqPayees.Count == 0)
{
return;
}

foreach (var compReq in compensationRequisitions)
foreach (var payee in compReqPayees)
{
// Check for Acquisition File Owner removed
if (compReq.AcquisitionOwnerId is not null
&& !acquisitionFile.PimsAcquisitionOwners.Any(x => x.Internal_Id.Equals(compReq.AcquisitionOwnerId))
&& currentAcquisitionFile.PimsAcquisitionOwners.Any(x => x.Internal_Id.Equals(compReq.AcquisitionOwnerId)))
// Check for Acquisition File Owner removed TODO: update for multiple payees.
if (payee.AcquisitionOwnerId is not null
&& !acquisitionFile.PimsAcquisitionOwners.Any(x => x.Internal_Id.Equals(payee.AcquisitionOwnerId))
&& currentAcquisitionFile.PimsAcquisitionOwners.Any(x => x.Internal_Id.Equals(payee.AcquisitionOwnerId)))
{
throw new ForeignKeyDependencyException("Acquisition File Owner can not be removed since it's assigned as a payee for a compensation requisition");
}

// Check for Acquisition InterestHolders
if (compReq.InterestHolderId is not null
&& !acquisitionFile.PimsInterestHolders.Any(x => x.Internal_Id.Equals(compReq.InterestHolderId))
&& currentAcquisitionFile.PimsInterestHolders.Any(x => x.Internal_Id.Equals(compReq.InterestHolderId)))
//// Check for Acquisition InterestHolders
if (payee.InterestHolderId is not null
&& !acquisitionFile.PimsInterestHolders.Any(x => x.Internal_Id.Equals(payee.InterestHolderId))
&& currentAcquisitionFile.PimsInterestHolders.Any(x => x.Internal_Id.Equals(payee.InterestHolderId)))
{
throw new ForeignKeyDependencyException("Acquisition File Interest Holders can not be removed since it's assigned as a payee for a compensation requisition");
}

// Check for File Person
if (compReq.AcquisitionFileTeamId is not null
&& !acquisitionFile.PimsAcquisitionFileTeams.Any(x => x.Internal_Id.Equals(compReq.AcquisitionFileTeamId))
&& currentAcquisitionFile.PimsAcquisitionFileTeams.Any(x => x.Internal_Id.Equals(compReq.AcquisitionFileTeamId)))
//// Check for File Person
if (payee.AcquisitionFileTeamId is not null
&& !acquisitionFile.PimsAcquisitionFileTeams.Any(x => x.Internal_Id.Equals(payee.AcquisitionFileTeamId))
&& currentAcquisitionFile.PimsAcquisitionFileTeams.Any(x => x.Internal_Id.Equals(payee.AcquisitionFileTeamId)))
{
throw new ForeignKeyDependencyException("Acquisition File team member can not be removed since it's assigned as a payee for a compensation requisition");
}
Expand All @@ -882,18 +883,19 @@ private void ValidateInterestHoldersDependency(long acquisitionFileId, List<Pims
{
var currentAcquisitionFile = _acqFileRepository.GetById(acquisitionFileId);
var compensationRequisitions = _compensationRequisitionRepository.GetAllByAcquisitionFileId(acquisitionFileId);
var compReqPayees = compensationRequisitions.SelectMany(x => x.PimsCompReqPayees).ToList();

if (compensationRequisitions.Count == 0)
if (compReqPayees.Count == 0)
{
return;
}

foreach (var compReq in compensationRequisitions)
foreach (var payee in compReqPayees)
{
// Check for Interest Holder
if (compReq.InterestHolderId is not null
&& !interestHolders.Any(x => x.InterestHolderId.Equals(compReq.InterestHolderId))
&& currentAcquisitionFile.PimsInterestHolders.Any(x => x.Internal_Id.Equals(compReq.InterestHolderId)))
// Check for Interest Holder: TODO: update for multiple payees.
if (payee.InterestHolderId is not null
&& !interestHolders.Any(x => x.InterestHolderId.Equals(payee.InterestHolderId))
&& currentAcquisitionFile.PimsInterestHolders.Any(x => x.Internal_Id.Equals(payee.InterestHolderId)))
{
throw new ForeignKeyDependencyException("Acquisition File Interest Holder can not be removed since it's assigned as a payee for a compensation requisition");
}
Expand Down
14 changes: 11 additions & 3 deletions source/backend/api/Services/CompensationRequisitionService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,12 +150,20 @@ public IEnumerable<PimsCompensationRequisition> GetFileCompensationRequisitions(
return compReqs;
}

public IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long id)
public IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long compReqId)
{
_logger.LogInformation("Getting compensations financials for id: {acquisitionFileId}", id);
_logger.LogInformation("Getting compensations financials for id: {compReqId}", compReqId);
_user.ThrowIfNotAuthorized(Permissions.CompensationRequisitionView);

return _compensationRequisitionRepository.GetCompensationRequisitionFinancials(id);
return _compensationRequisitionRepository.GetCompensationRequisitionFinancials(compReqId);
}

public IEnumerable<PimsCompReqPayee> GetCompensationRequisitionPayees(long compReqId)
{
_logger.LogInformation("Getting compensations payees for id: {compReqId}", compReqId);
_user.ThrowIfNotAuthorized(Permissions.CompensationRequisitionView);

return _compensationRequisitionRepository.GetCompensationRequisitionPayees(compReqId);
}

private static string GetCompensationRequisitionStatusText(bool? isDraft)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ public interface ICompensationRequisitionService

PimsCompensationRequisition AddCompensationRequisition(FileTypes fileType, PimsCompensationRequisition compensationRequisition);

IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long id);
IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long compReqId);

IEnumerable<PimsCompReqPayee> GetCompensationRequisitionPayees(long compReqId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Mapster;
using Pims.Api.Models.Base;
using Entity = Pims.Dal.Entities;

namespace Pims.Api.Models.Concepts.CompensationRequisition
{
public class CompReqPayeeMap : IRegister
{
public void Register(TypeAdapterConfig config)
{
config.NewConfig<Entity.PimsCompReqPayee, CompReqPayeeModel>()
.Map(dest => dest.CompReqPayeeId, src => src.CompReqPayeeId)
.Map(dest => dest.CompensationRequisitionId, src => src.CompensationRequisitionId)
.Map(dest => dest.AcquisitionFileTeamId, src => src.AcquisitionFileTeamId)
.Map(dest => dest.AcquisitionFileTeam, src => src.AcquisitionFileTeam)
.Map(dest => dest.AcquisitionOwnerId, src => src.AcquisitionOwnerId)
.Map(dest => dest.AcquisitionOwner, src => src.AcquisitionOwner)
.Map(dest => dest.InterestHolderId, src => src.InterestHolderId)
.Map(dest => dest.InterestHolder, src => src.InterestHolder)
.Inherits<Entity.IBaseEntity, BaseConcurrentModel>();

config.NewConfig<CompReqPayeeModel, Entity.PimsCompReqPayee>()
.Map(dest => dest.CompReqPayeeId, src => src.CompReqPayeeId)
.Map(dest => dest.CompensationRequisitionId, src => src.CompensationRequisitionId)
.Map(dest => dest.AcquisitionFileTeamId, src => src.AcquisitionFileTeamId)
.Map(dest => dest.AcquisitionOwnerId, src => src.AcquisitionOwnerId)
.Map(dest => dest.InterestHolderId, src => src.InterestHolderId)
.Inherits<BaseConcurrentModel, Entity.IBaseEntity>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Pims.Api.Models.Base;
using Pims.Api.Models.Concepts.AcquisitionFile;
using Pims.Api.Models.Concepts.InterestHolder;

namespace Pims.Api.Models.Concepts.CompensationRequisition
{
public class CompReqPayeeModel : BaseAuditModel
{
public long? CompReqPayeeId { get; set; }

public long CompensationRequisitionId { get; set; }

public CompensationRequisitionModel CompensationRequisition { get; set; }

public long AcquisitionOwnerId { get; set; }

public AcquisitionFileOwnerModel AcquisitionOwner { get; set; }

public long InterestHolderId { get; set; }

public InterestHolderModel InterestHolder { get; set; }

public long AcquisitionFileTeamId { get; set; }

public AcquisitionFileTeamModel AcquisitionFileTeam { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Mapster;
using Pims.Api.Models.Base;
using System.Linq;
using Entity = Pims.Dal.Entities;

namespace Pims.Api.Models.Concepts.CompensationRequisition
Expand Down Expand Up @@ -27,12 +28,6 @@ public void Register(TypeAdapterConfig config)
.Map(dest => dest.ExpropriationVestingDate, src => src.ExpropVestingDt)
.Map(dest => dest.GenerationDate, src => src.GenerationDt)
.Map(dest => dest.Financials, src => src.PimsCompReqFinancials)
.Map(dest => dest.AcquisitionOwnerId, src => src.AcquisitionOwnerId)
.Map(dest => dest.AcquisitionOwner, src => src.AcquisitionOwner)
.Map(dest => dest.InterestHolderId, src => src.InterestHolderId)
.Map(dest => dest.InterestHolder, src => src.InterestHolder)
.Map(dest => dest.AcquisitionFileTeamId, src => src.AcquisitionFileTeamId)
.Map(dest => dest.AcquisitionFileTeam, src => src.AcquisitionFileTeam)
.Map(dest => dest.LegacyPayee, src => src.LegacyPayee)
.Map(dest => dest.IsPaymentInTrust, src => src.IsPaymentInTrust)
.Map(dest => dest.GstNumber, src => src.GstNumber)
Expand All @@ -41,7 +36,7 @@ public void Register(TypeAdapterConfig config)
.Map(dest => dest.DetailedRemarks, src => src.DetailedRemarks)
.Map(dest => dest.AlternateProjectId, src => src.AlternateProjectId)
.Map(dest => dest.AlternateProject, src => src.AlternateProject)
.Map(dest => dest.CompReqLeaseStakeholder, src => src.PimsLeaseStakeholderCompReqs)
.Map(dest => dest.CompReqLeaseStakeholders, src => src.PimsLeaseStakeholderCompReqs)
.Map(dest => dest.CompReqAcquisitionProperties, src => src.PimsPropAcqFlCompReqs)
.Map(dest => dest.CompReqLeaseProperties, src => src.PimsPropLeaseCompReqs)
.Inherits<Entity.IBaseAppEntity, BaseAuditModel>();
Expand All @@ -61,9 +56,6 @@ public void Register(TypeAdapterConfig config)
.Map(dest => dest.ExpropVestingDt, src => src.ExpropriationVestingDate)
.Map(dest => dest.GenerationDt, src => src.GenerationDate)
.Map(dest => dest.PimsCompReqFinancials, src => src.Financials)
.Map(dest => dest.AcquisitionOwnerId, src => src.AcquisitionOwnerId)
.Map(dest => dest.InterestHolderId, src => src.InterestHolderId)
.Map(dest => dest.AcquisitionFileTeamId, src => src.AcquisitionFileTeamId)
.Map(dest => dest.LegacyPayee, src => src.LegacyPayee)
.Map(dest => dest.IsPaymentInTrust, src => src.IsPaymentInTrust)
.Map(dest => dest.GstNumber, src => src.GstNumber)
Expand All @@ -72,7 +64,7 @@ public void Register(TypeAdapterConfig config)
.Map(dest => dest.DetailedRemarks, src => src.DetailedRemarks)
.Map(dest => dest.AlternateProjectId, src => src.AlternateProjectId)
.Map(dest => dest.AlternateProject, src => src.AlternateProject)
.Map(dest => dest.PimsLeaseStakeholderCompReqs, src => src.CompReqLeaseStakeholder)
.Map(dest => dest.PimsLeaseStakeholderCompReqs, src => src.CompReqLeaseStakeholders)
.Map(dest => dest.PimsPropAcqFlCompReqs, src => src.CompReqAcquisitionProperties)
.Map(dest => dest.PimsPropLeaseCompReqs, src => src.CompReqLeaseProperties)
.Inherits<BaseAuditModel, Entity.IBaseAppEntity>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using Pims.Api.Models.Base;
using Pims.Api.Models.Concepts.AcquisitionFile;
using Pims.Api.Models.Concepts.FinancialCode;
using Pims.Api.Models.Concepts.InterestHolder;
using Pims.Api.Models.Concepts.Project;

namespace Pims.Api.Models.Concepts.CompensationRequisition
Expand Down Expand Up @@ -46,18 +45,6 @@ public class CompensationRequisitionModel : BaseAuditModel

public List<CompensationFinancialModel> Financials { get; set; }

public long? AcquisitionOwnerId { get; set; }

public AcquisitionFileOwnerModel AcquisitionOwner { get; set; }

public long? InterestHolderId { get; set; }

public InterestHolderModel InterestHolder { get; set; }

public long? AcquisitionFileTeamId { get; set; }

public AcquisitionFileTeamModel AcquisitionFileTeam { get; set; }

public string LegacyPayee { get; set; }

public bool? IsPaymentInTrust { get; set; }
Expand All @@ -72,7 +59,9 @@ public class CompensationRequisitionModel : BaseAuditModel

public ProjectModel AlternateProject { get; set; }

public IEnumerable<CompReqLeaseStakeholderModel> CompReqLeaseStakeholder { get; set; }
public IEnumerable<CompReqPayeeModel> CompReqPayees { get; set; }

public IEnumerable<CompReqLeaseStakeholderModel> CompReqLeaseStakeholders { get; set; }

public IEnumerable<CompReqAcquisitionPropertyModel> CompReqAcquisitionProperties { get; set; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,6 @@ public PimsCompensationRequisition GetById(long compensationRequisitionId)
.Include(x => x.ChartOfAccounts)
.Include(x => x.Responsibility)
.Include(c => c.PimsCompReqFinancials)
.ThenInclude(y => y.FinancialActivityCode)
.Include(x => x.AcquisitionOwner)
.Include(x => x.AcquisitionFileTeam)
.Include(x => x.InterestHolder)
.Include(x => x.AlternateProject)
.Include(x => x.PimsLeaseStakeholderCompReqs)
.ThenInclude(y => y.LeaseStakeholder)
Expand Down Expand Up @@ -184,12 +180,31 @@ public List<PimsPropertyLease> GetLeaseCompReqPropertiesById(long compensationRe
.ToList();
}

public IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long id)
public IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long compReqId)
{
return Context.PimsCompReqFinancials
.AsNoTracking()
.Include(y => y.FinancialActivityCode)
.Where(x => x.CompensationRequisitionId == id)
.Where(x => x.CompensationRequisitionId == compReqId)
.ToList();
}

public IEnumerable<PimsCompReqPayee> GetCompensationRequisitionPayees(long compReqId)
{
return Context.PimsCompReqPayees
.AsNoTracking()
.Include(x => x.AcquisitionOwner)
.Include(x => x.AcquisitionFileTeam)
.ThenInclude(y => y.Person)
.Include(x => x.AcquisitionFileTeam)
.ThenInclude(y => y.Organization)
.Include(x => x.InterestHolder)
.ThenInclude(y => y.InterestHolderTypeCodeNavigation)
.Include(x => x.InterestHolder)
.ThenInclude(y => y.Person)
.Include(x => x.InterestHolder)
.ThenInclude(y => y.Organization)
.Where(x => x.CompensationRequisitionId == compReqId)
.ToList();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ public interface ICompensationRequisitionRepository : IRepository<PimsCompensati

List<PimsPropertyLease> GetLeaseCompReqPropertiesById(long compensationRequisitionId);

IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long id);
IEnumerable<PimsCompReqFinancial> GetCompensationRequisitionFinancials(long compReqId);

IEnumerable<PimsCompReqPayee> GetCompensationRequisitionPayees(long compReqId);
}
}
14 changes: 14 additions & 0 deletions source/backend/entities/Partials/PimsCompReqPayee.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.ComponentModel.DataAnnotations.Schema;

namespace Pims.Dal.Entities
{

/// <summary>
/// PimsCompReqPayee class, provides an entity for the datamodel to manage the relationship between Compensation Requisitions and the payee.
/// </summary>
public partial class PimsCompReqPayee : StandardIdentityBaseAppEntity<long>, IBaseAppEntity
{
[NotMapped]
public override long Internal_Id { get => CompReqPayeeId; set => CompReqPayeeId = value; }
}
}
Loading