Meeskond:VariableMoods2: Difference between revisions
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
'''Liikmed''' | '''Liikmed,''' | ||
'''tiim pooldus!''' | |||
*Krister Kamla - | *Krister Kamla - '''TIIM I''' | ||
*Berit Veidemann | |||
*Mihkel Künnapas - '''TIIM II''' | |||
*Berit Veidemann - '''TIIM II''' | |||
=Tiim II projekt: Retseptiraamat= | |||
Retseptiraamatusse saab lisada retsepte, millel on koostisosad. Lahendus on WEB API + MVC. | |||
Projekt on kätte saadav [https://www.dropbox.com/s/jes6mphqsm1fixm/Recipe.zip?dl=0 siit] | |||
Täiendustega projekt on leitav [https://www.dropbox.com/s/j52rju9b6y6me46/Recipev1.zip?dl=0 siit], lisandunud on keeletugi, administraatori funktsionaalsused, API päringute logimine, vaated muudetud kasutajasõbralikumateks (erinevate mudelite kontrollerite kasutamine ühtsetest vaadetest), menüüde koostamise võimalus olemasolevate retseptide põhjal. Lisaks parandadud API turvalisust, korrigeeritud statuskoode, võetud kasutusele konfiguratsioonifailid hard-coded väärtuste asemel. | |||
=Veebiteenuse analüüs= | =Veebiteenuse analüüs= | ||
Line 9: | Line 17: | ||
==Must Have== | ==Must Have== | ||
===Klient=== | ===Klient=== | ||
*Uue kliendi lisamine | *<del>Uue kliendi lisamine</del> | ||
*Olemasoleva kliendi andmete muutmine | *<del>Olemasoleva kliendi andmete muutmine</del> | ||
*Kliendi kontaktandmete lisamine/muutmine | *<del>Kliendi kontaktandmete lisamine/muutmine</del> | ||
*Kliendile kasutajakonto registreerimine/muutmine | *<del>Kliendile kasutajakonto registreerimine/muutmine</del> | ||
*Klient saab sirvida poes olevaid tooteid | *<del>Klient saab sirvida poes olevaid tooteid</del> | ||
*Klient saab tooteid pärida kriteeriumide järgi (nt hind, populaarsus, kaubatüüp jne) | *Klient saab tooteid pärida kriteeriumide järgi (nt hind, populaarsus, kaubatüüp jne) | ||
*Klient saab lisada/eemaldada tooteid ostukorvi, muuta toodete kogust ostukorvis | *Klient saab lisada/eemaldada tooteid ostukorvi, muuta toodete kogust ostukorvis | ||
*Klient saab oma ostukorvi sisu kinnitada | *<del>Klient saab oma ostukorvi sisu kinnitada</del> | ||
*Kliendile saab esitada kinnitatud ostukorvi eest arve | *<del>Kliendile saab esitada kinnitatud ostukorvi eest arve</del> | ||
*Klient saab vaadata talle esitatud arveid | *<del>Klient saab vaadata talle esitatud arveid</del> | ||
===Kaupmees=== | ===Kaupmees=== | ||
*Kaupmees saab sisestada/muuta/kustutada tooteid | *<del>Kaupmees saab sisestada/muuta/kustutada tooteid</del> | ||
*Kaupmees saab lisada/muuta tootekategooriaid | *<del>Kaupmees saab lisada/muuta tootekategooriaid</del> | ||
*Kaupmees saab vaadata laoseisude- ja müügistatistikat | *Kaupmees saab vaadata laoseisude- ja müügistatistikat | ||
*Kaupmees saab hallata kasutajaid, näha kasutajate statistikat | *Kaupmees saab hallata kasutajaid, näha kasutajate statistikat | ||
*Kaupmees saab vaadata arveid | *Kaupmees saab vaadata arveid | ||
*Kaupmees saab omal vastutusel kasutada administraatorliidest | *<del>Kaupmees saab omal vastutusel kasutada administraatorliidest</del> | ||
===Tooted=== | ===Tooted=== | ||
*Toodetele saab määrata nime, kirjelduse, tootekoodi | *<del>Toodetele saab määrata nime, kirjelduse, tootekoodi</del> | ||
*Toodetele saab määrata koguse, ühiku, hinna | *<del>Toodetele saab määrata koguse, ühiku, hinna</del> | ||
*Toodetele saab määrata suuruse | *<del>Toodetele saab määrata suuruse</del> | ||
*Toodetele saab määrata tootja, garantiiaja | *<del>Toodetele saab määrata tootja, garantiiaja</del> | ||
*Toodetele saab määrata "nähtavust" | *<del>Toodetele saab määrata "nähtavust"</del> | ||
*Toodetele saab lisada faile (pildid jne - Krister vastutab) | *<del>Toodetele saab lisada faile (pildid jne - Krister vastutab)</del> | ||
===Admin=== | ===Admin=== | ||
*Admin saab piirata pöördumiste arvu ja hallata piiranguid | *Admin saab piirata pöördumiste arvu ja hallata piiranguid | ||
*Admin saab muuta teatmiktüüpi tabelite kirjeid (riigid, linnad, shoppingcart status, file type jne) | *<del>Admin saab muuta teatmiktüüpi tabelite kirjeid (riigid, linnad, shoppingcart status, file type jne)</del> | ||
==Nice to Have== | ==Nice to Have== | ||
Line 42: | Line 50: | ||
*Klient saab saata teenusepakkujale tagasisidet | *Klient saab saata teenusepakkujale tagasisidet | ||
*Klient saab kaupadele anda hinnanguid ja kommentaare/ näha teistepoolt antud hinnanguid ja kommentaare | *Klient saab kaupadele anda hinnanguid ja kommentaare/ näha teistepoolt antud hinnanguid ja kommentaare | ||
*Kaupmees saab lisada toodetele märksõnu | *<del>Kaupmees saab lisada toodetele märksõnu</del> | ||
*Kaupmees saab moodustada kliendigruppe | *Kaupmees saab moodustada kliendigruppe | ||
*Kaupmees saab saata klientidele teavitusi/ spämmi | *Kaupmees saab saata klientidele teavitusi/ spämmi | ||
*Süsteem saadab klientidele automaatseid teateid | *Süsteem saadab klientidele automaatseid teateid | ||
*Kaupmees saab tekitada sooduskampaaniaid | *Kaupmees saab tekitada sooduskampaaniaid | ||
*Kaupmees saab määrata toodete kuvamisjärjekorda (toodete prioriteetsust) | *<del>Kaupmees saab määrata toodete kuvamisjärjekorda (toodete prioriteetsust)</del> | ||
==Andmebaasi mudel (täienemisel)== | |||
[[File:150403-eShopERD.png|400px|thumb|frameless|none|Esialgne andmebaasi mudel]] | |||
==Kasutatavad tehnoloogiad== | |||
*ASP.NET WEB API2 | |||
*ASP.NET MVC5 | |||
*Ninject | |||
*Entity Framework | |||
*AutoMapper | |||
*NLog | |||
=XML= | =XML= |
Latest revision as of 10:53, 12 June 2015
Liikmed, tiim pooldus!
- Krister Kamla - TIIM I
- Mihkel Künnapas - TIIM II
- Berit Veidemann - TIIM II
Tiim II projekt: Retseptiraamat
Retseptiraamatusse saab lisada retsepte, millel on koostisosad. Lahendus on WEB API + MVC. Projekt on kätte saadav siit
Täiendustega projekt on leitav siit, lisandunud on keeletugi, administraatori funktsionaalsused, API päringute logimine, vaated muudetud kasutajasõbralikumateks (erinevate mudelite kontrollerite kasutamine ühtsetest vaadetest), menüüde koostamise võimalus olemasolevate retseptide põhjal. Lisaks parandadud API turvalisust, korrigeeritud statuskoode, võetud kasutusele konfiguratsioonifailid hard-coded väärtuste asemel.
Veebiteenuse analüüs
Kirjeldus
Plaanime luua universaalse veebipoe, mis on mõeldud müüjale oma teenuse pakkumiseks.
Must Have
Klient
Uue kliendi lisamineOlemasoleva kliendi andmete muutmineKliendi kontaktandmete lisamine/muutmineKliendile kasutajakonto registreerimine/muutmineKlient saab sirvida poes olevaid tooteid- Klient saab tooteid pärida kriteeriumide järgi (nt hind, populaarsus, kaubatüüp jne)
- Klient saab lisada/eemaldada tooteid ostukorvi, muuta toodete kogust ostukorvis
Klient saab oma ostukorvi sisu kinnitadaKliendile saab esitada kinnitatud ostukorvi eest arveKlient saab vaadata talle esitatud arveid
Kaupmees
Kaupmees saab sisestada/muuta/kustutada tooteidKaupmees saab lisada/muuta tootekategooriaid- Kaupmees saab vaadata laoseisude- ja müügistatistikat
- Kaupmees saab hallata kasutajaid, näha kasutajate statistikat
- Kaupmees saab vaadata arveid
Kaupmees saab omal vastutusel kasutada administraatorliidest
Tooted
Toodetele saab määrata nime, kirjelduse, tootekoodiToodetele saab määrata koguse, ühiku, hinnaToodetele saab määrata suuruseToodetele saab määrata tootja, garantiiajaToodetele saab määrata "nähtavust"Toodetele saab lisada faile (pildid jne - Krister vastutab)
Admin
- Admin saab piirata pöördumiste arvu ja hallata piiranguid
Admin saab muuta teatmiktüüpi tabelite kirjeid (riigid, linnad, shoppingcart status, file type jne)
Nice to Have
- Klient saab lisada tooteid oma lemmikute nimekirja
- Klient saab kopeerida oma juba kinnitatud ostukorvi
- Klient saab saata teenusepakkujale tagasisidet
- Klient saab kaupadele anda hinnanguid ja kommentaare/ näha teistepoolt antud hinnanguid ja kommentaare
Kaupmees saab lisada toodetele märksõnu- Kaupmees saab moodustada kliendigruppe
- Kaupmees saab saata klientidele teavitusi/ spämmi
- Süsteem saadab klientidele automaatseid teateid
- Kaupmees saab tekitada sooduskampaaniaid
Kaupmees saab määrata toodete kuvamisjärjekorda (toodete prioriteetsust)
Andmebaasi mudel (täienemisel)
Kasutatavad tehnoloogiad
- ASP.NET WEB API2
- ASP.NET MVC5
- Ninject
- Entity Framework
- AutoMapper
- NLog
XML
Veebipoe tootekataloog
<?xml version="1.0" encoding="utf-8" ?>
<Catalog currency="eur">
<Category id="1" visible="true">
<Name><![CDATA[Riided]]></Name>
<Description><![CDATA[Asjad, mida saab selga panna]]></Description>
<Image><![CDATA[riided.JPG]]></Image>
<SubCategory id="2" visible="true">
<Name><![CDATA[Sokid]]></Name>
<Description><![CDATA[Vähemalt paari kaupa müügil olev energiasõltumatu jalasoojendusvahend]]></Description>
<Image><![CDATA[sokid.JPG]]></Image>
<Product id="1" serialCode="AB4756478sd" priority="1" visible="true">
<Name><![CDATA[Selvä sokki]]></Name>
<Description><![CDATA[Väga head soojad sokid meestele]]></Description>
<Image><![CDATA[selva.JPG]]></Image>
<Price>2.00</Price>
<DiscountPrice >1.80</DiscountPrice>
<Size unit=""><![CDATA[M-XXL]]></Size>
<Quantity unit="tk">40</Quantity>
<Guarantee unit="aastat">3</Guarantee>
<Tags>
<Tag id="1"><![CDATA[Meestele]]></Tag>
</Tags>
</Product>
<Product id="2" serialCode="AB4756478se" priority="1" visible="true">
<Name><![CDATA[Hüva sokki]]></Name>
<Description><![CDATA[Väga head soojad sokid naistele, roosa]]></Description>
<Image><![CDATA[hyvaSokk.JPG]]></Image>
<Price>1.40</Price>
<DiscountPrice>0</DiscountPrice>
<Size unit=""><![CDATA[S-L]]></Size>
<Quantity unit="tk">12</Quantity>
<Guarantee unit="aastat">3</Guarantee>
<Tags>
<Tag id="2"><![CDATA[70-ndad]]></Tag>
<Tag id="3"><![CDATA[Naistele]]></Tag>
<Tag id="4"><![CDATA[Kingitused]]></Tag>
</Tags>
</Product>
</SubCategory>
</Category>
<Category id="3" visible="true">
<Name><![CDATA[Toidukaubad]]></Name>
<Description><![CDATA[Asjad, mida saab suhu panna]]></Description>
<Image><![CDATA[toidud.JPG]]></Image>
<SubCategory id="4" visible="true">
<Name><![CDATA[Maiustused]]></Name>
<Description><![CDATA[Hammastele kahjulikud kaubad]]></Description>
<Image><![CDATA[komm.JPG]]></Image>
<Product id="3" serialCode="Aa756478sd" priority="2" visible="true">
<Name><![CDATA[Selga küpsised]]></Name>
<Description><![CDATA[MMM selga]]></Description>
<Image><![CDATA[selga.JPG]]></Image>
<Price>0.64</Price>
<DiscountPrice>0.62</DiscountPrice>
<Size unit="g"><![CDATA[400]]></Size>
<Quantity unit="tk">600</Quantity>
<Guarantee unit="">0</Guarantee>
<Tags>
<Tag id="3"><![CDATA[Naistele]]></Tag>
</Tags>
</Product>
<Product id="4" serialCode="Ax4776478se" priority="1" visible="false">
<Name><![CDATA[Martsipan]]></Name>
<Description><![CDATA[MMM martsipan]]></Description>
<Image><![CDATA[martsipan.JPG]]></Image>
<Price>2.60</Price>
<DiscountPrice>0</DiscountPrice>
<Size unit="g"><![CDATA[170]]></Size>
<Quantity unit="tk">37</Quantity>
<Guarantee unit="">0</Guarantee>
<Tags>
<Tag id="5"><![CDATA[Ostjate lemmik]]></Tag>
<Tag id="6"><![CDATA[Nädala diil]]></Tag>
</Tags>
</Product>
</SubCategory>
<SubCategory id="5" visible="false">
<Name><![CDATA[Hommikueined]]></Name>
<Description><![CDATA[Hommikusöök on kõige tähtsam!]]></Description>
<Image><![CDATA[puder.JPG]]></Image>
<Product id="5" serialCode="Ax4776asdf8se" priority="1" visible="true">
<Name><![CDATA[Neljaviljapuder]]></Name>
<Description><![CDATA[Väkk puder]]></Description>
<Image><![CDATA[4puder.JPG]]></Image>
<Price>1.00</Price>
<DiscountPrice>0</DiscountPrice>
<Size unit="g"><![CDATA[500]]></Size>
<Quantity unit="tk">8</Quantity>
<Guarantee unit="">0</Guarantee>
<Tags>
<Tag id="7"><![CDATA[Keegi ei osta]]></Tag>
<Tag id="8"><![CDATA[Parim enne möödunud]]></Tag>
</Tags>
</Product>
</SubCategory>
</Category>
</Catalog>
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="Catalog">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Category">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="Image" type="xs:string" />
<xs:element maxOccurs="unbounded" name="SubCategory">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="Image" type="xs:string" />
<xs:element maxOccurs="unbounded" name="Product">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="Image" type="xs:string" />
<xs:element name="Price" type="xs:decimal" />
<xs:element name="DiscountPrice" type="xs:decimal" />
<xs:element name="Size">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="unit" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Quantity">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedInt">
<xs:attribute name="unit" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Guarantee">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedByte">
<xs:attribute name="unit" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Tags">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Tag">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:int" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required" />
<xs:attribute name="serialCode" type="xs:string" use="required" />
<xs:attribute name="priority" type="xs:unsignedByte" use="required" />
<xs:attribute name="visible" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required" />
<xs:attribute name="visible" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required" />
<xs:attribute name="visible" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="currency" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
XML Transformatsioonid
Html, mis kuvab toidukaupasid, mis ei ole varjatud ("hidden")
<?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" />
<xsl:template match="/">
<html>
<head>
<title>Allahinnatud toidukaubad</title>
</head>
<body>
<xsl:for-each select="Catalog/Category">
<xsl:if test="@id=3">
<h2><xsl:value-of select="Name"/> </h2>
<xsl:for-each select="SubCategory">
<xsl:for-each select="Product">
<xsl:if test="@visible='true'">
<div>
<h3>
<xsl:value-of select="Name"/>
</h3>
<p>Hind: <xsl:value-of select="Price"/> <xsl:value-of select="/Catalog/@currency"/></p>
<p>Kogus: <xsl:value-of select="Size"/> <xsl:value-of select="Size/@unit"/></p>
</div>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Kuvame kõik veebipoe tooted, järjestatuna soodsaimast hinnast alates
<?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>Head kaubad</title>
<style type="text/css">
table {border:1px solid black;}
td {padding: 5px;}
.headRow {background-color: skyblue; font-weight: bold;}
</style>
</head>
<body>
<table>
<tr class="headRow">
<td>Nimi</td>
<td>Hind</td>
<td>Kogus</td>
</tr>
<xsl:for-each select="Catalog/Category/SubCategory/Product">
<xsl:sort select="Price"/>
<tr>
<td>
<xsl:value-of select="Name"/>
</td>
<td>
<xsl:value-of select="Price"/>
</td>
<td>
<xsl:value-of select="Quantity"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Eemaldame XML-ist elemendid, mis on peiedtud (visibility=false)
<?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="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//Product[@visible='false']">
</xsl:template>
</xsl:stylesheet>