Tietoja sovelluksesta

Tietokantasovellusten toteuttaminen -kurssi, kevät 2019

Tilausten käsittely -sovellus

Designed by Sanna Ketomäki

Sovelluksen toteuttaminen

 

Yleistä

Controllerien metodit sekä näkymät on pääosin toteutettu hyödyntämällä VisualStudion automaattisesti luomaa koodia, jota on tarpeen mukaan muokattu.

Itse tehtyä luokkaa PostinumeroPostitmip.cs on hyödynnetty, kun on luotu lisäys- ja muokkausnäkymiin alaspudotusvalikoita, joissa samassa kentässä näytetään sekä postinumero että postitoimipaikka. Täten on vältytty sitä, että kantaluokkaa ei tarvitse muokata ja siten mahdollinen mallin päivittäminen tietokannasta ei ylikirjoita kantaluokkiin käsin tehtyjä muutoksia.

Harjoituksen vuoksi toteutettiin myös sisäänkirjautumista varten oma luokka OmaLogin.cs. Tämän toteuttaminen vaati jo enemmän muutoksia, kuin postinumero-luokan kohdalla:

Sovelluksessa on toteutettu sisäänkirjautumistoiminto niihiin sivuihin, joissa käsitellään tietokannan tietoja. Etusivun ja muut yleiset sivut näkee ilman kirjautumistakin.

Joitakin muokkaus-näkymien kenttiä on määritelty readonly-tyyppisiksi, jotta käyttäjä ei vahingossa päivitä tietoja, joita ko. kohdassa ei ole tarkoitus muokata.

Joitakin sakareotsikoita on kovakoodattu kuvaavampaan muotoon kuin mikä tietokannasta tuotu ko. taulun sarakaotsikko on. Samoin päivämäärien esitysmuotoa on muokattu niin, että näkyy vain päivämäärä. Tämä on toteutettu substringin avulla, mikä ei varmaankaan ole kaikkein korrektein tapa toteuttaa asiaa.

Jokaisen listaus-näkymän tietoja voidaan lajitella nousevaan tai laskevaan järjestykseen klikkaamalla halutun sarakkeen otsikkoa.

Alla on kerrottu, mitä muutoksia on tehty VisualStudion automaattisesti luomiin koodeihin eri toiminnoissa, sekä itse muokatut toiminnallisuudet.

 

Asiakkaat
Listaus (Index)

Listaus-näkymään on liitetty mukaan Postitoimipaikat -taulusta postitoimipaikka luettavuuden selkeyttämiseksi. Lista on oletuksellisesti järjestetty asiakkaiden nimen mukaan aakkosjärjestykseen.

Lisäys ja Muokkaus

Alaspudotusvalikossa on postinumero ja postitoimipaikka liitetty samaan kenttään. Liitoksessa on hyödynnetty itse luotua luokkaa: PostinumeroPostitmip.cs

Lisäys- ja muokkausnäkymässä on nappi, josta pääsee tarvittaessa lisäämään tietokannasta puuttuvan postinumeron ja postitoimipaikan. Lisäyksen jälkeen paluu takaisin Asiakas-listaan.

 

Tuotteet
Listaus (IndexLista) ja korttinäkymä (Index)

Tuote-näkymiä on toteutettu kaksi erilaista: korttinäkymä ja listausnäkymä. Korttinäkymässä on hyödynnetty www.bootswatch.com -sivustolta löytyvää mallikoodia.

Kumpaankin näkymään on tehty nappi, jota klikkaamalla pääsee siirtymään toiseen listausnäkymään.

Tietokannan Tuotteet-tauluun on lisätty uusi sarake Kuvaus (nvarchar(2000)), johon voidaan tallentaa lyhyt kuvaus tuotteesta. Ko. kenttä näkyy sekä lista- että korttinäkymässä.

Lisäys, Muokkaus, Tiedot ja Poisto

Kummastakin tuotenäkymästä pääsee kaikki CRUD-toimintoihin. Kaikista CRUD-toiminnoista pääsee linkin kautta palaamaan haluamaansa tuotelistaus-näyttöön: listaan tai korttinäkymään.

Info

Korttinäkymässä on Info-linkki, joka avaa oman html-sivun, johon voidaan kerätä haluttaessa esim. tarkentavia tuotetietoja, toimitusehtoja tms. Tällä hetkellä Info-linkki on jokaiselle tuotteelle sama, mutta jos sinne halutaan tallentaa tuotekohtaista tietoa, näkymän rakennetta pitää muuttaa. Info-sivulla on nappi, jota klikkaamalla tämä erillinen selain-välilehti sulkeutuu.

Poisto

Poisto-näkymässä näytetään vain tuotteen nimi ja hinta. Muiden tietojen näyttö poistotilanteessa lienee turhaa.

 

Tilaukset
Listaus (Index)

Listaus-näkymään on liitetty mukaan Asiakkaat-taulusta asiakkaan nimi sekä Postitoimipaikat -taulusta postitoimipaikka luettavuuden selkeyttämiseksi. Controllerissa on taululiitoksest Tilaukset - Asiakkaat - Postitoimipaikat. Liitos on toteutettu Include-metodilla.

