LuckyYou: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Line 199: Line 199:
</pre>
</pre>


== XSLT ==
=== XSLT ==


<pre>
<pre>

Revision as of 16:44, 9 March 2016

Meeskond ja rollid

  • Tanel Vähk - Projektijuht
  • Aleks Luik
  • Melissa Eenmaa
  • Taavi Kliss

Idee

Meie idee on luua loosimisi vahendav veebirakendus LuckyYou, kasutades C# keelt.

Rakenduses on kasutajateks meie kliendid (ehk firmad, kes loosimisi teevad) ning tavakasutajad, kes loosimisi jagavad. Klientidel on võimalik lisada mitmeid loosimisi ning tavakasutajad võivad end registreerida, reklaame jagades, limiteerimata arvule loosimistele.

Loosimise eest esitatakse kliendile tähtajaline arve, sõltuvalt loosimise pikkusest, reklaami suurusest ning prioriteedist. Tavakasutajate jaoks on osalemine, ehk loosimiste jagamine, tasuta. Jagamine toimub e-maili või Facebooki kaudu.

Igal loosimisel on teada: loosi algataja, toode, toote üldine kategooria, alguskuupäev, lõpukuupäev, kui palju tooteid loositakse, mis vanusegrupile on tooted mõeldud. Info loosimisele minevate toodete kohta lisatakse andmebaasi (Näiteks: Lisan toote nimega Merida Xsport, tüübiks panen jalgratas).

Andmebaasi märgitakse ka kõik võidud, et oleks võimalik jälgida ajalugu. Samuti on olemas pingerida võitudest ning loosimises osalemistest.

Kasutatav .NET tehnoloogia

C# ning SOAP (WCF tehnoloogia) või REST (ASP.NET Web API).

Analüüs

Rakendus on eelkõige mõeldud firmadele, kes loosivad asju ning loosimistes osaleda soovijatele. Tahame luua rakenduse, mis lihtsustaks loosimiste korraldamist ning neis osalemist, kuna see on viimasel ajal Facebookis väga populaarne. Rakendus vahendabki loosimisi Facebooki ja inimeste vahel, või siis e-maili teel. Kuna kõik loosimistega seonduv on ühes kohas koos, on lihtsam neid jälgida, kui Facebooki seinal, kus need teiste asjade vahele ära kaovad. Klientidel on lihtne oma loosimise kohta andmeid sisestada ning kõik loosimised on lihtsalt leitavad, seega on ka tavakasutajal mugav neis osaleda, mis tähendab suuremat osalejate arvu ning seega ka paremat reklaami firmadele.

Rakenduse funktsionaalsus kliendina: Kui firma soovib korraldada loosimise, sisestab ta rakendusse vajaliku info nii toote kui ka loosimise detailide kohta. Talle esitatakse arve vastavalt loosimise kestusest, reklaami suurusest ja prioriteedist (kui määrata loosimise prioriteediks 1, siis reklaam kuvatakse kõige esimesena). Pärast loosimise lisamist, on kõigil kasutajatel võimalik seda lihtsasti leida. Klient määrab, mis ajani loosimine kestab ning avaldab võitja.

Rakenduse funktsionaalsus tavakasutajana: Kui tavaline kasutaja soovib osaleda loosimises, jagab ta lihtsalt vastavat reklaami ning ongi sellega loosimisele registreeritud. Loosimisi saab otsida kategooriate või märksõnade järgi ning piirangut, kui paljudes osaleda, ei ole. Võidu korral saab kasutaja teavituse.

Rakenduse sisu

Rakenduses on olemas järgmised võimalused (Must have):

  • 1. Meil on kasutajad – admin, klient (firma, kes lisab loosimised), kasutaja (kes jagab loosimisi)
  • 2. Kasutajal on võimalus registeerida ühele kuni mitmele loosimisele.
  • 3. Kliendil on võimalus lisada loosimisi.
  • 4. Klient saab lisada tooteid andmebaasi, mis lähevad peagi loosimistele. Tootel on nimi, ja tüüp. Näiteks: Lisan toote nimega Merida Xsport, tüübiks panen jalgratas.
  • 5. Loosimistel on üldisemad kategooriad – pudipadi, spordiesemed, reisid jne.
  • 6. Igal loosimisel on teada: * loosi algataja * toode, mis osaleb loosimisel * üldisem kategooria, kuhu toode kuulub * algus kuupäev * kaua kestab * kui palju tooteid loositakse * mis vanuses on tooted mõeldud.
  • 7. Loosimisese eest esitakse arve. Arve suurus sõltub loosimise pikkusest, loosimisala reklaami suurusest, loosimisala prioriteedi määramisest ( kui määrata loosimise prioriteediks 1, siis reklaam kuvatakse kõige esimesena).
  • 8. Arvel on tähtaaeg, mis ajaks tuleb maksta ära.
  • 9. Meie andmebaasi lisatakse kõik võidud, et saaks jälgida võitude ajalugu.
  • 10. Võitudest ja loosimistest osalemistest moodustatakse pingerida.

