public class FilterField { public T? Equal { get; set; } public T? NotEqual { get; set; } public IEnumerable? In { get; set; } public IEnumerable? NotIn { get; set; } public T? GreaterThan { get; set; } public T? GreaterThanOrEqual { get; set; } public T? LessThan { get; set; } public T? LessThanOrEqual { get; set; } public string? Contains { get; set; } public string? StartsWith { get; set; } public string? EndsWith { get; set; } public IEnumerable> GetFilterPairs(string fieldName) { var props = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var p in props) { var val = p.GetValue(this); if (val == null) continue; string opName = p.Name; string formatted; if (val is IEnumerable enumerable && val is not string) { var items = new List(); foreach (var it in enumerable) { if (it == null) continue; items.Add(it.ToString()!); } if (items.Count == 0) continue; formatted = string.Join(",", items); } else if (val is DateOnly d) { formatted = d.ToString("yyyy-MM-dd"); } else { formatted = val.ToString()!; } yield return new KeyValuePair($"{fieldName}.{opName}", formatted); } } } public class AccountDTO { public int AccountID { get; set; } public string? ExternalAccountId { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } public string? AccountNumber { get; set; } public int CurrencyID { get; set; } public int DRPTypeID { get; set; } public decimal? DRPValue { get; set; } public int AccountStatusID { get; set; } public decimal Balance { get; set; } } public class AccountKeysDTO { public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? AccountNumber { get; set; } } public class AddressDTO { public int? AddressID { get; set; } public int AddressTypeID { get; set; } public string? AboveAddressLine { get; set; } public string? AddressLine { get; set; } public string? Suburb { get; set; } public string? Postcode { get; set; } public string? StateCode { get; set; } public string? CountryCode { get; set; } public string? ExternalAddressId { get; set; } public string? ExternalBizEntityId { get; set; } public string? ExternalPersonId { get; set; } public string? ExternalOrganisationId { get; set; } public int? PersonID { get; set; } public int? BizEntityID { get; set; } public int? OrganisationID { get; set; } } public class APIResponse { public bool Result { get; set; } public string? Message { get; set; } public int RecordCount { get; set; } public object? Data { get; set; } } public class AssociatedPersonDTO { public int? PersonID { get; set; } public string? ExternalPersonId { get; set; } public PersonDTO? Person { get; set; } public bool IsPrimaryContact { get; set; } public int? EmploymentStatusID { get; set; } public int? RelationshipTypeID { get; set; } public decimal? ShareholdingPercentage { get; set; } public bool? IsSignatory { get; set; } public bool IsCRSFATCAControllingPerson { get; set; } } public class BizEntityAccountHoldingFilter { public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public FilterField AccountID { get; set; } = new FilterField(); public FilterField ExternalAccountId { get; set; } = new FilterField(); public FilterField AccountNumber { get; set; } = new FilterField(); public FilterField InvestmentID { get; set; } = new FilterField(); public FilterField ExternalInvestmentId { get; set; } = new FilterField(); public FilterField SecurityCode { get; set; } = new FilterField(); public DateOnly? Date { get; set; } public int PageNumber { get; set; } = 1; public int PageSize { get; set; } = 100; } public class BizEntityDTO { public int BizEntityID { get; set; } public string? ExternalBizEntityId { get; set; } public int BizEntityTypeID { get; set; } public string? AdvisorNumber { get; set; } public int? AuthorizedNomineePersonID { get; set; } public int BizEntityStatusID { get; set; } public int? BizEntityTaxOfficeTypeID { get; set; } public bool CommunicationPreferenceCopyParentBizEntity { get; set; } public int? CommunicationPreferenceID { get; set; } public string? ContactPerson { get; set; } public int? ControllingPID { get; set; } public string? CorporateRepresentative { get; set; } public int? CustomerCategoryID { get; set; } public string? CustomerCode { get; set; } public string? Description { get; set; } public int? GroupedWithBizEntityID { get; set; } public int? InvestorTypeID { get; set; } public bool IsDirectorInterest { get; set; } public bool IsExecutiveInterest { get; set; } public string? LegalName { get; set; } public int? MarginLenderOrganisationID { get; set; } public string Name { get; set; } public string? PowerOfAttorney { get; set; } public int? PurposeOfInvestmentID { get; set; } public int? SalesPersonID { get; set; } public string? Salutation { get; set; } public short? SignatureParty { get; set; } public DateOnly? SophisticatedInvestorCertificateDate { get; set; } public string? SophisticatedInvestorComment { get; set; } public string? SophisticatedInvestorEligibility { get; set; } public int? SourceOfFundsID { get; set; } public string? SpecialConditions { get; set; } public string? StandingProxy { get; set; } public DateTime? CreatedDate { get; set; } public string? TaxationCountryCode { get; set; } public List Accounts { get; set; } = []; public List Addresses { get; set; } = []; public List? Communications { get; set; } = []; public List? PaymentDetails { get; set; } = []; public List BizEntityParties { get; set; } = []; public List BizEntityParents { get; set; } = []; } public class BizEntityFilter { public int? BizEntityID { get; set; } public string? ExternalBizEntityId { get; set; } public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public int? InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? PersonID { get; set; } public string? ExternalPersonId { get; set; } public int? OrganisationID { get; set; } public string? ExternalOrganisationId { get; set; } public FilterField BizEntityTypeID { get; set; } = new(); public FilterField AccountID { get; set; } = new(); public FilterField AccountNumber { get; set; } = new(); public FilterField ExternalAccountId { get; set; } = new(); public FilterField CreatedDate { get; set; } = new(); public FilterField UpdatedDate { get; set; } = new(); public DateTime? UpdatedDateFull { get; set; } public int PageNumber { get; set; } = 1; public int PageSize { get; set; } = 100; } public class BizEntityParentDTO { public int? BizEntityID { get; set; } public string? ExternalBizEntityId { get; set; } public int? ParentBizEntityID { get; set; } public string? ParentExternalBizEntityId { get; set; } public int? DealerGroupBizEntityID { get; set; } public string? ExternalDealerGroupBizEntityId { get; set; } public DateOnly ActiveFrom { get; set; } public DateOnly? ActiveTo { get; set; } } public class BizEntityPartyDTO { public int? BizEntityPartyID { get; set; } public int? OrganisationID { get; set; } public string? ExternalOrganisationId { get; set; } public int? PersonID { get; set; } public string? ExternalPersonId { get; set; } public bool IsPrimaryContact { get; set; } public bool IsIncomeReceiving { get; set; } public bool IsSignatory { get; set; } public bool IsAuthorisedNominee { get; set; } public bool IsPowerOfAttorney { get; set; } public int Ordinal { get; set; } public PersonDTO? Person { get; set; } public OrganisationDTO? Organisation { get; set; } } public class BizEventDTO { public long BizEventID { get; set; } public long? ParentBizTransactionID { get; set; } public int BizEventTypeID { get; set; } public int BizEventStatusID { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int? InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? AccountNumber { get; set; } // Readonly public string? BizEntityName { get; set; } // Readonly public DateOnly BizEventDate { get; set; } public decimal? Amount { get; set; } public decimal? Quantity { get; set; } public string? Comment { get; set; } public int? ConversionMethodID { get; set; } public decimal? ConversionFactor { get; set; } public DateTime? CreatedDate { get; set; } public DateTime? UpdatedDate { get; set; } } public class BizEventFilter { public FilterField BizEventID { get; set; } = new(); public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public FilterField BizEventTypeID { get; set; } = new(); public FilterField AccountNumber { get; set; } = new(); public FilterField AccountID { get; set; } = new(); public FilterField ExternalAccountId { get; set; } = new(); public int PageSize { get; set; } = 100; public int PageNumber { get; set; } = 1; } public class BizEventNoticeOfConversionDTO { public int? ProductID { get; set; } public string? ExternalBizTransactionId { get; set; } public string? ExternalProductId { get; set; } public int FromInvestmentID { get; set; } public string? FromExternalInvestmentId { get; set; } public string? FromSecurityCode { get; set; } public int ToInvestmentID { get; set; } public string? ToExternalInvestmentId { get; set; } public string? ToSecurityCode { get; set; } public int? AccountID { get; set; } = 0; public string? ExternalAccountId { get; set; } public decimal? Amount { get; set; } public decimal? Quantity { get; set; } public string? Comment { get; set; } public DateOnly TransactionDate { get; set; } public decimal? ConversionFactor { get; set; } public string? ConversionMethod { get; set; } } public class BizEventNoticeOfDepositDTO { public int? ProductID { get; set; } public string? ExternalBizTransactionId { get; set; } public string? ExternalProductId { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? AccountID { get; set; } public string? ExternalAccountId { get; set; } public decimal? Amount { get; set; } public string? Comment { get; set; } public DateOnly TransactionDate { get; set; } public int? PaymentMethodID { get; set; } //PaymentTypeID public string? ChequeBankName { get; set; } public string? ChequeBSB { get; set; } public string? ChequeAccountNumber { get; set; } public string? ChequeChequeNo { get; set; } public string? ChequeDrawer { get; set; } public decimal? EntryFeeAmount { get; set; } public decimal? EntryFeeDiscountPercentage { get; set; } public decimal? EntryFeeOverridePercentage { get; set; } public decimal? EntryFeePercentage { get; set; } } public class BizEventNoticeOfRedemptionDTO { public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public string? ExternalBizTransactionId { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? AccountID { get; set; } public string? ExternalAccountId { get; set; } public decimal? Amount { get; set; } public decimal? Quantity { get; set; } public string? Comment { get; set; } public DateOnly TransactionDate { get; set; } } public class BizTransactionAdjustQuantityDTO { public string AdjustmentType { get; set; } public decimal? Quantity { get; set; } public decimal? Amount { get; set; } public string? Comment { get; set; } public DateOnly TransactionDate { get; set; } public int? AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? ExternalBizTransactionId { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } } public class BizTransactionAllotmentDTO { public int ProductID { get; set; } public string? ExternalProductId { get; set; } public string? ExternalBizTransactionId { get; set; } public decimal? Amount { get; set; } public decimal? Quantity { get; set; } public decimal? OverridePrice { get; set; } public string? Comment { get; set; } public int? AccountID { get; set; } = 0; public string? ExternalAccountId { get; set; } public DateOnly TransactionDate { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public long? DepositBizTransactionID { get; set; } public string? DepositExternalBizTransactionID { get; set; } } public class BizTransactionConversionDTO { public decimal? Amount { get; set; } public decimal? ConversionFactor { get; set; } public int? ConversionMethodID { get; set; } public int? AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? FromComment { get; set; } public string? FromExternalBizTransactionId { get; set; } public int FromInvestmentID { get; set; } public string? FromExternalInvestmentId { get; set; } public string? FromSecurityCode { get; set; } public decimal? Quantity { get; set; } public string? ToComment { get; set; } public string? ToExternalBizTransactionId { get; set; } public int ToInvestmentID { get; set; } public string? ToExternalInvestmentId { get; set; } public string? ToSecurityCode { get; set; } public DateOnly TransactionDate { get; set; } public int? ProductID { get; set; } = 0; public string? ExternalProductId { get; set; } } public class BizTransactionDepositDTO { public decimal Amount { get; set; } public string? Comment { get; set; } public string? ChequeAccountNumber { get; set; } public string? ChequeBankName { get; set; } public string? ChequeBSB { get; set; } public string? ChequeChequeNo { get; set; } public string? ChequeDrawer { get; set; } public decimal? EntryFeeAmount { get; set; } public decimal? EntryFeePercentage { get; set; } public decimal? EntryFeeDiscountPercentage { get; set; } public decimal? EntryFeeOverridePercentage { get; set; } public int? AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? ExternalBizTransactionId { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? ProductID { get; set; } = 0; public string? ExternalProductId { get; set; } public int PaymentMethodID { get; set; } public DateOnly TransactionDate { get; set; } } public class BizTransactionDTO { public long BizTransactionID { get; set; } public string? ExternalBizTransactionId { get; set; } public int BizTransactionTypeID { get; set; } public string? MovementReasonCode { get; set; } public long? ParentBizTransactionID { get; set; } public DateOnly TransactionDate { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? AccountNumber { get; set; } public string? BizEntityName { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public string? InvestmentName { get; set; } public decimal InvestmentPrice { get; set; } public string? Comment { get; set; } public int? CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public string? CorporateActionName { get; set; } public decimal? Amount { get; set; } public decimal? Quantity { get; set; } public decimal? TransactionClosingAmount { get; set; } public decimal? TransactionClosingQuantity { get; set; } public decimal? AccountClosingAmount { get; set; } public decimal? AccountClosingQuantity { get; set; } public DateTime CreatedDate { get; set; } public DateTime? UpdatedDate { get; set; } public int BizTransactionStatusID { get; set; } public string? TypeName { get; set; } public string? StatusName { get; set; } } public class BizTransactionFilter { public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public FilterField AccountNumber { get; set; } = new FilterField(); public FilterField InvestmentID { get; set; } = new FilterField(); public FilterField ExternalInvestmentId { get; set; } = new FilterField(); public FilterField SecurityCode { get; set; } = new FilterField(); public string? Status { get; set; } public FilterField BizTransactionID { get; set; } = new FilterField(); public FilterField ExternalBizTransactionId { get; set; } = new FilterField(); public FilterField BizTransactionTypeID { get; set; } = new FilterField(); public FilterField AccountID { get; set; } = new FilterField(); public FilterField ExternalAccountId { get; set; } = new FilterField(); public FilterField TransactionDate { get; set; } = new FilterField(); public bool ShowClosing { get; set; } public int PageSize { get; set; } = 100; public int PageNumber { get; set; } = 1; } public class BizTransactionRedemptionDTO { public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public decimal? Amount { get; set; } public decimal? OverridePrice { get; set; } public string? Comment { get; set; } public int AccountID { get; set; } public string? ExternalAccountId { get; set; } public decimal ExitFeeAmount { get; set; } public decimal ExitFeePercent { get; set; } public string? ExternalBizTransactionId { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public decimal? Quantity { get; set; } public int ReasonID { get; set; } public DateOnly TransactionDate { get; set; } } public class BizTransactionSetQuantityDTO { public decimal Quantity { get; set; } public string? Comment { get; set; } public int? AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? ExternalBizTransactionId { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public DateOnly TransactionDate { get; set; } } public class BizTransactionTransferDTO { public decimal? Price { get; set; } public decimal? Quantity { get; set; } public string? PriceMethod { get; set; } public bool NoChangeOfBeneficialOwner { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? FromAccountID { get; set; } = 0; public string? FromExternalAccountId { get; set; } public string? FromComment { get; set; } public string? FromExternalBizTransactionId { get; set; } public int? ToAccountID { get; set; } = 0; public string? ToExternalAccountId { get; set; } public string? ToComment { get; set; } public string? ToExternalBizTransactionId { get; set; } public DateOnly TransactionDate { get; set; } public int? ProductID { get; set; } = 0; public string? ExternalProductId { get; set; } } public class CommunicationDTO { public int? CommunicationID { get; set; } public string? ExternalCommunicationId { get; set; } public int CommunicationTypeID { get; set; } public string? Name { get; set; } public int? BizEntityID { get; set; } public string? ExternalBizEntityId { get; set; } public int? PersonID { get; set; } public string? ExternalPersonId { get; set; } public int? OrganisationID { get; set; } public string? ExternalOrganisationId { get; set; } } public class DistributionAccountDTO { public int CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? AccountNumber { get; set; } public string? BizEntityName { get; set; } public decimal? CumBalance { get; set; } public int? DaysInPossession { get; set; } public int? DrpTypeID { get; set; } public decimal? DrpValue { get; set; } public decimal? Fee { get; set; } public decimal? GrossDistribution { get; set; } public decimal? ReinvestedAmount { get; set; } public decimal? ReinvestedPrice { get; set; } public decimal? ReinvestedQuantity { get; set; } public string? TaxationCountryCode { get; set; } public decimal? TransferredFunds { get; set; } public decimal? WithholdingTax { get; set; } public decimal? WithholdingTaxRefunded { get; set; } } public class DistributionAccountFilter { public int CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int AccountID { get; set; } public string? ExternalAccountId { get; set; } public int PageNumber { get; set; } = 1; public int PageSize { get; set; } = 1000; } public class DistributionAllotmentDTO { public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public DateOnly? OverrideDate { get; set; } public string? Comment { get; set; } } public class DistributionDeclareDTO { public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public DateOnly? OverrideDate { get; set; } public string? Comment { get; set; } public bool RunDistribution { get; set; } public List PreCalculatedAccounts { get; set; } = []; public List IncludeAccounts { get; set; } = []; public List ExcludeAccounts { get; set; } = []; } public class DistributionDeclareValuesDTO { public int CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int AccountID { get; set; } public string? ExternalAccountId { get; set; } public string? AccountNumber { get; set; } public string? BizEntityName { get; set; } public decimal? CumBalance { get; set; } public int? DaysInPossession { get; set; } public int? DrpTypeID { get; set; } public decimal? DrpValue { get; set; } public decimal? Fee { get; set; } public decimal? GrossDistribution { get; set; } public decimal? ReinvestedAmount { get; set; } public decimal? ReinvestedPrice { get; set; } public decimal? ReinvestedQuantity { get; set; } public string? TaxationCountryCode { get; set; } public decimal? TransferredFunds { get; set; } public decimal? WithholdingTax { get; set; } public decimal? WithholdingTaxRefunded { get; set; } } public class DistributionDistributeDTO { public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public DateOnly? OverrideDate { get; set; } public string? Comment { get; set; } } public class DistributionDTO { public int CorporateActionID { get; set; } public string? ExternalCorporateActionId { get; set; } public int ProductID { get; set; } public string? ExternalProductId { get; set; } public DateOnly? AccrualDate { get; set; } public DateOnly? RecordDate { get; set; } public DateOnly? PaymentDate { get; set; } public decimal? DistributionAmountPerUnit { get; set; } public decimal? DistributionAmountTotal { get; set; } public decimal? CentsPerUnitPerDay { get; set; } public string? Description { get; set; } public int? DistributionTermID { get; set; } public int? DistributionPeriodID { get; set; } public int? DrpIndicatorID { get; set; } public decimal? DrpPrice { get; set; } public int DistributionStatusID { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public string? FileName { get; set; } public int? DrpInvestmentID { get; set; } public string? DrpExternalInvestmentId { get; set; } public string? DrpSecurityCode { get; set; } public DateOnly? DrpAllotmentDate { get; set; } public string? Name { get; set; } public decimal? ProRataPercentPerAnnum { get; set; } public DateOnly? ProRataStartDate { get; set; } public DateOnly? ProRataEndDate { get; set; } public string? UnitValuationMethod { get; set; } public List TaxComponents { get; set; } = []; } public class DistributionFilter { public FilterField CorporateActionID { get; set; } = new FilterField(); public FilterField ExternalCorporateActionId { get; set; } = new FilterField(); public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public FilterField InvestmentID { get; set; } = new FilterField(); public FilterField ExternalInvestmentId { get; set; } = new FilterField(); public FilterField SecurityCode { get; set; } = new FilterField(); public FilterField RecordDate { get; set; } = new FilterField(); public int PageNumber { get; set; } = 1; public int PageSize { get; set; } = 100; } public class DistributionTaxComponentDTO { public string TaxComponentName { get; set; } public decimal? Percentage { get; set; } } public class DocumentDTO { public int DocumentID { get; set; } public string? ExternalDocumentId { get; set; } public int DocumentTypeID { get; set; } public string? Name { get; set; } public string? Code { get; set; } public string? Description { get; set; } public string? Password { get; set; } public short? Ordinal { get; set; } public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public int? BizEntityID { get; set; } public string? ExternalBizEntityId { get; set; } public int? OrganisationID { get; set; } public string? ExternalOrganisationId { get; set; } public bool ShowInDocumentsInPortal { get; set; } public bool IsPublic { get; set; } } public class InvestmentDTO { public int? InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public bool AllowAllotment { get; set; } public DateOnly? AllotmentCutoffDate { get; set; } public bool AllowDistribution { get; set; } public decimal? AllotmentMinAmount { get; set; } public decimal? AllotmentMaxAmount { get; set; } public bool CalcDividendIncludingFirstDay { get; set; } public decimal? CouponRate { get; set; } public string? Description { get; set; } public int? DistributionPeriodID { get; set; } public int? DistributionTermID { get; set; } public DateOnly? EndDate { get; set; } public bool IsActive { get; set; } public bool? IsIncludedInAnnualReporting { get; set; } public string? SecurityCode { get; set; } public decimal? MaxCapital { get; set; } public string? Name { get; set; } public int? NoOfDecimalPlaces { get; set; } public int Ordinal { get; set; } public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public int? RoundingMethodID { get; set; } public DateOnly? StartDate { get; set; } public int? TermDays { get; set; } public int? TermMonths { get; set; } public int? TermTypeID { get; set; } public decimal? TopUpMaxAmount { get; set; } public decimal? TopUpMinAmount { get; set; } public int InvestmentTypeID { get; set; } public decimal? TotalQuantity { get; set; } } public class InvestmentFilter { public int? InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public int? ProductID { get; set; } public string? ExternalProductId { get; set; } public int PageNumber { get; set; } = 1; public int PageSize { get; set; } = 100; public DateOnly AsAtDate { get; set; } = DateOnly.FromDateTime(DateTime.Now); //Defaults to today } public class InvestmentPriceDTO { public int ProductID { get; set; } public string? ExternalProductId { get; set; } public int InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public decimal? Cost { get; set; } public decimal? IndirectCost { get; set; } public decimal? IndirectFee { get; set; } public decimal? ExNAV { get; set; } public decimal? ExPrice { get; set; } public decimal? ExRedemptionPrice { get; set; } public decimal? InterestRate { get; set; } public decimal? ManagementFeePerUnit { get; set; } public decimal? NAV { get; set; } public decimal? NetGainLossPerUnitExcelManagementFee { get; set; } public decimal Price { get; set; } public DateOnly PriceDate { get; set; } public decimal RedemptionPrice { get; set; } public DateTime? UpdatedDate { get; set; } } public class InvestmentPriceFilter { public int? InvestmentID { get; set; } public string? ExternalInvestmentId { get; set; } public string? SecurityCode { get; set; } public DateOnly? PriceDate { get; set; } public DateOnly? FromPriceDate { get; set; } public DateOnly? ToPriceDate { get; set; } public int? ProductID { get; set; } public string? ExternalProductId { get; set; } } public class OrganisationDTO { public int? OrganisationID { get; set; } public string? ExternalOrganisationId { get; set; } public string? Name { get; set; } public string? ActiveEntityReason { get; set; } public string? AFSL { get; set; } public string? ARSN { get; set; } public int CRSFATCAParticipationID { get; set; } public string? CustomerCode { get; set; } public string? Description { get; set; } public string? FATCAType { get; set; } public string? FinancialnstitutionType { get; set; } public string? ForeignRegistrationPlace { get; set; } public string? FormationCountryCode { get; set; } public string? GIIN { get; set; } public int? IdentificationTypeID { get; set; } public string? IdentificationValue { get; set; } public bool? IsTrustee { get; set; } public string? ListedOnExchange { get; set; } public string? NoABNACNReason { get; set; } public string? NoGIINReason { get; set; } public string? NonReportingFinancialInstitutionType { get; set; } public string? NoTINReason { get; set; } public int? OrganisationCategoryID { get; set; } public DateTime? OrganisationTypeDate { get; set; } public int? OrganisationTypeID { get; set; } public string? ABN { get; set; } public string? ACN { get; set; } public string? OtherGIINReason { get; set; } public string? TaxationCountry2Code { get; set; } public string? TaxationCountry3Code { get; set; } public string? TaxationCountryCode { get; set; } public string? TaxationCountryNoTINReason { get; set; } public string? TaxationCountryNoTINReason2 { get; set; } public string? TaxationCountryNoTINReason3 { get; set; } public string? TaxationCountryTIN { get; set; } public string? TaxationCountryTIN2 { get; set; } public string? TaxationCountryTIN3 { get; set; } public string? TaxationFileNumber { get; set; } public int? TaxOfficeTypeID { get; set; } public string? TIN { get; set; } public string? TradingName { get; set; } public string? TrusteeGIIN { get; set; } public string? TrusteeName { get; set; } public List Addresses { get; set; } = []; public List Communications { get; set; } = []; public List AssociatedPersons { get; set; } = []; } public class PaymentDetailDTO { public int? PaymentDetailID { get; set; } public string? ExternalPaymentDetailId { get; set; } public int PaymentTypeID { get; set; } public int? BizEntityID { get; set; } public string? ExternalBizEntityId { get; set; } public string? BSB { get; set; } public string? AccountNumber { get; set; } public string? AccountName { get; set; } public string? Address { get; set; } public string? Comments { get; set; } public int? CurrencyID { get; set; } public string? IBAN { get; set; } public string? IntermediaryBankAccountName { get; set; } public string? IntermediaryBankAccountNumber { get; set; } public string? IntermediaryBankAddress { get; set; } public string? IntermediaryBankName { get; set; } public string? IntermediaryBankSWIFT { get; set; } public bool IsForDeposit { get; set; } public bool IsForDistribution { get; set; } public bool IsForOther { get; set; } public bool IsForRedemption { get; set; } public bool IsDefault { get; set; } public string? Message { get; set; } public string? PersonalName { get; set; } public string? Reference { get; set; } public string? SWIFT { get; set; } } public class PersonDTO { public int? PersonID { get; set; } public string? ExternalPersonId { get; set; } public string? FirstName { get; set; } public string? MiddleName { get; set; } public string LastName { get; set; } = string.Empty; public string FullName => $"{FirstName} {MiddleName} {LastName}".Trim(); public string? Description { get; set; } public string? ABN { get; set; } public string? BirthCountryCode { get; set; } public int? CRSFATCAParticipationID { get; set; } public string? CustomerCode { get; set; } public DateOnly? DateOfBirth { get; set; } public string? DriversLicenseIssueCountryCode { get; set; } public string? DriversLicenseNumber { get; set; } public char? Gender { get; set; } public int? IdentificationTypeID { get; set; } public string? IdentificationValue { get; set; } public bool? IsDirectorOfCorporateTrustee { get; set; } public bool? IsPEP { get; set; } public bool? IsSophisticatedInvestor { get; set; } public bool? IsTrustee { get; set; } public string? PEPDescription { get; set; } public int? LegalGuardianTitleID { get; set; } public string? LegalGuardianFirstName { get; set; } public string? LegalGuardianMiddleName { get; set; } public string? LegalGuardianLastName { get; set; } public string? PassportIssueCountryCode { get; set; } public string? PassportNumber { get; set; } public string? Salutation { get; set; } public short? SharePercentage { get; set; } public DateOnly? SophisticatedInvestorCertificateDate { get; set; } public string? TaxationCountryCode { get; set; } public string? TaxationCountryCode2 { get; set; } public string? TaxationCountryCode3 { get; set; } public string? TaxationCountryTIN { get; set; } public string? TaxationCountryTIN2 { get; set; } public string? TaxationCountryTIN3 { get; set; } public string? TaxationCountryNoTINReason { get; set; } public string? TaxationCountryNoTINReason2 { get; set; } public string? TaxationCountryNoTINReason3 { get; set; } public string? TaxationFileNumber { get; set; } public string? TradingName { get; set; } public int? TaxOfficeTypeID { get; set; } public string? TIN { get; set; } public int? TitleID { get; set; } public List? Addresses { get; set; } = []; public List? Communications { get; set; } = []; } public class ReportDTO { public string ReportName { get; set; } public Dictionary Parameters { get; set; } = new(StringComparer.OrdinalIgnoreCase); } public class StatementDTO { public int StatementTypeID { get; set; } public int? ProductID { get; set; } = 0; public string? ExternalProductId { get; set; } public int? InvestmentID { get; set; } = 0; public string? ExternalInvestmentId { get; set; } public int? CorporateActionID { get; set; } = 0; public string? ExternalCorporateActionId { get; set; } public int? BizEntityID { get; set; } = 0; public string? ExternalBizEntityId { get; set; } public int? OrganisationID { get; set; } = 0; public string? ExternalOrganisationId { get; set; } public DateOnly? FromDate { get; set; } public DateOnly? ToDate { get; set; } public string? Code { get; set; } } public class TokenResponse { public string AccessToken { get; set; } public string RefreshToken { get; set; } }