Autoparandaja: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mviilvee (talk | contribs)
Mviilvee (talk | contribs)
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Meeskond ja rollid ==
== Meeskond ja rollid ==


*'''Mihkel Viilveer''' - Teeb kõike
*'''Mihkel Viilveer''' - Kokk-kondiiter-keevitaja


== Idee ==
== Idee ==


Lihtne veebirakendus, kus saab luua endale autoparandus ettevõtte, lisada tõstukeid ning vabu aegu.Kliendid saavad broneerida neid tõstukeid.
Lihtsamat sorti veebirakendus, kuhu on võimalik registreerida ettevõtteid, mis tegelevad autoremondiga. Tegu on broneerimiskeskkonnaga, kuhu ettevõtte omanikud saavad sisestada vabu aegu ning kliendid (saidi külalised) saavad neid broneerida.  


Kui broneering on tehtud, siis kliendile ning ettevõtte juhile saadetakse teavitus sellekohta.
== Analüüs ==


== Rakenduse sisu ==
=== Süsteemne teave ===
 
Rakendus on ehitatud C# keeles, kasutatakse ASP.NET raamistikku. Kasutajaliides on HTMLis, liikuvad vidinad Javascript(jQuery library) keeles ning stiilitakse CSSiga (kasutatakse Bootstrap 3 raamistikku). Andmeid hoitakse MSSQLis ning päringukeeleks on LinQ. Andmemudeli loomisel kasutatakse CodeFirst lähenemist, ehk enne luuakse andmemudel domeenimudelite näol ning nendest genereerib EntityFramework MSSQLi andmebaasi. Rakenduses on üritatud kasutada nö "best practice" näiteid nagu Solutioni tükeldamine alamprojektideks, andmete pärimine käib repositooriumite kaudu, kasutusel on vaatemudelid ning DTO'd. Kasutajate tugi on lisatud ASP.NET Identity näol kõige "lihtsamal" viisil. Kõik tabelid on auditväljadega (createdAt, createdBy, updatedAt, updatedBy) väljaarvatud ASP.NET raamistikuga kaasas käivad Identity tabelid. Kõiki tegeuvsi logitakse ActionLog tabelisse. Logimiseks on tehtud eraldi tabel ning komponent, mis tabelisse andmeid lisab. Kõikidel toimingutel kuvab rakendus informatiivse flash teavituse (vastavalt õnnestumisele kas rohelist või punast)
 
=== Avalik veeb ===
 
Avalikus veebis on võimalik külastajatel ettevõtete poolt sisestaud aegu broneerida. Külastajatel pole vaja kontot registreerida. Igale ettevõttele oskab rakendus kuvada detaillehte, kus on kuvatud kogu teadaolev info ettevõtte kohta. Ettevõtte detailvaates on kuvatud kõik antud ettevõtte vabad ajad. Broneerimiseks tuleb klikkida sobiva aja peale. Avaneb vorm:
* Kliendi nimi: tekstiväli (kliendi nimi)
* Kliendi email: tekstiväli (kliendi email)
* Sõidukinimi: tekstiväli (mark, mudel)
* Märkmed: tekstiväli (autonumber, probleemikirjeldus)
* Klienditüüp: rippmenüü (era või äriklient)
 
Peale vormi sisestamist küsitakse kasutajalt kinnitust, kas ollakse kindel, et soovitakse broneerida aega. Mittenõustumisel ei broneeri rakendus aega. Nõustumisel valideeritakse andmed ning seotakse vaba ajaga. Seejärel saadab rakendus kinnituskirja kliendile ning teavituskirja ettevõttele. Teavituskiri läheb emailile, mis on sisestatud ettevõtte lisamisajal. Kliendikiri aga vormis sisestatud e-mailile.
 
Aegu, mida on juba broneeritud ei saa uuesti broneerida, need ei ilmu ka vabade aegade hulka.
 
=== Kasutaja registreerimine ===
 
Kasutaja registreerimine on tehtud võimalikult lihtsaks. Et luua endale konto on vaja sisestada saidile ainult kasutajanimi (ei pea olema e-mail) ning parool.Turvalisuse eesmärgiks võiks parool sisaldada vähemalt 6 tähemärki. Kasutajanimi peab olema unikaalne. Vigade korral teavitatakse klienti veateadetega.
 
=== Kasutajaga sisselogimine ===
 
