Skip to content

Commit

Permalink
PSP-7247 : View disposition file (offers and sale) (#3669)
Browse files Browse the repository at this point in the history
Co-authored-by: Eduardo Herrera <Eduardo.Herrera@quartech.com>
  • Loading branch information
eddherrera and Eduardo Herrera committed Dec 21, 2023
1 parent e230d02 commit 81d77b5
Show file tree
Hide file tree
Showing 47 changed files with 3,557 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Microsoft.Extensions.Logging;
using Pims.Api.Areas.Acquisition.Controllers;
using Pims.Api.Models.Concepts.DispositionFile;
using Pims.Api.Models.Models.Concepts.DispositionFile;
using Pims.Api.Policies;
using Pims.Api.Services;
using Pims.Core.Extensions;
Expand Down Expand Up @@ -176,6 +177,48 @@ public IActionResult GetDispositionTeamMembers()
return new JsonResult(_mapper.Map<IEnumerable<DispositionFileTeamModel>>(team));
}

[HttpGet("{id:long}/offers")]
[HasPermission(Permissions.DispositionView)]
[Produces("application/json")]
[ProducesResponseType(typeof(IEnumerable<DispositionFileOfferModel>), 200)]
[SwaggerOperation(Tags = new[] { "dispositionfile" })]
[TypeFilter(typeof(NullJsonResultFilter))]
public IActionResult GetDispositionFileOffers([FromRoute]long id)
{
_logger.LogInformation(
"Request received by Controller: {Controller}, Action: {ControllerAction}, User: {User}, DateTime: {DateTime}",
nameof(DispositionFileController),
nameof(GetDispositionFileOffers),
User.GetUsername(),
DateTime.Now);

_logger.LogInformation("Dispatching to service: {Service}", _dispositionService.GetType());

var dispositionOffers = _dispositionService.GetOffers(id);
return new JsonResult(_mapper.Map<IEnumerable<DispositionFileOfferModel>>(dispositionOffers));
}

[HttpGet("{id:long}/sale")]
[HasPermission(Permissions.DispositionView)]
[Produces("application/json")]
[ProducesResponseType(typeof(DispositionFileSaleModel), 200)]
[SwaggerOperation(Tags = new[] { "dispositionfile" })]
[TypeFilter(typeof(NullJsonResultFilter))]
public IActionResult GetDispositionFileSales([FromRoute]long id)
{
_logger.LogInformation(
"Request received by Controller: {Controller}, Action: {ControllerAction}, User: {User}, DateTime: {DateTime}",
nameof(DispositionFileController),
nameof(GetDispositionFileSales),
User.GetUsername(),
DateTime.Now);

_logger.LogInformation("Dispatching to service: {Service}", _dispositionService.GetType());

var dispositionSale = _dispositionService.GetDispositionFileSale(id);
return new JsonResult(_mapper.Map<DispositionFileSaleModel>(dispositionSale));
}

#endregion
}
}
16 changes: 16 additions & 0 deletions source/backend/api/Services/DispositionFileService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,22 @@ public IEnumerable<PimsDispositionFileTeam> GetTeamMembers()
return teamFilterOptions;
}

public IEnumerable<PimsDispositionOffer> GetOffers(long dispositionFileId)
{
_logger.LogInformation("Getting disposition file offers with DispositionFileId: {id}", dispositionFileId);
_user.ThrowIfNotAuthorized(Permissions.DispositionView);

return _dispositionFileRepository.GetDispositionOffers(dispositionFileId);
}

public PimsDispositionSale GetDispositionFileSale(long dispositionFileId)
{
_logger.LogInformation("Getting disposition file sales with DispositionFileId: {id}", dispositionFileId);
_user.ThrowIfNotAuthorized(Permissions.DispositionView);

return _dispositionFileRepository.GetDispositionFileSale(dispositionFileId);
}