Listaus on oletusarvoisesti Controllerissa lajiteltu asiakkaan nimen mukaisesti nousevaan järjestykseen.

Listaus-näkymään lisätty linkki: Lisää tuoterivi tilaukselle.
Linkki johtaa Tuoterivin lisäykseen. Nyt näkymään tulee TilausID alaspudotusvalikossa ja käyttäjä voi erehdyksessä valita väärän tilauksen. Haluaisin toiminnon toimivan niin, että TuoteID seuraa mukana niin, ettei sitä enää voi muuttaa.

Lisäys

Uutta tilausta luotaessa voidaan asiakas ja postinumero+postitoimipaikka valita alaspudotusvalikoista. Asiakkaat on lajiteltu nimen mukaan aakkosjärjestykseen ja postinumerot nousevaan järjestykseen.

Mikäli asiakasta tai postitoimipaikkaa ei ole, Tilauksen lisäys-näkymässä on napit, joilla pääsee Asiakkaan tai Postitoimipaikan lisäys-toimintoihin. Paluu Tilaukset-listaan.

Tilaus- ja toimituspäivämäärä voidaan valita kalenterinäkymästä.

Muokkaus

AsiakasID on muokkaus-ikkunassa piilotettuna kenttänä. Tämä kuitenkin tarvitaan, jotta tiedot tallentuvat oikein kantaan. Jos AsiakasID:tä ei ole, asiakkaan tiedot häviävät tilaukselta ja kantaan tulee NULL-arvo asiakasID-kenttään.

Asiakkaan nimi sekä tilauspäivämäärä ovat readonly-tyyppisiä kenttiä, jotta käyttäjä ei muuta näitä tietoja. Muut kentät vapaasti muokattavissa.

Jos toimituspäivän kentän syöttötapaa muuttaa siten, että toimituspäivän voi valita kalenterista, tietokantaan aiemmin tallennettu tieto toimituspäivästä häviää tästä näkymästä, kun muokkaus-toiminto käynnistetään.

Muokkausnäkymässä on nappi, josta pääsee tarvittaessa lisäämään tietokannasta puuttuvan postinumeron ja postitoimipaikan. Lisäyksen jälkeen paluu takaisin Tilaukset-listaan.

Muokkaus ja Poisto

Lisätty TilausID näkymiin helpottamaan käyttäjän varmistusta, että on muokkaamassa tai poistamassa "oikeaa" tilausta.

 

Tilausrivit
Listaus (Index)

Listaus-näkymään on liitetty mukaan Tilaukset-taulusta toimitusosoite, Asiakkaat-taulusta asiakkaan nimi sekä Postitoimipaikat -taulusta postitoimipaikka luettavuuden selkeyttämiseksi. Controllerissa on taululiitoksest Asiakkaat - Tilaukset - Postitoimipaikat - Tilausrivit. Taululiitokset on tehty join-lauseilla. Tiedot on oletuksellisesti järjestetty tilausID:n mukaiseen järjestykseen

Muokkaus

TilausId on muutettu readonly-kentäksi. Lisätty näkymään asiakkaan nimi, joka on myös readonly-kenttänä.

Tiedot

Lisätty kenttiä näkymään: asiakkaan nimi ja toimitusosoitteen postitoimipaikka

Poisto

Lisätty näkymään asiakkaan nimi, poistettu näkymästä toimitusosoite

 

Postitoimipaikat
Muokkaus

Postinumero-kenttä on määritelty readonly-tyyppiseksi, jotta käyttäjä ei pääse sitä muokkaamaan.

Tiedot

Tiedoissa näkyy sekä postinumero että postitoimipaikka. Vakiona näkyisi vain postitoimipaikka, koska postinumero on taulun PrimaryKey.

 

Jatkokehityskohteet

 

Merkittävimmät opit tältä kurssilta

 

Yleistä pohdintaa lopuksi

Olen nyt tehnyt kolmella kurssilla melko lyhyen ajan sisällä samoja toteutuksia vähän erilaisina versioina. Tuntuu, että nämä perusasiat (listaus, lisäys, muokkaus ja poisto) rupeavat olemaan kohtuullisen hyvin hallinnassa. Seuraavaksi pitäisi suunnistaa vaativimpiin toteutuksiin, joita ovat mm.

Toisaalta samaan aikaan, kun olen tyytyväinen saavutukseeni, huomaan, etten kuitenkaan ymmärrä vielä riittävästi koodauksen saloista, jotta osaisin toteuttaa itsenäisesti sen, minkä mieleni loihtii eteeni. Tehtävänpalautustilaisuudessa opettajan suullisesti antamat vinkit tilauksen tuoterivien listaamisesta tai uuden postitoimipaikan lisäämisestä yhdellä metodilla (kolmen sijaan) saivat aivoni rattaat ruksuttamaan ja ideat pulppuamaan. Jumi, johon olin jämähtänyt ajatuksissani, rupesi aukeamaan. Toivon, että lähiaikoina kesäkurssien lomassa on aikaa jatkaa myös tämän sovelluksen jatkokehitystä.