Kui kasutaja on registreeritud, siis on ettevõtte lisamiseks ja haldamiseks (rakenduse põhifunktsionaalsuse kasutamiseks) tuleb sisse logida. Selleks, et sisselogida, tuleb sisestada kasutajanime ning paroolikombinatsioon, millega kasutaja on eelnevalt registreerunud. Kui kontot ei leitud, siis rakendus teavitab sellest klienti.
 
=== Ettevõtte haldamine ===
 
Ettevõtte loomiseks on vaja sisestada järgnevad andmed:
* Nimi - tekstiväli (ettevõtte nimi)
* Email aadress - tekstiväli (email peab valideeruma, siia saadetakse teavituskirju)
* Aadress - tekstiväli (füüsiline aadress, mittekohustuslik)
* Kontakt - tekstiväli (telefoninumber, email vms, mittekohustuslik)
* Kirjeldus - tekstiväli (lühikirjeldus, nt millega ettevõte tegeleb, mittekohustuslik)
* Töötunni hind - numbriväli (informatiivne väli, kohustuslik)
* Töötajate arv - numbriväli (informatiivne väli, kohustuslik)
 
Kui kõik andmed valideeruvad, siis süsteem seob taustal selle ettevõtte kasutajaga. Peale ettevõtte salvestamist saab kasutaja seda igal ajal muuta. Samuti on võimalik lisada endale rohkem, kui 1 ettevõte. Kui ettevõte lõpetab tegevuse on võimalik see kustutada. Kustutamisprotsessi ajal kustutakse rekursiivselt kõik ettevõttega seotud andmed. Niisamuti kliendi broneeringud. Selles etapis aga ei teavitata klienti sellest - see on ettevõtte rida need asjad korda ajada.
 
Ettevõte saab määrata ära ka millist klienditüüpi ollakse valmis teenindama (Eraklient vs äriklient). Selleks on olemas eraldi haldus, kuhu sisestakse rippmenüüst klienditüüp. Teenindatavaid klienditüüpe saab kustutada ning uuesti lisada vajadusel. Muutmisele selles etapis pole tehnilist lahendust. Klienditüübi lisamise nupp on ettevõtte admin vaates.
 
=== Tõstukite haldamine ===
 
Tõstukite lisamise nupp on olemas ettevõtte administreerimisvaates. Tõstuki lisamisel tuleb sisestada:
* Nimi - tekstiväli (tõstuki nimi)
* Kirjeldus - tekstiväli (tõstuki lühikirjeldus)
 
Tõstukeid on võimalik lisada, kustutada ning muuta. Kustutamisprotsessi ajal kustutakse sarnaselt ettevõtte kustutamisele kõik seotud andmed rekursiivselt. Tulevikus on võimalik seda käitumist muuta (kuvada hoiatust või mitte lasta kustutada).
 
=== Vabade aegade haldamine ===
 
Vabu aegu saab lisada tõstuki põhiselt. Nupp vaba aja lisamiseks on iga tõstuki detailvaates. Sisestamisel on vaja määrata algus ning lõppaeg. Andmete sisestamise lihtsustamiseks kuvab rakendus kasutajale kuu ja kellaaja valikut spetsiaalse komponendi abil (DateTimePicker). Kui salvestamine õnnestub, siis süsteem seob selle aja tõstukiga automaatselt. Kustutamisprotsessis kustutakse selle ajaga seotud broneering. Teavitust ei saadeta.
 
=== Broneeringute vaatamine ===
 
Kui ajale on tehtud broneering ilmub see sisestatud aja detailvaatesse. Sealt on võimalik ettevõttel broneeringut vaadata ning kustutada. Kustutamisel ei saadeta kliendile teavitust.
 
== Rakenduse sisu kokkuvõte ==
=== Rakenduses on olemas järgmised võimalused (Must have): ===
=== Rakenduses on olemas järgmised võimalused (Must have): ===
* Kasutaja saab luua/muuta/kustutada autoparandus ettevõtteid
* Kasutaja saab luua/muuta/kustutada autoparandus ettevõtteid
Line 15: Line 71:
* Kasutaja saab luua/kustutada klienditüüpe, keda ta teenindab (Äri vs era)
* Kasutaja saab luua/kustutada klienditüüpe, keda ta teenindab (Äri vs era)
* Kasutaja saab luua/kustutada auto tõstuki broneerimisaegu
* Kasutaja saab luua/kustutada auto tõstuki broneerimisaegu
* Klient saab broneerida tõstukeid
* Klient saab broneerida tõstukite vabu aegu.
 
