Trendsic Platform Service

<back to all web services

RfpSchedulePreviewRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
POST,OPTIONS/v1/Rfp/SchedulePreview
import 'package:servicestack/servicestack.dart';

class ResourcedPosition implements IConvertible
{
    String? PositionTag;
    double? Hours;
    int? Headcount;
    String? SourceReference;
    String? Notes;
    bool? IsInCatalog;
    int? ContactID;

    ResourcedPosition({this.PositionTag,this.Hours,this.Headcount,this.SourceReference,this.Notes,this.IsInCatalog,this.ContactID});
    ResourcedPosition.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PositionTag = json['PositionTag'];
        Hours = JsonConverters.toDouble(json['Hours']);
        Headcount = json['Headcount'];
        SourceReference = json['SourceReference'];
        Notes = json['Notes'];
        IsInCatalog = json['IsInCatalog'];
        ContactID = json['ContactID'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PositionTag': PositionTag,
        'Hours': Hours,
        'Headcount': Headcount,
        'SourceReference': SourceReference,
        'Notes': Notes,
        'IsInCatalog': IsInCatalog,
        'ContactID': ContactID
    };

    getTypeName() => "ResourcedPosition";
    TypeContext? context = _ctx;
}

class ResourcedEquipment implements IConvertible
{
    int? EquipmentID;
    String? EquipmentName;
    String? MakeModel;
    double? Quantity;
    double? DurationDays;
    String? SourceReference;
    String? Notes;
    bool? IsInCatalog;
    int? SuggestedEquipmentID;
    String? SuggestedEquipmentName;

    ResourcedEquipment({this.EquipmentID,this.EquipmentName,this.MakeModel,this.Quantity,this.DurationDays,this.SourceReference,this.Notes,this.IsInCatalog,this.SuggestedEquipmentID,this.SuggestedEquipmentName});
    ResourcedEquipment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        EquipmentID = json['EquipmentID'];
        EquipmentName = json['EquipmentName'];
        MakeModel = json['MakeModel'];
        Quantity = JsonConverters.toDouble(json['Quantity']);
        DurationDays = JsonConverters.toDouble(json['DurationDays']);
        SourceReference = json['SourceReference'];
        Notes = json['Notes'];
        IsInCatalog = json['IsInCatalog'];
        SuggestedEquipmentID = json['SuggestedEquipmentID'];
        SuggestedEquipmentName = json['SuggestedEquipmentName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'EquipmentID': EquipmentID,
        'EquipmentName': EquipmentName,
        'MakeModel': MakeModel,
        'Quantity': Quantity,
        'DurationDays': DurationDays,
        'SourceReference': SourceReference,
        'Notes': Notes,
        'IsInCatalog': IsInCatalog,
        'SuggestedEquipmentID': SuggestedEquipmentID,
        'SuggestedEquipmentName': SuggestedEquipmentName
    };

    getTypeName() => "ResourcedEquipment";
    TypeContext? context = _ctx;
}

class ResourcedMaterial implements IConvertible
{
    int? MaterialID;
    String? MaterialName;
    String? MakeModel;
    double? Quantity;
    String? Unit;
    String? SourceReference;
    String? Notes;
    bool? IsInCatalog;
    int? SuggestedMaterialID;
    String? SuggestedMaterialName;

    ResourcedMaterial({this.MaterialID,this.MaterialName,this.MakeModel,this.Quantity,this.Unit,this.SourceReference,this.Notes,this.IsInCatalog,this.SuggestedMaterialID,this.SuggestedMaterialName});
    ResourcedMaterial.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        MaterialID = json['MaterialID'];
        MaterialName = json['MaterialName'];
        MakeModel = json['MakeModel'];
        Quantity = JsonConverters.toDouble(json['Quantity']);
        Unit = json['Unit'];
        SourceReference = json['SourceReference'];
        Notes = json['Notes'];
        IsInCatalog = json['IsInCatalog'];
        SuggestedMaterialID = json['SuggestedMaterialID'];
        SuggestedMaterialName = json['SuggestedMaterialName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'MaterialID': MaterialID,
        'MaterialName': MaterialName,
        'MakeModel': MakeModel,
        'Quantity': Quantity,
        'Unit': Unit,
        'SourceReference': SourceReference,
        'Notes': Notes,
        'IsInCatalog': IsInCatalog,
        'SuggestedMaterialID': SuggestedMaterialID,
        'SuggestedMaterialName': SuggestedMaterialName
    };

