TicketUserServices

<back to all web services

SalesOverviewRequest

Requires Authentication
Requires any of the roles:Admin, TeamAdminRequired permission:Sales.Total
The following routes are available for this service:
POST/sales/overview
import 'package:servicestack/servicestack.dart';

class SalesKpis implements IConvertible
{
    double? grossNet;
    double? refunded;
    int? ticketsAllReal;
    int? ticketsPaid;
    int? orders;
    double? aov;

    SalesKpis({this.grossNet,this.refunded,this.ticketsAllReal,this.ticketsPaid,this.orders,this.aov});
    SalesKpis.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        grossNet = JsonConverters.toDouble(json['grossNet']);
        refunded = JsonConverters.toDouble(json['refunded']);
        ticketsAllReal = json['ticketsAllReal'];
        ticketsPaid = json['ticketsPaid'];
        orders = json['orders'];
        aov = JsonConverters.toDouble(json['aov']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'grossNet': grossNet,
        'refunded': refunded,
        'ticketsAllReal': ticketsAllReal,
        'ticketsPaid': ticketsPaid,
        'orders': orders,
        'aov': aov
    };

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

class KpiDelta implements IConvertible
{
    double? abs;
    double? pct;
    String? dir;

    KpiDelta({this.abs,this.pct,this.dir});
    KpiDelta.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        abs = JsonConverters.toDouble(json['abs']);
        pct = JsonConverters.toDouble(json['pct']);
        dir = json['dir'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'abs': abs,
        'pct': pct,
        'dir': dir
    };

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

class SalesDeltas implements IConvertible
{
    KpiDelta? grossNet;
    KpiDelta? refunded;
    KpiDelta? ticketsAllReal;
    KpiDelta? ticketsPaid;
    KpiDelta? orders;
    KpiDelta? aov;

    SalesDeltas({this.grossNet,this.refunded,this.ticketsAllReal,this.ticketsPaid,this.orders,this.aov});
    SalesDeltas.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        grossNet = JsonConverters.fromJson(json['grossNet'],'KpiDelta',context!);
        refunded = JsonConverters.fromJson(json['refunded'],'KpiDelta',context!);
        ticketsAllReal = JsonConverters.fromJson(json['ticketsAllReal'],'KpiDelta',context!);
        ticketsPaid = JsonConverters.fromJson(json['ticketsPaid'],'KpiDelta',context!);
        orders = JsonConverters.fromJson(json['orders'],'KpiDelta',context!);
        aov = JsonConverters.fromJson(json['aov'],'KpiDelta',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'grossNet': JsonConverters.toJson(grossNet,'KpiDelta',context!),
        'refunded': JsonConverters.toJson(refunded,'KpiDelta',context!),
        'ticketsAllReal': JsonConverters.toJson(ticketsAllReal,'KpiDelta',context!),
        'ticketsPaid': JsonConverters.toJson(ticketsPaid,'KpiDelta',context!),
        'orders': JsonConverters.toJson(orders,'KpiDelta',context!),
        'aov': JsonConverters.toJson(aov,'KpiDelta',context!)
    };

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

class SalesTrendBucket implements IConvertible
{
    DateTime? bucket;
    double? revenue;
    int? tickets;

    SalesTrendBucket({this.bucket,this.revenue,this.tickets});
    SalesTrendBucket.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        bucket = JsonConverters.fromJson(json['bucket'],'DateTime',context!);
        revenue = JsonConverters.toDouble(json['revenue']);
        tickets = json['tickets'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'bucket': JsonConverters.toJson(bucket,'DateTime',context!),
        'revenue': revenue,
        'tickets': tickets
    };

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

class SalesTopEvent implements IConvertible
{
    int? eventId;
    String? eventName;
    DateTime? eventDate;
    double? grossNet;
    int? paidTickets;
    int? realTickets;
    int? orders;

