Screaming Magic Gnomes: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
Line 293: Line 293:
</?xml>
</?xml>
</source>
</source>
==Veebiteenuse analüüs==
Meie veebiteenuse eesmärk klientide broneeringuid ja nende kasutajate kontaktandmeid/logineid. Andmebaasis hoiame me klientide infot (kontaktid, loginid), broneeringuid ja teenuseid. Veebiteenus võimaldab meil suhelda veebirakenduse ja andmebaasi vahel,tagastada ja muuta informatsiooni teenuste/broneeringute ja kasutajaandmete kohta.




== Andmebaasiskeem ==
== Andmebaasiskeem ==
[[File:SMG2.png]]
[[File:SMG3.png]]


== Rakenduse sisu ==
== Rakenduse sisu ==

Revision as of 23:38, 17 April 2016

Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" Aastal 2016.

Meeskond

Märt Häkkinen
Siim Osa
Taavi Kivimaa


Idee

Meie idee on luua juuksuri- ja kosmeetikasalongi broneerimissüsteem, kasutades C# keelt. Klientidel on võimalik valida välja protseduur, ning aeg ja teenindaja. Salongil on võimalik näha ja hallata broneeringuid.


XML

<?xml version="1.0" encoding="UTF-8"?>
<Salong nimi="Kristiine">
<Teenused Tyyp="Juuksehooldus">
  <Teenus Tyyp="Mees" Id="1">
    <Nimi>
      <![CDATA[Peosoeng]]>
    </Nimi>
    <Hind Valuuta="Euro">
      22
    </Hind>
    <Kestvus aeg="Minut">
      60
    </Kestvus>
  </Teenus>
  <Teenus Tyyp="Mees" Id="2">
    <Nimi>
      <![CDATA[Masinlõikus]]>
    </Nimi>
    <Hind Valuuta="Euro">
      8
    </Hind>
    <Kestvus aeg="Minut">
      45
    </Kestvus>
  </Teenus>
  <Teenus Tyyp="Mees" Id="3">
    <Nimi>
      <![CDATA[Värvimine]]>
    </Nimi>
    <Hind Valuuta="Euro">
      36
    </Hind>
    <Kestvus aeg="Minut">
      90
    </Kestvus>
  </Teenus>
    <Teenus Tyyp="Naine" Id="4">
    <Nimi>
      <![CDATA[Peosoeng]]>
    </Nimi>
    <Hind Valuuta="Euro">
      25
    </Hind>
    <Kestvus aeg="Minut">
      90
    </Kestvus>
  </Teenus>
  <Teenus Tyyp="Naine" Id="5">
    <Nimi>
      <![CDATA[Värvimine]]>
    </Nimi>
    <Hind Valuuta="Euro">
      36
    </Hind>
    <Kestvus aeg="Minut">
      90
    </Kestvus>
  </Teenus>
</Teenused>
 
 <Teenused Tyyp="Kosmeetik">
  <Teenus Tyyp="Naine" Id="6">
    <Nimi>
      <![CDATA[Kollageen leht-mask]]>
    </Nimi>
    <Hind Valuuta="Euro">
      35
    </Hind>
    <Kestvus aeg="Minut">
      90
    </Kestvus>
  </Teenus>
</Teenused>
   <Teenused Tyyp="Maniküür">
  <Teenus Tyyp="Mees" Id="6">
    <Nimi>
      <![CDATA[Maniküür]]>
    </Nimi>
    <Hind Valuuta="Euro">
      12
    </Hind>
    <Kestvus aeg="Minut">
      30
    </Kestvus>
  </Teenus>
</Teenused>
 
  <Reserveeringud>
  <Reserveering Id="1" TeenuseId="2">
    <KliendiId>
      37
    </KliendiId>
    <TöötajaId>
      1440
    </TöötajaId>
    <Aeg>
      <Algus>
        2016-04-17T14:00:00
      </Algus>
      <Lõpp>
        2016-04-17T14:45:00
      </Lõpp>
    </Aeg>
        <Makstud>
        true
      </Makstud>
  </Reserveering>
    <Reserveering Id="1" TeenuseId="6">
    <KliendiId>
      24
    </KliendiId>
    <TöötajaId>
      200
    </TöötajaId>
    <Aeg>
      <Algus>
        2016-04-17T14:00:00
      </Algus>
      <Lõpp>
        2002-04-17T15:00:00
      </Lõpp>
    </Aeg>
      <Makstud>
        false
      </Makstud>
  </Reserveering>
  </Reserveeringud>
  </Salong>

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="Salong">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Teenused">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Teenus">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Nimi" type="xs:string" minOccurs="1" maxOccurs="1"/>
                    <xs:element name="Hind" type="xs:string" minOccurs="1" maxOccurs="1">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="Valuuta" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Kestvus" minOccurs="1" maxOccurs="1">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="aeg" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="Tyyp" type="xs:string" use="required" />
                  <xs:attribute name="Id" type="xs:unsignedByte" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="Tyyp" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element name="Reserveeringud">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Reserveering">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="KliendiId" type="xs:unsignedByte" />
                    <xs:element name="TöötajaId" type="xs:unsignedShort" />
                    <xs:element name="Aeg">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Algus" type="xs:dateTime" />
                          <xs:element name="Lõpp" type="xs:dateTime" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Makstud" type="xs:boolean" />
                  </xs:sequence>
                  <xs:attribute name="Id" type="xs:unsignedInt" use="required" />
                  <xs:attribute name="TeenuseId" type="xs:unsignedInt" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="nimi" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT

