Tiimi: Max Arponen, Mirka Heikkilä, Elina Hilkko, Jussi Junnila, Emmi Sulander (Ryhmä Github Newbies)
TicketGuru on lipunmyyntiin tarkoitettu sovellus. Käyttäjä lisää sovellukseen tapahtumat tietoineen ja lippuhintoineen. Hän voi myydä lippuja ja tarkastella myyntihistoriaa. Yksittäisessä myyntitapahtumassa voi olla myyty useampi lippu erilaisilla hinnoilla (opiskelijahinta, eläkeläishinta) useampaan tapahtumaan. Jokaisella lipulla on yksilöity koodi, joka on helppo tarkastaa tarvittaessa.
Ensimmäiseen lopulliseen versioon ei tule verkkokaupan ominaisuuksia, eli lippuja haluavat asiakkaat eivät itse pysty ostamaan lippuja sovelluksella. Sovellus on siis lipputoimiston käyttöön ja myyntitapahtumia hallinnoi joku sovelluksen käyttäjistä (myyjä). Sovellusta ollaan aikeissa jatkokehittää ja tulevaisuudessa lisätä verkkokauppa.
TicketGurulla käyttääjä voi muun muassa:
- Lisää Tapahtuma (Nimi, ajankohta, paikka, kuvaus, kaupunki, myytävien lippujen määrä)
- Lisätä lipputyyppejä (Aikuinen, lapsi, eläkäinen jne.)
- Myy lippuja (Mihin tapahtumiin, montako lippua)
- Tulostaa myydyt liput
- Tutkia myyntiraportteja (Yhteenveto myynnistä tapahtumaan X. Halutessa selaa yksittäisiä myyntitapahtumia)
TicketGuru on toteutettu Javan Spring Bootilla REST-tyyppisesti. Julkaistun version tietokantajärjestelmä on PostgreSQL. Käyttöliittymä on suunniteltu ensisijaisesti työpöytäpäätteen selaimella käytettäväksi. TicketGuru toimii myös mobiilisti, mutta käyttökokemus ei ole tällöin optimoitu. Käyttöliittymä on toteutettu JavaScriptin, HTML:n ja CSS:n avulla.
-
Myyjä - Myy ja tulostaa lippuja asiakkaalle
-
Ylläpitäjä - Vastaa järjestelmän tapahtumien ja lippujen päivittämisestä ja ajaa haluttuja raportteja
-
Myyjänä haluan hakea tapahtumia eri hakusanoilla, jotta voin myydä asiakkaalle haluamansa lipun.
-
Myyjänä haluan valita eri lipputyyppejä, jotta saan myytyä asiakkaalle oikean lipun.
-
Myyjänä haluan valita useamman lipun kerrallaan, jotta voin myydä asiakkaalle monta lippua kerralla.
-
Myyjänä haluan saada liput tulostettua, jotta voin toimittaa ne asiakkaalle.
-
Myyjänä haluan nähdä monta lippua kyseiseen tapahtumaan on myyty ja myymättä, jotta voin helposti tulostaa jäljellä olevat liput ovella myytäviksi.
-
Ylläpitäjänä haluan listauksen tapahtuman myyntiraportista, jotta saan raportin myydyistä lipuista eri tarkoituksia varten.
-
Ylläpitäjänä haluan listauksen kaikista myyntitapahtumista, jotta niitä voi hallinnoida.
-
Ylläpitäjänä haluan lisätä uusia tapahtumia, jotta niiden lippuja voisi myydä.
-
Ylläpitäjänä haluan muokata tapahtumien tietoja, jotta ne pysyisivät ajantasalla.
-
Ylläpitäjänä haluan muokata lippujen tietoja, jotta voin muokata hintoja tai lipputyyppejä.
Rautalankamalli kuvaa tarkemmin eri näkymien yhteyksiä ja toimintoja.
Työntekijä-taulu sisältää tiedon tyontekijän etu- ja sukunimestä, roolista, käyttäjänimestä ja salasanasta. Työntekijällä voi olla myös useita myyntitapahtumia tehtynä.
Kenttä Tyyppi Kuvaus id long PK Työntekijän id rooli long FK Viittaus Roolit-tauluun. Määrittelee työntekijän oikeudet käyttää järjestelmää firstname varchar(50) Työntekijän etunimi lastname varchar(50) Työntekijän sukunimi username varchar(15) Käyttäjänimi password varchar(70) Salasana
Rooli-taulu sisältää työntekijöiden käyttöoikeudet järjestelmässä. Työntekijällä voi olla vain yksi rooli. Tietty rooli voi kuulua monelle eri työntekijälle.
Kenttä Tyyppi Kuvaus id long PK Roolin tunnus description varchar(100) Lyhyt kuvaus roolin oikeuksista järjestelmässä. Esim. Admin/User
Tapahtuma-taulu sisältää tapahtuman tiedot. Tapahtumaan voidaan olla lisätty useita lipputyyppejä, mutta lipputyyppi kuuluu aina vain yhdelle tapahtumalle. Tapahtumaan voidaan myydä useita lippuja, mutta yksi lippu kuuluu aina vain yhteen tapahtumaan. Tapahtumaan liittyy yksi raportti ja raportti voi kuulua aina vain yhdelle tapahtumalle.
Kenttä Tyyppi Kuvaus id long PK Tapahtuman id description varchar(100) Tapahtuman nimi/kuvaus location varchar(50) Tapahtumapaikka esim. Finlandiatalo city varchar(50) Kaupunki, jossa tapahtumapaikka sijaitsee ticketcount int Myytävien lippujen maksimimäärä datetime datetime Tapahtuman ajankohta. PVM sekä KLO. duration int tapahtuman arvioitu kesto minuutteina esim. 90 min
Lippu-taulu sisältää lipun tiedot. Lippu voi kuulua vain yhteen tapahtumaan (event). Lippu voi kuulua vain yhteen myyntitapahtumaan (sale).
Kenttä Tyyppi Kuvaus id long PK Roolin tunnus event long FK Viittaus tapahtuma -tauluun. Mihin tapahtumaan lippu on myyty. sale long FK Viittaus sale -tauluun. Mihin myyntitapahtumaan lippu liittyy. tickettype long FK Viittaus tickettype -tauluun. Minkä tyyppinen lippu tämä on. (Child/Adult/...) ticketprice double Lipun hinta. Voidaan ottaa tickettypen mukaan tai syöttää manuaalisesti. valid boolean Onko lippu voimassa. Esim. onko käytetty ticketcode varchar(20) Yksilöllinen koodi, jonka avulla lippu voidaan merkitä käytetyksi useddatetime datetime Ajankohta milloin lippu on käytetty. PVM sekä KLO.
Myyntitapahtuma-taulu sisältää tiedot myyntitapahtumasta ja siihen liittyvistä lipuista. Myyntitapahtuma kertoo, kuka työntekijä liput on myynyt ja koska. Myyntitapahtumaan voi liittyä useampia lippuja, mutta ainoastaan yksi työntekijä.
Kenttä Tyyppi Kuvaus id long PK Myyntitapahtuman id employee long FK Myynnin suorittanut työntekijä, viittaus tyontekija -tauluun date datetime Myyntitapahtuman ajakohta
Lipputyyppi-taulu sisältää, minkälaisia lipputyyppejä on mahdollista saada tapahtumaan, esimerkiksi lapsi, aikuinen, eläkeläinen, opiskelija. Tapahtumalla voi olla useita lipputyyppejä.
Kenttä Tyyppi Kuvaus id long PK Lipputyypin id description varchar(100) Kuvaus lipputyypistä, esim. opiskelija price double Paljonko kyseinen lippu maksaa, esim. 8.00 event long FK Tapahtuma johon tämä lipputyyppi on liitetty, viittaus tapahtuma-tauluun
Endpointit, joihin kaikilla käyttäjillä on pääsy:
Login : /login/
Endpointit, joihin pääsy edellyttää user- tai admin-käyttöoikeudet:
- Näytä kaikki tapahtumat :
GET /events
- Näytä yksi tapahtuma (ID) :
GET /events/{id}
- Näytä kaikki lipputyypit :
GET /tickettypes
- Näytä yksi lipputyyppi (ID) :
GET /tickettypes/{id}
- Näytä kaikki liput :
GET /tickets
- Näytä yksi lippu (ID) :
GET /tickets/{id}
- Näytä yksi lippu (ticketcode) :
GET /tickets?code={ticketcode}
- Näytä kaikki myyntitapahtumat :
GET /sales
- Näytä yksi myyntitapahtuma (ID) :
GET /sales/{id}
- Luo myyntitapahtuma :
POST /sales
- Muuta lippu käytetyksi :
PATCH /tickets?code={ticketcode}
Endpointit, joihin pääsy edellyttää admin-käyttöoikeudet:
- Luo tapahtuma :
POST /events
- Päivitä tapahtuma :
PUT /events/{id}
- Poista tapahtuma :
DELETE /events/{id}
- Luo lipputyyppi :
POST /tickettypes
- Luo lippu myyntitapahtumaan :
POST /sales/{id}/tickets
- Näytä kaikki työntekijät :
GET /employees
- Luo työntekijä :
POST /employees
- Päivitä työntekijä :
PUT /employees/{id}
- Poista työntekijä :
DELETE /employees/{id}
Sovelluksesta on testattu tärkeimpiä ominaisuuksia, joiden vähintään tulee toimia, jotta järjestelmä toimii halutulla tavalla.
Olennaista on esimerkiksi pystyä luomaan tapahtuma ja myymään siihen lippuja. Näihin liittyviä toimintoja on testattu onnistuneesti sekä automaatiotesteillä että manuaalisilla testeillä.
Testiraportti kuvailee tarkemmin testitapausten toteutusta ja toimintaa.
- Projektin voi kloonata GitHubista (https://github.com/koodiameles/ticketguru). Projektin voi avata Visual Studio Codella tai Eclipsellä.
- Kehitysympäristössä tietokantana voi käyttää h2-kantaa.
- Pysyvämpää tietokantaa varten koneelle asennetaan PostgreSQL-tietokanta.
- Tietokannan voi alustaa CommandLineRunnerissa olevan testidatan avulla on kyseessä sitten h2 tai PostgreSQL. Alustuksen voi tehdä myös käyttäen tietokantaskeemaa.
- Käyttäjätunnukset ja salasanat ovat hallinnoitavissa application-heroku.properties- ja application-local.properties-tiedostoissa. Application.properties-tiedostossa voi määrittää, käytetäänkö kehitysympäristössä h2- vai PostgreSQL-kantaa.
- Postmanilla pyynnöt tulee autentikoida.
- Projekti on julkaistu Herokussa. Ryhmän jäsenillä on dynoon käyttöoikeus omilla tunnuksillaan.
- Sovelluksen Herokussa toimivan tietokannan osoite, käyttäjätunnus ja salasana löytyvät tietokannan Settings-välilehdeltä kohdasta "Database Credentials". Näitä tarvitaan, jotta saadaan luotua tietokantayhteys.
- Tietokannan tiedot tulee löytyä joko tiedostosta application-heroku.properties tai projektin dynon Settings-välilehdeltä kohdasta "Config Vars", jolloin niihin viitataan em. tiedostossa muodossa ${DATABASE_URL}.
- Herokuun on julkaistu GitHubista main-haara. Se ei kuitenkaan päivity automaattisesti johtuen siitä, että Herokun GitHub-intergaatio on tällä hetkellä (5/2022) pois käytöstä.
Sovellus on julkaistu osoitteessa https://ticketguru22.herokuapp.com/. Kirjautumiseen tarvittavat tunnukset ovat ryhmän jäsenten tiedossa. Julkaisu sisältää sekä palvelinpuolen järjestelmän että käyttöliittymän, jolla sitä voi käyttää.