| GET,OPTIONS | /v1/pm/project/{Uid} |
|---|
<?php namespace dtos;
use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};
class PmFinance implements JsonSerializable
{
public function __construct(
/** @var float */
public float $Budget=0.0,
/** @var float */
public float $Spent=0.0,
/** @var float */
public float $EstimatedCost=0.0,
/** @var float */
public float $CrewCost=0.0,
/** @var float */
public float $EquipCost=0.0,
/** @var float */
public float $MatCost=0.0,
/** @var float */
public float $Variance=0.0,
/** @var int */
public int $HealthPct=0,
/** @var int */
public int $SpentPct=0,
/** @var int */
public int $ProgressPct=0
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Budget'])) $this->Budget = $o['Budget'];
if (isset($o['Spent'])) $this->Spent = $o['Spent'];
if (isset($o['EstimatedCost'])) $this->EstimatedCost = $o['EstimatedCost'];
if (isset($o['CrewCost'])) $this->CrewCost = $o['CrewCost'];
if (isset($o['EquipCost'])) $this->EquipCost = $o['EquipCost'];
if (isset($o['MatCost'])) $this->MatCost = $o['MatCost'];
if (isset($o['Variance'])) $this->Variance = $o['Variance'];
if (isset($o['HealthPct'])) $this->HealthPct = $o['HealthPct'];
if (isset($o['SpentPct'])) $this->SpentPct = $o['SpentPct'];
if (isset($o['ProgressPct'])) $this->ProgressPct = $o['ProgressPct'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Budget)) $o['Budget'] = $this->Budget;
if (isset($this->Spent)) $o['Spent'] = $this->Spent;
if (isset($this->EstimatedCost)) $o['EstimatedCost'] = $this->EstimatedCost;
if (isset($this->CrewCost)) $o['CrewCost'] = $this->CrewCost;
if (isset($this->EquipCost)) $o['EquipCost'] = $this->EquipCost;
if (isset($this->MatCost)) $o['MatCost'] = $this->MatCost;
if (isset($this->Variance)) $o['Variance'] = $this->Variance;
if (isset($this->HealthPct)) $o['HealthPct'] = $this->HealthPct;
if (isset($this->SpentPct)) $o['SpentPct'] = $this->SpentPct;
if (isset($this->ProgressPct)) $o['ProgressPct'] = $this->ProgressPct;
return empty($o) ? new class(){} : $o;
}
}
class PmReadiness implements JsonSerializable
{
public function __construct(
/** @var int */
public int $JobsNoCrew=0,
/** @var int */
public int $OpenRoles=0,
/** @var int */
public int $EquipmentConflicts=0,
/** @var int */
public int $MaterialGaps=0,
/** @var int */
public int $TotalGaps=0,
/** @var int */
public int $ReadyPct=0
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['JobsNoCrew'])) $this->JobsNoCrew = $o['JobsNoCrew'];
if (isset($o['OpenRoles'])) $this->OpenRoles = $o['OpenRoles'];
if (isset($o['EquipmentConflicts'])) $this->EquipmentConflicts = $o['EquipmentConflicts'];
if (isset($o['MaterialGaps'])) $this->MaterialGaps = $o['MaterialGaps'];
if (isset($o['TotalGaps'])) $this->TotalGaps = $o['TotalGaps'];
if (isset($o['ReadyPct'])) $this->ReadyPct = $o['ReadyPct'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->JobsNoCrew)) $o['JobsNoCrew'] = $this->JobsNoCrew;
if (isset($this->OpenRoles)) $o['OpenRoles'] = $this->OpenRoles;
if (isset($this->EquipmentConflicts)) $o['EquipmentConflicts'] = $this->EquipmentConflicts;
if (isset($this->MaterialGaps)) $o['MaterialGaps'] = $this->MaterialGaps;
if (isset($this->TotalGaps)) $o['TotalGaps'] = $this->TotalGaps;
if (isset($this->ReadyPct)) $o['ReadyPct'] = $this->ReadyPct;
return empty($o) ? new class(){} : $o;
}
}
class PmJobCrew implements JsonSerializable
{
public function __construct(
/** @var int */
public int $ContactID=0,
/** @var string|null */
public ?string $Name=null,
/** @var float */
public float $Rate=0.0,
/** @var float */
public float $BudgetedHours=0.0,
/** @var bool|null */
public ?bool $IsOpen=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['ContactID'])) $this->ContactID = $o['ContactID'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['Rate'])) $this->Rate = $o['Rate'];
if (isset($o['BudgetedHours'])) $this->BudgetedHours = $o['BudgetedHours'];
if (isset($o['IsOpen'])) $this->IsOpen = $o['IsOpen'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->ContactID)) $o['ContactID'] = $this->ContactID;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->Rate)) $o['Rate'] = $this->Rate;
if (isset($this->BudgetedHours)) $o['BudgetedHours'] = $this->BudgetedHours;
if (isset($this->IsOpen)) $o['IsOpen'] = $this->IsOpen;
return empty($o) ? new class(){} : $o;
}
}
class PmJobResource implements JsonSerializable
{
public function __construct(
/** @var int */
public int $Id=0,
/** @var string|null */
public ?string $Name=null,
/** @var float */
public float $Amount=0.0,
/** @var int */
public int $Qty=0
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Id'])) $this->Id = $o['Id'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['Amount'])) $this->Amount = $o['Amount'];
if (isset($o['Qty'])) $this->Qty = $o['Qty'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Id)) $o['Id'] = $this->Id;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->Amount)) $o['Amount'] = $this->Amount;
if (isset($this->Qty)) $o['Qty'] = $this->Qty;
return empty($o) ? new class(){} : $o;
}
}
class PmJob implements JsonSerializable
{
public function __construct(
/** @var int */
public int $JobID=0,
/** @var string|null */
public ?string $Name=null,
/** @var string|null */
public ?string $Description=null,
/** @var string|null */
public ?string $Status=null,
/** @var string|null */
public ?string $StartDate=null,
/** @var string|null */
public ?string $EndDate=null,
/** @var int */
public int $CrewCount=0,
/** @var float */
public float $BudgetedHours=0.0,
/** @var int */
public int $EquipmentCount=0,
/** @var int */
public int $MaterialCount=0,
/** @var float */
public float $CrewCost=0.0,
/** @var float */
public float $EquipCost=0.0,
/** @var float */
public float $MatCost=0.0,
/** @var float */
public float $Cost=0.0,
/** @var bool|null */
public ?bool $NoCrew=null,
/** @var bool|null */
public ?bool $EquipConflict=null,
/** @var bool|null */
public ?bool $MaterialGap=null,
/** @var int */
public int $ReadyPct=0,
/** @var array<PmJobCrew>|null */
public ?array $Crew=null,
/** @var array<PmJobResource>|null */
public ?array $Equipment=null,
/** @var array<PmJobResource>|null */
public ?array $Materials=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['JobID'])) $this->JobID = $o['JobID'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['Description'])) $this->Description = $o['Description'];
if (isset($o['Status'])) $this->Status = $o['Status'];
if (isset($o['StartDate'])) $this->StartDate = $o['StartDate'];
if (isset($o['EndDate'])) $this->EndDate = $o['EndDate'];
if (isset($o['CrewCount'])) $this->CrewCount = $o['CrewCount'];
if (isset($o['BudgetedHours'])) $this->BudgetedHours = $o['BudgetedHours'];
if (isset($o['EquipmentCount'])) $this->EquipmentCount = $o['EquipmentCount'];
if (isset($o['MaterialCount'])) $this->MaterialCount = $o['MaterialCount'];
if (isset($o['CrewCost'])) $this->CrewCost = $o['CrewCost'];
if (isset($o['EquipCost'])) $this->EquipCost = $o['EquipCost'];
if (isset($o['MatCost'])) $this->MatCost = $o['MatCost'];
if (isset($o['Cost'])) $this->Cost = $o['Cost'];
if (isset($o['NoCrew'])) $this->NoCrew = $o['NoCrew'];
if (isset($o['EquipConflict'])) $this->EquipConflict = $o['EquipConflict'];
if (isset($o['MaterialGap'])) $this->MaterialGap = $o['MaterialGap'];
if (isset($o['ReadyPct'])) $this->ReadyPct = $o['ReadyPct'];
if (isset($o['Crew'])) $this->Crew = JsonConverters::fromArray('PmJobCrew', $o['Crew']);
if (isset($o['Equipment'])) $this->Equipment = JsonConverters::fromArray('PmJobResource', $o['Equipment']);
if (isset($o['Materials'])) $this->Materials = JsonConverters::fromArray('PmJobResource', $o['Materials']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->JobID)) $o['JobID'] = $this->JobID;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->Description)) $o['Description'] = $this->Description;
if (isset($this->Status)) $o['Status'] = $this->Status;
if (isset($this->StartDate)) $o['StartDate'] = $this->StartDate;
if (isset($this->EndDate)) $o['EndDate'] = $this->EndDate;
if (isset($this->CrewCount)) $o['CrewCount'] = $this->CrewCount;
if (isset($this->BudgetedHours)) $o['BudgetedHours'] = $this->BudgetedHours;
if (isset($this->EquipmentCount)) $o['EquipmentCount'] = $this->EquipmentCount;
if (isset($this->MaterialCount)) $o['MaterialCount'] = $this->MaterialCount;
if (isset($this->CrewCost)) $o['CrewCost'] = $this->CrewCost;
if (isset($this->EquipCost)) $o['EquipCost'] = $this->EquipCost;
if (isset($this->MatCost)) $o['MatCost'] = $this->MatCost;
if (isset($this->Cost)) $o['Cost'] = $this->Cost;
if (isset($this->NoCrew)) $o['NoCrew'] = $this->NoCrew;
if (isset($this->EquipConflict)) $o['EquipConflict'] = $this->EquipConflict;
if (isset($this->MaterialGap)) $o['MaterialGap'] = $this->MaterialGap;
if (isset($this->ReadyPct)) $o['ReadyPct'] = $this->ReadyPct;
if (isset($this->Crew)) $o['Crew'] = JsonConverters::toArray('PmJobCrew', $this->Crew);
if (isset($this->Equipment)) $o['Equipment'] = JsonConverters::toArray('PmJobResource', $this->Equipment);
if (isset($this->Materials)) $o['Materials'] = JsonConverters::toArray('PmJobResource', $this->Materials);
return empty($o) ? new class(){} : $o;
}
}
class PmConflict implements JsonSerializable
{
public function __construct(
/** @var string|null */
public ?string $ProjectName=null,
/** @var string|null */
public ?string $JobName=null,
/** @var string|null */
public ?string $StartDate=null,
/** @var string|null */
public ?string $EndDate=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['ProjectName'])) $this->ProjectName = $o['ProjectName'];
if (isset($o['JobName'])) $this->JobName = $o['JobName'];
if (isset($o['StartDate'])) $this->StartDate = $o['StartDate'];
if (isset($o['EndDate'])) $this->EndDate = $o['EndDate'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->ProjectName)) $o['ProjectName'] = $this->ProjectName;
if (isset($this->JobName)) $o['JobName'] = $this->JobName;
if (isset($this->StartDate)) $o['StartDate'] = $this->StartDate;
if (isset($this->EndDate)) $o['EndDate'] = $this->EndDate;
return empty($o) ? new class(){} : $o;
}
}
class PmEquipmentRow implements JsonSerializable
{
public function __construct(
/** @var int */
public int $EquipmentID=0,
/** @var string|null */
public ?string $Name=null,
/** @var string|null */
public ?string $EquipmentType=null,
/** @var string|null */
public ?string $SerialNumber=null,
/** @var string|null */
public ?string $UsedByJobs=null,
/** @var bool|null */
public ?bool $Available=null,
/** @var array<PmConflict>|null */
public ?array $Conflicts=null,
/** @var int|null */
public ?int $MaintenanceIntervalDays=null,
/** @var string|null */
public ?string $LastServiceDate=null,
/** @var string|null */
public ?string $NextServiceDate=null,
/** @var string|null */
public ?string $MaintenanceState=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['EquipmentID'])) $this->EquipmentID = $o['EquipmentID'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['EquipmentType'])) $this->EquipmentType = $o['EquipmentType'];
if (isset($o['SerialNumber'])) $this->SerialNumber = $o['SerialNumber'];
if (isset($o['UsedByJobs'])) $this->UsedByJobs = $o['UsedByJobs'];
if (isset($o['Available'])) $this->Available = $o['Available'];
if (isset($o['Conflicts'])) $this->Conflicts = JsonConverters::fromArray('PmConflict', $o['Conflicts']);
if (isset($o['MaintenanceIntervalDays'])) $this->MaintenanceIntervalDays = $o['MaintenanceIntervalDays'];
if (isset($o['LastServiceDate'])) $this->LastServiceDate = $o['LastServiceDate'];
if (isset($o['NextServiceDate'])) $this->NextServiceDate = $o['NextServiceDate'];
if (isset($o['MaintenanceState'])) $this->MaintenanceState = $o['MaintenanceState'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->EquipmentID)) $o['EquipmentID'] = $this->EquipmentID;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->EquipmentType)) $o['EquipmentType'] = $this->EquipmentType;
if (isset($this->SerialNumber)) $o['SerialNumber'] = $this->SerialNumber;
if (isset($this->UsedByJobs)) $o['UsedByJobs'] = $this->UsedByJobs;
if (isset($this->Available)) $o['Available'] = $this->Available;
if (isset($this->Conflicts)) $o['Conflicts'] = JsonConverters::toArray('PmConflict', $this->Conflicts);
if (isset($this->MaintenanceIntervalDays)) $o['MaintenanceIntervalDays'] = $this->MaintenanceIntervalDays;
if (isset($this->LastServiceDate)) $o['LastServiceDate'] = $this->LastServiceDate;
if (isset($this->NextServiceDate)) $o['NextServiceDate'] = $this->NextServiceDate;
if (isset($this->MaintenanceState)) $o['MaintenanceState'] = $this->MaintenanceState;
return empty($o) ? new class(){} : $o;
}
}
class PmMaterialRow implements JsonSerializable
{
public function __construct(
/** @var int */
public int $MaterialID=0,
/** @var string|null */
public ?string $Name=null,
/** @var string|null */
public ?string $MaterialType=null,
/** @var int */
public int $OnHand=0,
/** @var int */
public int $NeededByJobs=0,
/** @var int */
public int $QtyNeeded=0,
/** @var int */
public int $ToOrder=0,
/** @var float */
public float $UnitCost=0.0,
/** @var float */
public float $LineCost=0.0,
/** @var int */
public int $ProjectMaterialID=0,
/** @var int */
public int $StatusID=0,
/** @var string|null */
public ?string $Status=null,
/** @var string|null */
public ?string $Supplier=null,
/** @var string|null */
public ?string $OrderDate=null,
/** @var string|null */
public ?string $DeliveryDate=null,
/** @var bool|null */
public ?bool $Shortfall=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['MaterialID'])) $this->MaterialID = $o['MaterialID'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['MaterialType'])) $this->MaterialType = $o['MaterialType'];
if (isset($o['OnHand'])) $this->OnHand = $o['OnHand'];
if (isset($o['NeededByJobs'])) $this->NeededByJobs = $o['NeededByJobs'];
if (isset($o['QtyNeeded'])) $this->QtyNeeded = $o['QtyNeeded'];
if (isset($o['ToOrder'])) $this->ToOrder = $o['ToOrder'];
if (isset($o['UnitCost'])) $this->UnitCost = $o['UnitCost'];
if (isset($o['LineCost'])) $this->LineCost = $o['LineCost'];
if (isset($o['ProjectMaterialID'])) $this->ProjectMaterialID = $o['ProjectMaterialID'];
if (isset($o['StatusID'])) $this->StatusID = $o['StatusID'];
if (isset($o['Status'])) $this->Status = $o['Status'];
if (isset($o['Supplier'])) $this->Supplier = $o['Supplier'];
if (isset($o['OrderDate'])) $this->OrderDate = $o['OrderDate'];
if (isset($o['DeliveryDate'])) $this->DeliveryDate = $o['DeliveryDate'];
if (isset($o['Shortfall'])) $this->Shortfall = $o['Shortfall'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->MaterialID)) $o['MaterialID'] = $this->MaterialID;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->MaterialType)) $o['MaterialType'] = $this->MaterialType;
if (isset($this->OnHand)) $o['OnHand'] = $this->OnHand;
if (isset($this->NeededByJobs)) $o['NeededByJobs'] = $this->NeededByJobs;
if (isset($this->QtyNeeded)) $o['QtyNeeded'] = $this->QtyNeeded;
if (isset($this->ToOrder)) $o['ToOrder'] = $this->ToOrder;
if (isset($this->UnitCost)) $o['UnitCost'] = $this->UnitCost;
if (isset($this->LineCost)) $o['LineCost'] = $this->LineCost;
if (isset($this->ProjectMaterialID)) $o['ProjectMaterialID'] = $this->ProjectMaterialID;
if (isset($this->StatusID)) $o['StatusID'] = $this->StatusID;
if (isset($this->Status)) $o['Status'] = $this->Status;
if (isset($this->Supplier)) $o['Supplier'] = $this->Supplier;
if (isset($this->OrderDate)) $o['OrderDate'] = $this->OrderDate;
if (isset($this->DeliveryDate)) $o['DeliveryDate'] = $this->DeliveryDate;
if (isset($this->Shortfall)) $o['Shortfall'] = $this->Shortfall;
return empty($o) ? new class(){} : $o;
}
}
class PmCalendarBar implements JsonSerializable
{
public function __construct(
/** @var int */
public int $JobID=0,
/** @var string|null */
public ?string $Name=null,
/** @var string|null */
public ?string $StartDate=null,
/** @var string|null */
public ?string $EndDate=null,
/** @var string|null */
public ?string $Status=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['JobID'])) $this->JobID = $o['JobID'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['StartDate'])) $this->StartDate = $o['StartDate'];
if (isset($o['EndDate'])) $this->EndDate = $o['EndDate'];
if (isset($o['Status'])) $this->Status = $o['Status'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->JobID)) $o['JobID'] = $this->JobID;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->StartDate)) $o['StartDate'] = $this->StartDate;
if (isset($this->EndDate)) $o['EndDate'] = $this->EndDate;
if (isset($this->Status)) $o['Status'] = $this->Status;
return empty($o) ? new class(){} : $o;
}
}
class PmCatalogItem implements JsonSerializable
{
public function __construct(
/** @var int */
public int $Id=0,
/** @var string|null */
public ?string $Name=null,
/** @var float */
public float $Amount=0.0
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Id'])) $this->Id = $o['Id'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['Amount'])) $this->Amount = $o['Amount'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Id)) $o['Id'] = $this->Id;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->Amount)) $o['Amount'] = $this->Amount;
return empty($o) ? new class(){} : $o;
}
}
class PmProjectDetail implements JsonSerializable
{
public function __construct(
/** @var int */
public int $ProjectID=0,
/** @var string|null */
public ?string $ProjectUID=null,
/** @var string|null */
public ?string $Name=null,
/** @var string|null */
public ?string $Client=null,
/** @var string|null */
public ?string $ProjectType=null,
/** @var string|null */
public ?string $Status=null,
/** @var string|null */
public ?string $Branch=null,
/** @var string|null */
public ?string $StartDate=null,
/** @var string|null */
public ?string $EndDate=null,
/** @var string|null */
public ?string $Description=null,
/** @var PmFinance|null */
public ?PmFinance $Finance=null,
/** @var PmReadiness|null */
public ?PmReadiness $Readiness=null,
/** @var array<PmJob>|null */
public ?array $Jobs=null,
/** @var array<PmEquipmentRow>|null */
public ?array $Equipment=null,
/** @var array<PmMaterialRow>|null */
public ?array $Materials=null,
/** @var array<PmCalendarBar>|null */
public ?array $Calendar=null,
/** @var array<PmCatalogItem>|null */
public ?array $ProjectStatuses=null,
/** @var ResponseStatus|null */
public ?ResponseStatus $ResponseStatus=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['ProjectID'])) $this->ProjectID = $o['ProjectID'];
if (isset($o['ProjectUID'])) $this->ProjectUID = $o['ProjectUID'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['Client'])) $this->Client = $o['Client'];
if (isset($o['ProjectType'])) $this->ProjectType = $o['ProjectType'];
if (isset($o['Status'])) $this->Status = $o['Status'];
if (isset($o['Branch'])) $this->Branch = $o['Branch'];
if (isset($o['StartDate'])) $this->StartDate = $o['StartDate'];
if (isset($o['EndDate'])) $this->EndDate = $o['EndDate'];
if (isset($o['Description'])) $this->Description = $o['Description'];
if (isset($o['Finance'])) $this->Finance = JsonConverters::from('PmFinance', $o['Finance']);
if (isset($o['Readiness'])) $this->Readiness = JsonConverters::from('PmReadiness', $o['Readiness']);
if (isset($o['Jobs'])) $this->Jobs = JsonConverters::fromArray('PmJob', $o['Jobs']);
if (isset($o['Equipment'])) $this->Equipment = JsonConverters::fromArray('PmEquipmentRow', $o['Equipment']);
if (isset($o['Materials'])) $this->Materials = JsonConverters::fromArray('PmMaterialRow', $o['Materials']);
if (isset($o['Calendar'])) $this->Calendar = JsonConverters::fromArray('PmCalendarBar', $o['Calendar']);
if (isset($o['ProjectStatuses'])) $this->ProjectStatuses = JsonConverters::fromArray('PmCatalogItem', $o['ProjectStatuses']);
if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->ProjectID)) $o['ProjectID'] = $this->ProjectID;
if (isset($this->ProjectUID)) $o['ProjectUID'] = $this->ProjectUID;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->Client)) $o['Client'] = $this->Client;
if (isset($this->ProjectType)) $o['ProjectType'] = $this->ProjectType;
if (isset($this->Status)) $o['Status'] = $this->Status;
if (isset($this->Branch)) $o['Branch'] = $this->Branch;
if (isset($this->StartDate)) $o['StartDate'] = $this->StartDate;
if (isset($this->EndDate)) $o['EndDate'] = $this->EndDate;
if (isset($this->Description)) $o['Description'] = $this->Description;
if (isset($this->Finance)) $o['Finance'] = JsonConverters::to('PmFinance', $this->Finance);
if (isset($this->Readiness)) $o['Readiness'] = JsonConverters::to('PmReadiness', $this->Readiness);
if (isset($this->Jobs)) $o['Jobs'] = JsonConverters::toArray('PmJob', $this->Jobs);
if (isset($this->Equipment)) $o['Equipment'] = JsonConverters::toArray('PmEquipmentRow', $this->Equipment);
if (isset($this->Materials)) $o['Materials'] = JsonConverters::toArray('PmMaterialRow', $this->Materials);
if (isset($this->Calendar)) $o['Calendar'] = JsonConverters::toArray('PmCalendarBar', $this->Calendar);
if (isset($this->ProjectStatuses)) $o['ProjectStatuses'] = JsonConverters::toArray('PmCatalogItem', $this->ProjectStatuses);
if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
return empty($o) ? new class(){} : $o;
}
}
class PmProjectDetailRequest implements JsonSerializable
{
public function __construct(
/** @var string|null */
public ?string $Uid=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Uid'])) $this->Uid = $o['Uid'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Uid)) $o['Uid'] = $this->Uid;
return empty($o) ? new class(){} : $o;
}
}
PHP PmProjectDetailRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v1/pm/project/{Uid} HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
ProjectID: 0,
ProjectUID: String,
Name: String,
Client: String,
ProjectType: String,
Status: String,
Branch: String,
StartDate: String,
EndDate: String,
Description: String,
Finance:
{
Budget: 0,
Spent: 0,
EstimatedCost: 0,
CrewCost: 0,
EquipCost: 0,
MatCost: 0,
Variance: 0,
HealthPct: 0,
SpentPct: 0,
ProgressPct: 0
},
Readiness:
{
JobsNoCrew: 0,
OpenRoles: 0,
EquipmentConflicts: 0,
MaterialGaps: 0,
TotalGaps: 0,
ReadyPct: 0
},
Jobs:
[
{
JobID: 0,
Name: String,
Description: String,
Status: String,
StartDate: String,
EndDate: String,
CrewCount: 0,
BudgetedHours: 0,
EquipmentCount: 0,
MaterialCount: 0,
CrewCost: 0,
EquipCost: 0,
MatCost: 0,
Cost: 0,
NoCrew: False,
EquipConflict: False,
MaterialGap: False,
ReadyPct: 0,
Crew:
[
{
ContactID: 0,
Name: String,
Rate: 0,
BudgetedHours: 0,
IsOpen: False
}
],
Equipment:
[
{
Id: 0,
Name: String,
Amount: 0,
Qty: 0
}
],
Materials:
[
{
Id: 0,
Name: String,
Amount: 0,
Qty: 0
}
]
}
],
Equipment:
[
{
EquipmentID: 0,
Name: String,
EquipmentType: String,
SerialNumber: String,
UsedByJobs: String,
Available: False,
Conflicts:
[
{
ProjectName: String,
JobName: String,
StartDate: String,
EndDate: String
}
],
MaintenanceIntervalDays: 0,
LastServiceDate: String,
NextServiceDate: String,
MaintenanceState: String
}
],
Materials:
[
{
MaterialID: 0,
Name: String,
MaterialType: String,
OnHand: 0,
NeededByJobs: 0,
QtyNeeded: 0,
ToOrder: 0,
UnitCost: 0,
LineCost: 0,
ProjectMaterialID: 0,
StatusID: 0,
Status: String,
Supplier: String,
OrderDate: String,
DeliveryDate: String,
Shortfall: False
}
],
Calendar:
[
{
JobID: 0,
Name: String,
StartDate: String,
EndDate: String,
Status: String
}
],
ProjectStatuses:
[
{
Id: 0,
Name: String,
Amount: 0
}
],
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
}
}