Poial

From ICO wiki
Jump to navigationJump to search

Meeskond pöial

Meeskonna liikmed:

  • Kert Treikelder
  • Stenn Mäeots
  • Jevgenia Motorenko
  • Priit Aarma

XML

<?xml version="1.0" encoding="utf-8" ?>
<Veebipood>
  <Info>
    <Nimi>E-Riietepood</Nimi>
    <Kirjeldus>
      Soodsad ja kvaliteetsed riided meestele ja naistele.
    </Kirjeldus>
    <Kontaktid>
      <Kontakt Tüüp="Aadress">Paekaare 52, Tallinn</Kontakt>
      <Kontakt Tüüp="Telefon">riided@mail.ee</Kontakt>
      <Kontakt Tüüp="Email">55544422</Kontakt>
    </Kontaktid>
  </Info>

  <Kategooriad>
    <Kategooria>Mehed</Kategooria>
    <Kategooria>Naised</Kategooria>
  </Kategooriad>

  <Liigid>
    <Liik>Särgid</Liik>
    <Liik>Püksid</Liik>
    <Liik>Kleidid</Liik>
    <Liik>Jalanõud</Liik>
    <Liik>Joped</Liik>
  </Liigid>

  <Tooted>
    <Toode ID="1" Kogus="11" Kategooria="Mehed" Liik="Püksid">
      <Nimi>Batmani püksid</Nimi>
      <Bränd>Batman</Bränd>
      <Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/batmani_pyksid.jpg</Pilt>
      <Suurus>M</Suurus>
      <Hind Ühik=" EUR">55</Hind>
      <Kirjeldus>Mugavad ja vastupidavad!</Kirjeldus>
    </Toode>

    <Toode ID="2" Kogus="9" Kategooria="Naised" Liik="Jalanõud">
      <Nimi>Klassikaline pruun naiste saabas</Nimi>
      <Bränd>Dolcis</Bränd>
      <Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/Naiste_saapad.jpg</Pilt>
      <Suurus>36</Suurus>
      <Hind Ühik=" EUR">49</Hind>
      <Kirjeldus>Kaunistustega klassikaline pruun naiste saabas. Sobib kandmiseks ka pidulikel juhtudel.</Kirjeldus>
    </Toode>

    <Toode ID="3" Kogus="6" Kategooria="Mehed" Liik="Jope">
      <Nimi>PADDED JACKET SOLID jope</Nimi>
      <Bränd>Alpinecrown</Bränd>
      <Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/Meeste_jope.png</Pilt>
      <Suurus>L</Suurus>
      <Hind Ühik=" EUR">79</Hind>
      <Kirjeldus>Sobib sportimiseks kui ka vabal ajal kandmiseks.</Kirjeldus>
    </Toode>

  </Tooted>
</Veebipood>

