<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<xsl:output method="xml" encoding="utf-8" indent="yes"/>
	<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
	<xsl:param name="mode"/>

	<!-- Maken 'bon' (XML) -->
	<xsl:template match="opdracht">
	  <xsl:variable name="prioriteit">
	    <xsl:choose>
	      <xsl:when test="melding/spoed=1">Calamiteit</xsl:when>
	      <xsl:when test="melding/spoed=2">Hoog</xsl:when>
	      <xsl:when test="melding/spoed=3">Normaal</xsl:when>
	      <xsl:when test="melding/spoed=4">Laag</xsl:when>
	      <xsl:when test="melding/spoed=5">Hold</xsl:when> 
	      <xsl:otherwise>
	        Onbekend
	      </xsl:otherwise>
	    </xsl:choose>
	  </xsl:variable>
		<xsl:element name="ServiceRequestCreate">
			<xsl:element name="ServiceRequest">
				<xsl:element name="CustomerID"><xsl:value-of select="uitvoerende/bedrijf/overeenkomst_nr"/></xsl:element>
				<xsl:element name="ReferenceID">
					<xsl:value-of select="concat(melding/discipline/srtdiscipline/prefix, melding/key)"/>/<xsl:value-of select=" bedrijfopdr_volgnr"/>
				</xsl:element>
				<xsl:element name="Reference"><xsl:value-of select="melding/stdmelding/omschrijving"/>-<xsl:value-of select="opdrachttype/omschrijving"/></xsl:element>
				<xsl:element name="TypeCode">
					<xsl:choose>
						<xsl:when test="opdrachttype/omschrijving='Workorder' and melding/discipline/srtdiscipline/prefix = 'ST'">2</xsl:when>
						<xsl:when test="opdrachttype/omschrijving='Workorder' and melding/discipline/srtdiscipline/prefix = 'SA'">5</xsl:when>
						<xsl:when test="opdrachttype/omschrijving='Docket'">-</xsl:when>
						<xsl:when test="opdrachttype/omschrijving='Projectorder'">4</xsl:when>
						<xsl:otherwise>3</xsl:otherwise>
					</xsl:choose>
				</xsl:element>
				<xsl:element name="RequestedProcessingPeriod">
					<xsl:element name="EndDateTime">
						<xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/maand"/>T<xsl:value-of select="einddatum/tijd"/>:00</xsl:element>
					<xsl:element name="EscalationToOperator">false</xsl:element>
				</xsl:element>
				<xsl:element name="IssueCategoryID">
					<xsl:value-of select="melding/discipline/key"/>
				</xsl:element>
				<xsl:element name="IssueCategory">
					<xsl:value-of select="melding/discipline/omschrijving"/>
				</xsl:element>
				<xsl:element name="IssueSubCategoryID">
					<xsl:value-of select="melding/stdmelding/key"/>
				</xsl:element>
				<xsl:element name="IssueSubCategory">
					<xsl:value-of select="melding/stdmelding/omschrijving"/>
				</xsl:element>
				<xsl:element name="Description">
					<xsl:value-of select="omschrijving"/>
				</xsl:element>
				<xsl:element name="Monitoring">
					<xsl:element name="StartDateTime">
					  <xsl:for-each select="tracking/track">
							<xsl:sort select="datum/timestamp" order="ascending"/>
								<xsl:if test="position() = 1">
									<xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/>T<xsl:value-of select="datum/tijd"/>:00
								</xsl:if>
						</xsl:for-each>
					</xsl:element>
					<xsl:element name="EndDateTime">
						<xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/dag"/>T<xsl:value-of select="einddatum/tijd"/>:00</xsl:element>
					<xsl:element name="Urgency">
					  <xsl:value-of select="$prioriteit"/><xsl:if test="$prioriteit != 'Calamiteit'">: <xsl:value-of select="dagen"/> dagen</xsl:if>
					</xsl:element>
				</xsl:element>
				<xsl:element name="Requester">
					<xsl:element name="Name">
						<xsl:element name="FirstLineName">
							<xsl:value-of select="melding/voor/naam_full"/>
						</xsl:element>
					</xsl:element>
					<xsl:element name="Communication">
						<xsl:element name="Telephone">
							<xsl:value-of select="melding/voor/telefoonnr"/>
						</xsl:element>
						<xsl:element name="Email">
							<xsl:value-of select="melding/voor/email"/>
						</xsl:element>
					</xsl:element>
				</xsl:element>
				<xsl:element name="CustomerCoordinator">
					<xsl:element name="Name">
						<xsl:element name="FirstLineName">
							<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/kenmerk[@key=1000]/perslid/naam_full"/>
						</xsl:element>
					</xsl:element>
					<xsl:element name="Communication">
						<xsl:element name="Telephone">
						  <xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/kenmerk[@key=1000]/perslid/mobiel"/>
						</xsl:element>
						<xsl:element name="Email">
						  <xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/kenmerk[@key=1000]/perslid/email"/>
						</xsl:element>
					</xsl:element>
				</xsl:element>
				<xsl:element name="ServiceLocation">
					<xsl:element name="LocationID">
						<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/kenmerk[@key=1010]"/>
					</xsl:element>
					<xsl:element name="Location">
						<xsl:value-of select="melding/plaats/plaatsaanduiding"/>
					</xsl:element>
					<xsl:element name="Address">
						<xsl:element name="StreetName">
							<xsl:value-of select="melding/plaats/regio/district/locatie/adres"/>
						</xsl:element>
						<xsl:element name="StreetPostalCode">
							<xsl:value-of select="melding/plaats/regio/district/locatie/postcode"/>
						</xsl:element>
						<xsl:element name="CityName">
							<xsl:value-of select="melding/plaats/regio/district/locatie/plaats"/>
						</xsl:element>
					</xsl:element>
				</xsl:element>
			</xsl:element>
		</xsl:element>
	</xsl:template>

	<!-- Maken 'bon' (XML) -->
	<xsl:template match="facilitor">
		<xsl:apply-templates select="opdracht"/>
	</xsl:template>

	<!-- Inpakken 'bon' in SOAP envelope -->
	<xsl:template match="SOAPEnvelope">
		<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
			<soap:Body>
        <xsl:copy-of select="./node()"/>				
			</soap:Body>
		</soap:Envelope>
	</xsl:template>


	<!-- Uitpakken SOAP envelope -->
	<xsl:template match="soap:Envelope">
		<soapResult>
			<xsl:copy-of select="soap:Body/node()"/>
		</soapResult>
	</xsl:template>

	<!-- Decoderen XML response -->
	<xsl:template match="ServiceRequestStatus">
		<Result>
		  <xsl:if test="ErrorLog/TypeID != ''">
			  <xsl:value-of select="ErrorLog/TypeID"/> - <xsl:value-of select="ErrorLog/Note"/>
			</xsl:if>
		</Result>
	</xsl:template>


	<!-- Root -->
	<xsl:template match="/">
		<xsl:choose>
			<xsl:when test="$mode='getExtension'">
				<xsl:element name="format">
					<!-- Hotelselect gebruikt geen cXML, maar SendFile.cls verwacht wel deze parameter om een XML response in te lezen -->
					<xsl:element name="extension">cxml</xsl:element>
				</xsl:element>
			</xsl:when>
			<xsl:otherwise>
				<!-- door SendFile.cls gebruikt voor maken 'bon' (XML die via SOAP verstuurd wordt) -->
				<xsl:apply-templates select="facilitor"/>
				<!-- door SendSOAP.cls gebruikt voor inpakken van 'bon' in SOAP envelope -->
				<xsl:apply-templates select="SOAPEnvelope"/>
				<!-- door SendSOAP.cls gebruikt voor uitpakken van response uit SOAP envelope -->
				<xsl:apply-templates select="soap:Envelope"/>
				<!-- door SendFile.cls gebruikt voor lezen van status uit gefaalde response (NB: <soapResult> is al door de decode gestript) -->
				<xsl:apply-templates select="soapResult/ServiceRequestStatus"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet>