/* Options: Date: 2026-08-10 15:57:38 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: ComparablesRequest.* //ExcludeTypes: //DefaultImports: package:servicestack/servicestack.dart */ import 'package:servicestack/servicestack.dart'; class ComparableLettingView implements IConvertible { String? ProjectNumber; DateTime? LettingDate; double? AgeYears; String? Parish; String? LettingUrl; double? WinnerTotal; double? SpreadPct; int? BidderCount; int? SharedCount; int? ItemCount; double? OverlapPct; double? MobilizationPct; double? TrafficControlPct; ComparableLettingView({this.ProjectNumber,this.LettingDate,this.AgeYears,this.Parish,this.LettingUrl,this.WinnerTotal,this.SpreadPct,this.BidderCount,this.SharedCount,this.ItemCount,this.OverlapPct,this.MobilizationPct,this.TrafficControlPct}); ComparableLettingView.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ProjectNumber = json['ProjectNumber']; LettingDate = JsonConverters.fromJson(json['LettingDate'],'DateTime',context!); AgeYears = JsonConverters.toDouble(json['AgeYears']); Parish = json['Parish']; LettingUrl = json['LettingUrl']; WinnerTotal = JsonConverters.toDouble(json['WinnerTotal']); SpreadPct = JsonConverters.toDouble(json['SpreadPct']); BidderCount = json['BidderCount']; SharedCount = json['SharedCount']; ItemCount = json['ItemCount']; OverlapPct = JsonConverters.toDouble(json['OverlapPct']); MobilizationPct = JsonConverters.toDouble(json['MobilizationPct']); TrafficControlPct = JsonConverters.toDouble(json['TrafficControlPct']); return this; } Map toJson() => { 'ProjectNumber': ProjectNumber, 'LettingDate': JsonConverters.toJson(LettingDate,'DateTime',context!), 'AgeYears': AgeYears, 'Parish': Parish, 'LettingUrl': LettingUrl, 'WinnerTotal': WinnerTotal, 'SpreadPct': SpreadPct, 'BidderCount': BidderCount, 'SharedCount': SharedCount, 'ItemCount': ItemCount, 'OverlapPct': OverlapPct, 'MobilizationPct': MobilizationPct, 'TrafficControlPct': TrafficControlPct }; getTypeName() => "ComparableLettingView"; TypeContext? context = _ctx; } class ComparablesSummaryView implements IConvertible { double? MedianMobilizationPct; double? MedianTrafficControlPct; double? MedianSpreadPct; double? AppliedMobilizationPct; String? Note; ComparablesSummaryView({this.MedianMobilizationPct,this.MedianTrafficControlPct,this.MedianSpreadPct,this.AppliedMobilizationPct,this.Note}); ComparablesSummaryView.fromJson(Map json) { fromMap(json); } fromMap(Map json) { MedianMobilizationPct = JsonConverters.toDouble(json['MedianMobilizationPct']); MedianTrafficControlPct = JsonConverters.toDouble(json['MedianTrafficControlPct']); MedianSpreadPct = JsonConverters.toDouble(json['MedianSpreadPct']); AppliedMobilizationPct = JsonConverters.toDouble(json['AppliedMobilizationPct']); Note = json['Note']; return this; } Map toJson() => { 'MedianMobilizationPct': MedianMobilizationPct, 'MedianTrafficControlPct': MedianTrafficControlPct, 'MedianSpreadPct': MedianSpreadPct, 'AppliedMobilizationPct': AppliedMobilizationPct, 'Note': Note }; getTypeName() => "ComparablesSummaryView"; TypeContext? context = _ctx; } class ComparablesResponse implements IConvertible { ResponseStatus? ResponseStatus; List? Comparables = []; ComparablesSummaryView? Summary; ComparablesResponse({this.ResponseStatus,this.Comparables,this.Summary}); ComparablesResponse.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!); Comparables = JsonConverters.fromJson(json['Comparables'],'List',context!); Summary = JsonConverters.fromJson(json['Summary'],'ComparablesSummaryView',context!); return this; } Map toJson() => { 'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!), 'Comparables': JsonConverters.toJson(Comparables,'List',context!), 'Summary': JsonConverters.toJson(Summary,'ComparablesSummaryView',context!) }; getTypeName() => "ComparablesResponse"; TypeContext? context = _ctx; } // @Route("/v1/Rfp/{RfpDocumentUID}/Comparables", "GET,OPTIONS") class ComparablesRequest implements IReturn, IConvertible, IGet { String? RfpDocumentUID; ComparablesRequest({this.RfpDocumentUID}); ComparablesRequest.fromJson(Map json) { fromMap(json); } fromMap(Map json) { RfpDocumentUID = json['RfpDocumentUID']; return this; } Map toJson() => { 'RfpDocumentUID': RfpDocumentUID }; createResponse() => ComparablesResponse(); getResponseTypeName() => "ComparablesResponse"; getTypeName() => "ComparablesRequest"; TypeContext? context = _ctx; } TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: { 'ComparableLettingView': TypeInfo(TypeOf.Class, create:() => ComparableLettingView()), 'ComparablesSummaryView': TypeInfo(TypeOf.Class, create:() => ComparablesSummaryView()), 'ComparablesResponse': TypeInfo(TypeOf.Class, create:() => ComparablesResponse()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'ComparablesRequest': TypeInfo(TypeOf.Class, create:() => ComparablesRequest()), });