* Kõiki tegevusi logitakse
* Kõiki tegevusi logitakse
* Kasutaja-süsteem, et piirata kes mida näeb


=== Rakenduses võiksid olla lisavõimalused (Should have): ===
=== Rakenduses võiksid olla lisavõimalused (Should have): ===
* Kasutaja-süsteem, et piirata kes mida näeb
* Ilus UI broneerimiseks
* Ilus UI broneerimiseks


=== Andmebaasiskeem ===
=== Andmebaasiskeem ===
[[File:DB_autoparandaja.png|300px]]
[[File:Sql_image.PNG|300px]]


== Workload ==
== Workload ==
Line 43: Line 98:
* Autotõstukite haldus
* Autotõstukite haldus
* Kood VSO's
* Kood VSO's
=== 29.09.2016 ===
* Täiendatud andmebaasi meta väljadega
* Tõstukite vabade aegade haldus
* Broneerimine olemas
=== 02.10.2016 ===
* Broneerida saab ainult vabu kohti
* Vaadata tehtud broneeringuid
=== 03.10.2016 ===
* Broneeringu tegemisel saadetakse nii ettevõttele, kui kliendile kinnitus emailile (kasutatakse SMTP serverit)
* Seotud andmed on korrektsed ning eraldatud õigete parentite alla
=== 04.10.2016 ===
* Kuupäeva väljad datetimepickeriga, parandatud default kuupäeva laadimist
* Veaparandused
* "Flash" teated tegevuste kohta.
=== 16.10.2016 ===
* Kasutajad (registreerimine, sisselogimine)
Eelneva sooritamiseks leidsin head õpetused: http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-1 ja http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-2
=== 30.10.2016 ===
* Tõlked mudelis (osaliselt)
* Lubatud anonüümne broneerimine
* Ettevõtted seotud kasutajatega
* Lisatud nupud sisselogimiseks/registreerimiseks/välja logimiseks
=== 07.11.2016 (PROTO) ===
* Kustutamine
* Õiguste kontrollimine andmete muutmisel
=== 30.11.2016 ===
* Klienditüübid ENUMites
=== 17.12.2016 ===
* Broneeringu ajavahemikul kuupäeva/aja kontrollid
* Korrastasin projekti lisades tõlked, teavitused
* Muutsin avalehe disaini
=== 16.01.2017 ===
* Turvaparandused
=== 22.01.2016 ===
* Tagasiside kommentaaridest innustatud parandused
* Veel turvaparandusi
=== 25.01.2016 (FINAL) ===
* Cleanup

Latest revision as of 22:26, 26 January 2017

Meeskond ja rollid

  • Mihkel Viilveer - Kokk-kondiiter-keevitaja

Idee

Lihtsamat sorti veebirakendus, kuhu on võimalik registreerida ettevõtteid, mis tegelevad autoremondiga. Tegu on broneerimiskeskkonnaga, kuhu ettevõtte omanikud saavad sisestada vabu aegu ning kliendid (saidi külalised) saavad neid broneerida.

Analüüs

Süsteemne teave

Rakendus on ehitatud C# keeles, kasutatakse ASP.NET raamistikku. Kasutajaliides on HTMLis, liikuvad vidinad Javascript(jQuery library) keeles ning stiilitakse CSSiga (kasutatakse Bootstrap 3 raamistikku). Andmeid hoitakse MSSQLis ning päringukeeleks on LinQ. Andmemudeli loomisel kasutatakse CodeFirst lähenemist, ehk enne luuakse andmemudel domeenimudelite näol ning nendest genereerib EntityFramework MSSQLi andmebaasi. Rakenduses on üritatud kasutada nö "best practice" näiteid nagu Solutioni tükeldamine alamprojektideks, andmete pärimine käib repositooriumite kaudu, kasutusel on vaatemudelid ning DTO'd. Kasutajate tugi on lisatud ASP.NET Identity näol kõige "lihtsamal" viisil. Kõik tabelid on auditväljadega (createdAt, createdBy, updatedAt, updatedBy) väljaarvatud ASP.NET raamistikuga kaasas käivad Identity tabelid. Kõiki tegeuvsi logitakse ActionLog tabelisse. Logimiseks on tehtud eraldi tabel ning komponent, mis tabelisse andmeid lisab. Kõikidel toimingutel kuvab rakendus informatiivse flash teavituse (vastavalt õnnestumisele kas rohelist või punast)

