PageNotFound
From ICO wiki
Meeskond
- Arvo Paomees
XML
<?xml version="1.0" encoding="utf-8" ?>
<rent>
<bookings>
<booking id="1" hidden="false">
<bookedVehicles>
<bookedVehicle id="1">
<vehicleId>2</vehicleId>
</bookedVehicle>
<bookedVehicle id="2">
<vehicleId>1</vehicleId>
</bookedVehicle>
<bookedVehicle id="3">
<vehicleId>3</vehicleId>
</bookedVehicle>
</bookedVehicles>
<data>
<userId>2</userId>
<startTime>02.05.2017 13:00:22</startTime>
<endTime>05.05.2017 13:00:22</endTime>
<additionalDriver>false</additionalDriver>
<gps>true</gps>
<childCarSeats>false</childCarSeats>
<youngDriver>true</youngDriver>
</data>
</booking>
<booking id="2" hidden="false">
<bookedVehicles>
<bookedVehicle id="1">
<vehicleId>3</vehicleId>
</bookedVehicle>
<bookedVehicle id="2">
<vehicleId>1</vehicleId>
</bookedVehicle>
</bookedVehicles>
<data>
<userId>1</userId>
<startTime>05.05.2017 13:00:22</startTime>
<endTime>06.05.2017 13:00:22</endTime>
<additionalDriver>false</additionalDriver>
<gps>false</gps>
<childCarSeats>true</childCarSeats>
<youngDriver>true</youngDriver>
</data>
</booking>
<booking id="3" hidden="false">
<bookedVehicles>
<bookedVehicle id="1">
<vehicleId>3</vehicleId>
</bookedVehicle>
</bookedVehicles>
<data>
<userId>2</userId>
<startTime>08.05.2017 13:00:22</startTime>
<endTime>11.05.2017 13:00:22</endTime>
<additionalDriver>false</additionalDriver>
<gps>true</gps>
<childCarSeats>false</childCarSeats>
<youngDriver>true</youngDriver>
</data>
</booking>
</bookings>
<users>
<user id="1" type="admin">
<username><![CDATA[admin]]></username>
<password><![CDATA[admin123]]></password>
<firstname><![CDATA[Peeter]]></firstname>
<lastname><![CDATA[Pakiraam]]></lastname>
<title><![CDATA[Härra]]></title>
<mail><![CDATA[peeter@Pakiraam.ee]]></mail>
<phone><![CDATA[+3725556515]]></phone>
<created>01.05.2017 13:00:22</created>
<hidden>false</hidden>
</user>
<user id="2" type="user">
<username><![CDATA[juku]]></username>
<password><![CDATA[juku123]]></password>
<firstname><![CDATA[Juhan]]></firstname>
<lastname><![CDATA[Tamm]]></lastname>
<title><![CDATA[Härra]]></title>
<mail><![CDATA[juku@tamm.ee]]></mail>
<phone><![CDATA[+3725542515]]></phone>
<created>01.05.2017 13:00:22</created>
<hidden>false</hidden>
</user>
<user id="3" type="user">
<username><![CDATA[mati]]></username>
<password><![CDATA[mati123]]></password>
<firstname><![CDATA[Mati]]></firstname>
<lastname><![CDATA[Kuusk]]></lastname>
<title><![CDATA[Härra]]></title>
<mail><![CDATA[mati@neti.ee]]></mail>
<phone><![CDATA[+37255444515]]></phone>
<created>01.05.2017 13:00:22</created>
<hidden>false</hidden>
</user>
</users>
<vehicles>
<vehicle id="1">
<make><![CDATA[Audi]]></make>
<model><![CDATA[A6]]></model>
<year>2016</year>
<price>50</price>
<hidden>false</hidden>
</vehicle>
<vehicle id="2">
<make><![CDATA[Skoda]]></make>
<model><![CDATA[Octavia]]></model>
<year>2017</year>
<price>40</price>
<hidden>false</hidden>
</vehicle>
<vehicle id="3">
<make><![CDATA[Volkswagen]]></make>
<model><![CDATA[Passat]]></model>
<year>2017</year>
<price>45</price>
<hidden>false</hidden>
</vehicle>
</vehicles>
</rent>
XSD
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="rent">
<xs:complexType>
<xs:sequence>
<xs:element name="bookings">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="booking">
<xs:complexType>
<xs:sequence>
<xs:element name="bookedVehicles">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="bookedVehicle">
<xs:complexType>
<xs:sequence>
<xs:element name="vehicleId" type="xs:unsignedInt" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="userId" type="xs:unsignedInt" />
<xs:element name="startTime" type="xs:string" />
<xs:element name="endTime" type="xs:string" />
<xs:element name="additionalDriver" type="xs:boolean" />
<xs:element name="gps" type="xs:boolean" />
<xs:element name="childCarSeats" type="xs:boolean" />
<xs:element name="youngDriver" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt" use="required" />
<xs:attribute name="hidden" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="users">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="user">
<xs:complexType>
<xs:sequence>
<xs:element name="username" type="xs:string" />
<xs:element name="password" type="xs:string" />
<xs:element name="firstname" type="xs:string" />
<xs:element name="lastname" type="xs:string" />
<xs:element name="title" type="xs:string" />
<xs:element name="mail" type="xs:string" />
<xs:element name="phone" type="xs:string" />
<xs:element name="created" type="xs:string" />
<xs:element name="hidden" type="xs:boolean" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="vehicles">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="vehicle">
<xs:complexType>
<xs:sequence>
<xs:element name="make" type="xs:string" />
<xs:element name="model" type="xs:string" />
<xs:element name="year" type="xs:unsignedInt" />
<xs:element name="price" type="xs:unsignedInt" />
<xs:element name="hidden" type="xs:boolean" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSLT: Tavakasutajate kontaktandmete kuvamine
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="rent/users/user">
<xsl:if test="@type = 'user'">
<h2>
<xsl:value-of select="title" />
<xsl:text>: </xsl:text>
<xsl:value-of select="firstname" />
<xsl:text> </xsl:text>
<xsl:value-of select="lastname" />
</h2>
<table border="1">
<tr>
<th>Kasutajanimi</th>
<th>
<xsl:value-of select="username" />
</th>
</tr>
<tr>
<th>E-mail</th>
<th>
<xsl:value-of select="mail" />
</th>
</tr>
<tr>
<th>Telefon</th>
<th>
<xsl:value-of select="phone" />
</th>
</tr>
</table>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Tulemus: Tavakasutajate kontaktandmete kuvamine
XSLT: Broneeringute sõitukite margi ja mudeli kuvamine
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="rent/bookings/booking">
<xsl:if test="@hidden = 'false'">
<h2>
<xsl:text>Broneeringu ID: </xsl:text>
<xsl:value-of select="@id" />
</h2>
<xsl:for-each select="bookedVehicles/bookedVehicle">
<ul>
<li>
<xsl:variable name="vehicleId" select="vehicleId"/>
<xsl:text>Sõiduk: </xsl:text>
<xsl:value-of select="../../../../vehicles/vehicle[@id = $vehicleId]/make" />
<xsl:text> </xsl:text>
<xsl:value-of select="../../../../vehicles/vehicle[@id = $vehicleId]/model" />
</li>
</ul>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Tulemus: Broneeringute Sõitukite id-de kuvamine
XSLT: Sõidukite andmete kuvamine
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="rent/vehicles/vehicle">
<xsl:if test="hidden = 'false'">
<h2>
<xsl:text>Sõiduki ID: </xsl:text>
<xsl:value-of select="@id" />
</h2>
<table border="1">
<tr>
<th>Mark</th>
<th>
<xsl:value-of select="make" />
</th>
</tr>
<tr>
<th>Mudel</th>
<th>
<xsl:value-of select="model" />
</th>
</tr>
<tr>
<th>Aasta</th>
<th>
<xsl:value-of select="year" />
</th>
</tr>
<tr>
<th>Hind</th>
<th>
<xsl:value-of select="price" />
€/h
</th>
</tr>
</table>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Tulemus: Sõidukite andmete kuvamine
Veebiteenuse analüüs
Nimetus
CarRentSystem
Kirjeldus
Tegemist on autorendi veebilehega, kus on võimalik boneerida sõiduk soovitud ajavahemikul koos valitud varustusega. Klinedi vaatenurgast on lehekülg ainult broneeringu vormistamiseks ja ülevaatamiseks. Võimalus kliendil ka kasutajaks registreerida, et tema kontakstandmed oleksid broneeringut tehes juba eeltäidetud. Admin liidese poolelt lisandub broneeringute haldus (kuvamine, kustutamine).
Must have
- Ajavahemike valik (kalendersüsteem).
- Sõidukite valik (andmebaasis olevate sõidukite kuvamine).
- Broneeringu teostamine.
- Kasutajaks registreesimeine ja sisselogimine.
- Kasutja andmete muutmine.
- Broneeringute kuvamine/kustutamine admin poolel
- Firma jaoks vajalike infoväljade kuvamine leheküljel.
- Keele kontroller angular baasil. Keelte valik ning keelte muutujate hoidmine andmebaasis.
Nice to have
- Broneeringute ülevaade kasutaja vaates.
- Broneeringu teavitus meilile.
- Broneeringu maksuvuse kalkuleerimine koheselt arvestades ajavahemikku ning selekteeritud valikuid.
Eeldatavad andmebaasi tabelid
- Sõidukid
- Kasutajad
- Broneeringud
- Broneeringute sõidukid
- Keeled
- Keelemuutujate väärtused
- Tüübi muutujad