@arkasuryawan/m2-interfaces
Version:
Squaremetre Data Interfaces
1,798 lines (1,766 loc) • 65.6 kB
TypeScript
import mongoose from 'mongoose';
interface OfficesInterface extends AuditInterface {
legalName?: string;
name?: string;
status?: "Active" | "Archived";
externalId?: string;
address?: AddressInterface[];
website?: string;
email?: string;
phone?: string;
phone2?: string;
}
interface OfficesInterfaceServer extends AuditInterface {
legalName?: string;
name?: string;
status?: "Active" | "Archived";
externalId?: string;
address?: mongoose.Types.ObjectId[];
website?: string;
email?: string;
phone?: string;
phone2?: string;
}
declare type TenantAggregatorRequestType = "Requesting" | "Approved" | "Rejected";
interface TenantInterface extends AuditInterface {
legalName?: string;
name?: string;
status?: "Active" | "Archived";
/**
* @deprecated The method should not be used move to `tenantTypes`
*/
tenantType?: TenantType;
coa?: string;
/**
* @abstract New field moving from `tenantType`
*/
tenantTypes?: string[];
bannerURL?: string;
thumbnailURL?: string;
externalId?: string;
slug?: string;
shortDescription?: string;
description?: string;
address?: AddressInterface[];
website?: string;
email?: string;
phone?: string;
phone2?: string;
legalName_lower?: string;
name_lower?: string;
website_lower?: string;
email_lower?: string;
accessToken?: string;
referenceCode?: string;
aggregatorIds?: string[];
aggregators?: TenantInterface[];
integrationTokens: {
provider: string;
token: any;
}[];
packageId?: string;
package?: TenantPackageInterface;
}
interface TenantInterfaceServer extends AuditInterface {
legalName?: string;
name?: string;
status?: "Active" | "Archived";
/**
* @deprecated The method should not be used move to `tenantTypes`
*/
tenantType?: TenantType;
coa?: string;
/**
* @abstract New field moving from `tenantType`
*/
tenantTypes?: string[];
bannerURL?: string;
thumbnailURL?: string;
externalId?: string;
slug?: string;
shortDescription?: string;
description?: string;
address?: mongoose.Types.ObjectId[];
website?: string;
email?: string;
phone?: string;
phone2?: string;
legalName_lower?: string;
name_lower?: string;
website_lower?: string;
email_lower?: string;
accessToken?: string;
referenceCode?: string;
aggregatorIds?: string[];
aggregators?: mongoose.Types.ObjectId[];
integrationTokens: {
provider: string;
token: any;
}[];
packageId?: string;
package?: mongoose.Types.ObjectId;
}
interface TenantPackageInterface extends AuditInterface {
name: string;
description: string;
}
interface TenantAggregatorRequestInterface extends AuditInterface {
agencyId: string;
agency?: TenantInterface;
aggregatorId: string;
aggregator?: TenantInterface;
status: TenantAggregatorRequestType;
}
interface TenantAggregatorRequestInterfaceServer extends AuditInterface {
agencyId: string;
agency?: mongoose.Types.ObjectId;
aggregatorId: string;
aggregator?: mongoose.Types.ObjectId;
status: TenantAggregatorRequestType;
}
interface TenantExcludeProjectInterface extends AuditInterface {
tenantId: string;
projectId: string;
}
interface TenantProjectInterface extends AuditInterface {
tenantId: string;
tenant: TenantInterface;
projectId: string;
project: ProjectInterface;
projectLotIds: string[];
projectLots: ProjectLotInterface[];
}
interface TenantProjectInterfaceServer extends AuditInterface {
tenantId: string;
tenant: mongoose.Types.ObjectId;
projectId: string;
project: mongoose.Types.ObjectId;
projectLotIds: string[];
projectLots: mongoose.Types.ObjectId[];
}
interface AgentInterface extends AuditInterface {
uid?: string;
fullName: string;
firstName: string;
lastName?: string;
mobile?: string;
phone?: string;
image: string;
email: string;
dateOfBirth?: string;
licenceNumber?: string;
licenceExpiryDate?: string;
address?: AddressInterface;
/**
* @deprecated The method should not be used move to `officeId`
*/
OfficeId?: string;
officeId?: string;
office?: OfficesInterface;
jobTitle?: string;
specialistAreas?: string[];
awards?: string[];
employeeType?: EmployeeType;
coa?: string;
/**
* @deprecated The method should not be used move to `tenantTypes`
*/
tenantType?: TenantType;
/**
* @abstract New field moving from `tenantType`
*/
tenantTypes?: TenantType[];
tenantId?: string;
tenant?: TenantInterface;
aggregatorIds?: string[];
aggregators?: TenantInterface[];
profile?: string;
profileVideo?: string;
startDate?: string;
contractValedDate?: string;
showOnWeb: boolean;
status: "Active" | "Archived";
customToken?: string;
facebookUrl?: string;
instagramUrl?: string;
linkedInUrl?: string;
twitterUrl?: string;
keyword?: string;
callCalenderUrl?: string;
agentLanguages?: string[];
deviceToken?: string[];
integrationTokens?: {
provider: string;
token: any;
}[];
groupId?: string;
group?: GroupInterface;
/**
* @abstract just for JWT
*/
groupAccess?: GroupAccessInterface[];
}
interface AgentInterfaceServer extends AuditInterface {
uid?: string;
fullName: string;
firstName: string;
lastName?: string;
mobile?: string;
phone?: string;
image: string;
email: string;
dateOfBirth?: string;
licenceNumber?: string;
licenceExpiryDate?: string;
address?: mongoose.Types.ObjectId;
OfficeId?: string;
office?: mongoose.Types.ObjectId;
jobTitle?: string;
specialistAreas?: string[];
awards?: string[];
employeeType?: EmployeeType;
/**
* @deprecated The method should not be used move to `tenantTypes`
*/
tenantType?: TenantType;
/**
* @abstract New field moving from `tenantType`
*/
tenantTypes?: TenantType[];
tenantId?: string;
tenant?: mongoose.Types.ObjectId;
aggregatorIds?: string[];
aggregators?: mongoose.Types.ObjectId[];
profile?: string;
profileVideo?: string;
startDate?: string;
contractValedDate?: string;
showOnWeb: boolean;
status: "Active" | "Archived";
customToken?: string;
facebookUrl?: string;
instagramUrl?: string;
linkedInUrl?: string;
twitterUrl?: string;
keyword?: string;
callCalenderUrl?: string;
agentLanguages?: string[];
deviceToken?: string[];
integrationTokens?: {
provider: string;
token: any;
}[];
groupId?: string;
group?: mongoose.Types.ObjectId;
/**
* @abstract just for JWT
*/
groupAccess?: mongoose.Types.ObjectId[];
}
interface GroupInterface extends AuditInterface {
name: string;
description: string;
tenantType: TenantType;
}
/**
* @abstract TODO: Think letter
*/
interface GroupAccessContex extends AuditInterface {
groupId: string;
group: GroupInterface;
}
interface GroupAccessContexServer extends AuditInterface {
groupId: string;
group: mongoose.Types.ObjectId;
}
interface GroupAccessInterface extends AuditInterface {
groupId: string;
group: GroupInterface;
/**
* @abstract ModelName -- Menu
*/
menu: string;
/**
* @abstract Array of Field Name of model eq: ["name", "address", "date"]
* @abstract * for all field ["*"]
* @abstract !name => Except ["!name", "!address", "!date"]
*/
view: string[];
/**
* @abstract Array of Field Name of model eq: ["name", "address", "date"]
* @abstract * for all field
* @abstract !name => Except ["!name", "!address", "!date"]
*/
create: string[];
/**
* @abstract Array of Field Name of model eq: ["name", "address", "date"]
* @abstract * for all field
* @abstract !name => Except ["!name", "!address", "!date"]
*/
update: string[];
delete: boolean;
exceptField?: string[];
}
interface GroupAccessInterfaceServer extends AuditInterface {
groupId: string;
group: mongoose.Types.ObjectId;
/**
* @abstract ModelName -- Menu
*/
menu: string;
/**
* @abstract Array of Field Name of model eq: ["name", "address", "date"]
* @abstract * for all field ["*"]
* @abstract !name => Except ["!name", "!address", "!date"]
*/
view: string[];
/**
* @abstract Array of Field Name of model eq: ["name", "address", "date"]
* @abstract * for all field
* @abstract !name => Except ["!name", "!address", "!date"]
*/
create: string[];
/**
* @abstract Array of Field Name of model eq: ["name", "address", "date"]
* @abstract * for all field
* @abstract !name => Except ["!name", "!address", "!date"]
*/
update: string[];
delete: boolean;
exceptField?: string[];
}
interface GooglePlacesInterface extends AuditInterface {
business_status?: string;
geometry: {
location: {
lat: number;
lng: number;
};
viewport: {
northeast: {
lat: number;
lng: number;
};
southwest: {
lat: number;
lng: number;
};
};
};
icon: string;
icon_background_color: string;
icon_mask_base_uri: string;
name: string;
opening_hours?: any;
photos: [
{
height: 1252;
html_attributions: string[];
photo_reference: string;
width: 1600;
}
];
place_id: string;
plus_code: any;
reference: string;
rating?: number;
scope: string;
types: string[];
vicinity: string;
user_ratings_total?: string[];
}
interface ProjectGooglePlacesInterface extends AuditInterface {
projectId: string;
project: ProjectInterface;
googlePlacesId: string;
googlePlaces: GooglePlacesInterface;
}
declare const PaymentGatewayOption: string[];
declare type PaymentGatewayType = "SQUAREUP" | "DOKU" | "BRAINTREE" | "TAZAPAY" | "NAB" | "PAYPALL";
declare const SocialMediaName: string[];
declare type SocialMediaNameType = "FACEBOOK" | "INSTAGRAM" | "YOUTUBE" | "LINKEDIN" | "TIKTOK" | "GOOGLE+" | "TWITER" | "PINTEREST";
declare const TemplateTypeData: string[];
declare type TemplateType = "NAVBAR" | "FOOTER" | "SECTION";
interface MenuType {
name: any;
url: string;
subItems?: MenuType[];
class?: string;
col?: number;
active?: boolean;
}
interface CustomRelationshipManagement {
name?: string;
credential?: unknown;
active?: boolean;
}
interface WhiteLabelInterface extends AuditInterface {
logo: string;
cssRoot: string;
menu?: MenuType[];
footer: string;
type: "MULTI PROJECTS" | "SINGLE PROJECT";
accessToken: string;
domainName: string;
proejctUrl?: string;
favicon?: string;
metaTitle?: string;
metaDescription?: string;
keyword?: string;
bannerUrl?: string;
metaImage?: string;
menus?: {
[code: string]: MenuType[];
};
/**
* @abstract New Field for Whitelabel
*/
tenantId: string;
tenant: TenantInterface;
headerTracker?: string;
footerTracker?: string;
/**
* @abstract New available on version 1.1.17
*/
socialMedia?: SocialMediaInterface[];
darkLogo?: string;
lightLogo?: string;
pipedriveToken?: string;
customerRelationshipManagement?: CustomRelationshipManagement[];
officeTime?: {
iconUrl?: string;
title?: string;
description?: string;
};
}
interface WhiteLabelInterfaceServer extends AuditInterface {
logo: string;
cssRoot: string;
menu?: MenuType[];
footer: string;
type: "MULTI PROJECTS" | "SINGLE PROJECT";
accessToken: string;
domainName: string;
proejctUrl?: string;
favicon?: string;
metaTitle?: string;
metaDescription?: string;
keyword?: string;
bannerUrl?: string;
metaImage?: string;
menus?: {
[code: string]: MenuType[];
};
/**
* @abstract New Field for Whitelabel
*/
tenantId: string;
tenant: mongoose.Types.ObjectId;
headerTracker?: string;
footerTracker?: string;
/**
* @abstract New available on version 1.1.17
*/
socialMedia?: mongoose.Types.ObjectId[];
darkLogo?: string;
lightLogo?: string;
officeTime?: {
iconUrl?: string;
title?: string;
description?: string;
};
}
/**
* @abstract New available on version 1.1.17
*/
interface TemplateDesignInterface extends AuditInterface {
name: string;
imageUrl: string;
type: TemplateType;
exampleURL?: string;
dataType?: "ARRAY" | "OBJECT";
templateDataType: string;
}
interface SocialMediaInterface {
name: SocialMediaNameType;
url: string;
tile: string;
}
interface NavbarDataInterface {
}
interface FooterSectionInterface {
title?: string;
image?: string;
shortDescription?: string;
menus?: MenuType[];
listStyle?: "list-none" | "list-disc" | "list-decimal";
listStylePosition?: "list-inside" | "list-outside";
listPosition?: "row" | "Col";
listStyleImage?: string;
lineHeight?: number;
}
interface FooterDataInterface {
[code: number]: FooterSectionInterface[];
}
interface WhitelabelTemplateInterface {
navbarDesignId: string;
navbarDesign: TemplateDesignInterface;
navbarData: NavbarDataInterface;
footerDesignId: string;
footerDesign: TemplateDesignInterface;
footerData: FooterDataInterface;
}
interface WhitelabelTemplateInterfaceServer {
navbarDesignId: string;
navbarDesign: mongoose.Types.ObjectId;
navbarData: NavbarDataInterface;
footerDesignId: string;
footerDesign: mongoose.Types.ObjectId;
footerData: FooterDataInterface;
}
/**
* @abstract ===== END update version
*/
interface WhiteLabelPaymentGatewayInterface extends AuditInterface {
whitelableId: string;
whiteLabel: WhiteLabelInterface;
projectId: string;
project: ProjectInterface;
paymentGateway: PaymentGatewayType;
token: any;
}
interface WhiteLabelPaymentGatewayInterfaceServer extends AuditInterface {
whitelableId: string;
whiteLabel: mongoose.Types.ObjectId;
projectId: string;
project: mongoose.Types.ObjectId;
paymentGateway: PaymentGatewayType;
token: any;
}
interface BlogInterface extends AuditInterface {
title?: string;
slug?: string;
shortDescription?: string;
description?: string;
categoryIds?: string[];
categories?: CategoryInterface[];
status?: StatusType;
blogDisplay?: BlogDisplay;
bannerURL?: string;
thumbnailURL?: string;
videoUrl?: string;
author?: string;
}
interface AdditionalInformationContact {
name: string;
value: string;
}
interface AdditionalInformationContactServer extends AdditionalInformationContact {
}
interface ContactInterfaceServer extends AuditInterface {
firstName: string;
lastName: string;
phoneNumber: string;
mobileNumber?: string;
email: string;
source?: SourceList;
address: mongoose.Types.ObjectId;
canSeeContactAgentIds?: string[];
canSeeContactAgents?: mongoose.Types.ObjectId[];
belongsToAgentId?: string;
belongsToAgent?: mongoose.Types.ObjectId;
image: string;
subscribed: string[];
status: "Active" | "Archived";
}
interface ContactInterface extends AuditInterface {
firstName: string;
lastName: string;
phoneNumber: string;
mobileNumber?: string;
email: string;
source?: SourceList;
address: AddressInterface;
canSeeContactAgentIds?: string[];
canSeeContactAgents?: AgentInterface[];
belongsToAgentId?: string;
belongsToAgent?: AgentInterface;
image: string;
subscribed: string[];
status: "Active" | "Archived";
id?: string;
dealId?: string;
leadsId?: string;
pipedrivePersonId?: string;
organization?: string;
owner?: string;
date?: string;
country?: string;
birthday?: string;
jobTitle?: string;
postCode?: string;
leadSource?: string;
campaign?: string;
adset?: string;
ads?: string;
pageUrl?: string;
message?: string;
note?: string;
extras?: object;
whiteLabel?: string;
}
interface LeadsInterface extends AuditInterface {
_id?: string;
id?: string;
dealId?: string;
leadsId?: string;
organization?: string;
owner?: string;
date?: string;
firstName?: string;
lastName?: string;
email?: string;
phoneNumber?: string;
country?: string;
birthday?: string;
jobTitle?: string;
postCode?: string;
leadSource?: string;
campaign?: string;
adset?: string;
ads?: string;
pageUrl?: string;
message?: string;
note?: string;
extras?: object;
}
interface TAAddress {
street1: string;
street2: string;
city: string;
state: string;
country: string;
postalcode: string;
address_string: string;
phone: string;
latitude: number;
longitude: number;
}
interface TARankingData {
geo_location_id: number;
ranking_string: string;
geo_location_name: string;
ranking_out_of: number;
}
interface TAAncestor {
abbrv: string;
level: string;
name: string;
location_id: number;
latitude: number;
longitude: number;
timezone: string;
email: string;
phone: string;
website: string;
write_review: string;
ranking_data: TARankingData;
ranking: number;
}
interface TAAward {
award_type: string;
year: number;
images: {
tiny: string;
small: string;
large: string;
};
categories: string[];
display_name: string;
}
interface TALocalize {
name: string;
localized_name: string;
rating_image_url?: string;
value?: string;
}
interface TALocation extends AuditInterface {
location_id: number;
name: string;
description?: string;
web_url?: string;
address_obj: TAAddress;
ancestors?: TAAncestor[];
rating_image_url?: string;
num_reviews?: string;
review_rating_count?: {
[code: string]: string;
};
subratings?: {
[code: string]: TALocalize;
};
photo_count?: number;
see_all_photos?: string;
price_level?: string;
hours?: {
periods: {
open: {
day: number;
time: string;
};
close: {
day: number;
time: string;
};
}[];
weekday_text: string[];
subcategory: TALocalize;
};
amenities?: string[];
features?: string[];
cuisine?: TALocalize[];
parent_brand?: string;
brand?: string;
category?: TALocalize;
subcategory?: TALocalize[];
groups?: TALocalize[];
styles?: string[];
neighborhood_info?: TALocation[];
trip_types?: TALocalize[];
awards?: TAAward[];
distance?: string;
rating?: string;
bearing?: string;
}
interface GdriveMetaData {
id: string;
name: string;
modifiedTime: string;
mimeType: string;
parents?: string[];
}
interface ProjectDriveIntegration extends GdriveMetaData {
watch: boolean;
provider: string;
listDataFile?: GdriveMetaData;
interior?: GdriveMetaData;
exterior?: GdriveMetaData;
floorPlans?: GdriveMetaData;
brochure?: GdriveMetaData;
collateral?: GdriveMetaData;
specifications?: GdriveMetaData;
lotsData?: GdriveMetaData;
}
interface ProjectMainInformation extends AuditInterface {
/**
*
*/
status: ProjectStatus;
headLine: string;
shortDescription: string;
content: string;
featured: boolean;
hideOnWebsite: boolean;
featuredByTenant?: {
[tenantId: string]: boolean;
};
hideOnWebsiteByTenant?: {
[tenantId: string]: boolean;
};
address: string;
addressCordinat: Cordinat | Cordinat[];
suburbId: string;
suburb: SuburbInterface;
suburbName: string;
stateId: string;
state: StateInterface;
stateName: string;
countryId: string;
country: CountryInterface;
countryName: string;
region: RegionInterface;
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;
projectOwnerId?: string;
projectOwner?: 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[];
driveIntegration?: ProjectDriveIntegration;
}
interface ProjectMainInformationServer extends AuditInterface {
/**
*
*/
status: ProjectStatus;
headLine: string;
shortDescription: string;
content: string;
featured: boolean;
hideOnWebsite: boolean;
featuredByTenant?: {
[tenantId: string]: boolean;
};
hideOnWebsiteByTenant?: {
[tenantId: string]: boolean;
};
address: string;
addressCordinat: Cordinat | Cordinat[];
suburbId: string;
suburb: mongoose.Types.ObjectId;
suburbName: string;
stateId: string;
state: mongoose.Types.ObjectId;
stateName: string;
countryId: string;
country: mongoose.Types.ObjectId;
countryName: string;
region: mongoose.Types.ObjectId;
regionId: string;
regionName: string;
postcode: string;
additionalInformation?: AdditionalInformation[];
taxIncluded?: boolean;
tax?: number;
tenantIds?: string[];
tenants?: mongoose.Types.ObjectId[];
aggregatorIds?: string[];
aggregators?: mongoose.Types.ObjectId[];
developerId?: string;
developerDetail?: mongoose.Types.ObjectId;
developer?: mongoose.Types.ObjectId;
projectOwnerId?: string;
projectOwner?: mongoose.Types.ObjectId;
/**
* @deprecated The method should not be used move to `projectTypeIds`
*/
projectTypeId: string;
/**
* @deprecated The method should not be used move to `projectTypes`
*/
projectType: mongoose.Types.ObjectId;
/**
* @abstract New field moving from `projectTypeId`
*/
projectTypeIds?: string[];
/**
* @abstract New field moving from `projectTypes`
*/
projectTypes?: mongoose.Types.ObjectId[];
autdoorFeature: string[];
indoorFeatures: string[];
driveIntegration?: ProjectDriveIntegration;
}
interface ProjectInterface extends ProjectImageFileAndOtherInfo {
/**
* @deprecated The method should not be used
*/
type: ProjectType;
coa: string;
/**
* @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;
};
/**
*@abstract New field stating from version 1.1.14
*/
fractionalAvailable: boolean;
}
interface ProjectInterfaceServer extends ProjectImageFileAndOtherInfoServer {
/**
* @deprecated The method should not be used
*/
type: ProjectType;
coa: string;
/**
* @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?: mongoose.Types.ObjectId[];
/**
* @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;
};
/**
*@abstract New field stating from version 1.1.14
*/
fractionalAvailable: boolean;
}
interface ProjectDesignInterface extends AuditInterface {
projectId: string;
project?: ProjectInterface;
name: string;
shortDescription: string;
content?: string;
bannerURL?: string;
thumbnailURL?: string;
gelleries?: string[];
}
interface ProjectDesignInterfaceServer extends AuditInterface {
projectId: string;
project?: mongoose.Types.ObjectId;
name: string;
shortDescription: string;
content?: string;
bannerURL?: string;
thumbnailURL?: string;
gelleries?: string[];
}
interface ProjectSummaryInterface extends AuditInterface {
unitAvailable: number;
sold: number;
minPrice: number;
maxPrice: number;
bed?: {
min: number;
max: number;
};
bath?: {
min: number;
max: number;
};
garage?: {
min: number;
max: number;
};
area?: {
min: number;
max: number;
};
prc?: number;
booked?: number;
onHold?: number;
headLine?: string;
value?: any[];
}
interface ProjectLotMainInformation extends ProjectImageFileAndOtherInfo {
projectId: string;
project: ProjectInterface;
tenantIds?: string[];
tenants?: TenantInterface[];
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;
cogs?: number;
projectUrl?: string;
stage?: string;
builder?: string;
additionalOptions?: AdditionalOption[];
builderId?: string;
builderDetail?: TenantInterface;
projectDesignId?: string;
projectDesign?: ProjectDesignInterface;
projectFacadeId?: string;
projectFacade?: ProjectFacadeInterface;
builders?: string[];
builderIds?: string[];
builderDetails?: TenantInterface[];
projectDesignIds?: string[];
projectDesigns?: ProjectDesignInterface[];
projectFacadeIds?: string[];
projectFacades?: ProjectFacadeInterface[];
}
interface ProjectLotMainInformationServer extends ProjectImageFileAndOtherInfoServer {
projectId: string;
project: mongoose.Types.ObjectId;
tenantIds?: string[];
tenants?: mongoose.Types.ObjectId[];
scheme: string;
aspect: string;
guarantee: string;
level?: string;
lot?: string;
bed?: number;
bath?: number;
garage: number;
internal: number;
external: number;
total: number;
living: number;
type: string;
price: number;
cogs?: number;
projectUrl?: string;
stage?: string;
builder?: string;
additionalOptions?: AdditionalOption[];
builderId?: string;
builderDetail?: mongoose.Types.ObjectId;
projectDesignId?: string;
projectDesign?: mongoose.Types.ObjectId;
projectFacadeId?: string;
projectFacade?: mongoose.Types.ObjectId;
builders?: string[];
builderIds?: string[];
builderDetails?: mongoose.Types.ObjectId[];
projectDesignIds?: string[];
projectDesigns?: mongoose.Types.ObjectId[];
projectFacadeIds?: string[];
projectFacades?: mongoose.Types.ObjectId[];
}
interface ProjectLotVarianceInterface extends ProjectLotMainInformation {
variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE" | "FRACTIONAL";
fractionalValue: number;
projectImageFileAndOtherInfoByTenants: {
[tenantId: string]: ProjectImageFileAndOtherInfo;
};
additionalOptions: AdditionalOption[];
projectTypeId: string;
projectType: ProjectTypeInterface;
builder?: string;
builderId?: string;
builderDetail?: TenantInterface;
projectDesignId?: string;
projectDesign?: ProjectDesignInterface;
projectFacadeId?: string;
projectFacade?: ProjectFacadeInterface;
}
interface ProjectLotVarianceInterfaceServer extends ProjectLotMainInformationServer {
variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE" | "FRACTIONAL";
fractionalValue: number;
projectImageFileAndOtherInfoByTenants: {
[tenantId: string]: ProjectImageFileAndOtherInfo;
};
additionalOptions: AdditionalOption[];
projectTypeId: string;
projectType: mongoose.Types.ObjectId;
builder?: string;
builderId?: string;
builderDetail?: mongoose.Types.ObjectId;
projectDesignId?: string;
projectDesign?: mongoose.Types.ObjectId;
projectFacadeId?: string;
projectFacade?: mongoose.Types.ObjectId;
}
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";
fractional?: boolean;
fractionalRange?: number;
}
interface LotVariancesInterfaceServer {
projectLotVarianceId: string;
projectLotVariance: mongoose.Types.ObjectId;
status: ProjectStatus;
price: number;
landPrice: number;
housePrice: number;
salesPackNumber: string;
availabilityStock: number;
additionalInformation?: AdditionalInformation[];
additionalConst?: number;
projectTypeId: string;
projectType?: mongoose.Types.ObjectId;
variationPricing?: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE";
fractional?: boolean;
fractionalRange?: number;
}
interface ProjectLotInterface extends ProjectLotMainInformation {
/**
*@abstract moving from `Projects`
*/
variationTitle: string;
fractionalIds?: string[];
fractionals: ProjectLotInterface[];
/**
* @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";
stock: number;
/**
* Default availability stock is 1
* when sold on variance availability stock 0-1 (100) equal to 100%
*/
availabilityStock: number;
/**
* @abstract setup lot available for fractional
*/
fractional?: number;
fractionalRange?: number;
projectImageFileAndOtherInfoByTenants: {
[tenantId: string]: ProjectImageFileAndOtherInfo;
};
/**
*@abstract New field stating from version 1.1.14
*/
fractionalAvailable: boolean;
}
interface ProjectLotInterfaceServer extends ProjectLotMainInformationServer {
/**
*@abstract moving from `Projects`
*/
variationTitle: string;
fractionalIds?: string[];
fractionals: mongoose.Types.ObjectId[];
/**
* @deprecated The method should not be used move to `variances`
*/
projectLotVarianceIds?: string[];
/**
* @deprecated The method should not be used move to `variances`
*/
projectLotVariances?: mongoose.Types.ObjectId[];
variances?: mongoose.Types.ObjectId[];
city: string;
estate: string;
landPrice: number;
housePrice: number;
salesPackNumber: string;
landRegistration: string;
stockType: "NORMAL" | "PARTIAL" | "FRACTIONAL";
stock: number;
/**
* Default availability stock is 1
* when sold on variance availability stock 0-1 (100) equal to 100%
*/
availabilityStock: number;
/**
* @abstract setup lot available for fractional
*/
fractional?: boolean;
fractionalRange?: number;
projectImageFileAndOtherInfoByTenants: {
[tenantId: string]: ProjectImageFileAndOtherInfo;
};
/**
*@abstract New field stating from version 1.1.14
*/
fractionalAvailable: boolean;
}
interface ProjectRequestInterface extends AuditInterface {
projectId: string;
project?: ProjectInterface;
agencyId: string;
agency?: TenantInterface;
developerId: string;
developer?: TenantInterface;
aggregatorId: string;
aggregator?: TenantInterface;
}
interface ProjectRequestInterfaceServer extends AuditInterface {
projectId: string;
project?: mongoose.Types.ObjectId;
agencyId: string;
agency?: mongoose.Types.ObjectId;
developerId: string;
developer?: mongoose.Types.ObjectId;
aggregatorId: string;
aggregator?: mongoose.Types.ObjectId;
}
declare type ProjectStatus = "DRAFT" | "AVAILABLE" | "NOTAVAILABLE" | "DELETED" | "LEASED" | "BOOKED" | "SOLD" | "HOLD" | "CONTRACT" | "PARTIAL";
declare const ProjectStatusOptions: string[];
declare type ProjectType = "Apartment" | "House & Land" | "Land" | "Office" | "Semi/Duplex" | "Block Of Units" | "Townhouse" | "Unit" | "Villa" | "Warehouse" | "Hotel/Leisure" | "Other" | "Motel" | "Resort" | "Retreat" | "Rural";
declare type CurrencyId = "EUR" | "SGD" | "GBP" | "AUD" | "USD" | "IDR" | "THB";
declare const CurrencyIdOptions: string[];
declare type ProjectStatusType = "Off The Plan" | "Completed" | "Under Construction";
declare const ProjectStatusTypeOptions: string[];
interface AdditionalInformation {
icon: string;
headline: string;
content: string;
}
interface AdditionalOption {
icon: string;
headline: string;
content: string;
priceType: string;
price: number;
}
interface RentalRevenueEstimateInterface {
headline: string;
price: number;
occupancy: number;
rate: number;
percentageCost: number;
investmentTime: number;
}
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[];
constractionUpdate: MetaDataFileInterface[];
areaGuide: string;
presentation: string;
news: string[];
podcast: string[];
webinar: string;
threesixty: string;
threesixtys: {
headline: string;
link: string;
imageUrl: string;
}[];
}
interface ProjectImageFileAndOtherInfoServer extends ProjectMainInformationServer {
videoUrl: string[];
onlineTourUrl: string[];
images: string[];
interior: string[];
exterior: string[];
floorPlans: string[] | MetaDataFileInterface[];
brochure: string[] | MetaDataFileInterface[];
collateral: string[] | MetaDataFileInterface[];
specifications: string[] | MetaDataFileInterface[];
constractionUpdate: MetaDataFileInterface[];
areaGuide: string;
presentation: string;
news: string[];
podcast: string[];
webinar: string;
threesixty: string;
threesixtys: {
headline: string;
link: string;
imageUrl: string;
}[];
}
interface ProjectFacadeInterface extends ProjectDesignInterface {
}
/**
* @deprecated The method should not be used
*/
interface ProjectTripadvisorInterface extends AuditInterface {
projectId: string;
project: ProjectInterface | mongoose.Types.ObjectId;
tripadvisorId: string;
tripadvisor: TALocation;
distance?: string;
bearing?: string;
}
declare type ListingType = "Sale" | "Lease" | "Sale & Lease";
declare type ListingStatus = "Appraisal" | "Presentation" | "Pending" | "Available" | "Conditional" | "Unconditional" | "Settled" | "Leased" | "Withdrawn" | "Archived";
declare type MarketingStatusType = "Not Listed" | "Available" | "Under Contract" | "Sold" | "Leased" | "Available Under Contract";
declare type PropertyType = "Residential" | "Rural" | "Commercial" | "Holiday" | "Business";
declare type PropertyCategory = "Apartment" | "Development" | "Factory" | "House" | "Land" | "Office" | "Semi/Duplex" | "Retail" | "Studio" | "Block Of Units" | "Terrace" | "Townhouse" | "Unit" | "Villa" | "Warehouse" | "Showroom" | "Cropping" | "Dairy" | "Farmlet" | "Horticulture" | "Lifestyle" | "Livestock" | "Viticulture" | "Mixed Farming" | "Acreage" | "Hotel/Leisure" | "Medical/Consulting" | "Other" | "BackpackerHostel" | "BedAndBreakfast" | "Campground" | "CaravanHolidayPark" | "ExecutiveRental" | "FarmStay" | "Flat" | "HouseBoat" | "Lodge" | "Motel" | "Resort" | "Retreat" | "SelfContainedCottage" | "ServicedApartment" | "Car Space" | "Accommodation/Tourism" | "Automotive" | "Beauty/Health" | "Food/Hospitality" | "Import/Export/Whole" | "Services" | "Education/Training" | "Franchise" | "Home/Garden" | "Industrial/Manufacturing" | "Leisure/Entertainment" | "Professional" | "Rural" | "Transport/Distribution";
declare type OrederBy = "soldPrice" | "searchPrice" | "address" | "lastModified" | "firstCreated" | "listedDate" | "nextInspectionDate" | "onMarketDate" | "auctionDate" | "soldDate" | "appraisalDate" | "presentationDate" | "status" | "marketingStatus" | "leasedDate";
declare type AuthorityType = "Exclusive" | "Multi List" | "Conjunctional" | "Open" | "Sale by Negotiation";
interface ListingParam {
id?: string;
page: number;
limit: number;
orderBy?: string;
include?: string;
order?: "ASC" | "DESC";
filter?: ListingInterface;
select?: string;
}
interface ListingInterface extends AppraisalInterface {
fullAddressDisplay: boolean;
addressDisplay?: string;
marketingStatus: MarketingStatusType;
authority: AuthorityType;
listingDate?: string;
listingExpiryDate?: string;
priceDisplay?: string;
price: number;
}
interface PropectSearchParams {
id?: string;
page: number;
limit: number;
orderBy?: string;
include?: string;
order?: "ASC" | "DESC";
filter: ProspectInterface;
select?: string;
}
interface ProspectInterface extends AuditInterface, AddressInterface {
propertyType: PropertyType;
propertyCategory: PropertyCategory;
listingType: ListingType;
interestLevel: "HOT" | "WARM" | "COLD";
status: "Active" | "Archived";
canSeeContactAgentIds?: string[];
canSeeContactAgents?: AgentInterface[];
belongsToAgentId?: string;
belongsToAgent?: AgentInterface;
officeId?: string;
office?: OfficesInterface;
ownerIds?: string[];
owners?: ContactInterface[];
tenantIds?: string[];
tenants?: ContactInterface[];
listingId?: string;
listing?: ListingInterface;
appraisalId?: string;
appraisal?: AppraisalInterface;
}
interface AppraisalInterface extends ProspectInterface {
displayName: string;
displayName_lower: string;
description?: string;
description_lower?: string;
agentIds?: string[];
agents?: AgentInterface[];
bedrooms?: number;
bathrooms?: number;
ensuites?: number;
toilets?: number;
frontage?: number;
rearDepth?: number;
landSize?: number;
livingAreas?: number;
buildingSize?: number;
garageSpaces?: number;
carportSpaces?: number;
openCarSpaces?: number;
outDoorFeatures?: string[];
inDoorFeatures?: string[];
allowances?: string[];
expectedPrice?: number;
rentalEstimate?: number;
minPrice: number;
maxPrice: number;
note: string;
note_lower: string;
occupancyTitle: "Whole Building" | "Parcial Building";
prospectId?: string;
prospect?: ProspectInterface;
appraisalDate?: string;
appraisalDocuments?: string[];
appraisalDocumentsWithMetaData?: MetaDataFileInterface[];
videoUrls?: string[];
onlineTourUrl?: string;
documents?: string[];
documentsWithMetaData?: MetaDataFileInterface[];
images?: string[];
thumbnails?: {
small: string;
medium: string;
large: string;
}[];
imagesMetaDataFile?: MetaDataFileInterface[];
floorPlans?: string[];
floorPlansMetaDataFile?: MetaDataFileInterface[];
}
interface TestimonialButton {
type: string;
label: string;
}
interface TestimonialInterface extends AuditInterface {
order: number;
imageUrl: string;
headline: string;
description: string;
name: string;
role: string;
rating: number;
status: string;
reviewUrl: string;
button: TestimonialButton;
}
interface TestimonialInterfaceServer extends AuditInterface {
order: number;
imageUrl: string;
headline: string;
description: string;
name: string;
role: string;
rating: number;
status: string;
}
interface TokenData {
token: string;
expiresIn: number;
}
interface DataStoredInToken {
_id: string;
}
interface UserInterface extends AuditInterface {
uid: string;
name?: string;
fullname?: string;
fullName: string;
displayName?: string;
firstName?: string;
lastName?: string;
email?: string;
email_verified?: boolean;
emailVerified?: boolean;
phoneNumber?: string;
isAnonymous?: boolean;
photoURL?: string;
address?: AddressInterface;
status: StatusType;
validThrough?: string;
slug?: string;
birthDay?: string;
nationality?: string;
socialMedia?: {
[code: string]: string;
};
wishlist?: string[];
mobile?: string;
phone?: string;
image: string;
dateOfBirth?: string;
licenceNumber?: string;
licenceExpiryDate?: string;
jobTitle?: string;
tenantId?: string;
tenant?: TenantInterface;
profile?: string;
profileVideo?: string;
startDate?: string;
contractValedDate?: string;
showOnWeb: boolean;
customToken?: string;
facebookUrl?: string;
instagramUrl?: string;
linkedInUrl?: string;
twitterUrl?: string;
keyword?: string;
callCalenderUrl?: string;
deviceToken?: string[];
groupId?: string;
}
interface UserInterfaceServer extends AuditInterface {
uid: string;
name?: string;
fullname?: string;
fullName: string;
displayName?: string;
firstName?: string;
lastName?: string;
email?: string;
email_verified?: boolean;
emailVerified?: boolean;
phoneNumber?: string;
isAnonymous?: boolean;
photoURL?: string;
address?: mongoose.Types.ObjectId;
status: StatusType;
validThrough?: string;
slug?: string;
birthDay?: string;
nationality?: string;
socialMedia?: {
[code: string]: string;
};
wishlist?: string[];
mobile?: string;
phone?: string;
image: string;
dateOfBirth?: string;
licenceNumber?: string;
licenceExpiryDate?: string;
jobTitle?: string;
tenantId?: string;
tenant?: mongoose.Types.ObjectId;
profile?: string;
profileVideo?: string;
startDate?: string;
contractValedDate?: string;
showOnWeb: boolean;
customToken?: string;
facebookUrl?: string;
instagramUrl?: string;
linkedInUrl?: string;
twitterUrl?: string;
keyword?: string;
callCalenderUrl?: string;
deviceToken?: string[];
groupId?: string;
}
interface UserWishlistInterface extends AuditInterface {
uid: string;
userId: string;
user: UserInterface;
projectId: string;
Project: ProjectInterface;
}
interface UserWishlistInterfaceServer extends AuditInterface {
uid: string;
userId: string;
user: mongoose.Types.ObjectId;
projectId: string;
Project: mongoose.Types.ObjectId;
}
declare type NotificationType = "NEW" | "READED";
interface NotificationInterface extends AuditInterface {
headline?: string;
description?: string;
link?: string;
userIdReaded?: string[];
status?: string;
type?: string;
to?: {
type: "USER" | "TENANT";
id: string;
}[];
}
interface IndustryReportInterface extends AuditInterface {
title?: string;
file?: string;
thumbnailUrl?: string;
}
declare type TransactionType = "EOI" | "HOLD" | "CONTRACT" | "DEPOSIT" | "FALL OVER" | "SOLD" | "BOOKED" | "ACTIVE";
declare type TransactionCategory = "FRACTIONAL" | "NORMAL" | "PARTIAL";
interface TransactionInterface extends AuditInterface {
id: string;
projectId: string;
project: ProjectInterface;
fractionalId?: string;
fractional?: ProjectLotInterface;
fractionalLabel?: string;
lotId?: string;
lot?: ProjectLotInterface;
lotVarianceId?: string;
lotVariance?: ProjectLotVarianceInterface;
lastStatus: TransactionType;
whiteLabelId?: string;
whiteLabel?: WhiteLabelInterface;
whiteLabelDomain: string;
tenantId?: string;
tenant?: TenantInterface;
description?: string;
clientId: string;
client: ContactInterface;
realPrice?: number;
promoCode?: string;
promoValue?: number;
pipedriveDealId?: number;
pipedriveDeal?: any;
promoType?: "Percentage" | "Fix Price";
price: number;
expiredDate?: string;
deposit: number;
currency: CurrencyId;
salesRefId?: string;
salesRef?: AgentInterface;
salesRefIds?: string[];
salesRefs?: AgentInterface[];
leadSource?: string;
ownership?: number;
transactionType: "FRACTIONAL" | "NORMAL" | "PARTIAL";
paymentStatus?: string;
paymentType?: string;
financing?: string;
note?: string;
transactionUrl?: string;
}
interface TransactionInterfaceServer extends AuditInterface {
id: string;
projectId: string;
project: mongoose.Types.ObjectId;
fractionalId?: string;
fractional?: mongoose.Types.ObjectId;
fractionalLabel?: string;
lotId?: string;
lot?: mongoose.Types.ObjectId;
lotVarianceId?: string;
lotVariance?: mongoose.Types.ObjectId;
lastStatus: TransactionType;
whiteLabelId?: string;
whiteLabel?: mongoose.Types.ObjectId;
whiteLabelDomain: string;
tenantId?: string;
tenant: mongoose.Types.ObjectId;
description?: string;
clientId: strin