Project Model - Complete Field Reference
This page provides complete documentation of all properties within the Project model.
Note:
Projectis a master entity representing a new construction project. Individual units reference this project viaProjectIdin theEstatemodel.Note: For project-specific classes like
PhaseandBuilding, see the Project Classes documentation. For shared classes likeAddress,Image, andDescriptionSection, see the Shared Classes documentation.
Project Class
The main class representing a real estate development project.
Core Identification & System
| Property | Type | Description | Example |
|---|---|---|---|
Id |
string |
Unique identifier for the project. | "PROJ-2024-001" |
Name |
string |
Name of the project. | "Tribunen" |
Origin |
string? |
The source system this project data came from. | "Vitec" |
LastModifiedOrigin |
DateTime? |
When this project data was last updated in the origin system. | 2025-10-28T14:39:00Z |
LastModifiedLocal |
DateTime? |
When this project data was last updated locally in Destinet. | 2025-10-28T15:30:00Z |
CustomData |
Dictionary<string, object>? |
System-specific metadata. | { "VitecProjectNo": "P1001" } |
Project Details
| Property | Type | Description | Example |
|---|---|---|---|
Description |
string? |
Description of the overall project. | Full text description |
Developer |
string? |
Developer/builder company name. | "Veidekke Entreprenør AS" |
DeveloperWebsite |
string? |
URL to developer/builder company website. | https://www.veidekke.no |
Website |
string? |
URL to the specific project website. | https://www.tribunen.no |
TotalUnits |
int? |
Total number of units (e.g., apartments, houses) in the project. | 120 |
Timeline and Location
| Property | Type | Description | Example |
|---|---|---|---|
ConstructionStarted |
bool? |
Whether construction has officially started. | true |
ConstructionStartDate |
DateTime? |
Start date of construction. | 2024-05-01 |
ExpectedCompletionDate |
DateTime? |
Expected completion date for the entire project. | 2026-06-30 |
Address |
Address? |
Location/address information for the project. | |
GeoCoordinates |
GeoCoordinates? |
Geographic coordinates for the project. |
Internal Structure and Content
| Property | Type | Description |
|---|---|---|
Phases |
List<Phase>? |
Construction phases in this project. |
Buildings |
List<Building>? |
Individual buildings within this project. |
DescriptionSections |
List<DescriptionSection>? |
Descriptive sections (location, amenities, etc.). |
Features |
Dictionary<string, string>? |
Project features as key-value pairs. |
ExternalPlatformUrls |
ExternalPlatformUrls? |
URLs for external platforms where this project is listed. |
Images |
ImageCollection? |
Marketing images and renderings for the overall project. |
Documents |
DocumentCollection? |
Project documents (brochures, site plans, legal). |
Employee/Department References
| Property | Type | Description | Example |
|---|---|---|---|
DepartmentId |
string? |
Reference to the department/office handling this project. | "3005093" |
PrimaryAgentId |
string? |
Reference to the primary contact employee. | "3006722" |
AdditionalAgentIds |
List<string>? |
References to additional employees involved. | ["3006723"] |
Supporting Classes (Shared)
For complete documentation of shared classes, see the Shared Classes section.
These classes are reusable across multiple model types (Estate, Department, Employee, Project, etc.). They are documented in detail in their own pages.
- Address - Location information (Street, City, PostalCode, etc.)
- GeoCoordinates - Geographic coordinates (Latitude, Longitude)
- Image - Generic image class for all entities
- PropertyDocument - Documents (floor plans, PDFs, etc.)
- DescriptionSection - Structured description sections
- ExternalPlatformUrls - URLs for external platforms
Phase
Represents a defined stage of construction or sales within the project.
| Property | Type | Description | Example |
|---|---|---|---|
Id |
string |
Unique identifier for the phase. | "FASE-1" |
Name |
string |
Display name of the phase. | "Phase 1, Trinn 1" |
PhaseNumber |
int? |
Phase number for ordering. | 1 |
Description |
string |
Description of the phase. | |
ExpectedStartDate |
DateTime? |
Expected start date for this phase. | 2024-03-01 |
ExpectedCompletionDate |
DateTime? |
Expected completion date for this phase. | 2025-12-01 |
Status |
string |
Current status of the phase. | "Under Construction", "Sold Out" |
TotalUnits |
int? |
Total number of units in this phase. | 40 |
AvailableUnits |
int? |
Number of units still available for sale in this phase. | 15 |
Images |
List<Image> |
Phase-specific images. | |
Documents |
List<PropertyDocument> |
Phase-specific documents. |
Building
Represents an individual building structure within the larger project area.
| Property | Type | Description | Example |
|---|---|---|---|
Id |
string |
Unique identifier for the building. | "BYGG-A" |
Name |
string |
Display name of the building. | "Building A, The Tower" |
PhaseId |
string |
Reference to the phase this building belongs to. | "FASE-1" |
Description |
string |
Description of the building. | |
Address |
Address |
Specific address for this building. | |
NumberOfFloors |
int? |
Number of floors in the building. | 15 |
TotalUnits |
int? |
Total number of units in this building. | 30 |
AvailableUnits |
int? |
Number of units still available for sale in this building. | 5 |
NumberOfEntrances |
int? |
Number of entrances/stairwells. | 2 |
BuildingType |
string |
Building type/category. | "Apartment Block", "Townhouse" |
Status |
string |
Current status of the building. | "Under Construction", "Ready for Move-in" |
ExpectedCompletionDate |
DateTime? |
Expected completion date for this building. | 2025-12-01 |
Images |
List<Image> |
Building-specific images. | |
Documents |
List<PropertyDocument> |
Building-specific documents. |
Complete Usage Example
This example demonstrates how to populate the Project model, including adding a Phase and a Building.
var project = new Project
{
// Core Identification and Details
Id = "PROJ-2024-001",
Name = "The Waterfront Residences",
Origin = "Vitec",
LastModifiedOrigin = DateTime.Parse("2025-10-28T14:39:00Z"),
LastModifiedLocal = DateTime.Parse("2025-10-28T15:30:00Z"),
// Project Details
Description = "A modern residential complex with stunning waterfront views...",
Developer = "Nordic Build Corp",
DeveloperWebsite = "https://www.nordicbuild.no",
Website = "https://www.waterfrontresidences.no",
TotalUnits = 75,
// Timeline
ConstructionStarted = true,
ConstructionStartDate = DateTime.Parse("2024-05-01"),
ExpectedCompletionDate = DateTime.Parse("2026-06-30"),
// Location
Address = new Address
{
Street = "Havnepromenaden 10",
ZipCode = "0252",
City = "Oslo",
Municipality = "Oslo",
County = "Oslo",
Country = "Norway",
CountryCode = "NO"
},
GeoCoordinates = new GeoCoordinates
{
Latitude = 59.9072m,
Longitude = 10.7567m
},
// Content
Features = new Dictionary<string, string>
{
["Elevator"] = "Yes",
["Underground Parking"] = "Yes",
["Balcony"] = "Standard in all units",
["Storage"] = "Included"
},
// External URLs
ExternalPlatformUrls = new ExternalPlatformUrls
{
PrimaryUrl = "https://www.waterfrontresidences.no",
InterestRegistrationUrl = "https://www.waterfrontresidences.no/register",
PlatformUrls = new Dictionary<string, string>
{
["Finn.no"] = "https://www.finn.no/project/..."
}
},
// Responsible Department and Employees
DepartmentId = "3005093",
PrimaryAgentId = "3006722",
AdditionalAgentIds = new List<string> { "3006723" },
// System Metadata
CustomData = new Dictionary<string, object>
{
{ "InternalProjectCode", "WF-OSL24" }
}
};
// 1. Define a Phase
var phaseOne = new Phase
{
Id = "FASE-1",
Name = "Phase One: The Tower",
PhaseNumber = 1,
Description = "The first phase includes the main tower building...",
Status = "Under Construction",
TotalUnits = 45,
AvailableUnits = 10,
ExpectedStartDate = DateTime.Parse("2024-03-01"),
ExpectedCompletionDate = DateTime.Parse("2025-12-01")
};
// Add phase images
phaseOne.Images = new ImageCollection();
phaseOne.Images.Add(new Image
{
Id = "phase1-render",
OriginalUrl = "https://cdn.project.com/phase1-render.jpg",
Filename = "phase1-render.jpg",
FileExtension = "jpg",
Caption = "Phase 1 architectural rendering",
AltText = "3D rendering of the tower building",
Category = "Rendering",
Order = 1,
Width = 1920,
Height = 1080
});
// 2. Define a Building
var buildingA = new Building
{
Id = "BYGG-A",
Name = "The A-Block",
PhaseId = phaseOne.Id, // Link to Phase
Description = "Modern apartment block with panoramic views...",
BuildingType = "Apartment Block",
Status = "Under Construction",
TotalUnits = 30,
AvailableUnits = 5,
NumberOfFloors = 10,
NumberOfEntrances = 2,
ExpectedCompletionDate = DateTime.Parse("2025-12-01"),
Address = new Address
{
Street = "Havnepromenaden 10A",
ZipCode = "0252",
City = "Oslo"
}
};
// Add Documents to the Building
buildingA.Documents = new DocumentCollection();
buildingA.Documents.Add(new PropertyDocument
{
Id = "doc-a-plan",
Title = "Building A Floor Plans",
Url = "https://cdn.project.com/building-a-plans.pdf",
FileName = "building-a-plans",
FileExtension = "pdf",
Type = 1, // Floor plan type
IsPublic = true,
Order = 1
});
// 3. Add the Phase and Building to the Project
project.Phases = new List<Phase> { phaseOne };
project.Buildings = new List<Building> { buildingA };
// Add project-level images
project.Images = new ImageCollection();
project.Images.Add(new Image
{
Id = "project-aerial",
OriginalUrl = "https://cdn.project.com/aerial-view.jpg",
Filename = "aerial-view.jpg",
FileExtension = "jpg",
Caption = "Aerial view of the entire project area",
AltText = "Aerial photograph showing project location",
Category = "Project Overview",
Order = 1,
Width = 2400,
Height = 1600
});
// Add description sections
project.DescriptionSections = new List<DescriptionSection>();
project.DescriptionSections.Add(new DescriptionSection
{
GroupName = "LOCATION",
Title = "Prime Waterfront Location",
Content = "Located in the heart of Oslo's vibrant waterfront...",
Order = 1
});
project.DescriptionSections.Add(new DescriptionSection
{
GroupName = "AMENITIES",
Title = "Premium Facilities",
Content = "Residents enjoy access to a state-of-the-art gym...",
Order = 2
});
Working with Project Data
Example: Finding Projects by Department
// Get all projects for a specific department
var departmentProjects = projects.Where(p => p.DepartmentId == "3005093");
// Get projects with construction started
var activeProjects = projects.Where(p => p.ConstructionStarted);
// Get projects with available units
var projectsWithAvailability = projects.Where(p =>
p.Phases.Any(phase => phase.AvailableUnits > 0) ||
p.Buildings.Any(building => building.AvailableUnits > 0)
);
Example: Finding Related Entities
// Get all estates/units in this project
var projectUnits = estates.Where(e => e.ProjectId == project.Id);
// Get the department handling this project
var projectDepartment = departments.FirstOrDefault(d => d.Id == project.DepartmentId);
// Get the primary contact employee
var primaryContact = employees.FirstOrDefault(e => e.Id == project.PrimaryAgentId);
Download
- Download Project.cs - Complete C# source code
- Download Building.cs - Building-specific class
- Download Phase.cs - Phase-specific class
Related Pages
- Overview - High-level overview of the Project model
- Shared Classes - Reusable classes documentation
- Estate Model - Learn about estates
- Department Model - Learn about departments
- Employee Model - Learn about employees