    getTypeName() => "ResourcedMaterial";
    TypeContext? context = _ctx;
}

class TaskResourcing implements IConvertible
{
    List<ResourcedPosition>? Positions = [];
    List<ResourcedEquipment>? Equipment = [];
    List<ResourcedMaterial>? Materials = [];

    TaskResourcing({this.Positions,this.Equipment,this.Materials});
    TaskResourcing.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Positions = JsonConverters.fromJson(json['Positions'],'List<ResourcedPosition>',context!);
        Equipment = JsonConverters.fromJson(json['Equipment'],'List<ResourcedEquipment>',context!);
        Materials = JsonConverters.fromJson(json['Materials'],'List<ResourcedMaterial>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Positions': JsonConverters.toJson(Positions,'List<ResourcedPosition>',context!),
        'Equipment': JsonConverters.toJson(Equipment,'List<ResourcedEquipment>',context!),
        'Materials': JsonConverters.toJson(Materials,'List<ResourcedMaterial>',context!)
    };

    getTypeName() => "TaskResourcing";
    TypeContext? context = _ctx;
}

class ProposedTask implements IConvertible
{
    int? Seq;
    String? Name;
    String? Category;
    double? Quantity;
    String? Unit;
    String? SourceItemNumber;
    String? SourceReference;
    String? Notes;
    TaskResourcing? Resourcing;
    double? DurationDays;
    List<int>? DependsOn = [];
    DateTime? EstimatedStartDate;
    DateTime? EstimatedEndDate;

    ProposedTask({this.Seq,this.Name,this.Category,this.Quantity,this.Unit,this.SourceItemNumber,this.SourceReference,this.Notes,this.Resourcing,this.DurationDays,this.DependsOn,this.EstimatedStartDate,this.EstimatedEndDate});
    ProposedTask.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        Name = json['Name'];
        Category = json['Category'];
        Quantity = JsonConverters.toDouble(json['Quantity']);
        Unit = json['Unit'];
        SourceItemNumber = json['SourceItemNumber'];
        SourceReference = json['SourceReference'];
        Notes = json['Notes'];
        Resourcing = JsonConverters.fromJson(json['Resourcing'],'TaskResourcing',context!);
        DurationDays = JsonConverters.toDouble(json['DurationDays']);
        DependsOn = JsonConverters.fromJson(json['DependsOn'],'List<int>',context!);
        EstimatedStartDate = JsonConverters.fromJson(json['EstimatedStartDate'],'DateTime',context!);
        EstimatedEndDate = JsonConverters.fromJson(json['EstimatedEndDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'Name': Name,
        'Category': Category,
        'Quantity': Quantity,
        'Unit': Unit,
        'SourceItemNumber': SourceItemNumber,
        'SourceReference': SourceReference,
        'Notes': Notes,
        'Resourcing': JsonConverters.toJson(Resourcing,'TaskResourcing',context!),
        'DurationDays': DurationDays,
        'DependsOn': JsonConverters.toJson(DependsOn,'List<int>',context!),
        'EstimatedStartDate': JsonConverters.toJson(EstimatedStartDate,'DateTime',context!),
        'EstimatedEndDate': JsonConverters.toJson(EstimatedEndDate,'DateTime',context!)
    };

    getTypeName() => "ProposedTask";
    TypeContext? context = _ctx;
}

class ProjectProposal implements IConvertible
{
    int? RfpDocumentID;
    String? ProjectName;
    String? ClientName;
    String? ProjectType;
    String? ProjectLocation;
    String? Scope;
    String? ProjectDescription;
    int? ContractDurationDays;
    String? BidDueDate;
    DateTime? EstimatedStartDate;
    DateTime? EstimatedEndDate;
    List<ProposedTask>? Tasks = [];

