Autoparandaja
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. Esmases versioonis ei pruugi olla isegi nõudeid paroolile, kuigi 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