    SalesTopEvent({this.eventId,this.eventName,this.eventDate,this.grossNet,this.paidTickets,this.realTickets,this.orders});
    SalesTopEvent.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        eventId = json['eventId'];
        eventName = json['eventName'];
        eventDate = JsonConverters.fromJson(json['eventDate'],'DateTime',context!);
        grossNet = JsonConverters.toDouble(json['grossNet']);
        paidTickets = json['paidTickets'];
        realTickets = json['realTickets'];
        orders = json['orders'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'eventId': eventId,
        'eventName': eventName,
        'eventDate': JsonConverters.toJson(eventDate,'DateTime',context!),
        'grossNet': grossNet,
        'paidTickets': paidTickets,
        'realTickets': realTickets,
        'orders': orders
    };

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

class SalesRecentOrder implements IConvertible
{
    int? ticketId;
    DateTime? createdAt;
    String? eventName;
    double? amount;
    int? ticketCount;
    String? buyerName;

    SalesRecentOrder({this.ticketId,this.createdAt,this.eventName,this.amount,this.ticketCount,this.buyerName});
    SalesRecentOrder.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ticketId = json['ticketId'];
        createdAt = JsonConverters.fromJson(json['createdAt'],'DateTime',context!);
        eventName = json['eventName'];
        amount = JsonConverters.toDouble(json['amount']);
        ticketCount = json['ticketCount'];
        buyerName = json['buyerName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ticketId': ticketId,
        'createdAt': JsonConverters.toJson(createdAt,'DateTime',context!),
        'eventName': eventName,
        'amount': amount,
        'ticketCount': ticketCount,
        'buyerName': buyerName
    };

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

class SalesHourBucket implements IConvertible
{
    int? hour;
    double? revenue;
    int? orders;
    int? tickets;

    SalesHourBucket({this.hour,this.revenue,this.orders,this.tickets});
    SalesHourBucket.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        hour = json['hour'];
        revenue = JsonConverters.toDouble(json['revenue']);
        orders = json['orders'];
        tickets = json['tickets'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'hour': hour,
        'revenue': revenue,
        'orders': orders,
        'tickets': tickets
    };

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

class SalesDowBucket implements IConvertible
{
    int? dow;
    double? revenue;
    int? orders;
    int? tickets;

    SalesDowBucket({this.dow,this.revenue,this.orders,this.tickets});
    SalesDowBucket.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        dow = json['dow'];
        revenue = JsonConverters.toDouble(json['revenue']);
        orders = json['orders'];
        tickets = json['tickets'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'dow': dow,
        'revenue': revenue,
        'orders': orders,
        'tickets': tickets
    };

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

class SalesProduct implements IConvertible
{
    String? ticketName;
    int? tickets;
    double? revenue;
    int? orders;

    SalesProduct({this.ticketName,this.tickets,this.revenue,this.orders});
    SalesProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ticketName = json['ticketName'];
        tickets = json['tickets'];
        revenue = JsonConverters.toDouble(json['revenue']);
        orders = json['orders'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ticketName': ticketName,
        'tickets': tickets,
        'revenue': revenue,
        'orders': orders
    };

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

class SalesOverviewResult implements IConvertible
{
    SalesKpis? current;
    SalesKpis? previous;
    SalesDeltas? delta;
    List<SalesTrendBucket>? trend;
    List<SalesTrendBucket>? previousTrend;
    List<SalesTopEvent>? topEvents;
    List<SalesRecentOrder>? recentOrders;
    List<SalesHourBucket>? byHourOfDay;
    List<SalesDowBucket>? byDayOfWeek;
    List<SalesProduct>? topProducts;
    bool? hasAnyDataEver;
    List<int>? owners;
    String? bucket;
    DateTime? freshnessUtc;
    int? statusCode;
    String? message;