    ProjectProposal({this.RfpDocumentID,this.ProjectName,this.ClientName,this.ProjectType,this.ProjectLocation,this.Scope,this.ProjectDescription,this.ContractDurationDays,this.BidDueDate,this.EstimatedStartDate,this.EstimatedEndDate,this.Tasks});
    ProjectProposal.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        RfpDocumentID = json['RfpDocumentID'];
        ProjectName = json['ProjectName'];
        ClientName = json['ClientName'];
        ProjectType = json['ProjectType'];
        ProjectLocation = json['ProjectLocation'];
        Scope = json['Scope'];
        ProjectDescription = json['ProjectDescription'];
        ContractDurationDays = json['ContractDurationDays'];
        BidDueDate = json['BidDueDate'];
        EstimatedStartDate = JsonConverters.fromJson(json['EstimatedStartDate'],'DateTime',context!);
        EstimatedEndDate = JsonConverters.fromJson(json['EstimatedEndDate'],'DateTime',context!);
        Tasks = JsonConverters.fromJson(json['Tasks'],'List<ProposedTask>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'RfpDocumentID': RfpDocumentID,
        'ProjectName': ProjectName,
        'ClientName': ClientName,
        'ProjectType': ProjectType,
        'ProjectLocation': ProjectLocation,
        'Scope': Scope,
        'ProjectDescription': ProjectDescription,
        'ContractDurationDays': ContractDurationDays,
        'BidDueDate': BidDueDate,
        'EstimatedStartDate': JsonConverters.toJson(EstimatedStartDate,'DateTime',context!),
        'EstimatedEndDate': JsonConverters.toJson(EstimatedEndDate,'DateTime',context!),
        'Tasks': JsonConverters.toJson(Tasks,'List<ProposedTask>',context!)
    };

    getTypeName() => "ProjectProposal";
    TypeContext? context = _ctx;
}

class CrewPlanLine implements IConvertible
{
    String? PositionTag;
    int? Needed;
    int? NaiveTotal;
    int? TaskAssignments;

    CrewPlanLine({this.PositionTag,this.Needed,this.NaiveTotal,this.TaskAssignments});
    CrewPlanLine.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PositionTag = json['PositionTag'];
        Needed = json['Needed'];
        NaiveTotal = json['NaiveTotal'];
        TaskAssignments = json['TaskAssignments'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PositionTag': PositionTag,
        'Needed': Needed,
        'NaiveTotal': NaiveTotal,
        'TaskAssignments': TaskAssignments
    };

    getTypeName() => "CrewPlanLine";
    TypeContext? context = _ctx;
}

class RfpProposalResponse implements IConvertible
{
    ResponseStatus? ResponseStatus;
    int? RfpDocumentID;
    ProjectProposal? Proposal;
    List<CrewPlanLine>? CrewPlan = [];

    RfpProposalResponse({this.ResponseStatus,this.RfpDocumentID,this.Proposal,this.CrewPlan});
    RfpProposalResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        RfpDocumentID = json['RfpDocumentID'];
        Proposal = JsonConverters.fromJson(json['Proposal'],'ProjectProposal',context!);
        CrewPlan = JsonConverters.fromJson(json['CrewPlan'],'List<CrewPlanLine>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
        'RfpDocumentID': RfpDocumentID,
        'Proposal': JsonConverters.toJson(Proposal,'ProjectProposal',context!),
        'CrewPlan': JsonConverters.toJson(CrewPlan,'List<CrewPlanLine>',context!)
    };

    getTypeName() => "RfpProposalResponse";
    TypeContext? context = _ctx;
}

class RfpSchedulePreviewRequest implements IConvertible
{
    ProjectProposal? Proposal;

    RfpSchedulePreviewRequest({this.Proposal});
    RfpSchedulePreviewRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Proposal = JsonConverters.fromJson(json['Proposal'],'ProjectProposal',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Proposal': JsonConverters.toJson(Proposal,'ProjectProposal',context!)
    };

