/* Options:
Date: 2025-04-07 15:30:21
Version: 6.40
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://cip-reporting-staging.chargeitpro.com

//GlobalNamespace: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: LocationSummaryRequest.*
//ExcludeTypes: 
//DefaultImports: package:servicestack/servicestack.dart
*/

import 'package:servicestack/servicestack.dart';

class Company implements IConvertible
{
    int? CompanyId;
    String? CompanyName;

    Company({this.CompanyId,this.CompanyName});
    Company.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CompanyId = json['CompanyId'];
        CompanyName = json['CompanyName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CompanyId': CompanyId,
        'CompanyName': CompanyName
    };

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

class CompanyProxy implements IConvertible
{
    int? CompanyId;
    String? Name;
    String? CompanyName;

    CompanyProxy({this.CompanyId,this.Name,this.CompanyName});
    CompanyProxy.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CompanyId = json['CompanyId'];
        Name = json['Name'];
        CompanyName = json['CompanyName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CompanyId': CompanyId,
        'Name': Name,
        'CompanyName': CompanyName
    };

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

class LocationSummary implements IConvertible
{
    String? LocationName;
    int? LocationKey;
    int? Count;
    double? AllCards;
    double? AllCC;
    double? DB;
    double? VSMCDC;
    double? AX;
    double? VS;
    double? MC;
    double? DC;
    double? JC;
    double? CU;
    double? XX;
    List<DeviceSummary>? DeviceSummaries;

    LocationSummary({this.LocationName,this.LocationKey,this.Count,this.AllCards,this.AllCC,this.DB,this.VSMCDC,this.AX,this.VS,this.MC,this.DC,this.JC,this.CU,this.XX,this.DeviceSummaries});
    LocationSummary.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        LocationName = json['LocationName'];
        LocationKey = json['LocationKey'];
        Count = json['Count'];
        AllCards = JsonConverters.toDouble(json['AllCards']);
        AllCC = JsonConverters.toDouble(json['AllCC']);
        DB = JsonConverters.toDouble(json['DB']);
        VSMCDC = JsonConverters.toDouble(json['VSMCDC']);
        AX = JsonConverters.toDouble(json['AX']);
        VS = JsonConverters.toDouble(json['VS']);
        MC = JsonConverters.toDouble(json['MC']);
        DC = JsonConverters.toDouble(json['DC']);
        JC = JsonConverters.toDouble(json['JC']);
        CU = JsonConverters.toDouble(json['CU']);
        XX = JsonConverters.toDouble(json['XX']);
        DeviceSummaries = JsonConverters.fromJson(json['DeviceSummaries'],'List<DeviceSummary>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'LocationName': LocationName,
        'LocationKey': LocationKey,
        'Count': Count,
        'AllCards': AllCards,
        'AllCC': AllCC,
        'DB': DB,
        'VSMCDC': VSMCDC,
        'AX': AX,
        'VS': VS,
        'MC': MC,
        'DC': DC,
        'JC': JC,
        'CU': CU,
        'XX': XX,
        'DeviceSummaries': JsonConverters.toJson(DeviceSummaries,'List<DeviceSummary>',context!)
    };

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

// @Route("/CompanyLocations/Summary/{CompanyId}")
// @Route("/CompanyLocations/Summary/{CompanyId}/{UserId}")
class LocationSummaryRequest implements IReturn<List<LocationSummary>>, IConvertible
{
    int? CompanyId;
    String? UserId;

    LocationSummaryRequest({this.CompanyId,this.UserId});
    LocationSummaryRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CompanyId = json['CompanyId'];
        UserId = json['UserId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CompanyId': CompanyId,
        'UserId': UserId
    };

    createResponse() => <LocationSummary>[];
    getResponseTypeName() => "List<LocationSummary>";
    getTypeName() => "LocationSummaryRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'cip_reporting_staging.chargeitpro.com', types: <String, TypeInfo> {
    'Company': TypeInfo(TypeOf.Class, create:() => Company()),
    'CompanyProxy': TypeInfo(TypeOf.Class, create:() => CompanyProxy()),
    'LocationSummary': TypeInfo(TypeOf.Class, create:() => LocationSummary()),
    'List<DeviceSummary>': TypeInfo(TypeOf.Class, create:() => <DeviceSummary>[]),
    'DeviceSummary': TypeInfo(TypeOf.Class, create:() => DeviceSummary()),
    'LocationSummaryRequest': TypeInfo(TypeOf.Class, create:() => LocationSummaryRequest()),
});