XML skeemifail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Veebipood">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Info">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Nimi" type="xs:string" />
              <xs:element name="Kirjeldus" type="xs:string" />
              <xs:element name="Kontaktid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="Kontakt">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="Tüüp" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Kategooriad">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Kategooria" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Liigid">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Liik" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Tooted">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Toode">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Nimi" type="xs:string" />
                    <xs:element name="Bränd" type="xs:string" />
                    <xs:element name="Pilt" type="xs:string" />
                    <xs:element name="Suurus" type="xs:string" />
                    <xs:element name="Hind">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedByte">
                            <xs:attribute name="Ühik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Kirjeldus" type="xs:string" />
                  </xs:sequence>
                  <xs:attribute name="ID" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="Kogus" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="Kategooria" type="xs:string" use="required" />
                  <xs:attribute name="Liik" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </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"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                exclude-result-prefixes="msxsl">

  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>
          <xsl:value-of select="Veebipood/Info/Nimi"/>
        </title>
      </head>
      <body>
        <xsl:for-each select="Veebipood/Tooted/Toode">
          <xsl:sort select="@ID"/>
          <div id="toode">
            <div style="border:2px solid green">
              <div style="float: left; width:250px">
              <h1 style=" color:#00994C">
                <xsl:value-of select="Nimi"/>
              </h1>
            <em style="color: #808080">
              ID: <xsl:value-of select="@ID"/>
            </em>
            <br>
              <em style="color: #808080">
                Kategooria: <xsl:value-of select="@Kategooria"/>
              </em>
            </br>
            <br>
              <em style="color: #808080">
                Liik: <xsl:value-of select="@Liik"/>
              </em>
            </br>
            <br>
              <em style="color: #808080">
                Kogus: <xsl:value-of select="@Kogus"/>
              </em>
            </br>
              </div>
            <xsl:variable name="link" select="Pilt" />
              <div style="padding:100px 0px 0px 0px">
                <img height ="250px" src="{$link}"></img>
              </div>
              <h3 style="color: #00CC66; padding:0px 0px 0px 200px" >
                <xsl:value-of select="Kirjeldus"/>
              </h3>   
            <table>
              <tr>
                <td>
                  <b style ="color: black; padding:0px 0px 0px 200px">
                    Bränd: <xsl:value-of select="Bränd"/>
                  </b>
                </td>
              </tr>
              <tr>
                <td>
                  <b style ="color: green; padding:0px 0px 0px 200px">
                    Hind: <xsl:value-of select="Hind"/>
                    <xsl:value-of select="Hind/@Ühik"/>
                  </b>
                </td>
              </tr>
              <tr>
                <td>
                  <b style="padding:0px 0px 0px 200px">
                    Suurus: <xsl:value-of select="Suurus"/>
                  </b>
                </td>
              </tr>
            </table>
            <button type="button">Osta</button>
            </div>
            <div style="margin-bottom: 5.0em;"></div>
          </div>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Veebiteenuse analüüs

Meie veebiteenuseks on plaadipood. Domeenimudeliks on "Album", mille ümber põhiline tegevus toimub. Mudeleid on meil kokku 6. Nendeks on Album, Artist, Cart, User, Genre, Order. Igal mudelil on ka eraldi DTO(Data transfer object) mudelid, et andmebaasist ei tagastata liiga palju seoseid ega ebavajalikku infot. Esitades konkreetseid päringuid API veebiteenusele saab tagasi vastavad albumid, žanride ja artistidega. Kasutame Basic Authentication-it, mille filter atribuudi "[AdminAttribute]" lisame vastavale controllerile, millele soovime ligipääsu vaid adminile ning "[AuthAttribute]", kui ligipääs vaid konkreetsele userile, kes sisse logitud. API poole peal vastavale aadressile minna, ei ava ta enne andmeid, kui oled vastava (admin, user) resource omanikuna loginud. Mustreid kasutasime sarnaselt praktikumides läbi võetud teemadele. Addingdata klassiga saab lisada andmebaasi andmed (valides selle start-up projektiks).

Klientrakendus analüüs

Klientrakendusena ehitasime WPF-il üles plaadipood applicationi. Avades rakenduse, peab ennast enne kasutaja olemasolul sisse logima, kui ei oma kasutajat saab kohe selle seal registreerida. Rakendusel on olemas pärast andmete lisamisel admin - AdminPlaadiPood, parooliks - saavalmis. Kelle tuvastamisel, viskab rakendus admini vaate, kus saab siis albumeid, artiste, žanre ja kasutajaid muuta, kustutada, lisada. Tavakasutaja sisselogimisel avaneb poevaade, kus saab valida žanri, mille järel tulevad albumi nimed ja selekteerides albumi nime, avaneb vastav info albumi kohta. Seejärel saab albumeid lisada ostukorvi ning ostukorvist kustutada,osta toode/tooted. Peale ostmist salvestatakse tellimused orderhistorysse.


Veebiteenus ja klientrakendus

Allalaadimine: http://enos.itcollege.ee/~smaeots/V%f5rgurakendused%202/VeebiteenusJaRakendus

Zipis on olemas API ning WPF klient, eraldi solutionites. Et saaks klienti testida, peab API eelnevalt töötama.