/* Options: Date: 2026-07-03 06:38:08 Version: 6.10 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://stubbur-app.azurewebsites.net //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: SalesOverviewRequest.* //ExcludeTypes: //DefaultImports: */ export interface IReturn { createResponse(): T; } export class SalesKpis { public grossNet: number; public refunded: number; public ticketsAllReal: number; public ticketsPaid: number; public orders: number; public aov: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class KpiDelta { public abs: number; public pct?: number; public dir: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesDeltas { public grossNet: KpiDelta; public refunded: KpiDelta; public ticketsAllReal: KpiDelta; public ticketsPaid: KpiDelta; public orders: KpiDelta; public aov: KpiDelta; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesTrendBucket { public bucket: string; public revenue: number; public tickets: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesTopEvent { public eventId: number; public eventName: string; public eventDate?: string; public grossNet: number; public paidTickets: number; public realTickets: number; public orders: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesRecentOrder { public ticketId: number; public createdAt: string; public eventName: string; public amount: number; public ticketCount: number; public buyerName: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesHourBucket { public hour: number; public revenue: number; public orders: number; public tickets: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesDowBucket { public dow: number; public revenue: number; public orders: number; public tickets: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesProduct { public ticketName: string; public tickets: number; public revenue: number; public orders: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SalesOverviewResult { public current: SalesKpis; public previous: SalesKpis; public delta: SalesDeltas; public trend: SalesTrendBucket[]; public previousTrend: SalesTrendBucket[]; public topEvents: SalesTopEvent[]; public recentOrders: SalesRecentOrder[]; public byHourOfDay: SalesHourBucket[]; public byDayOfWeek: SalesDowBucket[]; public topProducts: SalesProduct[]; public hasAnyDataEver: boolean; public owners: number[]; public bucket: string; public freshnessUtc: string; public statusCode: number; public message: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } } // @Route("/sales/overview", "POST") export class SalesOverviewRequest implements IReturn { public eventOwnerId: number; public additionalOwnerIds: number[]; public eventId?: number; public fromUtc: string; public toUtc: string; public compareFromUtc?: string; public compareToUtc?: string; public bucket: string; public topEventsLimit: number; public recentOrdersLimit: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } public getTypeName() { return 'SalesOverviewRequest'; } public getMethod() { return 'POST'; } public createResponse() { return new SalesOverviewResult(); } }