private void ReprojectPropertyLocationsToWgs84(IEnumerable<PimsDispositionFileProperty> dispositionPropertyFiles)
{
foreach (var dispositionProperty in dispositionPropertyFiles)
Expand Down
4 changes: 4 additions & 0 deletions source/backend/api/Services/IDispositionFileService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,9 @@ public interface IDispositionFileService
IEnumerable<PimsDispositionFileProperty> GetProperties(long id);

IEnumerable<PimsDispositionFileTeam> GetTeamMembers();

IEnumerable<PimsDispositionOffer> GetOffers(long dispositionFileId);

PimsDispositionSale GetDispositionFileSale(long dispositionFileId);
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using Mapster;
using Entity = Pims.Dal.Entities;

Expand Down Expand Up @@ -26,7 +28,14 @@ public void Register(TypeAdapterConfig config)
.Map(dest => dest.InitiatingDocumentTypeCode, src => src.DispositionInitiatingDocTypeCodeNavigation)
.Map(dest => dest.DispositionTypeOther, src => src.OtherDispositionType)
.Map(dest => dest.InitiatingDocumentTypeOther, src => src.OtherInitiatingDocType)
.Map(dest => dest.AppraisedValueAmount, src => src.AppaisedValue)
.Map(dest => dest.AppraisalDate, src => src.AppraisalDt)
.Map(dest => dest.BcaValueAmount, src => src.BcaValueAmt)
.Map(dest => dest.BcaRollYear, src => src.BcaRollYear)
.Map(dest => dest.ListPriceAmount, src => src.ListPriceAmt)
.Map(dest => dest.DispositionTeam, src => src.PimsDispositionFileTeams)
.Map(dest => dest.DispositionOffers, src => src.PimsDispositionOffers)
.Map(dest => dest.DispositionSale, src => src.PimsDispositionSales.FirstOrDefault())
.Map(dest => dest.FileProperties, src => src.PimsDispositionFileProperties);

config.NewConfig<DispositionFileModel, Entity.PimsDispositionFile>()
Expand All @@ -47,7 +56,14 @@ public void Register(TypeAdapterConfig config)
.Map(dest => dest.DispositionInitiatingDocTypeCode, src => src.InitiatingDocumentTypeCode.Id)
.Map(dest => dest.OtherDispositionType, src => src.DispositionTypeOther)
.Map(dest => dest.OtherInitiatingDocType, src => src.InitiatingDocumentTypeOther)
.Map(dest => dest.AppaisedValue, src => src.AppraisedValueAmount)
.Map(dest => dest.AppraisalDt, src => src.AppraisalDate)
.Map(dest => dest.BcaValueAmt, src => src.BcaValueAmount)
.Map(dest => dest.BcaRollYear, src => src.BcaRollYear)
.Map(dest => dest.ListPriceAmt, src => src.ListPriceAmount)
.Map(dest => dest.PimsDispositionFileTeams, src => src.DispositionTeam)
.Map(dest => dest.PimsDispositionOffers, src => src.DispositionOffers)
.Map(dest => dest.PimsDispositionSales, src => new List<DispositionFileModel> { src }, srcCond => srcCond == null)
.Map(dest => dest.PimsDispositionFileProperties, src => src.FileProperties);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using Pims.Api.Models.Base;
using Pims.Api.Models.Concepts.File;
using Pims.Api.Models.Models.Concepts.DispositionFile;

/*
* Frontend model
Expand Down Expand Up @@ -78,6 +79,31 @@ public class DispositionFileModel : FileModel
/// </summary>
public TypeModel<short> RegionCode { get; set; }

/// <summary>
/// PIMS_DISPOSITION_SALE => get/set - The Disposition Apprasided Value amount.
/// </summary>
public decimal? AppraisedValueAmount { get; set; }

/// <summary>
/// PIMS_DISPOSITION_SALE => get/set - The Date the disposition was appraised.
/// </summary>
public DateTime? AppraisalDate { get; set; }

/// <summary>
/// PIMS_DISPOSITION_SALE => get/set - BCA value amount.
/// </summary>
public decimal? BcaValueAmount { get; set; }

/// <summary>
/// PIMS_DISPOSITION_SALE => get/set - BCA roll year.
/// </summary>
public string BcaRollYear { get; set; }

/// <summary>
/// PIMS_DISPOSITION_SALE => get/set - BCA list price amount.
/// </summary>
public decimal? ListPriceAmount { get; set; }

/// <summary>
/// get/set - A list of disposition property relationships.
/// </summary>
Expand All @@ -87,6 +113,16 @@ public class DispositionFileModel : FileModel
/// get/set - A list of disposition file team relationships.
/// </summary>
public IList<DispositionFileTeamModel> DispositionTeam { get; set; }

/// <summary>
/// get/set - A list of disposition file offers.
/// </summary>
public IList<DispositionFileOfferModel> DispositionOffers { get; set; }

/// <summary>
/// get/set - A list of disposition file sales.
/// </summary>
public DispositionFileSaleModel DispositionSale { get; set; }
#endregion
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Mapster;
using Pims.Api.Models.Base;
using Entity = Pims.Dal.Entities;

namespace Pims.Api.Models.Models.Concepts.DispositionFile
{
public class DispositionFileOfferMap : IRegister
{
public void Register(TypeAdapterConfig config)
{
config.NewConfig<Entity.PimsDispositionOffer, DispositionFileOfferModel>()
.Map(dest => dest.Id, src => src.DispositionOfferId)
.Map(dest => dest.DispositionFileId, src => src.DispositionFileId)
.Map(dest => dest.DispositionOfferStatusTypeCode, src => src.DispositionOfferStatusTypeCode)
.Map(dest => dest.DispositionOfferStatusType, src => src.DispositionOfferStatusTypeCodeNavigation)
.Map(dest => dest.OfferName, src => src.OfferName)
.Map(dest => dest.OfferDate, src => src.OfferDt)
.Map(dest => dest.OfferExpiryDate, src => src.OfferExpiryDt)
.Map(dest => dest.OfferAmount, src => src.OfferAmt)
.Map(dest => dest.OfferNote, src => src.OfferNote)
.Inherits<Entity.IBaseEntity, BaseConcurrentModel>();

config.NewConfig<DispositionFileOfferModel, Entity.PimsDispositionOffer>()
.Map(dest => dest.DispositionOfferId, src => src.Id)
.Map(dest => dest.DispositionFileId, src => src.DispositionFileId)
.Map(dest => dest.DispositionOfferStatusTypeCode, src => src.DispositionOfferStatusTypeCode)
.Map(dest => dest.OfferName, src => src.OfferName)
.Map(dest => dest.OfferDt, src => src.OfferDate)
.Map(dest => dest.OfferExpiryDt, src => src.OfferExpiryDate)
.Map(dest => dest.OfferAmt, src => src.OfferAmount)
.Inherits<BaseConcurrentModel, Entity.IBaseEntity>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using System;
using Pims.Api.Models.Base;

namespace Pims.Api.Models.Models.Concepts.DispositionFile
{
public class DispositionFileOfferModel : BaseConcurrentModel
{
/// <summary>
/// get/set - The relationship id.
/// </summary>
public long Id { get; set; }

/// <summary>
/// Parent Disposition File.
/// </summary>
public long DispositionFileId { get; set; }

/// <summary>
/// Disposition Offer Status Code.
/// </summary>
public string DispositionOfferStatusTypeCode { get; set; }

/// <summary>
/// Disposition Offer Status Object.
/// </summary>
public TypeModel<string> DispositionOfferStatusType { get; set; }

/// <summary>
/// Disposition Offer Name.
/// </summary>
public string OfferName { get; set; }

/// <summary>
/// Disposition Offer Date.
/// </summary>
public DateTime OfferDate { get; set; }

/// <summary>
/// Disposition Offer Expiration Date.
/// </summary>
public DateTime? OfferExpiryDate { get; set; }

/// <summary>
/// Disposition Offer Amount.
/// </summary>
public decimal OfferAmount { get; set; }

/// <summary>
/// Disposition Offer Note.
/// </summary>
public string OfferNote { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using Mapster;
using Entity = Pims.Dal.Entities;

namespace Pims.Api.Models.Models.Concepts.DispositionFile
{
public class DispositionFileSaleMap : IRegister
{
public void Register(TypeAdapterConfig config)
{
config.NewConfig<Entity.PimsDispositionSale, DispositionFileSaleModel>()
.Map(dest => dest.Id, src => src.DispositionSaleId)
.Map(dest => dest.DispositionFileId, src => src.DispositionFileId)
.Map(dest => dest.FinalConditionRemovalDate, src => src.FinalConditionRemovalDt)
.Map(dest => dest.SaleCompletionDate, src => src.SaleCompletionDt)
.Map(dest => dest.SaleFiscalYear, src => src.SaleFiscalYear)
.Map(dest => dest.FinalSaleAmount, src => src.FinalSaleAmt)
.Map(dest => dest.RealtorCommissionAmount, src => src.RealtorCommisissionAmt)
.Map(dest => dest.IsGstRequired, src => src.IsGstRequired)
.Map(dest => dest.GstCollectedAmount, src => src.GstCollectedAmt)
.Map(dest => dest.NetBookAmount, src => src.NetBookAmt)
.Map(dest => dest.TotalCostAmount, src => src.TotalCostAmt)
.Map(dest => dest.NetProceedsBeforeSppAmount, src => src.NetProceedsBeforeSppAmt)
.Map(dest => dest.NetProceedsAfterSppAmount, src => src.NetProceedsAfterSppAmt)
.Map(dest => dest.SppAmount, src => src.SppAmt)
.Map(dest => dest.RemediationAmount, src => src.RemediationAmt)
.Map(dest => dest.DispositionPurchasers, src => src.PimsDispositionPurchasers)
.Map(dest => dest.DispositionPurchaserAgents, src => src.PimsDspPurchAgents)
.Map(dest => dest.DispositionPurchaserSolicitors, src => src.PimsDspPurchSolicitors);

config.NewConfig<DispositionFileSaleModel, Entity.PimsDispositionSale>()
.Map(dest => dest.DispositionSaleId, src => src.Id)
.Map(dest => dest.DispositionFileId, src => src.DispositionFileId)
.Map(dest => dest.FinalConditionRemovalDt, src => src.FinalConditionRemovalDate)
.Map(dest => dest.SaleCompletionDt, src => src.SaleCompletionDate)
.Map(dest => dest.SaleFiscalYear, src => src.SaleFiscalYear)
.Map(dest => dest.FinalSaleAmt, src => src.FinalSaleAmount)
.Map(dest => dest.RealtorCommisissionAmt, src => src.RealtorCommissionAmount)
.Map(dest => dest.IsGstRequired, src => src.IsGstRequired)
.Map(dest => dest.GstCollectedAmt, src => src.GstCollectedAmount)
.Map(dest => dest.NetBookAmt, src => src.NetBookAmount)
.Map(dest => dest.TotalCostAmt, src => src.TotalCostAmount)
.Map(dest => dest.NetProceedsBeforeSppAmt, src => src.NetProceedsBeforeSppAmount)
.Map(dest => dest.NetProceedsAfterSppAmt, src => src.NetProceedsAfterSppAmount)
.Map(dest => dest.SppAmt, src => src.SppAmount)
.Map(dest => dest.RemediationAmt, src => src.RemediationAmount)
.Map(dest => dest.PimsDispositionPurchasers, src => src.DispositionPurchasers)
.Map(dest => dest.PimsDspPurchAgents, src => src.DispositionPurchaserAgents)
.Map(dest => dest.PimsDspPurchSolicitors, src => src.DispositionPurchaserSolicitors);
}
}
}
Loading

0 comments on commit 81d77b5

Please sign in to comment.