Meeskond "X"
From ICO wiki test
				Projekti ülesanded
- Koostada XML schema
- Ehitada veebiteenus
- Ehitada selle veebiteenuse peale veebirakendus
Teema
Lao teenus, mis võimaldab isikul registreerida ennast kasutajaks ja siis saab kasutada lao teenust. 
Peamised võimalused:
- Laoseisu vaatamine
- Kauba redigeerimine
- Kauba lisamine
- Kauba kustutamine
Liikmed
- Sergei Rumjantsev
- Martin Hallang
- Rauno Pihlak
Töökäik
24.03.10
Uurisime ASP.NET baasil töötavad kasutajasüsteemi ja katsetasime natuke selle põhjal veebi tegemist.
- Saime valmis andmebaasiga, kuhu pidime installeerima ASP.NET poolt kasutatavad tabelid.
- Saime tööle kasutaja registreerimise/sisenemise.
12.04.10
Hakkasime põhjalikumalt uurima WCF-i.
- Saime tööle testmeetodid.
- Ei tulnud välja ühendada meetod andmebaasiga.
16.04.10
Peale pikka lugemist ja internetiavarustes uitamist jõudsime järeldusele, et parem on kasutada Linq2Sql klassi.
- Lisasime meile vajalikud tabelid andmebaasi.
- Saime tööle algse andmebaasi lisamise meetodi.
- Ei suutnud tööle saada autentimist.
20.04.10
- Saime tööle autentimise ASP.NET Form poolt pakutava baasi abil.
- Lisatud palju uusi meetodeid.
08.05.10
- Rakenduse poole peal on võimalik näha oma poolt sisestatud esemeid.
- Enda esemeid saab muuta ja kustutada vastavalt vajadusele.
- On võimalik lisada uusi esemeid lattu.
- Rakenduse kujundus natuke tehtud paremaks. Korralik css fail taha pandud.
10.05.10
- Lisasime veateated.
- Xml andmefail loodud.
- Lisasime rakendusele updatepaneeli, mille abil saab teostada muudatusi ilma, et peaks tegema refreshi
14.05.10
- Esemete muutmisel dropboxi valik on nüüd õige eseme peal. Ei pea uuesti valima gruppi iga muutmise korral.
17.05.10
- Muudetud rolle. Administraatorile lisatud uusi võimalusi, registreerimata kasutajatel puudub võimalus näha ladudes olevaid esemeid.
To be continued ...'
Veebiteenuse meetodid
- Kõigile avatud
- Sisene() - autendib kasutajat ja tagastab vastavalt, kas true/fale väärtuse
- Valju() - kustutab kasutajaga seotud sessiooni ja cookied
 
- Kasutajale ja Administraatorile avatud
- NaitaGrupid() - tagastab List<Grupp>, kus on sees gruppide nimekiri
- NaitaEsemeidLaos(int LaduId) - tagastab List<LaoEse> esemed lao id järgi
- NaitaEsemeteArvuLaos(int LaduId) - tagastab int väärtuse
- NaitaEsemeidGrupis(int GruppId) - tagastab List<LaoEse> esemed grupi id järgi
- NaitaEsemeteArvuGrupis(int GruppId) - tagastab int väärtuse
- NaitaLaoEsemeid() - tagastab List<LaoEse>, kus on sees esemete nimekiri, mille kogus > 0
- NaitaMinuLaoEsemeid() - tagastab autenditud kasutaja poolt sisestatud esemed
- LisaLaoEse() - autenditud kasutaja lisab uusi esemeid andmebaasi
- UuendaEse() - autenditud kasutaja muudab enda poolt sisestatud esemete infot
- KustutaEse() - autenditud kasutaja kustutab enda poolt sisestatud esemeid
- LisaLadu() - autenditud kasutaja lisab ladu
- UuendaLadu - autenditud kasutaja muudab enda ladu
- NaitaMinuLadudeArvu - autenditud kasutaja saab kätte enda ladude arvu
- NaitaMinuLadusid - tagastab autenditud kasutaja List<Ladu2>
 
- Admin
- LisaGrupp() - uue grupi lisamine
- UuendaGrupp()
- NaitaEsemeteArvuKasutajal(Guid UserId) - tagastab int väärtuse
- NaitaLadusid() - tagastab List<Ladu2>, kus sees kõik olemasolevad laod
- NaitaKasutajaLogi()
 