    getTypeName() => "RfpSchedulePreviewRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
    'ResourcedPosition': TypeInfo(TypeOf.Class, create:() => ResourcedPosition()),
    'ResourcedEquipment': TypeInfo(TypeOf.Class, create:() => ResourcedEquipment()),
    'ResourcedMaterial': TypeInfo(TypeOf.Class, create:() => ResourcedMaterial()),
    'TaskResourcing': TypeInfo(TypeOf.Class, create:() => TaskResourcing()),
    'List<ResourcedPosition>': TypeInfo(TypeOf.Class, create:() => <ResourcedPosition>[]),
    'List<ResourcedEquipment>': TypeInfo(TypeOf.Class, create:() => <ResourcedEquipment>[]),
    'List<ResourcedMaterial>': TypeInfo(TypeOf.Class, create:() => <ResourcedMaterial>[]),
    'ProposedTask': TypeInfo(TypeOf.Class, create:() => ProposedTask()),
    'ProjectProposal': TypeInfo(TypeOf.Class, create:() => ProjectProposal()),
    'List<ProposedTask>': TypeInfo(TypeOf.Class, create:() => <ProposedTask>[]),
    'CrewPlanLine': TypeInfo(TypeOf.Class, create:() => CrewPlanLine()),
    'RfpProposalResponse': TypeInfo(TypeOf.Class, create:() => RfpProposalResponse()),
    'List<CrewPlanLine>': TypeInfo(TypeOf.Class, create:() => <CrewPlanLine>[]),
    'RfpSchedulePreviewRequest': TypeInfo(TypeOf.Class, create:() => RfpSchedulePreviewRequest()),
});

Dart RfpSchedulePreviewRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /v1/Rfp/SchedulePreview HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<RfpSchedulePreviewRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
  <Proposal>
    <BidDueDate>String</BidDueDate>
    <ClientName>String</ClientName>
    <ContractDurationDays>0</ContractDurationDays>
    <EstimatedEndDate>0001-01-01T00:00:00</EstimatedEndDate>
    <EstimatedStartDate>0001-01-01T00:00:00</EstimatedStartDate>
    <ProjectDescription>String</ProjectDescription>
    <ProjectLocation>String</ProjectLocation>
    <ProjectName>String</ProjectName>
    <ProjectType>String</ProjectType>
    <RfpDocumentID>0</RfpDocumentID>
    <Scope>String</Scope>
    <Tasks>
      <ProposedTask>
        <Category>String</Category>
        <DependsOn xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:int>0</d5p1:int>
        </DependsOn>
        <DurationDays>0</DurationDays>
        <EstimatedEndDate>0001-01-01T00:00:00</EstimatedEndDate>
        <EstimatedStartDate>0001-01-01T00:00:00</EstimatedStartDate>
        <Name>String</Name>
        <Notes>String</Notes>
        <Quantity>0</Quantity>
        <Resourcing>
          <Equipment>
            <ResourcedEquipment>
              <DurationDays>0</DurationDays>
              <EquipmentID>0</EquipmentID>
              <EquipmentName>String</EquipmentName>
              <IsInCatalog>false</IsInCatalog>
              <MakeModel>String</MakeModel>
              <Notes>String</Notes>
              <Quantity>0</Quantity>
              <SourceReference>String</SourceReference>
              <SuggestedEquipmentID>0</SuggestedEquipmentID>
              <SuggestedEquipmentName>String</SuggestedEquipmentName>
            </ResourcedEquipment>
          </Equipment>
          <Materials>
            <ResourcedMaterial>
              <IsInCatalog>false</IsInCatalog>
              <MakeModel>String</MakeModel>
              <MaterialID>0</MaterialID>
              <MaterialName>String</MaterialName>
              <Notes>String</Notes>
              <Quantity>0</Quantity>
              <SourceReference>String</SourceReference>
              <SuggestedMaterialID>0</SuggestedMaterialID>
              <SuggestedMaterialName>String</SuggestedMaterialName>
              <Unit>String</Unit>
            </ResourcedMaterial>
          </Materials>
          <Positions>
            <ResourcedPosition>
              <ContactID>0</ContactID>
              <Headcount>0</Headcount>
              <Hours>0</Hours>
              <IsInCatalog>false</IsInCatalog>
              <Notes>String</Notes>
              <PositionTag>String</PositionTag>
              <SourceReference>String</SourceReference>
            </ResourcedPosition>
          </Positions>
        </Resourcing>
        <Seq>0</Seq>
        <SourceItemNumber>String</SourceItemNumber>
        <SourceReference>String</SourceReference>
        <Unit>String</Unit>
      </ProposedTask>
    </Tasks>
  </Proposal>
</RfpSchedulePreviewRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<RfpProposalResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
  <CrewPlan>
    <CrewPlanLine>
      <NaiveTotal>0</NaiveTotal>
      <Needed>0</Needed>
      <PositionTag>String</PositionTag>
      <TaskAssignments>0</TaskAssignments>
    </CrewPlanLine>
  </CrewPlan>
  <Proposal>
    <BidDueDate>String</BidDueDate>
    <ClientName>String</ClientName>
    <ContractDurationDays>0</ContractDurationDays>
    <EstimatedEndDate>0001-01-01T00:00:00</EstimatedEndDate>
    <EstimatedStartDate>0001-01-01T00:00:00</EstimatedStartDate>
    <ProjectDescription>String</ProjectDescription>
    <ProjectLocation>String</ProjectLocation>
    <ProjectName>String</ProjectName>
    <ProjectType>String</ProjectType>
    <RfpDocumentID>0</RfpDocumentID>
    <Scope>String</Scope>
    <Tasks>
      <ProposedTask>
        <Category>String</Category>
        <DependsOn xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:int>0</d5p1:int>
        </DependsOn>
        <DurationDays>0</DurationDays>
        <EstimatedEndDate>0001-01-01T00:00:00</EstimatedEndDate>
        <EstimatedStartDate>0001-01-01T00:00:00</EstimatedStartDate>
        <Name>String</Name>
        <Notes>String</Notes>
        <Quantity>0</Quantity>
        <Resourcing>
          <Equipment>
            <ResourcedEquipment>
              <DurationDays>0</DurationDays>
              <EquipmentID>0</EquipmentID>
              <EquipmentName>String</EquipmentName>
              <IsInCatalog>false</IsInCatalog>
              <MakeModel>String</MakeModel>
              <Notes>String</Notes>
              <Quantity>0</Quantity>
              <SourceReference>String</SourceReference>
              <SuggestedEquipmentID>0</SuggestedEquipmentID>
              <SuggestedEquipmentName>String</SuggestedEquipmentName>
            </ResourcedEquipment>
          </Equipment>
          <Materials>
            <ResourcedMaterial>
              <IsInCatalog>false</IsInCatalog>
              <MakeModel>String</MakeModel>
              <MaterialID>0</MaterialID>
              <MaterialName>String</MaterialName>
              <Notes>String</Notes>
              <Quantity>0</Quantity>
              <SourceReference>String</SourceReference>
              <SuggestedMaterialID>0</SuggestedMaterialID>
              <SuggestedMaterialName>String</SuggestedMaterialName>
              <Unit>String</Unit>
            </ResourcedMaterial>
          </Materials>
          <Positions>
            <ResourcedPosition>
              <ContactID>0</ContactID>
              <Headcount>0</Headcount>
              <Hours>0</Hours>
              <IsInCatalog>false</IsInCatalog>
              <Notes>String</Notes>
              <PositionTag>String</PositionTag>
              <SourceReference>String</SourceReference>
            </ResourcedPosition>
          </Positions>
        </Resourcing>
        <Seq>0</Seq>
        <SourceItemNumber>String</SourceItemNumber>
        <SourceReference>String</SourceReference>
        <Unit>String</Unit>
      </ProposedTask>
    </Tasks>
  </Proposal>
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
  <RfpDocumentID>0</RfpDocumentID>
</RfpProposalResponse>