<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.egis-online.de/EBC/schema/SearchQuery"
    xmlns="http://www.egis-online.de/EBC/schema/SearchQuery"
    elementFormDefault="qualified">
    <xs:element name="SearchQuery">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="TransactionHeader"/>
                <xs:element ref="Search"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="TransactionHeader">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="VersionId"/>
                <xs:element ref="GenerationDateTime"/>
                <xs:element ref="ERP"/>
                <xs:element ref="Login"/>
                <xs:element ref="Password"/>
                <xs:element ref="User" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="VersionId" type="xs:decimal"/>
    <xs:element name="GenerationDateTime" type="xs:dateTime"/>
    <xs:element name="ERP" type="xs:string"/>
    <xs:element name="Login">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="40"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Password">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="40"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="User" type="xs:string"/>
    <xs:element name="Search">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Query"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Query">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="SearchTerm" minOccurs="0"/>
                <xs:element ref="SearchOptions" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="Pagination" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="SearchTerm">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="2"/>
                <xs:maxLength value="100"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="SearchOptions">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="OnlyActive" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="OnlyStocked" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="OnlyInDescription" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="MinPrice" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="MaxPrice" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="Sorting" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="DistributorName" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="ManufacturerName" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="ProductGroupId" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Pagination">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="StartRow"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="OnlyActive">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="true"/>
                <xs:enumeration value="false"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="OnlyStocked">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="true"/>
                <xs:enumeration value="false"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="OnlyInDescription">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="true"/>
                <xs:enumeration value="false"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="MinPrice" type="xs:decimal"/>
    <xs:element name="MaxPrice" type="xs:decimal"/>
    <xs:element name="StartRow" type="xs:positiveInteger"/>
	<xs:element name="DistributorName" type="xs:string"/>
	<xs:element name="ManufacturerName" type="xs:string"/>
	<xs:element name="ProductGroupId" type="xs:positiveInteger"/>
	<xs:element name="Sorting">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="SortOrder"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SortOrder">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="asc"/>
				<xs:enumeration value="desc"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
</xs:schema>
