/* Options:
Date: 2025-05-31 14:31:59
Version: 8.40
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://active-ewebservice.biz/aeservices30/api

//GlobalNamespace: 
//MakePartial: True
//MakeVirtual: True
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: True
//ExportValueTypes: False
IncludeTypes: SearchCustomersRequest.*
//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 AIM.WebService;
using AIM;
using AIM.Global.Utils;

namespace AIM
{
    [DataContract]
    public partial class CustomerDefaultInfo
    {
        [DataMember]
        public virtual long Id { get; set; }

        [DataMember]
        public virtual string Desc { get; set; }

        [DataMember]
        public virtual string ShortDesc { get; set; }
    }

    [DataContract]
    public partial class CustomerSearchRecord
        : BindableObject
    {
        public CustomerSearchRecord()
        {
            DependantInfo = new List<DependantRecord>{};
        }

        [DataMember]
        public virtual long Pk { get; set; }

        [DataMember]
        public virtual int Acct { get; set; }

        [DataMember]
        public virtual string Last { get; set; }

        [DataMember]
        public virtual string Name { get; set; }

        [DataMember]
        public virtual string Addr1 { get; set; }

        [DataMember]
        public virtual string Addr2 { get; set; }

        [DataMember]
        public virtual string City { get; set; }

        [DataMember]
        public virtual string St { get; set; }

        [DataMember]
        public virtual string Zip { get; set; }

        [DataMember]
        public virtual string Phone { get; set; }

        [DataMember]
        public virtual string Email { get; set; }

        [DataMember]
        public virtual bool OpenInvoices { get; set; }

        [DataMember]
        public virtual bool RentalActivity { get; set; }

        [DataMember]
        public virtual string StLoc { get; set; }

        [DataMember]
        public virtual bool Hold { get; set; }

        [DataMember]
        public virtual string Barcode { get; set; }

        [DataMember]
        public virtual int Color { get; set; }

        [DataMember]
        public virtual List<DependantRecord> DependantInfo { get; set; }

        [DataMember]
        public virtual AdditionalDetail AdditionalDetails { get; set; }

        [DataMember]
        public virtual string MatchedOn { get; set; }
        [DataContract]
        public partial class DependantRecord
        {
            [DataMember]
            public virtual string Name { get; set; }

            [DataMember]
            public virtual string OnlineId { get; set; }

            [DataMember]
            public virtual string SchoolDistrict { get; set; }

            [DataMember]
            public virtual string School { get; set; }

            [DataMember]
            public virtual long Id { get; set; }
        }

        [DataContract]
        public partial class AdditionalDetail
        {
            [DataMember]
            public virtual DateTime CreationDate { get; set; }

            [DataMember]
            public virtual DateTime LastModifiedDate { get; set; }

            [DataMember]
            public virtual string Notes { get; set; }

            [DataMember]
            public virtual CustomerDefaultInfo CustomerDefault { get; set; }

            [DataMember]
            public virtual TaxAuthorityInfo TaxAuthority { get; set; }

            [DataMember]
            public virtual bool CanCharge { get; set; }

            [DataMember]
            public virtual string PopupNotes { get; set; }

            [DataMember]
            public virtual string DlNumber { get; set; }

            [DataMember]
            public virtual string Phone2 { get; set; }

            [DataMember]
            public virtual string Phone3 { get; set; }

            [DataMember]
            public virtual string Phone4 { get; set; }

            [DataMember]
            public virtual LocationInfo Location { get; set; }
        }

    }

    [DataContract]
    public partial class LocationInfo
    {
        [DataMember]
        public virtual long Id { get; set; }

        [DataMember]
        public virtual string Desc { get; set; }

        [DataMember]
        public virtual string ShortDesc { get; set; }

        [DataMember]
        public virtual string Region { get; set; }

        [DataMember]
        public virtual decimal Latitude { get; set; }

        [DataMember]
        public virtual decimal Longitude { get; set; }

        [DataMember]
        public virtual string InStorePickup { get; set; }

        [DataMember]
        public virtual bool Active { get; set; }

        [DataMember]
        public virtual int? CashSaleAcct { get; set; }
    }

    [DataContract]
    public partial class TaxAuthorityInfo
    {
        [DataMember]
        public virtual long Id { get; set; }

        [DataMember]
        public virtual string Desc { get; set; }

        [DataMember]
        public virtual string ShortDesc { get; set; }
    }

}

namespace AIM.Global.Utils
{
    [DataContract]
    public partial class BindableObject
    {
    }

}

namespace AIM.WebService
{
    [DataContract]
    public partial class BaseRequest
    {
        ///<summary>
        ///This is your AIM API Key provided by Tri-Tech
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header")]
        public virtual string ApiKey { get; set; }

        [DataMember]
        [ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")]
        public virtual string OAuthToken { get; set; }
    }

    [DataContract]
    public partial class BaseResponse
    {
        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")]
        public virtual BaseResponseResult Status { get; set; }
    }

    [DataContract]
    public partial class BaseSecureRequest
        : BaseRequest
    {
        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header")]
        public virtual string Token { get; set; }

        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header")]
        public virtual string DeviceId { get; set; }

        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header")]
        public virtual string AppId { get; set; }
    }

    ///<summary>
    ///SearchCustomersRequires active-e Customer Service.
    ///</summary>
    [Route("/SearchCustomers", "GET")]
    [DataContract]
    public partial class SearchCustomersRequest
        : BaseSecureRequest, IReturn<SearchCustomersResponse>
    {
        [DataMember]
        public virtual string SearchString { get; set; }

        [DataMember]
        public virtual bool? IncludeStoreAccounts { get; set; }

        [DataMember]
        public virtual long? StartOffset { get; set; }

        [DataMember]
        public virtual long? RecordCount { get; set; }

        [DataMember]
        public virtual bool? IncludeDependants { get; set; }

        [DataMember]
        public virtual bool? IncludeAdditionalDetails { get; set; }

        [DataMember]
        public virtual DateTime? ChangedDate { get; set; }

        [DataMember]
        public virtual long? LocId { get; set; }
    }

    [DataContract]
    public partial class SearchCustomersResponse
        : BaseResponse
    {
        public SearchCustomersResponse()
        {
            Customers = new List<CustomerSearchRecord>{};
        }

        [DataMember]
        public virtual long StartOffset { get; set; }

        [DataMember]
        public virtual long RecordCount { get; set; }

        [DataMember]
        public virtual long RemainingRecords { get; set; }

        [DataMember]
        public virtual long TotalRecords { get; set; }

        [DataMember]
        public virtual List<CustomerSearchRecord> Customers { get; set; }
    }

}