    SalesOverviewResult({this.current,this.previous,this.delta,this.trend,this.previousTrend,this.topEvents,this.recentOrders,this.byHourOfDay,this.byDayOfWeek,this.topProducts,this.hasAnyDataEver,this.owners,this.bucket,this.freshnessUtc,this.statusCode,this.message});
    SalesOverviewResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        current = JsonConverters.fromJson(json['current'],'SalesKpis',context!);
        previous = JsonConverters.fromJson(json['previous'],'SalesKpis',context!);
        delta = JsonConverters.fromJson(json['delta'],'SalesDeltas',context!);
        trend = JsonConverters.fromJson(json['trend'],'List<SalesTrendBucket>',context!);
        previousTrend = JsonConverters.fromJson(json['previousTrend'],'List<SalesTrendBucket>',context!);
        topEvents = JsonConverters.fromJson(json['topEvents'],'List<SalesTopEvent>',context!);
        recentOrders = JsonConverters.fromJson(json['recentOrders'],'List<SalesRecentOrder>',context!);
        byHourOfDay = JsonConverters.fromJson(json['byHourOfDay'],'List<SalesHourBucket>',context!);
        byDayOfWeek = JsonConverters.fromJson(json['byDayOfWeek'],'List<SalesDowBucket>',context!);
        topProducts = JsonConverters.fromJson(json['topProducts'],'List<SalesProduct>',context!);
        hasAnyDataEver = json['hasAnyDataEver'];
        owners = JsonConverters.fromJson(json['owners'],'List<int>',context!);
        bucket = json['bucket'];
        freshnessUtc = JsonConverters.fromJson(json['freshnessUtc'],'DateTime',context!);
        statusCode = json['statusCode'];
        message = json['message'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'current': JsonConverters.toJson(current,'SalesKpis',context!),
        'previous': JsonConverters.toJson(previous,'SalesKpis',context!),
        'delta': JsonConverters.toJson(delta,'SalesDeltas',context!),
        'trend': JsonConverters.toJson(trend,'List<SalesTrendBucket>',context!),
        'previousTrend': JsonConverters.toJson(previousTrend,'List<SalesTrendBucket>',context!),
        'topEvents': JsonConverters.toJson(topEvents,'List<SalesTopEvent>',context!),
        'recentOrders': JsonConverters.toJson(recentOrders,'List<SalesRecentOrder>',context!),
        'byHourOfDay': JsonConverters.toJson(byHourOfDay,'List<SalesHourBucket>',context!),
        'byDayOfWeek': JsonConverters.toJson(byDayOfWeek,'List<SalesDowBucket>',context!),
        'topProducts': JsonConverters.toJson(topProducts,'List<SalesProduct>',context!),
        'hasAnyDataEver': hasAnyDataEver,
        'owners': JsonConverters.toJson(owners,'List<int>',context!),
        'bucket': bucket,
        'freshnessUtc': JsonConverters.toJson(freshnessUtc,'DateTime',context!),
        'statusCode': statusCode,
        'message': message
    };

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

class SalesOverviewRequest implements IConvertible
{
    int? eventOwnerId;
    List<int>? additionalOwnerIds;
    int? eventId;
    DateTime? fromUtc;
    DateTime? toUtc;
    DateTime? compareFromUtc;
    DateTime? compareToUtc;
    String? bucket;
    int? topEventsLimit;
    int? recentOrdersLimit;

