From 7481ba57d2f20113ecc2294cf96246d84f2089e0 Mon Sep 17 00:00:00 2001 From: Yong Khor Date: Fri, 9 May 2025 18:43:44 +1200 Subject: [PATCH 1/2] support retail model creation API - create all new dto for retail - setup api client in service builder --- .../Model/ForburyModelRetailApiClient.cs | 36 ++++++ .../Retail/Input/Capex/BudgetedCapexDto.cs | 26 +++++ .../Dto/Model/Retail/Input/Capex/CapexDto.cs | 11 ++ .../Retail/Input/Capex/RefurbishmentDto.cs | 9 ++ .../Retail/Input/Capex/SinkingFundDto.cs | 16 +++ .../Model/Retail/Input/Enums/AgreementType.cs | 10 ++ .../Retail/Input/Enums/BudgetedCapexType.cs | 10 ++ .../Model/Retail/Input/Enums/CalendarBasis.cs | 8 ++ .../Model/Retail/Input/Enums/CarLevyType.cs | 9 ++ .../Model/Retail/Input/Enums/GrowthBasis.cs | 8 ++ .../Dto/Model/Retail/Input/Enums/LeaseType.cs | 10 ++ .../Model/Retail/Input/Enums/MakeGoodType.cs | 9 ++ .../Retail/Input/Enums/RecoveryLeaseType.cs | 10 ++ .../Model/Retail/Input/Enums/RentBasisType.cs | 9 ++ .../Retail/Input/Enums/RentFreeBasisType.cs | 8 ++ .../Retail/Input/Enums/ReviewThresholdType.cs | 9 ++ .../Model/Retail/Input/Future/FuturesDto.cs | 24 ++++ .../Input/Future/GrowthAssumptionDto.cs | 11 ++ .../Input/Future/RenewalAssumptionDto.cs | 44 +++++++ .../Model/Retail/Input/General/GeneralDto.cs | 37 ++++++ .../Input/GeneralLedger/GeneralLedgerDto.cs | 14 +++ .../Retail/Input/Outgoings/OutgoingsDto.cs | 14 +++ .../Input/Outgoings/OutgoingsItemDto.cs | 14 +++ .../Retail/Input/Reporting/ReportingDto.cs | 32 +++++ .../Incentives/CommencementIncentivesDto.cs | 11 ++ .../Incentives/IncentiveAmortisationDto.cs | 13 +++ .../Space/Incentives/LumpSumIncentivesDto.cs | 13 +++ .../Incentives/OutstandingIncentivesDto.cs | 9 ++ .../Space/Incentives/RebateIncentivesDto.cs | 15 +++ .../Space/Incentives/RentFreeIncentivesDto.cs | 19 +++ .../Retail/Input/Space/Lease/LeaseDto.cs | 109 ++++++++++++++++++ .../MovingAnnualTurnoverDto.cs | 21 ++++ .../Lease/PercentageRent/PercentageRentDto.cs | 28 +++++ .../Input/Space/Market/MarketAssumptionDto.cs | 9 ++ .../Recovery/IncreaseOverBaseRecoveryDto.cs | 12 ++ .../Input/Space/Recovery/NetRecoveryDto.cs | 8 ++ .../Input/Space/Recovery/RecoveryDto.cs | 12 ++ .../Space/Recovery/SemiGrossRecoveryDto.cs | 7 ++ .../Input/Space/Renewal/FirstRenewalDto.cs | 30 +++++ .../Space/Review/CommencementReviewDto.cs | 9 ++ .../Space/Review/FirstRenewalReviewDto.cs | 9 ++ .../Input/Space/Review/RentReviewDto.cs | 16 +++ .../Dto/Model/Retail/Input/Space/SpaceDto.cs | 32 +++++ .../Model/Retail/Input/ValuationInputDto.cs | 24 ++++ .../Model/IForburyModelRetailApiClient.cs | 17 +++ .../API/v1/ServiceBuilder.cs | 1 + 46 files changed, 812 insertions(+) create mode 100644 src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CarLevyType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RecoveryLeaseType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/MovingAnnualTurnover/MovingAnnualTurnoverDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/PercentageRent/PercentageRentDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs diff --git a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs new file mode 100644 index 0000000..d1d7a0b --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs @@ -0,0 +1,36 @@ +using Forbury.Integrations.API.Models.Configuration; +using Forbury.Integrations.API.v1.Dto.Model; +using Forbury.Integrations.API.v1.Interfaces.Model; +using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Options; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input; + +namespace Forbury.Integrations.API.v1.Clients.Model +{ + public class ForburyModelRetailApiClient : ForburyModelApiClient, IForburyModelRetaillApiClient + { + public ForburyModelRetailApiClient(HttpClient httpClient, + IOptions configuration) : + base(httpClient, configuration) + { } + + public async Task CreateModel(ValuationInputDto data, + string googlePropertyId, + int? teamId, + string externalId = null, + string fullAddress = null, + CancellationToken cancellationToken = default) + { + QueryBuilder queryBuilder = new QueryBuilder(); + if (!string.IsNullOrEmpty(googlePropertyId)) queryBuilder.Add("googlePropertyId", googlePropertyId); + if (teamId.HasValue) queryBuilder.Add("teamId", teamId.ToString()); + if (!string.IsNullOrEmpty(externalId)) queryBuilder.Add("externalId", externalId); + if (!string.IsNullOrEmpty(fullAddress)) queryBuilder.Add("fullAddress", fullAddress); + + return await PostAsync($"retail/{queryBuilder.ToQueryString()}", data, cancellationToken); + } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs new file mode 100644 index 0000000..822d13c --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex +{ + public class BudgetedCapexDto + { + public string Name { get; set; } + public string Category { get; set; } + [JsonConverter(typeof(StringEnumConverter))] + public BudgetedCapexType Type { get; set; } + public string GrowthRateName { get; set; } + /// + /// Amounts are based of Type (annual or monthly). + /// + public List Amounts { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? StartDate { get; set; } + public int? Months { get; set; } + public decimal? TotalAmount { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs new file mode 100644 index 0000000..e68d9bd --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex +{ + public class CapexDto + { + public SinkingFundDto SinkingFund { get; set; } + public List BudgetedCapexs { get; set; } + public RefurbishmentDto Refurbishment { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs new file mode 100644 index 0000000..60a85b0 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex +{ + public class RefurbishmentDto + { + public List Amounts { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs new file mode 100644 index 0000000..8df88c8 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs @@ -0,0 +1,16 @@ +using System; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex +{ + public class SinkingFundDto + { + public string Rate { get; set; } + public string Amount { get; set; } + public bool? Deduct { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? StartDate { get; set; } + public string GrowthRateName { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs new file mode 100644 index 0000000..903ba4f --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs @@ -0,0 +1,10 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum AgreementType + { + None, + New, + Renewal, + Development + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs new file mode 100644 index 0000000..232106c --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs @@ -0,0 +1,10 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum BudgetedCapexType + { + None, + Specific, + Annual, + Monthly + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs new file mode 100644 index 0000000..0088ded --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs @@ -0,0 +1,8 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum CalendarBasis + { + ModelYear, + CalendarYear + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CarLevyType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CarLevyType.cs new file mode 100644 index 0000000..7b264ae --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CarLevyType.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum CarLevyType + { + None, + Leasee, + Leaseor + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs new file mode 100644 index 0000000..9da0d87 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs @@ -0,0 +1,8 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum GrowthBasis + { + Net, + Gross + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs new file mode 100644 index 0000000..baf7f00 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs @@ -0,0 +1,10 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum LeaseType + { + G, + IOB, + S, + N + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs new file mode 100644 index 0000000..e265059 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum MakeGoodType + { + None, + Partial, + Full + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RecoveryLeaseType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RecoveryLeaseType.cs new file mode 100644 index 0000000..db498bd --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RecoveryLeaseType.cs @@ -0,0 +1,10 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum RecoveryLeaseType + { + Net, + Gross, + SemiGross, + IncreaseOverBase + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs new file mode 100644 index 0000000..59cca28 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum RentBasisType + { + Area, + Car, + Other + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs new file mode 100644 index 0000000..f8eff6b --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs @@ -0,0 +1,8 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum RentFreeBasisType + { + Gross, + Base + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs new file mode 100644 index 0000000..a7b33cd --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums +{ + public enum ReviewThresholdType + { + None, + Market, + MarketReview + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs new file mode 100644 index 0000000..cf94ed5 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future +{ + public class FuturesDto + { + [JsonConverter(typeof(StringEnumConverter))] + public CalendarBasis MarketYearBasis { get; set; } + [JsonConverter(typeof(StringEnumConverter))] + public CalendarBasis OutgoingsYearBasis { get; set; } + [JsonConverter(typeof(StringEnumConverter))] + public CalendarBasis EscalationYearBasis { get; set; } + [JsonConverter(typeof(StringEnumConverter))] + public GrowthBasis MarketRentGrowthBasis { get; set; } + public decimal? PriorYearCpi { get; set; } + public bool? DeferOutgoings { get; set; } + public List EscalationAssumptions { get; set; } + public List MarketGrowthAssumptions { get; set; } + public List RenewalAssumptions { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs new file mode 100644 index 0000000..e117263 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future +{ + public class GrowthAssumptionDto + { + public string Name { get; set; } + public decimal? IncreaseOnCpi { get; set; } + public List Rates { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs new file mode 100644 index 0000000..23f55d8 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future +{ + public class RenewalAssumptionDto + { + public string Name { get; set; } + public decimal? VacantDowntimeMonths { get; set; } + public decimal? RenewalProbabilityPercent { get; set; } + public int? NewLeaseYears { get; set; } + public int? NewLeaseReviewYears { get; set; } + public string NewLeaseStructure { get; set; } + public decimal? FutureDowntimeMonths { get; set; } + public decimal? IncentivesPercent { get; set; } + public decimal? IncentivesProbabilityPercent { get; set; } + public decimal? LeasingCostsRenewingPercent { get; set; } + public decimal? LeasingCostsNewPercent { get; set; } + public decimal? RefurbAllowanceRenewing { get; set; } + public decimal? RefurbAllowanceNew { get; set; } + public decimal? MarketCapRate { get; set; } + public List NewLeaseIncentives { get; set; } + public List IncentiveProbabilityPercentages { get; set; } + + /// + /// Default Market Growth Rate for MAT & Rent + /// + public decimal? DefaultMarketGrowthRate { get; set; } + + /// + /// Moving Annual Turnover Growth Rates by years (up to 20 years) + /// + public List MATGrowthRates { get; set; } + + /// + /// Number of months of incentive for renewing lease + /// + public decimal? IncentiveRenewingMonths { get; set; } + + /// + /// Number of months of incentive for new lease + /// + public decimal? IncentiveNewLeaseMonths { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs new file mode 100644 index 0000000..b8ea9eb --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs @@ -0,0 +1,37 @@ +using System; +using Forbury.Integrations.API.v1.Dto.Enums; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.General +{ + public class GeneralDto + { + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? ValuationDate { get; set; } + [JsonConverter(typeof(StringEnumConverter))] + public ValuationType ValuationType { get; set; } + public string ValuationMethod { get; set; } + public decimal? RoundedAdoptedValue { get; set; } + public decimal? AdoptedValueAdjustment { get; set; } + public decimal? CapRateInitial { get; set; } + public decimal? CapRateMarket { get; set; } + public decimal? CapRateTerminalBps { get; set; } + public decimal? InterestValued { get; set; } + public string IncentiveBasis { get; set; } + public decimal? ExpiryAllowanceMonths { get; set; } + public decimal? TerminalExpiryAllowanceMonths { get; set; } + public decimal? DiscountRate { get; set; } + public decimal? CapRateTerminal { get; set; } + public int CashFlowPeriod { get; set; } + public decimal? BudgetedCapexAllowanceMonths { get; set; } + public decimal? SinkingFundAllowanceMonths { get; set; } + + /// + /// Property level Moving Annual Turnover setting + /// + public MovingAnnualTurnoverDto MAT { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs new file mode 100644 index 0000000..c9fc908 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger +{ + public class GeneralLedgerDto + { + public string Code { get; set; } + public string Description { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs new file mode 100644 index 0000000..54f51fe --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Outgoings +{ + public class OutgoingsDto + { + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? OutgoingsDate { get; set; } + public List Items { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs new file mode 100644 index 0000000..72a91a9 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs @@ -0,0 +1,14 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Outgoings +{ + public class OutgoingsItemDto + { + public string Name { get; set; } + public string Type { get; set; } + public string PcaCategory { get; set; } + public bool? IsRecoverable { get; set; } + public string GrowthRateName { get; set; } + public decimal? PreviousBudget { get; set; } + public decimal? CurrentBudget { get; set; } + public decimal? AdoptedBudget { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs new file mode 100644 index 0000000..9c4e539 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs @@ -0,0 +1,32 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Reporting +{ + public class ReportingDto + { + public string Proprietor { get; set; } + public decimal? SiteArea { get; set; } + public string LegalDescription { get; set; } + public string LocalGovernmentArea { get; set; } + public string Zoning { get; set; } + public string FloorSpaceRatio { get; set; } + public string PlanningScheme { get; set; } + public decimal? NabersEnergy { get; set; } + public decimal? NabersWater { get; set; } + public string YearBuilt { get; set; } + public string LastRefurbYear { get; set; } + public string Sector { get; set; } + public string SubSector { get; set; } + public string Precinct { get; set; } + public string Grade { get; set; } + public string OfficeFloors { get; set; } + public string EndOfTrip { get; set; } + public string PcaMarket { get; set; } + public string PcaCharacteristic { get; set; } + public string AreaLabels { get; set; } + public string Title { get; set; } + public string Company { get; set; } + public string JobReference { get; set; } + public string Purpose { get; set; } + public string PrimaryValuer { get; set; } + public string SecondaryValuer { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs new file mode 100644 index 0000000..e122485 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs @@ -0,0 +1,11 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives +{ + public class CommencementIncentivesDto + { + public decimal? CommencementBaseRent { get; set; } + public decimal? CommencementRecoveries { get; set; } + public decimal? Total { get; set; } + public string Type { get; set; } + public IncentiveAmortisationDto IncentiveAmortisation { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs new file mode 100644 index 0000000..fc42b07 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs @@ -0,0 +1,13 @@ +using System; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives +{ + public class IncentiveAmortisationDto + { + public decimal? PaidToDate { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? StartDate { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs new file mode 100644 index 0000000..934e616 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs @@ -0,0 +1,13 @@ +using System; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives +{ + public class LumpSumIncentivesDto + { + public decimal? Amount { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? PaymentDate { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs new file mode 100644 index 0000000..467435b --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives +{ + public class OutstandingIncentivesDto + { + public LumpSumIncentivesDto LumpSumIncentives { get; set; } + public RebateIncentivesDto RebateIncentives { get; set; } + public RentFreeIncentivesDto RentFreeIncentives { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs new file mode 100644 index 0000000..d46d09a --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs @@ -0,0 +1,15 @@ +using System; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives +{ + public class RebateIncentivesDto + { + public decimal? AmountMonthly { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? StartDate { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? EndDate { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs new file mode 100644 index 0000000..2285cc4 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs @@ -0,0 +1,19 @@ +using System; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives +{ + public class RentFreeIncentivesDto + { + [JsonConverter(typeof(StringEnumConverter))] + public RentFreeBasisType Basis { get; set; } + public decimal? PercentApplied { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? StartDate { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? EndDate { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs new file mode 100644 index 0000000..f206a6b --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.PercentageRent; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease +{ + public class LeaseDto + { + public decimal BaseRent { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public LeaseType LeaseType { get; set; } + + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? StartDate { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? ExpiryDate { get; set; } + + public string TenantName { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public AgreementType AgreementType { get; set; } + public string Industry { get; set; } + public string SubIndustry { get; set; } + public string ClassCode { get; set; } + + public bool IsHoldOver { get; set; } + public int HoldOverMonths { get; set; } + + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? BreakDate { get; set; } + public string BreakPenalty { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? BreakNoticeDate { get; set; } + + public bool HeadOfAgreement { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public MakeGoodType MakeGood { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? HeadOfAgreementSignedDate { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? LeaseSignedDate { get; set; } + public bool IsConfidential { get; set; } + public bool IsConfirmed { get; set; } + public string InformationSource { get; set; } + public string Comments { get; set; } + + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? PriorReviewDate { get; set; } + + [JsonConverter(typeof(StringEnumConverter))] + public CarLevyType CarLevy { get; set; } + + public OutstandingIncentivesDto OutstandingIncentives { get; set; } + public CommencementIncentivesDto CommencementIncentives { get; set; } + + public IncreaseOverBaseRecoveryDto IncreaseOverBaseRecoveries { get; set; } + public NetRecoveryDto NetRecoveries { get; set; } + public SemiGrossRecoveryDto SemiGrossRecoveries { get; set; } + + public List RentReviews { get; set; } + + /// + /// The MAT amount prior 12 months (GST inclusive/exclusive based on General.MAT.Prior12MonthsGstInclusive) + /// + public decimal? MATPrior12Months { get; set; } + + /// + /// The MAT amount last 12 months (GST inclusive/exclusive based on General.MAT.Prior12MonthsGstInclusive) + /// + public decimal? MATLast12Months { get; set; } + + /// + /// Provide up to 3 future options periods in years + /// + public int[] Options { get; set; } + + /// + /// The selected option index (0, 1, 2) zero based index, translated into 1, 2, 3 for the model. + /// + public int? AdoptedOption { get; set; } + + /// + /// GOC Cap deal until first review + /// + public decimal? GocCap { get; set; } + + /// + /// Review frequency in years + /// + public int? DefaultReviewFrequency { get; set; } + + /// + /// Review type (e.g. Fixed % such as 2.5%, CPI, CPI+1.25, %RentAvg2Y, GOC8.5%) + /// + public string DefaultReviewType { get; set; } + + public PercentageRentDto PercentageRent { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/MovingAnnualTurnover/MovingAnnualTurnoverDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/MovingAnnualTurnover/MovingAnnualTurnoverDto.cs new file mode 100644 index 0000000..fa483da --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/MovingAnnualTurnover/MovingAnnualTurnoverDto.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover +{ + public class MovingAnnualTurnoverDto + { + /// + /// True - GST Inclusive or False - Exclusive + /// + public bool Prior12MonthsGstInclusive { get; set; } + + /// + /// True - GST Inclusive or False - Exclusive + /// + public bool Last12MonthsGstInclusive { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/PercentageRent/PercentageRentDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/PercentageRent/PercentageRentDto.cs new file mode 100644 index 0000000..1ea79d1 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/PercentageRent/PercentageRentDto.cs @@ -0,0 +1,28 @@ +using Newtonsoft.Json.Converters; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.PercentageRent +{ + public class PercentageRentDto + { + /// + /// The type of percentage rent (supported input - "N" for natural, "U" for unnatural) + /// + public string Type { get; set; } + + /// + /// The percentage for natural breakeven + /// + public decimal? Percentage { get; set; } + + /// + /// Type of input for natural breakeven ("Base", "Base+Rec", "Promo") + /// + public string Basis { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs new file mode 100644 index 0000000..3a404cb --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Market +{ + public class MarketAssumptionDto + { + public string MarketRentBasis { get; set; } + public decimal? AdoptedMarketRent { get; set; } + public string RecoveryCode { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs new file mode 100644 index 0000000..b6cb254 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs @@ -0,0 +1,12 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery +{ + public class IncreaseOverBaseRecoveryDto : RecoveryDto + { + public string RecoveryCode { get; set; } + public string ReviewThreshold { get; set; } + public decimal? BaseAmount { get; set; } + public decimal? PercentageApplied { get; set; } + public decimal? Cap { get; set; } + public decimal? Collar { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs new file mode 100644 index 0000000..d457cc3 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs @@ -0,0 +1,8 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery +{ + public class NetRecoveryDto : RecoveryDto + { + public string RecoveryCode { get; set; } + public decimal? AmountPerAnnum { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs new file mode 100644 index 0000000..f1a1411 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs @@ -0,0 +1,12 @@ +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery +{ + public class RecoveryDto + { + [JsonConverter(typeof(StringEnumConverter))] + public RecoveryLeaseType Type { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs new file mode 100644 index 0000000..f9dffcc --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs @@ -0,0 +1,7 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery +{ + public class SemiGrossRecoveryDto : RecoveryDto + { + public decimal? AmountPerAnnum { get; set; } + } +} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs new file mode 100644 index 0000000..63caf86 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Renewal +{ + public class FirstRenewalDto + { + public string Type { get; set; } + public string TenantName { get; set; } + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? StartDate { get; set; } + public decimal? LeaseTermYears { get; set; } + public bool? UseInWale { get; set; } + + public decimal? RenewalProbabilityPercent { get; set; } + public decimal? RefurbPerMetreSquared { get; set; } + public decimal? DowntimeMonths { get; set; } + public decimal? IncentiveLumpSumPercent { get; set; } + public decimal? IncentiveRentFreePercent { get; set; } + public decimal? IncentiveRebatePercent { get; set; } + public decimal? AppliedIncentivesPercent { get; set; } + public decimal? LeasingCostsPercent { get; set; } + + public CommencementReviewDto CommencementRentReview { get; set; } + public List RentReviews { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs new file mode 100644 index 0000000..68a743e --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review +{ + public class CommencementReviewDto + { + public string Type { get; set; } + public decimal? Cap { get; set; } + public decimal? Collar { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs new file mode 100644 index 0000000..14b4e5f --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs @@ -0,0 +1,9 @@ +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review +{ + public class FirstRenewalReviewDto + { + public string Type { get; set; } + public decimal? Cap { get; set; } + public decimal? Collar { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs new file mode 100644 index 0000000..ed073fb --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs @@ -0,0 +1,16 @@ +using System; +using Forbury.Integrations.Helpers.Converters; +using Newtonsoft.Json; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review +{ + public class RentReviewDto + { + [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] + public DateTime? Date { get; set; } + public string Type { get; set; } + public decimal? Cap { get; set; } + public decimal? Collar { get; set; } + public decimal? Threshold { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs new file mode 100644 index 0000000..f431f1e --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs @@ -0,0 +1,32 @@ +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Market; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Renewal; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space +{ + public class SpaceDto + { + [JsonConverter(typeof(StringEnumConverter))] + public RentBasisType RentBasis { get; set; } + public decimal? LettableArea { get; set; } + public int? CarBays { get; set; } + public string Level { get; set; } + public string Suite { get; set; } + public string FloorAreaType { get; set; } + public string ViewAspect { get; set; } + public LeaseDto Lease { get; set; } + public FirstRenewalDto FirstRenewal { get; set; } + public MarketAssumptionDto MarketAssumption { get; set; } + public string RenewalAssumptionName { get; set; } + + /*** + * General Ledger code used to lookup on General Ledger list provided + */ + public string GeneralLedgerCode { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs new file mode 100644 index 0000000..42efde5 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using Forbury.Integrations.API.v1.Dto.Model.Interfaces; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.General; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Outgoings; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Reporting; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input +{ + public class ValuationInputDto : IModelInput + { + public GeneralDto General { get; set; } + public List Spaces { get; set; } + public ReportingDto Reporting { get; set; } + public CapexDto Capex { get; set; } + public OutgoingsDto Outgoings { get; set; } + public FuturesDto Futures { get; set; } + + public List GeneralLedgers { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs b/src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs new file mode 100644 index 0000000..b71bae5 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs @@ -0,0 +1,17 @@ +using System.Threading; +using System.Threading.Tasks; +using Forbury.Integrations.API.v1.Dto.Model; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input; + +namespace Forbury.Integrations.API.v1.Interfaces.Model +{ + public interface IForburyModelRetaillApiClient : IForburyModelApiClient + { + Task CreateModel(ValuationInputDto data, + string googlePropertyId, + int? teamId, + string externalId = null, + string fullAddress = null, + CancellationToken cancellationToken = default); + } +} diff --git a/src/Forbury.Integrations/API/v1/ServiceBuilder.cs b/src/Forbury.Integrations/API/v1/ServiceBuilder.cs index 7f1681c..5e27c0c 100644 --- a/src/Forbury.Integrations/API/v1/ServiceBuilder.cs +++ b/src/Forbury.Integrations/API/v1/ServiceBuilder.cs @@ -13,6 +13,7 @@ internal static void AddForburyServices(IServiceCollection services, string uriP services.AddForburyHttpClient(uriPrefix, "model"); services.AddForburyHttpClient(uriPrefix, "model"); services.AddForburyHttpClient(uriPrefix, "model"); + services.AddForburyHttpClient(uriPrefix, "model"); services.AddForburyHttpClient(uriPrefix, "product"); services.AddForburyHttpClient(uriPrefix, "property"); services.AddForburyHttpClient(uriPrefix, "team"); From 9c7646674c43667db8583262407cd86270f897e5 Mon Sep 17 00:00:00 2001 From: Yong Khor Date: Tue, 13 May 2025 20:07:10 +1200 Subject: [PATCH 2/2] build retail valuation input dto on commercial dto --- .../Model/ForburyModelRetailApiClient.cs | 4 +- .../Model/Commercial/Input/Space/SpaceDto.cs | 5 + .../Retail/Input/Capex/BudgetedCapexDto.cs | 26 ----- .../Dto/Model/Retail/Input/Capex/CapexDto.cs | 11 -- .../Retail/Input/Capex/RefurbishmentDto.cs | 9 -- .../Retail/Input/Capex/SinkingFundDto.cs | 16 --- .../Model/Retail/Input/Enums/AgreementType.cs | 10 -- .../Retail/Input/Enums/BudgetedCapexType.cs | 10 -- .../Model/Retail/Input/Enums/CalendarBasis.cs | 8 -- .../Model/Retail/Input/Enums/GrowthBasis.cs | 8 -- .../Dto/Model/Retail/Input/Enums/LeaseType.cs | 10 -- .../Model/Retail/Input/Enums/MakeGoodType.cs | 9 -- .../Model/Retail/Input/Enums/RentBasisType.cs | 9 -- .../Retail/Input/Enums/RentFreeBasisType.cs | 8 -- .../Retail/Input/Enums/ReviewThresholdType.cs | 9 -- .../Model/Retail/Input/Future/FuturesDto.cs | 24 ---- .../Input/Future/GrowthAssumptionDto.cs | 11 -- .../Input/Future/RenewalAssumptionDto.cs | 44 ------- .../Retail/Input/Future/RetailFuturesDto.cs | 10 ++ .../Future/RetailRenewalAssumptionDto.cs | 28 +++++ .../Model/Retail/Input/General/GeneralDto.cs | 37 ------ .../Retail/Input/General/RetailGeneralDto.cs | 12 ++ .../Input/GeneralLedger/GeneralLedgerDto.cs | 8 +- .../Retail/Input/Outgoings/OutgoingsDto.cs | 14 --- .../Input/Outgoings/OutgoingsItemDto.cs | 14 --- .../Retail/Input/Reporting/ReportingDto.cs | 32 ----- .../Retail/Input/RetailValuationInputDto.cs | 18 +++ .../Incentives/CommencementIncentivesDto.cs | 11 -- .../Incentives/IncentiveAmortisationDto.cs | 13 --- .../Space/Incentives/LumpSumIncentivesDto.cs | 13 --- .../Incentives/OutstandingIncentivesDto.cs | 9 -- .../Space/Incentives/RebateIncentivesDto.cs | 15 --- .../Space/Incentives/RentFreeIncentivesDto.cs | 19 --- .../Retail/Input/Space/Lease/LeaseDto.cs | 109 ------------------ .../Input/Space/Lease/RetailLeaseDto.cs | 45 ++++++++ .../Input/Space/Market/MarketAssumptionDto.cs | 9 -- .../Recovery/IncreaseOverBaseRecoveryDto.cs | 12 -- .../Input/Space/Recovery/NetRecoveryDto.cs | 8 -- .../Input/Space/Recovery/RecoveryDto.cs | 12 -- .../Space/Recovery/SemiGrossRecoveryDto.cs | 7 -- .../Input/Space/Renewal/FirstRenewalDto.cs | 30 ----- .../Retail/Input/Space/RetailSpaceDto.cs | 15 +++ .../Space/Review/CommencementReviewDto.cs | 9 -- .../Space/Review/FirstRenewalReviewDto.cs | 9 -- .../Input/Space/Review/RentReviewDto.cs | 16 --- .../Dto/Model/Retail/Input/Space/SpaceDto.cs | 32 ----- .../Model/Retail/Input/ValuationInputDto.cs | 24 ---- .../Model/IForburyModelRetailApiClient.cs | 2 +- .../Forbury.Integrations.csproj | 5 + 49 files changed, 142 insertions(+), 686 deletions(-) delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailFuturesDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailRenewalAssumptionDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/RetailGeneralDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/RetailValuationInputDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/RetailLeaseDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs create mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/RetailSpaceDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs delete mode 100644 src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs diff --git a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs index d1d7a0b..604f470 100644 --- a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelRetailApiClient.cs @@ -17,7 +17,7 @@ public ForburyModelRetailApiClient(HttpClient httpClient, base(httpClient, configuration) { } - public async Task CreateModel(ValuationInputDto data, + public async Task CreateModel(RetailValuationInputDto data, string googlePropertyId, int? teamId, string externalId = null, @@ -30,7 +30,7 @@ public async Task CreateModel(ValuationInputDto data, if (!string.IsNullOrEmpty(externalId)) queryBuilder.Add("externalId", externalId); if (!string.IsNullOrEmpty(fullAddress)) queryBuilder.Add("fullAddress", fullAddress); - return await PostAsync($"retail/{queryBuilder.ToQueryString()}", data, cancellationToken); + return await PostAsync($"retail/{queryBuilder.ToQueryString()}", data, cancellationToken); } } } diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Commercial/Input/Space/SpaceDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Commercial/Input/Space/SpaceDto.cs index 7f26c8f..1a26343 100644 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Commercial/Input/Space/SpaceDto.cs +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Commercial/Input/Space/SpaceDto.cs @@ -20,6 +20,11 @@ public class SpaceDto public LeaseDto Lease { get; set; } public FirstRenewalDto FirstRenewal { get; set; } public MarketAssumptionDto MarketAssumption { get; set; } + + /// + /// Equivalent to growth/renewal type for each space, + /// It should exist in the future.renewalAssumptions, otherwise ignored + /// public string RenewalAssumptionName { get; set; } } } diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs deleted file mode 100644 index 822d13c..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/BudgetedCapexDto.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex -{ - public class BudgetedCapexDto - { - public string Name { get; set; } - public string Category { get; set; } - [JsonConverter(typeof(StringEnumConverter))] - public BudgetedCapexType Type { get; set; } - public string GrowthRateName { get; set; } - /// - /// Amounts are based of Type (annual or monthly). - /// - public List Amounts { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? StartDate { get; set; } - public int? Months { get; set; } - public decimal? TotalAmount { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs deleted file mode 100644 index e68d9bd..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/CapexDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex -{ - public class CapexDto - { - public SinkingFundDto SinkingFund { get; set; } - public List BudgetedCapexs { get; set; } - public RefurbishmentDto Refurbishment { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs deleted file mode 100644 index 60a85b0..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/RefurbishmentDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Collections.Generic; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex -{ - public class RefurbishmentDto - { - public List Amounts { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs deleted file mode 100644 index 8df88c8..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Capex/SinkingFundDto.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex -{ - public class SinkingFundDto - { - public string Rate { get; set; } - public string Amount { get; set; } - public bool? Deduct { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? StartDate { get; set; } - public string GrowthRateName { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs deleted file mode 100644 index 903ba4f..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/AgreementType.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum AgreementType - { - None, - New, - Renewal, - Development - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs deleted file mode 100644 index 232106c..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/BudgetedCapexType.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum BudgetedCapexType - { - None, - Specific, - Annual, - Monthly - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs deleted file mode 100644 index 0088ded..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/CalendarBasis.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum CalendarBasis - { - ModelYear, - CalendarYear - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs deleted file mode 100644 index 9da0d87..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/GrowthBasis.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum GrowthBasis - { - Net, - Gross - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs deleted file mode 100644 index baf7f00..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/LeaseType.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum LeaseType - { - G, - IOB, - S, - N - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs deleted file mode 100644 index e265059..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/MakeGoodType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum MakeGoodType - { - None, - Partial, - Full - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs deleted file mode 100644 index 59cca28..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentBasisType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum RentBasisType - { - Area, - Car, - Other - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs deleted file mode 100644 index f8eff6b..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/RentFreeBasisType.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum RentFreeBasisType - { - Gross, - Base - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs deleted file mode 100644 index a7b33cd..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Enums/ReviewThresholdType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums -{ - public enum ReviewThresholdType - { - None, - Market, - MarketReview - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs deleted file mode 100644 index cf94ed5..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/FuturesDto.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future -{ - public class FuturesDto - { - [JsonConverter(typeof(StringEnumConverter))] - public CalendarBasis MarketYearBasis { get; set; } - [JsonConverter(typeof(StringEnumConverter))] - public CalendarBasis OutgoingsYearBasis { get; set; } - [JsonConverter(typeof(StringEnumConverter))] - public CalendarBasis EscalationYearBasis { get; set; } - [JsonConverter(typeof(StringEnumConverter))] - public GrowthBasis MarketRentGrowthBasis { get; set; } - public decimal? PriorYearCpi { get; set; } - public bool? DeferOutgoings { get; set; } - public List EscalationAssumptions { get; set; } - public List MarketGrowthAssumptions { get; set; } - public List RenewalAssumptions { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs deleted file mode 100644 index e117263..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/GrowthAssumptionDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future -{ - public class GrowthAssumptionDto - { - public string Name { get; set; } - public decimal? IncreaseOnCpi { get; set; } - public List Rates { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs deleted file mode 100644 index 23f55d8..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RenewalAssumptionDto.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Collections.Generic; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future -{ - public class RenewalAssumptionDto - { - public string Name { get; set; } - public decimal? VacantDowntimeMonths { get; set; } - public decimal? RenewalProbabilityPercent { get; set; } - public int? NewLeaseYears { get; set; } - public int? NewLeaseReviewYears { get; set; } - public string NewLeaseStructure { get; set; } - public decimal? FutureDowntimeMonths { get; set; } - public decimal? IncentivesPercent { get; set; } - public decimal? IncentivesProbabilityPercent { get; set; } - public decimal? LeasingCostsRenewingPercent { get; set; } - public decimal? LeasingCostsNewPercent { get; set; } - public decimal? RefurbAllowanceRenewing { get; set; } - public decimal? RefurbAllowanceNew { get; set; } - public decimal? MarketCapRate { get; set; } - public List NewLeaseIncentives { get; set; } - public List IncentiveProbabilityPercentages { get; set; } - - /// - /// Default Market Growth Rate for MAT & Rent - /// - public decimal? DefaultMarketGrowthRate { get; set; } - - /// - /// Moving Annual Turnover Growth Rates by years (up to 20 years) - /// - public List MATGrowthRates { get; set; } - - /// - /// Number of months of incentive for renewing lease - /// - public decimal? IncentiveRenewingMonths { get; set; } - - /// - /// Number of months of incentive for new lease - /// - public decimal? IncentiveNewLeaseMonths { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailFuturesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailFuturesDto.cs new file mode 100644 index 0000000..4a1071f --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailFuturesDto.cs @@ -0,0 +1,10 @@ +using Forbury.Integrations.API.v1.Dto.Model.Commercial.Input.Future; +using System.Collections.Generic; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future +{ + public class RetailFuturesDto: FuturesDto + { + public new List RenewalAssumptions { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailRenewalAssumptionDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailRenewalAssumptionDto.cs new file mode 100644 index 0000000..0f0926c --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Future/RetailRenewalAssumptionDto.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using Forbury.Integrations.API.v1.Dto.Model.Commercial.Input.Future; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future +{ + public class RetailRenewalAssumptionDto: RenewalAssumptionDto + { + /// + /// Default Market Growth Rate for MAT & Rent + /// + public decimal? DefaultMarketGrowthRate { get; set; } + + /// + /// Moving Annual Turnover Growth Rates by years (up to 20 years) + /// + public List MatGrowthRates { get; set; } + + /// + /// Number of months of incentive for renewing lease + /// + public decimal? IncentiveRenewingMonths { get; set; } + + /// + /// Number of months of incentive for new lease + /// + public decimal? IncentiveNewLeaseMonths { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs deleted file mode 100644 index b8ea9eb..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/GeneralDto.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using Forbury.Integrations.API.v1.Dto.Enums; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.General -{ - public class GeneralDto - { - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? ValuationDate { get; set; } - [JsonConverter(typeof(StringEnumConverter))] - public ValuationType ValuationType { get; set; } - public string ValuationMethod { get; set; } - public decimal? RoundedAdoptedValue { get; set; } - public decimal? AdoptedValueAdjustment { get; set; } - public decimal? CapRateInitial { get; set; } - public decimal? CapRateMarket { get; set; } - public decimal? CapRateTerminalBps { get; set; } - public decimal? InterestValued { get; set; } - public string IncentiveBasis { get; set; } - public decimal? ExpiryAllowanceMonths { get; set; } - public decimal? TerminalExpiryAllowanceMonths { get; set; } - public decimal? DiscountRate { get; set; } - public decimal? CapRateTerminal { get; set; } - public int CashFlowPeriod { get; set; } - public decimal? BudgetedCapexAllowanceMonths { get; set; } - public decimal? SinkingFundAllowanceMonths { get; set; } - - /// - /// Property level Moving Annual Turnover setting - /// - public MovingAnnualTurnoverDto MAT { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/RetailGeneralDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/RetailGeneralDto.cs new file mode 100644 index 0000000..94cf6b7 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/General/RetailGeneralDto.cs @@ -0,0 +1,12 @@ +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.General +{ + public class RetailGeneralDto: Commercial.Input.General.GeneralDto + { + /// + /// Property level Moving Annual Turnover setting + /// + public MovingAnnualTurnoverDto MAT { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs index c9fc908..34a6ba3 100644 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/GeneralLedger/GeneralLedgerDto.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger { public class GeneralLedgerDto { diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs deleted file mode 100644 index 54f51fe..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsDto.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Outgoings -{ - public class OutgoingsDto - { - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? OutgoingsDate { get; set; } - public List Items { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs deleted file mode 100644 index 72a91a9..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Outgoings/OutgoingsItemDto.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Outgoings -{ - public class OutgoingsItemDto - { - public string Name { get; set; } - public string Type { get; set; } - public string PcaCategory { get; set; } - public bool? IsRecoverable { get; set; } - public string GrowthRateName { get; set; } - public decimal? PreviousBudget { get; set; } - public decimal? CurrentBudget { get; set; } - public decimal? AdoptedBudget { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs deleted file mode 100644 index 9c4e539..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Reporting/ReportingDto.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Reporting -{ - public class ReportingDto - { - public string Proprietor { get; set; } - public decimal? SiteArea { get; set; } - public string LegalDescription { get; set; } - public string LocalGovernmentArea { get; set; } - public string Zoning { get; set; } - public string FloorSpaceRatio { get; set; } - public string PlanningScheme { get; set; } - public decimal? NabersEnergy { get; set; } - public decimal? NabersWater { get; set; } - public string YearBuilt { get; set; } - public string LastRefurbYear { get; set; } - public string Sector { get; set; } - public string SubSector { get; set; } - public string Precinct { get; set; } - public string Grade { get; set; } - public string OfficeFloors { get; set; } - public string EndOfTrip { get; set; } - public string PcaMarket { get; set; } - public string PcaCharacteristic { get; set; } - public string AreaLabels { get; set; } - public string Title { get; set; } - public string Company { get; set; } - public string JobReference { get; set; } - public string Purpose { get; set; } - public string PrimaryValuer { get; set; } - public string SecondaryValuer { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/RetailValuationInputDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/RetailValuationInputDto.cs new file mode 100644 index 0000000..b2ac808 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/RetailValuationInputDto.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Forbury.Integrations.API.v1.Dto.Model.Commercial.Input; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.General; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input +{ + public class RetailValuationInputDto : ValuationInputDto + { + public new RetailGeneralDto General { get; set; } + public new List Spaces { get; set; } + public new RetailFuturesDto Futures { get; set; } + + public List GeneralLedgers { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs deleted file mode 100644 index e122485..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/CommencementIncentivesDto.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives -{ - public class CommencementIncentivesDto - { - public decimal? CommencementBaseRent { get; set; } - public decimal? CommencementRecoveries { get; set; } - public decimal? Total { get; set; } - public string Type { get; set; } - public IncentiveAmortisationDto IncentiveAmortisation { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs deleted file mode 100644 index fc42b07..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/IncentiveAmortisationDto.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives -{ - public class IncentiveAmortisationDto - { - public decimal? PaidToDate { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? StartDate { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs deleted file mode 100644 index 934e616..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/LumpSumIncentivesDto.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives -{ - public class LumpSumIncentivesDto - { - public decimal? Amount { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? PaymentDate { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs deleted file mode 100644 index 467435b..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/OutstandingIncentivesDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives -{ - public class OutstandingIncentivesDto - { - public LumpSumIncentivesDto LumpSumIncentives { get; set; } - public RebateIncentivesDto RebateIncentives { get; set; } - public RentFreeIncentivesDto RentFreeIncentives { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs deleted file mode 100644 index d46d09a..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RebateIncentivesDto.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives -{ - public class RebateIncentivesDto - { - public decimal? AmountMonthly { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? StartDate { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? EndDate { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs deleted file mode 100644 index 2285cc4..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Incentives/RentFreeIncentivesDto.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives -{ - public class RentFreeIncentivesDto - { - [JsonConverter(typeof(StringEnumConverter))] - public RentFreeBasisType Basis { get; set; } - public decimal? PercentApplied { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? StartDate { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? EndDate { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs deleted file mode 100644 index f206a6b..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/LeaseDto.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System; -using System.Collections.Generic; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Incentives; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.PercentageRent; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease -{ - public class LeaseDto - { - public decimal BaseRent { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public LeaseType LeaseType { get; set; } - - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? StartDate { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? ExpiryDate { get; set; } - - public string TenantName { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public AgreementType AgreementType { get; set; } - public string Industry { get; set; } - public string SubIndustry { get; set; } - public string ClassCode { get; set; } - - public bool IsHoldOver { get; set; } - public int HoldOverMonths { get; set; } - - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? BreakDate { get; set; } - public string BreakPenalty { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? BreakNoticeDate { get; set; } - - public bool HeadOfAgreement { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public MakeGoodType MakeGood { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? HeadOfAgreementSignedDate { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? LeaseSignedDate { get; set; } - public bool IsConfidential { get; set; } - public bool IsConfirmed { get; set; } - public string InformationSource { get; set; } - public string Comments { get; set; } - - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? PriorReviewDate { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public CarLevyType CarLevy { get; set; } - - public OutstandingIncentivesDto OutstandingIncentives { get; set; } - public CommencementIncentivesDto CommencementIncentives { get; set; } - - public IncreaseOverBaseRecoveryDto IncreaseOverBaseRecoveries { get; set; } - public NetRecoveryDto NetRecoveries { get; set; } - public SemiGrossRecoveryDto SemiGrossRecoveries { get; set; } - - public List RentReviews { get; set; } - - /// - /// The MAT amount prior 12 months (GST inclusive/exclusive based on General.MAT.Prior12MonthsGstInclusive) - /// - public decimal? MATPrior12Months { get; set; } - - /// - /// The MAT amount last 12 months (GST inclusive/exclusive based on General.MAT.Prior12MonthsGstInclusive) - /// - public decimal? MATLast12Months { get; set; } - - /// - /// Provide up to 3 future options periods in years - /// - public int[] Options { get; set; } - - /// - /// The selected option index (0, 1, 2) zero based index, translated into 1, 2, 3 for the model. - /// - public int? AdoptedOption { get; set; } - - /// - /// GOC Cap deal until first review - /// - public decimal? GocCap { get; set; } - - /// - /// Review frequency in years - /// - public int? DefaultReviewFrequency { get; set; } - - /// - /// Review type (e.g. Fixed % such as 2.5%, CPI, CPI+1.25, %RentAvg2Y, GOC8.5%) - /// - public string DefaultReviewType { get; set; } - - public PercentageRentDto PercentageRent { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/RetailLeaseDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/RetailLeaseDto.cs new file mode 100644 index 0000000..c4f47c5 --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Lease/RetailLeaseDto.cs @@ -0,0 +1,45 @@ +using Forbury.Integrations.API.v1.Dto.Model.Commercial.Input.Space.Renewal; +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.PercentageRent; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease +{ + public class RetailLeaseDto: Commercial.Input.Space.Lease.LeaseDto + { + /// + /// The MAT amount prior 12 months (GST inclusive/exclusive based on General.MAT.Prior12MonthsGstInclusive) + /// + public decimal? MATPrior12Months { get; set; } + + /// + /// The MAT amount last 12 months (GST inclusive/exclusive based on General.MAT.Prior12MonthsGstInclusive) + /// + public decimal? MATLast12Months { get; set; } + + /// + /// Provide up to 3 future options periods in years + /// + public new int[] Options { get; set; } + + /// + /// The selected option index (0, 1, 2) zero based index, translated into 1, 2, 3 for the model. + /// + public int? AdoptedOption { get; set; } + + /// + /// GOC Cap deal until first review + /// + public decimal? GocCap { get; set; } + + /// + /// Review frequency in years + /// + public int? DefaultReviewFrequency { get; set; } + + /// + /// Review type (e.g. Fixed % such as 2.5%, CPI, CPI+1.25, %RentAvg2Y, GOC8.5%) + /// + public string DefaultReviewType { get; set; } + + public PercentageRentDto PercentageRent { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs deleted file mode 100644 index 3a404cb..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Market/MarketAssumptionDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Market -{ - public class MarketAssumptionDto - { - public string MarketRentBasis { get; set; } - public decimal? AdoptedMarketRent { get; set; } - public string RecoveryCode { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs deleted file mode 100644 index b6cb254..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/IncreaseOverBaseRecoveryDto.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery -{ - public class IncreaseOverBaseRecoveryDto : RecoveryDto - { - public string RecoveryCode { get; set; } - public string ReviewThreshold { get; set; } - public decimal? BaseAmount { get; set; } - public decimal? PercentageApplied { get; set; } - public decimal? Cap { get; set; } - public decimal? Collar { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs deleted file mode 100644 index d457cc3..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/NetRecoveryDto.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery -{ - public class NetRecoveryDto : RecoveryDto - { - public string RecoveryCode { get; set; } - public decimal? AmountPerAnnum { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs deleted file mode 100644 index f1a1411..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/RecoveryDto.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery -{ - public class RecoveryDto - { - [JsonConverter(typeof(StringEnumConverter))] - public RecoveryLeaseType Type { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs deleted file mode 100644 index f9dffcc..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Recovery/SemiGrossRecoveryDto.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Recovery -{ - public class SemiGrossRecoveryDto : RecoveryDto - { - public decimal? AmountPerAnnum { get; set; } - } -} \ No newline at end of file diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs deleted file mode 100644 index 63caf86..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Renewal/FirstRenewalDto.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Renewal -{ - public class FirstRenewalDto - { - public string Type { get; set; } - public string TenantName { get; set; } - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? StartDate { get; set; } - public decimal? LeaseTermYears { get; set; } - public bool? UseInWale { get; set; } - - public decimal? RenewalProbabilityPercent { get; set; } - public decimal? RefurbPerMetreSquared { get; set; } - public decimal? DowntimeMonths { get; set; } - public decimal? IncentiveLumpSumPercent { get; set; } - public decimal? IncentiveRentFreePercent { get; set; } - public decimal? IncentiveRebatePercent { get; set; } - public decimal? AppliedIncentivesPercent { get; set; } - public decimal? LeasingCostsPercent { get; set; } - - public CommencementReviewDto CommencementRentReview { get; set; } - public List RentReviews { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/RetailSpaceDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/RetailSpaceDto.cs new file mode 100644 index 0000000..72bf06f --- /dev/null +++ b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/RetailSpaceDto.cs @@ -0,0 +1,15 @@ + +using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease; + +namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space +{ + public class RetailSpaceDto: Commercial.Input.Space.SpaceDto + { + /*** + * General Ledger code used to lookup on General Ledger list provided + */ + public string GeneralLedgerCode { get; set; } + + public new RetailLeaseDto Lease { get; set; } + } +} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs deleted file mode 100644 index 68a743e..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/CommencementReviewDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review -{ - public class CommencementReviewDto - { - public string Type { get; set; } - public decimal? Cap { get; set; } - public decimal? Collar { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs deleted file mode 100644 index 14b4e5f..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/FirstRenewalReviewDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review -{ - public class FirstRenewalReviewDto - { - public string Type { get; set; } - public decimal? Cap { get; set; } - public decimal? Collar { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs deleted file mode 100644 index ed073fb..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/Review/RentReviewDto.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using Forbury.Integrations.Helpers.Converters; -using Newtonsoft.Json; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Review -{ - public class RentReviewDto - { - [JsonConverter(typeof(DateFormatConverter), JsonFormats.DateFormat)] - public DateTime? Date { get; set; } - public string Type { get; set; } - public decimal? Cap { get; set; } - public decimal? Collar { get; set; } - public decimal? Threshold { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs deleted file mode 100644 index f431f1e..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/Space/SpaceDto.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Enums; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Lease.MovingAnnualTurnover; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Market; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space.Renewal; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space -{ - public class SpaceDto - { - [JsonConverter(typeof(StringEnumConverter))] - public RentBasisType RentBasis { get; set; } - public decimal? LettableArea { get; set; } - public int? CarBays { get; set; } - public string Level { get; set; } - public string Suite { get; set; } - public string FloorAreaType { get; set; } - public string ViewAspect { get; set; } - public LeaseDto Lease { get; set; } - public FirstRenewalDto FirstRenewal { get; set; } - public MarketAssumptionDto MarketAssumption { get; set; } - public string RenewalAssumptionName { get; set; } - - /*** - * General Ledger code used to lookup on General Ledger list provided - */ - public string GeneralLedgerCode { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs b/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs deleted file mode 100644 index 42efde5..0000000 --- a/src/Forbury.Integrations/API/v1/Dto/Model/Retail/Input/ValuationInputDto.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using Forbury.Integrations.API.v1.Dto.Model.Interfaces; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Capex; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Future; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.General; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.GeneralLedger; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Outgoings; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Reporting; -using Forbury.Integrations.API.v1.Dto.Model.Retail.Input.Space; - -namespace Forbury.Integrations.API.v1.Dto.Model.Retail.Input -{ - public class ValuationInputDto : IModelInput - { - public GeneralDto General { get; set; } - public List Spaces { get; set; } - public ReportingDto Reporting { get; set; } - public CapexDto Capex { get; set; } - public OutgoingsDto Outgoings { get; set; } - public FuturesDto Futures { get; set; } - - public List GeneralLedgers { get; set; } - } -} diff --git a/src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs b/src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs index b71bae5..56cad2d 100644 --- a/src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Interfaces/Model/IForburyModelRetailApiClient.cs @@ -7,7 +7,7 @@ namespace Forbury.Integrations.API.v1.Interfaces.Model { public interface IForburyModelRetaillApiClient : IForburyModelApiClient { - Task CreateModel(ValuationInputDto data, + Task CreateModel(RetailValuationInputDto data, string googlePropertyId, int? teamId, string externalId = null, diff --git a/src/Forbury.Integrations/Forbury.Integrations.csproj b/src/Forbury.Integrations/Forbury.Integrations.csproj index 1174917..4bd8a49 100644 --- a/src/Forbury.Integrations/Forbury.Integrations.csproj +++ b/src/Forbury.Integrations/Forbury.Integrations.csproj @@ -44,4 +44,9 @@ + + + + +