@arkasuryawan/gp-interfaces
Version:
Geonet Properties Data Interfaces
304 lines (303 loc) • 8.93 kB
TypeScript
import { AuditInterface, BlogInterface, Cordinat, CountryInterface, MetaDataFileInterface, ProjectTypeInterface, RegionInterface, StateInterface, SuburbInterface } from ".";
import { TenantInterface } from "./tenant.interface";
import { TALocation } from "./tripadvisor";
export declare type ProjectStatus = "DRAFT" | "AVAILABLE" | "NOTAVAILABLE" | "DELETED" | "LEASED" | "BOOKED" | "SOLD" | "HOLD" | "CONTRACT" | "PARTIAL";
export declare const ProjectStatusOptions: string[];
export declare type ProjectType = "Apartment" | "House & Land" | "Land" | "Office" | "Semi/Duplex" | "Block Of Units" | "Townhouse" | "Unit" | "Villa" | "Warehouse" | "Hotel/Leisure" | "Other" | "Motel" | "Resort" | "Retreat" | "Rural";
export declare type CurrencyId = "EUR" | "SGD" | "GBP" | "AUD" | "USD" | "IDR" | "THB";
export declare const CurrencyIdOptions: string[];
export declare type ProjectStatusType = "Off The Plan" | "Completed" | "Under Construction";
export declare const ProjectStatusTypeOptions: string[];
export interface AdditionalInformation {
icon: string;
headline: string;
content: string;
}
export interface AdditionalOption {
icon: string;
headline: string;
content: string;
priceType: string;
price: number;
}
export interface RentalRevenueEstimateInterface {
headline: string;
price: number;
occupancy: number;
rate: number;
percentageCost: number;
investmentTime: number;
}
export interface ProjectSummaryInterface {
unitAvailable: number;
sold: number;
minPrice: number;
bed: {
min: number;
max: number;
};
bath: {
min: number;
max: number;
};
garage: {
min: number;
max: number;
};
area: {
min: number;
max: number;
};
}
export interface ProjectMainInformation extends AuditInterface {
/**
*
*/
status: ProjectStatus | string[];
headLine: string;
shortDescription: string;
content: string;
featured: boolean;
hideOnWebsite: boolean;
address: string;
addressCordinat: Cordinat | Cordinat[];
suburbId: string;
suburb: SuburbInterface | string;
suburbName: string;
stateId: string;
state: StateInterface | string;
stateName: string;
countryId: string;
country: CountryInterface | string;
countryName: string;
region: RegionInterface | string;
regionId: string;
regionName: string;
postcode: string;
additionalInformation?: AdditionalInformation[];
taxIncluded?: boolean;
tax?: number;
tenantIds?: string[];
tenants?: TenantInterface[];
aggregatorIds?: string[];
aggregators?: TenantInterface[];
developerId?: string;
developerDetail?: TenantInterface;
developer?: TenantInterface;
/**
* @deprecated The method should not be used move to `projectTypeIds`
*/
projectTypeId: string;
/**
* @deprecated The method should not be used move to `projectTypes`
*/
projectType: ProjectTypeInterface;
/**
* @abstract New field moving from `projectTypeId`
*/
projectTypeIds?: string[];
/**
* @abstract New field moving from `projectTypes`
*/
projectTypes?: ProjectTypeInterface[];
autdoorFeature: string[];
indoorFeatures: string[];
}
export interface ProjectImageFileAndOtherInfo extends ProjectMainInformation {
videoUrl: string[];
onlineTourUrl: string[];
images: string[];
interior: string[];
exterior: string[];
floorPlans: string[] | MetaDataFileInterface[];
brochure: string[] | MetaDataFileInterface[];
collateral: string[] | MetaDataFileInterface[];
specifications: string[] | MetaDataFileInterface[];
areaGuide: string;
presentation: string;
news: string[];
podcast: string[];
webinar: string;
threesixty: string;
}
export interface ProjectLotMainInformation extends ProjectImageFileAndOtherInfo {
projectId: string;
project: ProjectInterface;
scheme: string;
aspect: string;
guarantee: string;
level?: string;
lot?: string;
bed?: number;
bath?: number;
garage: number;
internal: number;
external: number;
total: number;
living: number;
/**
* @deprecated The method should not be used
*/
type: string;
price: number;
/**
* @abstract new field moving from developer
*/
builder: string;
}
export interface ProjectInterface extends ProjectImageFileAndOtherInfo {
/**
* @deprecated The method should not be used
*/
type: ProjectType;
/**
* @abstract Image URl
*/
sellingPoint: string;
url: string;
landingUrl: string;
currency: CurrencyId;
preSaleType: "Percentage" | "Fix Price";
preSalePercentage?: number;
preSalePrice?: number;
percentageDeposit: number;
/**
* @deprecated The method should not be used
*/
aboutProject: string;
/**
* @deprecated The method should not be used
*/
step1?: string;
/**
* @deprecated The method should not be used
*/
step2?: string;
/**
* @deprecated The method should not be used
*/
step3?: string;
/**
* @deprecated The method should not be used
*/
step4?: string;
/**
* @deprecated The method should not be used
*/
blogIds?: string[];
/**
* @deprecated The method should not be used
*/
blogs?: BlogInterface[];
projectStatus?: ProjectStatusType;
totalUnit?: number;
startDate?: string;
completionDate?: string;
/**
* @deprecated The method should not be used move to `projectlot`
*/
variationTitle: string;
/**
* @deprecated The method should not be used will be move to `projectvariance`
*/
variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE";
rentalRevenueEstimate?: RentalRevenueEstimateInterface[];
/**
* @abstract when `true` if sold ? no information on front end
*/
hidePriceOnSold?: boolean;
summary?: ProjectSummaryInterface;
/**
* @abstract New field for summary by `proejctid`
*/
summaryByProjectTypeIds?: {
[projectTypeId: string]: ProjectSummaryInterface;
};
/**
* @abstract Interfce only not for data to model
* */
searchPrice?: number;
searchPriceMin?: number;
searchPriceMax?: number;
/**
* @abstract New field for summary by proejctid
*/
projectImageFileAndOtherInfoByTenants: {
[tenantId: string]: ProjectImageFileAndOtherInfo;
};
}
export interface LotVariancesInterface {
projectLotVarianceId: string;
projectLotVariance: ProjectLotVarianceInterface;
status: ProjectStatus;
price: number;
landPrice: number;
housePrice: number;
salesPackNumber: string;
availabilityStock: number;
additionalInformation?: AdditionalInformation[];
additionalConst?: number;
projectTypeId: string;
projectType?: ProjectTypeInterface;
variationPricing?: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE";
}
export interface ProjectLotInterface extends ProjectLotMainInformation {
/**
*@abstract moving from `Projects`
*/
variationTitle: string;
/**
* @deprecated The method should not be used move to `variances`
*/
projectLotVarianceIds?: string[];
/**
* @deprecated The method should not be used move to `variances`
*/
projectLotVariances?: ProjectLotVarianceInterface[];
variances?: LotVariancesInterface[];
city: string;
estate: string;
landPrice: number;
housePrice: number;
salesPackNumber: string;
landRegistration: string;
stockType: "NORMAL" | "PARTIAL" | "FRACTIONAL";
/**
* Default availability stock is 1
* when sold on variance availability stock 0-1 (100%)
*/
availabilityStock: number;
projectImageFileAndOtherInfoByTenants: {
[tenantId: string]: ProjectImageFileAndOtherInfo;
};
}
export interface ProjectLotVarianceInterface extends ProjectLotMainInformation {
variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE";
projectImageFileAndOtherInfoByTenants: {
[tenantId: string]: ProjectImageFileAndOtherInfo;
};
additionalOptions: AdditionalOption[];
projectTypeId: string;
projectType: ProjectTypeInterface;
}
export interface ProjectRequestInterface extends AuditInterface {
projectId: string;
project?: ProjectInterface;
agencyId: string;
agency?: TenantInterface;
developerId: string;
developer?: TenantInterface;
aggregatorId: string;
aggregator?: TenantInterface;
}
/**
* @deprecated The method should not be used
*/
export interface ProjectTripadvisorInterface extends AuditInterface {
projectId: string;
project: ProjectInterface;
tripadvisorId: string;
tripadvisor: TALocation;
distance?: string;
bearing?: string;
}