Rakenduses võiksid olla lisavõimalused (Should have):

  • 1. Kasutajale on võimalik teavitus võidust saata.
  • 2. Kasutaja näeb palju on aega mingi loosimise lõpuni jäänud.
  • 3. Kliendil on võimalik näha, millal loosimine lõpeb ja kes on võidu saanud.
  • 4. Võimalik on lisada loosiauhinna kättesaamise asukoht.
  • 5. Klient saab lülituda ümber kasutajaks, et samuti loosmistest osa võtta.
  • 6. Loosimisi on võimalik jagada facebooki kaudu või emaili kaudu.

QSEE andmebaasiskeem

LUCKYYOU

XML osa

XML-is talletatakse informatsiooni loosimiste kohta (ehk reklaamid kogu infoga auhindadest, mida osalemiseks teha jne).

XML Fail

<?xml version="1.0" encoding="utf-8" ?>

<Draws>
  
  <Draw Name="iPhone 5s loosimine" Company="Apple" Duration="10.01.16-10.02.16" Page-Position="1">
    <Description><![CDATA[Loosi läheb iPhone 5s. Jaga ning võida!]]></Description>
    <DrawPrice Name="Lenovo sülearvuti" Quantity="1">
      <Category><![CDATA[Elektroonika]]></Category>
    </DrawPrice>
    <Regulations>
      <Rule Clause="Jaga oma seinal!">
        <RuleExtra><![CDATA[Jagamine peab olema avalik]]></RuleExtra>
      </Rule>
      <Rule Clause="Lisa pildi alla kommentaar!">
        <RuleExtra><![CDATA[Kommenteeri pilti: "Apple Eesti"]]></RuleExtra>
      </Rule>
        <Rule Clause="Jagamisel nõustud kampaania reeglitega!"></Rule>
    </Regulations>
    <ImageUrl>http://drop.ndtv.com/TECH/product_database/images/918201370949PM_635_iPhone-5s.jpeg</ImageUrl>
  </Draw>
  
  <Draw Name="Lõhnakomplekt Escada Horse in the Field" Company="Escada" Duration="10.01.16-10.02.16" Page-Position="0">
    <Description><![CDATA[Loosi läheb kolm lõhnakomplekti Escada Horse in the Field]]></Description>
    <DrawPrice Name="Lenovo sülearvuti" Quantity="3">
      <Category><![CDATA[Ilutooted]]></Category>
    </DrawPrice>
    <Regulations>
      <Rule Clause="Jaga oma seinal!">
        <RuleExtra><![CDATA[Jagamine peab olema avalik]]></RuleExtra>
      </Rule>
      <Rule Clause="Lisa pildi alla kommentaar!">
        <RuleExtra><![CDATA[Kommenaar peab sisaldama lauset:"Hobused põllul!]]></RuleExtra>
        <RuleExtra><![CDATA[Lisa kommentaari kolme sõbra nimed!]]></RuleExtra>
      </Rule>
        <Rule Clause="Jagamisel nõustud kampaania reeglitega!"></Rule>
    </Regulations>
    <ImageUrl>http://www.punmiris.com/himg/o.32787.jpg</ImageUrl>
  </Draw>
  
  <Draw Name="Electronicsi kevadloos" Company="Electronics" Duration="10.03.26-20.03.16" Page-Position="1">
    <Description><![CDATA[Loosi läheb 1 Lenovo sülearvuti ja 2 Philips]]> </Description>
    <DrawPrice Name="Lenovo sülearvuti" Quantity="1">
      <Category><![CDATA[Elektroonika]]></Category>
    </DrawPrice>
    <DrawPrice Name="Philips MP3" Quantity="2">
      <Category><![CDATA[Elektroonika]]></Category>
    </DrawPrice>
    <Regulations>
      <Rule Clause="Jaga oma seinal!">
        <RuleExtra><![CDATA[Jagamine peab olema avalik]]></RuleExtra>
      </Rule>
      <Rule Clause="Lisa pildi alla kommentaar!">
        <RuleExtra><![CDATA[Kommenaar peab sisaldama lauset:"MINA VÕIDAN!"]]></RuleExtra>
      </Rule>
        <Rule Clause="Jagamisel nõustud kampaania reeglitega!"></Rule>
    </Regulations>
    <ImageUrl>http://www.lenovo.com/images/gallery/1060x596/lenovo-laptop-ideapad-y410p-front-1.jpg</ImageUrl>
  </Draw>
  
  <Draw Name="Sportlandi rattaloos!" Company="Sportland" Duration="10.03.26-20.03.16" Page-Position="1">
    <Description><![CDATA[Loosi läheb kolm maastikuratast Scott.]]></Description>
    <DrawPrice Name="Scott maastikuratas" Quantity="3">
      <Category><![CDATA[Elektroonika]]></Category>
    </DrawPrice>
    <Regulations>
      <Rule Clause="Tee pilti endast koos rattaga">
        <RuleExtra><![CDATA[Pilti tuleb jagada meie kommentaariumis]]></RuleExtra>
      </Rule>
      <Rule Clause="Jaga oma seinal!">
        <RuleExtra><![CDATA[Jagamine peab olema avalik]]></RuleExtra>
      </Rule>
      <Rule Clause="Lisa pildi alla kommentaar!">
        <RuleExtra><![CDATA[Kommenaar peab sisaldama lauset:"Sõidan rattaga!"]]></RuleExtra>
      </Rule>
      <Rule Clause="Jagamisel nõustud kampaania reeglitega!"></Rule>
    </Regulations>
    <ImageUrl>http://s.kodusoov.ee/images/listings/2016-02/ratas_scale_70-1456687425-43-e.jpg</ImageUrl>
  </Draw>

</Draws>

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="Draws">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Draw">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Description" type="xs:string" />
              <xs:element maxOccurs="unbounded" name="DrawPrice">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Category" type="xs:string" />
                  </xs:sequence>
                  <xs:attribute name="Name" type="xs:string" use="required" />
                  <xs:attribute name="Quantity" type="xs:unsignedByte" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="Regulations">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="Rule">
                      <xs:complexType>
                        <xs:sequence minOccurs="0">
                          <xs:element maxOccurs="unbounded" name="RuleExtra" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="Clause" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="ImageUrl" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="Name" type="xs:string" use="required" />
            <xs:attribute name="Company" type="xs:string" use="required" />
            <xs:attribute name="Duration" type="xs:string" use="required" />
            <xs:attribute name="Page-Position" type="xs:unsignedByte" 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"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
        <head>
          <title>Loosimised</title>
        </head>
        <body>
           <xsl:for-each select="/Draws/Draw">
              <h1>
              <xsl:value-of select="@Name"/> - 
              <xsl:value-of select="@Company"/>
              </h1>
              <h2>
                <xsl:value-of select="Description"/>
              </h2>
     
             <ul>
               <xsl:for-each select="Regulations/Rule">
                 <li>
                   <xsl:value-of select="@Clause"/>
                 </li>
                   <ul>
                     <xsl:for-each select="RuleExtra">
                      <li>
                           <xsl:value-of select="."/>
                      </li>
                     </xsl:for-each>
                   </ul>
                 </xsl:for-each>
               </ul>
             <img>
               <xsl:attribute name="src">
                 <xsl:value-of select="ImageUrl"/>
               </xsl:attribute>
             </img>
              </xsl:for-each>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

Blogi

  • 03.02 - Tiimi loomine.
  • 23.02 - Facebooki grupi loomine, idee leidmine.
  • 25.02 - Esimene kokkusaamine. Alustasime andmebaasi skeemi loomisega QSEEs.
  • 03.03 - Teine kokkusaamine. Lõpetasime andmebaasi skeemi QSEEs ning alustasime XML loomist.
  • 07.03 - Lõime Wiki lehe ning seletasime lahti projekti idee.
  • 09.03 - Kolmas kokkusaamine. Lõpetasime XML ja ühendasime projekti Team Foundationiga.