/* Options:
Date: 2025-04-13 18:12:16
Version: 8.0
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://consumer-api.brovs.com

//GlobalNamespace: ConsumerApi
//MakePartial: True
//MakeVirtual: False
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: True
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: True
//ExportValueTypes: False
IncludeTypes: GetStarredAdMessageListRequest.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using ConsumerApi;

namespace ConsumerApi
{
    public partial class AdMessageDto
    {
        public AdMessageDto()
        {
            ImageUrls = new List<ImageUrls>{};
        }

        public long Id { get; set; }
        public Guid Guid { get; set; }
        public string Title { get; set; }
        public DateTimeOffset StartAt { get; set; }
        public DateTimeOffset StopAt { get; set; }
        public DateTimeOffset PublishAt { get; set; }
        public List<ImageUrls> ImageUrls { get; set; }
        public PlaceBasicDto Place { get; set; }
        public AdMessageDetailsUnion DetailsUnion { get; set; }
        public long StarredCount { get; set; }
    }

    public partial class BrandDto
    {
        public string Name { get; set; }
    }

    public partial class CategoryTreeDto
    {
        public CategoryTreeDto()
        {
            Children = new List<CategoryTreeDto>{};
        }

        public string Name { get; set; }
        public string Slug { get; set; }
        public string AbsoluteSlug { get; set; }
        public string? ImageUrl { get; set; }
        public string? AllImageUrl { get; set; }
        public string? IconImageUrl { get; set; }
        public int Position { get; set; }
        public List<CategoryTreeDto>? Children { get; set; }
    }

    [Route("/admessage/GetStarredAdMessageList", "GET")]
    public partial class GetStarredAdMessageListRequest
        : IReturn<GetStarredAdMessageListResponse>, IGet
    {
    }

    public partial class GetStarredAdMessageListResponse
    {
        public GetStarredAdMessageListResponse()
        {
            StarredList = new List<StarredDto>{};
        }

        public List<StarredDto> StarredList { get; set; }
    }

    public partial class PlaceBasicDto
    {
        public PlaceBasicDto()
        {
            Categories = new List<CategoryTreeDto>{};
            WearPriceProfiles = new List<WearPriceProfileDto>{};
            Brands = new List<PlaceSelectedBrandDto>{};
        }

        public long Id { get; set; }
        public Guid Guid { get; set; }
        public string? Overview { get; set; }
        public string Name { get; set; }
        public float Longitude { get; set; }
        public float Latitude { get; set; }
        public bool Claimed { get; set; }
        public string? OrganizationNumber { get; set; }
        public string CountryCode { get; set; }
        public OpeningHours? OpeningHours { get; set; }
        public bool? WheelchairAccessible { get; set; }
        public bool? Wifi { get; set; }
        public bool? OutdoorSeating { get; set; }
        public bool? SaveFoodAndMoney { get; set; }
        public PlaceType PlaceType { get; set; }
        public PriceMainDishDto? PriceMainDish { get; set; }
        public TimeZoneDto TimeZoneDto { get; set; }
        public long? BusinessId { get; set; }
        public PlaceContact Contact { get; set; }
        public PlaceAddress Address { get; set; }
        public List<CategoryTreeDto> Categories { get; set; }
        public ImageUrls? LogoUrl { get; set; }
        public ImageUrls? ImageUrl { get; set; }
        public List<WearPriceProfileDto> WearPriceProfiles { get; set; }
        public List<PlaceSelectedBrandDto> Brands { get; set; }
        public string? Floor { get; set; }
    }

    public partial class PlaceCustomBrandDto
    {
        public string Name { get; set; }
    }

    public partial class PlaceSelectedBrandDto
    {
        public PlaceSelectedBrandDto()
        {
            CategoryAbsoluteSlugs = new string[]{};
        }

        public BrandDto? Brand { get; set; }
        public string[]? CategoryAbsoluteSlugs { get; set; }
        public PlaceCustomBrandDto? PlaceCustomBrand { get; set; }
    }

    public partial class PriceMainDishDto
    {
        public string Title { get; set; }
        public PriceMainDish Slug { get; set; }
    }

    public partial class StarredDto
    {
        public AdMessageDto AdMessage { get; set; }
    }

    public partial class WearPriceProfileDto
    {
        public string Slug { get; set; }
        public string Label { get; set; }
    }

    public partial class AdMessageDetailsAbsoluteDiscountOnSelectedMerchandise
        : AdMessageDetailsBase
    {
        public double Value { get; set; }
    }

    public partial class AdMessageDetailsAbsoluteDiscountRangeOnAllMerchandise
        : AdMessageDetailsBase
    {
        public double Start { get; set; }
        public double Stop { get; set; }
    }

    public partial class AdMessageDetailsBase
    {
        public AdMessageDetailsBase()
        {
            MoreInformation = new List<string>{};
        }

        public string? Description { get; set; }
        public List<string>? MoreInformation { get; set; }
    }

    public partial class AdMessageDetailsFreetext
        : AdMessageDetailsBase
    {
        public string Title { get; set; }
    }

    public partial class AdMessageDetailsHappyHour
        : AdMessageDetailsBase
    {
    }

    public partial class AdMessageDetailsNewArrivals
        : AdMessageDetailsBase
    {
    }

    public partial class AdMessageDetailsPercentageDiscountOnAllMerchandise
        : AdMessageDetailsBase
    {
        public double Value { get; set; }
    }

    public partial class AdMessageDetailsPercentageDiscountOnSelectedMerchandise
        : AdMessageDetailsBase
    {
        public double Value { get; set; }
    }

    public partial class AdMessageDetailsPercentageDiscountRangeOnAllMerchandise
        : AdMessageDetailsBase
    {
        public double Start { get; set; }
        public double Stop { get; set; }
    }

    public partial class AdMessageDetailsPercentageOffYourFoodBill
        : AdMessageDetailsBase
    {
        public double Percentage { get; set; }
    }

    public partial class AdMessageDetailsSaveFoodAndMoney
        : AdMessageDetailsBase
    {
        public double Value { get; set; }
    }

    public partial class AdMessageDetailsSomeFreeTablesLeftToday
        : AdMessageDetailsBase
    {
    }

    public partial class AdMessageDetailsTodaysBreakFastOffer
        : AdMessageDetailsBase
    {
        public double Value { get; set; }
    }

    public partial class AdMessageDetailsTodaysDinnerOffer
        : AdMessageDetailsBase
    {
        public double Value { get; set; }
    }

    public partial class AdMessageDetailsTodaysLunchOffer
        : AdMessageDetailsBase
    {
        public double Value { get; set; }
    }

    public partial class AdMessageDetailsTotalAmountOverXgivesYdiscount
        : AdMessageDetailsBase
    {
        public double IfTotalAmountMoreThanX { get; set; }
        public double ThenYouGetDiscountPercentageY { get; set; }
    }

    public partial class AdMessageDetailsTwoDishesForThePriceOfOne
        : AdMessageDetailsBase
    {
    }

    public partial class AdMessageDetailsUnion
    {
        public AdMessageDetailsPercentageDiscountOnAllMerchandise? PercentageOnAllMerchandise { get; set; }
        public AdMessageDetailsPercentageDiscountRangeOnAllMerchandise? PercentageRangeOnAllMerchandise { get; set; }
        public AdMessageDetailsPercentageDiscountOnSelectedMerchandise? PercentageOnSelectedMerchandise { get; set; }
        public AdMessageDetailsAbsoluteDiscountOnSelectedMerchandise? AbsoluteOnSelectedMerchandise { get; set; }
        public AdMessageDetailsAbsoluteDiscountRangeOnAllMerchandise? AbsoluteRangeOnAllMerchandise { get; set; }
        public AdMessageDetailsTotalAmountOverXgivesYdiscount? TotalAmountOverXgivesYdiscount { get; set; }
        public AdMessageDetailsXforYdiscount? XforY { get; set; }
        public AdMessageDetailsNewArrivals? NewArrivals { get; set; }
        public AdMessageDetailsFreetext? Freetext { get; set; }
        public AdMessageDetailsTodaysBreakFastOffer? TodaysBreakFastOffer { get; set; }
        public AdMessageDetailsTodaysLunchOffer? TodaysLunchOffer { get; set; }
        public AdMessageDetailsTodaysDinnerOffer? TodaysDinnerOffer { get; set; }
        public AdMessageDetailsSaveFoodAndMoney? SaveFoodAndMoney { get; set; }
        public AdMessageDetailsPercentageOffYourFoodBill? PercentageOfYourFoodBill { get; set; }
        public AdMessageDetailsHappyHour? HappyHour { get; set; }
        public AdMessageDetailsSomeFreeTablesLeftToday? SomeFreeTablesLeftToday { get; set; }
        public AdMessageDetailsTwoDishesForThePriceOfOne? TwoDishesForThePriceOfOne { get; set; }
    }

    public partial class AdMessageDetailsXforYdiscount
        : AdMessageDetailsBase
    {
        public int IfYouBuyX { get; set; }
        public int ThenYouGetY { get; set; }
    }

    public partial class ImageUrls
    {
        public string Preview { get; set; }
        public string Small { get; set; }
        public string Medium { get; set; }
        public string Large { get; set; }
    }

    public partial class OpeningHour
    {
        public int OpenAtHour { get; set; }
        public int OpenAtMinute { get; set; }
        public int CloseAtHour { get; set; }
        public int CloseAtMinute { get; set; }
    }

    public partial class OpeningHours
    {
        public WeeklyOpeningHours Weekly { get; set; }
    }

    public partial class PlaceAddress
    {
        public string Street { get; set; }
        public string PostalCode { get; set; }
        public string Region { get; set; }
        public string CountryCode { get; set; }
    }

    public partial class PlaceContact
    {
        public string? Phone { get; set; }
        public string? Email { get; set; }
        public string? Website { get; set; }
        public string? WebShop { get; set; }
    }

    public enum PlaceType
    {
        Mall,
        Regular,
    }

    public partial class TimeZoneDto
    {
        public TimeSpan BaseUtcOffset { get; set; }
        public string DaylightName { get; set; }
        public string DisplayName { get; set; }
        public string Id { get; set; }
        public string StandardName { get; set; }
        public bool SupportsDaylightSavingTime { get; set; }
    }

    public partial class WeeklyOpeningHours
    {
        public OpeningHour? Monday { get; set; }
        public OpeningHour? Tuesday { get; set; }
        public OpeningHour? Wednesday { get; set; }
        public OpeningHour? Thursday { get; set; }
        public OpeningHour? Friday { get; set; }
        public OpeningHour? Saturday { get; set; }
        public OpeningHour? Sunday { get; set; }
    }

    public enum PriceMainDish
    {
        Value,
        Medium,
        High,
        FineDining,
    }

}