/* Options: Date: 2026-06-13 03:56:40 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com //GlobalNamespace: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: RfpApproveRequest.* //ExcludeTypes: //DefaultImports: package:servicestack/servicestack.dart */ 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 json) { fromMap(json); } fromMap(Map 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 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 json) { fromMap(json); } fromMap(Map 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 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 json) { fromMap(json); } fromMap(Map 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 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? Positions = []; List? Equipment = []; List? Materials = []; TaskResourcing({this.Positions,this.Equipment,this.Materials}); TaskResourcing.fromJson(Map json) { fromMap(json); } fromMap(Map json) { Positions = JsonConverters.fromJson(json['Positions'],'List',context!); Equipment = JsonConverters.fromJson(json['Equipment'],'List',context!); Materials = JsonConverters.fromJson(json['Materials'],'List',context!); return this; } Map toJson() => { 'Positions': JsonConverters.toJson(Positions,'List',context!), 'Equipment': JsonConverters.toJson(Equipment,'List',context!), 'Materials': JsonConverters.toJson(Materials,'List',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? 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 json) { fromMap(json); } fromMap(Map 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',context!); EstimatedStartDate = JsonConverters.fromJson(json['EstimatedStartDate'],'DateTime',context!); EstimatedEndDate = JsonConverters.fromJson(json['EstimatedEndDate'],'DateTime',context!); return this; } Map 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',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? 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 json) { fromMap(json); } fromMap(Map 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',context!); return this; } Map 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',context!) }; getTypeName() => "ProjectProposal"; TypeContext? context = _ctx; } class TaskDiff implements IConvertible { String? TaskName; List? PositionsAdded = []; List? PositionsRemoved = []; List? PositionsStaffed = []; List? EquipmentAdded = []; List? EquipmentRemoved = []; List? MaterialsAdded = []; List? MaterialsRemoved = []; bool? HasChanges; TaskDiff({this.TaskName,this.PositionsAdded,this.PositionsRemoved,this.PositionsStaffed,this.EquipmentAdded,this.EquipmentRemoved,this.MaterialsAdded,this.MaterialsRemoved,this.HasChanges}); TaskDiff.fromJson(Map json) { fromMap(json); } fromMap(Map json) { TaskName = json['TaskName']; PositionsAdded = JsonConverters.fromJson(json['PositionsAdded'],'List',context!); PositionsRemoved = JsonConverters.fromJson(json['PositionsRemoved'],'List',context!); PositionsStaffed = JsonConverters.fromJson(json['PositionsStaffed'],'List',context!); EquipmentAdded = JsonConverters.fromJson(json['EquipmentAdded'],'List',context!); EquipmentRemoved = JsonConverters.fromJson(json['EquipmentRemoved'],'List',context!); MaterialsAdded = JsonConverters.fromJson(json['MaterialsAdded'],'List',context!); MaterialsRemoved = JsonConverters.fromJson(json['MaterialsRemoved'],'List',context!); HasChanges = json['HasChanges']; return this; } Map toJson() => { 'TaskName': TaskName, 'PositionsAdded': JsonConverters.toJson(PositionsAdded,'List',context!), 'PositionsRemoved': JsonConverters.toJson(PositionsRemoved,'List',context!), 'PositionsStaffed': JsonConverters.toJson(PositionsStaffed,'List',context!), 'EquipmentAdded': JsonConverters.toJson(EquipmentAdded,'List',context!), 'EquipmentRemoved': JsonConverters.toJson(EquipmentRemoved,'List',context!), 'MaterialsAdded': JsonConverters.toJson(MaterialsAdded,'List',context!), 'MaterialsRemoved': JsonConverters.toJson(MaterialsRemoved,'List',context!), 'HasChanges': HasChanges }; getTypeName() => "TaskDiff"; TypeContext? context = _ctx; } class ProposalDiff implements IConvertible { List? TasksAdded = []; List? TasksRemoved = []; List? Tasks = []; bool? HasChanges; ProposalDiff({this.TasksAdded,this.TasksRemoved,this.Tasks,this.HasChanges}); ProposalDiff.fromJson(Map json) { fromMap(json); } fromMap(Map json) { TasksAdded = JsonConverters.fromJson(json['TasksAdded'],'List',context!); TasksRemoved = JsonConverters.fromJson(json['TasksRemoved'],'List',context!); Tasks = JsonConverters.fromJson(json['Tasks'],'List',context!); HasChanges = json['HasChanges']; return this; } Map toJson() => { 'TasksAdded': JsonConverters.toJson(TasksAdded,'List',context!), 'TasksRemoved': JsonConverters.toJson(TasksRemoved,'List',context!), 'Tasks': JsonConverters.toJson(Tasks,'List',context!), 'HasChanges': HasChanges }; getTypeName() => "ProposalDiff"; TypeContext? context = _ctx; } class RfpApproveResponse implements IConvertible { ResponseStatus? ResponseStatus; int? RfpDocumentID; int? ProjectID; String? ProjectUID; int? RfpApprovalID; List? JobIDs = []; int? OpenPositionCount; ProposalDiff? Diff; RfpApproveResponse({this.ResponseStatus,this.RfpDocumentID,this.ProjectID,this.ProjectUID,this.RfpApprovalID,this.JobIDs,this.OpenPositionCount,this.Diff}); RfpApproveResponse.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!); RfpDocumentID = json['RfpDocumentID']; ProjectID = json['ProjectID']; ProjectUID = json['ProjectUID']; RfpApprovalID = json['RfpApprovalID']; JobIDs = JsonConverters.fromJson(json['JobIDs'],'List',context!); OpenPositionCount = json['OpenPositionCount']; Diff = JsonConverters.fromJson(json['Diff'],'ProposalDiff',context!); return this; } Map toJson() => { 'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!), 'RfpDocumentID': RfpDocumentID, 'ProjectID': ProjectID, 'ProjectUID': ProjectUID, 'RfpApprovalID': RfpApprovalID, 'JobIDs': JsonConverters.toJson(JobIDs,'List',context!), 'OpenPositionCount': OpenPositionCount, 'Diff': JsonConverters.toJson(Diff,'ProposalDiff',context!) }; getTypeName() => "RfpApproveResponse"; TypeContext? context = _ctx; } // @Route("/v1/Rfp/{RfpDocumentUID}/Approve", "POST,OPTIONS") class RfpApproveRequest implements IReturn, IConvertible, IPost { String? RfpDocumentUID; ProjectProposal? Proposal; RfpApproveRequest({this.RfpDocumentUID,this.Proposal}); RfpApproveRequest.fromJson(Map json) { fromMap(json); } fromMap(Map json) { RfpDocumentUID = json['RfpDocumentUID']; Proposal = JsonConverters.fromJson(json['Proposal'],'ProjectProposal',context!); return this; } Map toJson() => { 'RfpDocumentUID': RfpDocumentUID, 'Proposal': JsonConverters.toJson(Proposal,'ProjectProposal',context!) }; createResponse() => RfpApproveResponse(); getResponseTypeName() => "RfpApproveResponse"; getTypeName() => "RfpApproveRequest"; TypeContext? context = _ctx; } TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: { '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': TypeInfo(TypeOf.Class, create:() => []), 'List': TypeInfo(TypeOf.Class, create:() => []), 'List': TypeInfo(TypeOf.Class, create:() => []), 'ProposedTask': TypeInfo(TypeOf.Class, create:() => ProposedTask()), 'ProjectProposal': TypeInfo(TypeOf.Class, create:() => ProjectProposal()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'TaskDiff': TypeInfo(TypeOf.Class, create:() => TaskDiff()), 'ProposalDiff': TypeInfo(TypeOf.Class, create:() => ProposalDiff()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'RfpApproveResponse': TypeInfo(TypeOf.Class, create:() => RfpApproveResponse()), 'RfpApproveRequest': TypeInfo(TypeOf.Class, create:() => RfpApproveRequest()), });