| 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 .csv suffix or ?format=csv
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/csv
HTTP/1.1 200 OK
Content-Type: text/csv
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"}}}