    SalesOverviewRequest({this.eventOwnerId,this.additionalOwnerIds,this.eventId,this.fromUtc,this.toUtc,this.compareFromUtc,this.compareToUtc,this.bucket,this.topEventsLimit,this.recentOrdersLimit});
    SalesOverviewRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        eventOwnerId = json['eventOwnerId'];
        additionalOwnerIds = JsonConverters.fromJson(json['additionalOwnerIds'],'List<int>',context!);
        eventId = json['eventId'];
        fromUtc = JsonConverters.fromJson(json['fromUtc'],'DateTime',context!);
        toUtc = JsonConverters.fromJson(json['toUtc'],'DateTime',context!);
        compareFromUtc = JsonConverters.fromJson(json['compareFromUtc'],'DateTime',context!);
        compareToUtc = JsonConverters.fromJson(json['compareToUtc'],'DateTime',context!);
        bucket = json['bucket'];
        topEventsLimit = json['topEventsLimit'];
        recentOrdersLimit = json['recentOrdersLimit'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'eventOwnerId': eventOwnerId,
        'additionalOwnerIds': JsonConverters.toJson(additionalOwnerIds,'List<int>',context!),
        'eventId': eventId,
        'fromUtc': JsonConverters.toJson(fromUtc,'DateTime',context!),
        'toUtc': JsonConverters.toJson(toUtc,'DateTime',context!),
        'compareFromUtc': JsonConverters.toJson(compareFromUtc,'DateTime',context!),
        'compareToUtc': JsonConverters.toJson(compareToUtc,'DateTime',context!),
        'bucket': bucket,
        'topEventsLimit': topEventsLimit,
        'recentOrdersLimit': recentOrdersLimit
    };

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

TypeContext _ctx = TypeContext(library: 'stubbur_app.azurewebsites.net', types: <String, TypeInfo> {
    'SalesKpis': TypeInfo(TypeOf.Class, create:() => SalesKpis()),
    'KpiDelta': TypeInfo(TypeOf.Class, create:() => KpiDelta()),
    'SalesDeltas': TypeInfo(TypeOf.Class, create:() => SalesDeltas()),
    'SalesTrendBucket': TypeInfo(TypeOf.Class, create:() => SalesTrendBucket()),
    'SalesTopEvent': TypeInfo(TypeOf.Class, create:() => SalesTopEvent()),
    'SalesRecentOrder': TypeInfo(TypeOf.Class, create:() => SalesRecentOrder()),
    'SalesHourBucket': TypeInfo(TypeOf.Class, create:() => SalesHourBucket()),
    'SalesDowBucket': TypeInfo(TypeOf.Class, create:() => SalesDowBucket()),
    'SalesProduct': TypeInfo(TypeOf.Class, create:() => SalesProduct()),
    'SalesOverviewResult': TypeInfo(TypeOf.Class, create:() => SalesOverviewResult()),
    'List<SalesTrendBucket>': TypeInfo(TypeOf.Class, create:() => <SalesTrendBucket>[]),
    'List<SalesTopEvent>': TypeInfo(TypeOf.Class, create:() => <SalesTopEvent>[]),
    'List<SalesRecentOrder>': TypeInfo(TypeOf.Class, create:() => <SalesRecentOrder>[]),
    'List<SalesHourBucket>': TypeInfo(TypeOf.Class, create:() => <SalesHourBucket>[]),
    'List<SalesDowBucket>': TypeInfo(TypeOf.Class, create:() => <SalesDowBucket>[]),
    'List<SalesProduct>': TypeInfo(TypeOf.Class, create:() => <SalesProduct>[]),
    'SalesOverviewRequest': TypeInfo(TypeOf.Class, create:() => SalesOverviewRequest()),
});

Dart SalesOverviewRequest DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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

POST /sales/overview HTTP/1.1 
Host: stubbur-app.azurewebsites.net 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"eventOwnerId":0,"additionalOwnerIds":[0],"eventId":0,"fromUtc":"0001-01-01T00:00:00.0000000","toUtc":"0001-01-01T00:00:00.0000000","compareFromUtc":"0001-01-01T00:00:00.0000000","compareToUtc":"0001-01-01T00:00:00.0000000","bucket":"String","topEventsLimit":0,"recentOrdersLimit":0}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"current":{"grossNet":0,"refunded":0,"ticketsAllReal":0,"ticketsPaid":0,"orders":0,"aov":0},"previous":{"grossNet":0,"refunded":0,"ticketsAllReal":0,"ticketsPaid":0,"orders":0,"aov":0},"delta":{"grossNet":{"abs":0,"pct":0,"dir":"String"},"refunded":{"abs":0,"pct":0,"dir":"String"},"ticketsAllReal":{"abs":0,"pct":0,"dir":"String"},"ticketsPaid":{"abs":0,"pct":0,"dir":"String"},"orders":{"abs":0,"pct":0,"dir":"String"},"aov":{"abs":0,"pct":0,"dir":"String"}},"trend":[{"bucket":"0001-01-01T00:00:00.0000000","revenue":0,"tickets":0}],"previousTrend":[{"bucket":"0001-01-01T00:00:00.0000000","revenue":0,"tickets":0}],"topEvents":[{"eventId":0,"eventName":"String","eventDate":"0001-01-01T00:00:00.0000000","grossNet":0,"paidTickets":0,"realTickets":0,"orders":0}],"recentOrders":[{"ticketId":0,"createdAt":"0001-01-01T00:00:00.0000000","eventName":"String","amount":0,"ticketCount":0,"buyerName":"String"}],"byHourOfDay":[{"hour":0,"revenue":0,"orders":0,"tickets":0}],"byDayOfWeek":[{"dow":0,"revenue":0,"orders":0,"tickets":0}],"topProducts":[{"ticketName":"String","tickets":0,"revenue":0,"orders":0}],"hasAnyDataEver":false,"owners":[0],"bucket":"String","freshnessUtc":"0001-01-01T00:00:00.0000000","statusCode":0,"message":"String"}