Skip to content

koodiameles/ticketguru

Repository files navigation

TicketGuru

Tiimi: Max Arponen, Mirka Heikkilä, Elina Hilkko, Jussi Junnila, Emmi Sulander (Ryhmä Github Newbies)

Johdanto

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.

Järjestelmän määrittely

Käyttäjäroolit

  • Myyjä - Myy ja tulostaa lippuja asiakkaalle

  • Ylläpitäjä - Vastaa järjestelmän tapahtumien ja lippujen päivittämisestä ja ajaa haluttuja raportteja

Käyttäjätarinat

  1. Myyjänä haluan hakea tapahtumia eri hakusanoilla, jotta voin myydä asiakkaalle haluamansa lipun.

  2. Myyjänä haluan valita eri lipputyyppejä, jotta saan myytyä asiakkaalle oikean lipun.

  3. Myyjänä haluan valita useamman lipun kerrallaan, jotta voin myydä asiakkaalle monta lippua kerralla.

  4. Myyjänä haluan saada liput tulostettua, jotta voin toimittaa ne asiakkaalle.

  5. 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.

  6. Ylläpitäjänä haluan listauksen tapahtuman myyntiraportista, jotta saan raportin myydyistä lipuista eri tarkoituksia varten.

  7. Ylläpitäjänä haluan listauksen kaikista myyntitapahtumista, jotta niitä voi hallinnoida.

  8. Ylläpitäjänä haluan lisätä uusia tapahtumia, jotta niiden lippuja voisi myydä.

  9. Ylläpitäjänä haluan muokata tapahtumien tietoja, jotta ne pysyisivät ajantasalla.

  10. Ylläpitäjänä haluan muokata lippujen tietoja, jotta voin muokata hintoja tai lipputyyppejä.

Käyttöliittymä

UML-kaavio

UML-kaavio

Rautalankamalli kuvaa tarkemmin eri näkymien yhteyksiä ja toimintoja.

Tietokanta

Tietokantakaavio

UML malli

Employee – Työntekijä

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

Role – Rooli

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

Event – Tapahtuma

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

Ticket – Lippu

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.

Sale – Myyntitapahtuma

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

Tickettype – Lipputyyppi

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

REST API

Endpoints, ei autentikointia (No authentication)

Endpointit, joihin kaikilla käyttäjillä on pääsy:

Login : /login/

Endpoints, vaatii autentikoinnin (Authentication required)

Endpointit, joihin pääsy edellyttää user- tai admin-käyttöoikeudet:

Endpointit, joihin pääsy edellyttää admin-käyttöoikeudet:

Testaus

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.

Asennustiedot

Kehitysympäristön käyttöönotto

  • 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.

Tuotantoympäristön käyttöönotto

  • 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ä.

Käynnistys- ja käyttöohje

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ää.

About

Lipunmyyntisovellus TicketGuru

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5