Avalik veeb

Avalikus veebis on võimalik külastajatel ettevõtete poolt sisestaud aegu broneerida. Külastajatel pole vaja kontot registreerida. Igale ettevõttele oskab rakendus kuvada detaillehte, kus on kuvatud kogu teadaolev info ettevõtte kohta. Ettevõtte detailvaates on kuvatud kõik antud ettevõtte vabad ajad. Broneerimiseks tuleb klikkida sobiva aja peale. Avaneb vorm:

  • Kliendi nimi: tekstiväli (kliendi nimi)
  • Kliendi email: tekstiväli (kliendi email)
  • Sõidukinimi: tekstiväli (mark, mudel)
  • Märkmed: tekstiväli (autonumber, probleemikirjeldus)
  • Klienditüüp: rippmenüü (era või äriklient)

Peale vormi sisestamist küsitakse kasutajalt kinnitust, kas ollakse kindel, et soovitakse broneerida aega. Mittenõustumisel ei broneeri rakendus aega. Nõustumisel valideeritakse andmed ning seotakse vaba ajaga. Seejärel saadab rakendus kinnituskirja kliendile ning teavituskirja ettevõttele. Teavituskiri läheb emailile, mis on sisestatud ettevõtte lisamisajal. Kliendikiri aga vormis sisestatud e-mailile.

Aegu, mida on juba broneeritud ei saa uuesti broneerida, need ei ilmu ka vabade aegade hulka.

Kasutaja registreerimine

Kasutaja registreerimine on tehtud võimalikult lihtsaks. Et luua endale konto on vaja sisestada saidile ainult kasutajanimi (ei pea olema e-mail) ning parool.Turvalisuse eesmärgiks võiks parool sisaldada vähemalt 6 tähemärki. Kasutajanimi peab olema unikaalne. Vigade korral teavitatakse klienti veateadetega.

Kasutajaga sisselogimine

Kui kasutaja on registreeritud, siis on ettevõtte lisamiseks ja haldamiseks (rakenduse põhifunktsionaalsuse kasutamiseks) tuleb sisse logida. Selleks, et sisselogida, tuleb sisestada kasutajanime ning paroolikombinatsioon, millega kasutaja on eelnevalt registreerunud. Kui kontot ei leitud, siis rakendus teavitab sellest klienti.

Ettevõtte haldamine

Ettevõtte loomiseks on vaja sisestada järgnevad andmed:

  • Nimi - tekstiväli (ettevõtte nimi)
  • Email aadress - tekstiväli (email peab valideeruma, siia saadetakse teavituskirju)
  • Aadress - tekstiväli (füüsiline aadress, mittekohustuslik)
  • Kontakt - tekstiväli (telefoninumber, email vms, mittekohustuslik)
  • Kirjeldus - tekstiväli (lühikirjeldus, nt millega ettevõte tegeleb, mittekohustuslik)
  • Töötunni hind - numbriväli (informatiivne väli, kohustuslik)
  • Töötajate arv - numbriväli (informatiivne väli, kohustuslik)

Kui kõik andmed valideeruvad, siis süsteem seob taustal selle ettevõtte kasutajaga. Peale ettevõtte salvestamist saab kasutaja seda igal ajal muuta. Samuti on võimalik lisada endale rohkem, kui 1 ettevõte. Kui ettevõte lõpetab tegevuse on võimalik see kustutada. Kustutamisprotsessi ajal kustutakse rekursiivselt kõik ettevõttega seotud andmed. Niisamuti kliendi broneeringud. Selles etapis aga ei teavitata klienti sellest - see on ettevõtte rida need asjad korda ajada.

Ettevõte saab määrata ära ka millist klienditüüpi ollakse valmis teenindama (Eraklient vs äriklient). Selleks on olemas eraldi haldus, kuhu sisestakse rippmenüüst klienditüüp. Teenindatavaid klienditüüpe saab kustutada ning uuesti lisada vajadusel. Muutmisele selles etapis pole tehnilist lahendust. Klienditüübi lisamise nupp on ettevõtte admin vaates.