<?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>
      <head>
        <title>Kristiine Salong</title>
      </head>
      <body>


        <h1>Teenused</h1>
        <h2>Meestele</h2>
        <!--Kirjutame välja meeste ja naiste teenused, hinnad ja ajalise kestvuse eraldi tabelitesse!-->
        <ul>
          <Table>
            <tr>
              <th>Nimi</th>
              <th>Kestvus</th>
              <th>Hind</th>
            </tr>

            <xsl:for-each select="Salong/Teenused/Teenus">
              <xsl:if test="@Tyyp='Mees'">
                <tr>
                  <td>
                    <xsl:value-of select="./Nimi"/>
                  </td>
                  <td>
                    <xsl:value-of select="./Hind"/>
                  </td>
                  <td>
                    <xsl:value-of select="./Kestvus"/>
                  </td>
                </tr>
              </xsl:if>
            </xsl:for-each>
          </Table>
        </ul>
        <h2>Naistele</h2>
        <ul>
          <Table>
            <tr>
              <th>Nimi</th>
              <th>Kestvus</th>
              <th>Hind</th>
            </tr>

            <xsl:for-each select="Salong/Teenused/Teenus">
              <xsl:if test="@Tyyp='Naine'">
                <tr>
                  <td>
                    <xsl:value-of select="./Nimi"/>
                  </td>
                  <td>
                    <xsl:value-of select="./Hind"/>
                  </td>
                  <td>
                    <xsl:value-of select="./Kestvus"/>
                  </td>
                </tr>
              </xsl:if>
            </xsl:for-each>
          </Table>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
</?xml>

Veebiteenuse analüüs

Meie veebiteenuse eesmärk klientide broneeringuid ja nende kasutajate kontaktandmeid/logineid. Andmebaasis hoiame me klientide infot (kontaktid, loginid), broneeringuid ja teenuseid. Veebiteenus võimaldab meil suhelda veebirakenduse ja andmebaasi vahel,tagastada ja muuta informatsiooni teenuste/broneeringute ja kasutajaandmete kohta.


Andmebaasiskeem

Rakenduse sisu

Rakenduse funktsionaalsus kliendina:
on võimalik näha olemasolevaid broneeringuid.
on võimalik broneeringuid muuta ja kustutada.
on võimalik näha klientide kontakandmeid
on võimalik lisada uusi teenuseid (koos hinna, kirjelduse ja kestvusega)

Rakenduse funktsionaalsus tavakasutajana (ilusalongi kliendina):
on võimalik teha broneeringuid ja neid kuni 24h enne broneeringu algust muuta. on võimalik näha vabasid aegu.
on võimalik registreerida uus kasutaja.
on võimalik näha pakutavaid teenuseid (hinda, kestvust, kirjeldust).
on võimalik tellida uus parool.
on võimalik saada 24h enne broneeringu algust meeldetuletus


Rakenduses peaksid olema järgmised võimalused (Must have):
1. Meil on olemas kasutajad, kellega saab sisse logida
2. Broneeringuid on võimalik lisata, eemaldada ja muuta.
3. On võimalik näha pakutavaid teenuseid (hinnakirja, maksuvust, kestvust)
4. On võimalik lisada, eemaldada ja muuta pakutavaid teenuseid
5. Võimalus registreerida uusi kasutajaid
6. Võimalus tellida uus parool oma kasutajale, kui see ununeb.
7. Võimalus saata kliendile arveid pakutud teenuste eest
8. Iga kasutaja puhul on määratletud, kas tegu on kliendiga (tava või püsiklient) või töötajaga
9. Kasutaja saab broneerida mitu teenust ühe broneeringuga
10. Kliendil on võimalik näha vabasid aegu oma soovitud teenusele.

Rakenduses võiksid olla lisavõimalused (Nice to have):
1. Kasutajale saadetakse päev enne broneeringut meeldetuletus
2. Kasutajale saab panna meeldetuletuse, kuna broneerida järgmine juukselõikus (või mõni muu teenus)
3. On võimalik registreerida kasutades sotsiaalmeediat