XML
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<LaoEsemed>
  
  <LaoEse Id="3" Name="OK" Amount="10000000" Price="10">
    <Group Id="1">
      <Name>Sõidukid</Name>
    </Group>
    <Description>Test!</Description>
  </LaoEse>
  
  <LaoEse Id="6" Name="Test" Amount="100" Price="1">
    <Group Id="1">
      <Name>Sõidukid</Name>
    </Group>
    <Description>ok</Description>
  </LaoEse>
  
  <LaoEse Id="7" Name="Lahenimi" Amount="10000" Price="100">
    <Group Id="2">
      <Name>Elamud</Name>
    </Group>
    <Description>gfgd</Description>
  </LaoEse>
  
  <LaoEse Id="8" Name="Lahenimi" Amount="10000" Price="100">
    <Group Id="2">
      <Name>Elamud</Name>
    </Group>
    <Description>gfgd</Description>
  </LaoEse>
  
  <LaoEse Id="4" Name="Lahenimi" Amount="10000" Price="100">
    <Group Id="2">
      <Name>Elamud</Name>
    </Group>
    <Description>gfgd</Description>
  </LaoEse>
  
  <LaoEse Id="5" Name="Lahenimi" Amount="10000" Price="100">
    <Group Id="2">
      <Name>Elamud</Name>
    </Group>
    <Description>gfgd</Description>
  </LaoEse>
  
  <LaoEse Id="2" Name="Lahenimi" Amount="10000" Price="100">
    <Group Id="2">
      <Name>Elamud</Name>
    </Group>
    <Description>gfgd</Description>
  </LaoEse>
  
  <LaoEse Id="12" Name="Minu" Amount="1" Price="33">
    <Group Id="2">
      <Name>Elamud</Name>
    </Group>
    <Description>Tema</Description>
  </LaoEse>
  
  <LaoEse Id="9" Name="Uusim" Amount="100" Price="500">
    <Group Id="4">
      <Name>Riided/jalatsid</Name>
    </Group>
    <Description>Uus värk jep!</Description>
  </LaoEse>
  
  <LaoEse Id="10" Name="Minu" Amount="1" Price="2">
    <Group Id="5">
      <Name>Luksuskaubad</Name>
    </Group>
    <Description>Tema</Description>
  </LaoEse>
  
  <LaoEse Id="1" Name="Söögitill" Amount="91" Price="120">
    <Group Id="5">
      <Name>Luksuskaubad</Name>
    </Group>
    <Description>Värske söögitill</Description>
  </LaoEse>
  
  <LaoEse Id="14" Name="Dell Vostro 1310" Amount="1" Price="7000">
    <Group Id="9">
      <Name>Arvutid</Name>
    </Group>
    <Description>Suht vässu ja tahab puhkusele.</Description>
  </LaoEse>
  
  <LaoEse Id="15" Name="Kass" Amount="1" Price="500">
    <Group Id="9">
      <Name>Arvutid</Name>
    </Group>
    <Description>Kallis kass!</Description>
  </LaoEse>
</LaoEsemed>
XML Schema
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="LaoEsemed">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="LaoEse">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Group">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Name" type="xs:string" />
                  </xs:sequence>
                  <xs:attribute name="Id" type="xs:unsignedByte" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="Description" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="Id" type="xs:unsignedByte" use="required" />
            <xs:attribute name="Name" type="xs:string" use="required" />
            <xs:attribute name="Amount" type="xs:unsignedInt" use="required" />
            <xs:attribute name="Price" type="xs:unsignedShort" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </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">
  <xsl:template match="LaoEsemed">
    <html>
      <body>
        <h2>Lao esemed</h2>
        <table border="1" cellpadding="3">
          <tr>
            <th>Nimi</th>
            <th>Hind</th>
            <th>Kogus</th>
            <th>Grupp</th>
          </tr>
          <xsl:for-each select="LaoEse">
            <tr>
              <td>
                <xsl:value-of select="@Name"/>
              </td>
              <td>
                <xsl:value-of select="@Price"/>
              </td>
              <td>
                <xsl:value-of select="@Amount"/>
              </td>
              <td>
                <xsl:value-of select="Group/Name"/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>