Tõstukite haldamine

Tõstukite lisamise nupp on olemas ettevõtte administreerimisvaates. Tõstuki lisamisel tuleb sisestada:

  • Nimi - tekstiväli (tõstuki nimi)
  • Kirjeldus - tekstiväli (tõstuki lühikirjeldus)

Tõstukeid on võimalik lisada, kustutada ning muuta. Kustutamisprotsessi ajal kustutakse sarnaselt ettevõtte kustutamisele kõik seotud andmed rekursiivselt. Tulevikus on võimalik seda käitumist muuta (kuvada hoiatust või mitte lasta kustutada).

Vabade aegade haldamine

Vabu aegu saab lisada tõstuki põhiselt. Nupp vaba aja lisamiseks on iga tõstuki detailvaates. Sisestamisel on vaja määrata algus ning lõppaeg. Andmete sisestamise lihtsustamiseks kuvab rakendus kasutajale kuu ja kellaaja valikut spetsiaalse komponendi abil (DateTimePicker). Kui salvestamine õnnestub, siis süsteem seob selle aja tõstukiga automaatselt. Kustutamisprotsessis kustutakse selle ajaga seotud broneering. Teavitust ei saadeta.

Broneeringute vaatamine

Kui ajale on tehtud broneering ilmub see sisestatud aja detailvaatesse. Sealt on võimalik ettevõttel broneeringut vaadata ning kustutada. Kustutamisel ei saadeta kliendile teavitust.

Rakenduse sisu kokkuvõte

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

  • Kasutaja saab luua/muuta/kustutada autoparandus ettevõtteid
  • Kasutaja saab luua/muuta/kustutada uusi tõstukeid
  • Kasutaja saab luua/kustutada klienditüüpe, keda ta teenindab (Äri vs era)
  • Kasutaja saab luua/kustutada auto tõstuki broneerimisaegu
  • Klient saab broneerida tõstukite vabu aegu.
  • Kõiki tegevusi logitakse
  • Kasutaja-süsteem, et piirata kes mida näeb

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

  • Ilus UI broneerimiseks

Andmebaasiskeem

Workload

27.09.2016

  • Projekti kickoff
  • Loodi andmebaasimudel
  • Vaatemudelid
  • Süsteem logib tegevusi
  • Saab luua/muuta/kustutada/vaadata ettevõtteid

28.09.2016

  • Loodi wiki leht
  • Täiendatud andmebaasi meta väljadega
  • Lisatud metaväljad vaatemudelitesse
  • LIsatud andmebaasi skeem
  • KLienditüübi haldus
  • Autotõstukite haldus
  • Kood VSO's

29.09.2016

  • Täiendatud andmebaasi meta väljadega
  • Tõstukite vabade aegade haldus
  • Broneerimine olemas

02.10.2016

  • Broneerida saab ainult vabu kohti
  • Vaadata tehtud broneeringuid

03.10.2016

  • Broneeringu tegemisel saadetakse nii ettevõttele, kui kliendile kinnitus emailile (kasutatakse SMTP serverit)
  • Seotud andmed on korrektsed ning eraldatud õigete parentite alla

04.10.2016

  • Kuupäeva väljad datetimepickeriga, parandatud default kuupäeva laadimist
  • Veaparandused
  • "Flash" teated tegevuste kohta.

16.10.2016

  • Kasutajad (registreerimine, sisselogimine)

Eelneva sooritamiseks leidsin head õpetused: http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-1 ja http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-2

30.10.2016

  • Tõlked mudelis (osaliselt)
  • Lubatud anonüümne broneerimine
  • Ettevõtted seotud kasutajatega
  • Lisatud nupud sisselogimiseks/registreerimiseks/välja logimiseks

07.11.2016 (PROTO)

  • Kustutamine
  • Õiguste kontrollimine andmete muutmisel

30.11.2016

  • Klienditüübid ENUMites

17.12.2016

  • Broneeringu ajavahemikul kuupäeva/aja kontrollid
  • Korrastasin projekti lisades tõlked, teavitused
  • Muutsin avalehe disaini

16.01.2017

  • Turvaparandused

22.01.2016

  • Tagasiside kommentaaridest innustatud parandused
  • Veel turvaparandusi

25.01.2016 (FINAL)

  • Cleanup