• No results found

Ukázka detailu události pro běžného uživatele

4.7 Způsoby rezervace

4.7.1 Klasická rezervace

Jedním ze způsobů rezervace místa na událost je uhrazení zálohy a poté celkové ceny události z konta uživatele. Po kliknutí na tlačítko Rezervovat v detailu události, které se zobrazí, pokud má uživatel možnost rezervaci provést, se spustí skript pod adresou /rezervovat. Nejprve se zkontrolují parametry předané metodou GET.

Z databáze se zjistí data o události. Proběhne kontrola, zda zbývá ještě volné místo a jestli již událost nezačala a na rezervaci není pozdě.

Do proměnné zaplatit se vloží záloha na tuto událost. Pokud bude uživatel chodit v době začátku události na kurz, použije se záloha se slevou. Stejná sleva platí i pro lektory a administrátory. V případě, že klient už zálohu zaplatil a přeje si uhradit doplatek, proměnná zaplatit se nastaví na rozdíl celkové ceny a zaplacené zálohy.

Skript dále zjistí, zda uživatel nevlastní aktuálně platnou a nevyčerpanou permanentku na daný typ události. V kladném případě přiřadí do proměnné zaplatit číslo nula a zaznamená identifikační číslo vlastněné permanentky. Události typu Volná hodina a jedna událost typu Kurz jsou pro lektory a administrátory zdarma.

Pokud má zákazník na kontě dostatek peněz, strhne se mu vypočítaná částka v proměnné zaplatit z konta. Tato akce je chráněna proti souběhu kontrolou nezměněné výše konta při strhávání částky. Do tabulky rezervace se vloží záznam o rezervaci s detaily o způsobu, jakým byla provedena. Pokud již uživatel měl uhrazenou zálohu a platí pouze doplatek, nebo pokud si přeje uplatnit předrezervaci (bezplatná rezervace platná pouze pět kalendářních dní) a uhradit zálohu, záznam v tabulce rezervace se přepíše podle požadavků. Tento úkon je chráněn proti souběhu stejným způsobem.

Do tabulky dochazka se vloží záznamy s identifikačním číslem uživatele a číslem události, které bude přepisovat lektor při vyplňování docházky. V poslední řadě se zákazníkovi odešle e-mailová zpráva o provedení rezervace a do tabulky log se zapíše informace o této akci.

4.7.2 Rezervace lektorem

Rezervaci jakéhokoli uživatele na jakoukoli událost může provést i lektor.

Rezervace probíhá obdobně jako ta klasická, hradí se ale vždy celková cena události z konta uživatele, pouhé zaplacení zálohy není takto možné. Nakonec se klientovi odešle e-mailová zpráva o provedení rezervace lektorem a do tabulky log se tato skutečnost zapíše také.

Existuje zde také možnost uhrazení doplatku lektorem pro případ, kdy uživatel zaplatil pouze zálohu. Lektor může provést uhrazení z klientova konta za něj.

4.7.3 Předrezervace

Pod adresou /predrezervovat se nachází stránka, díky které je možné provést předrezervaci na událost typu kurz. Tato předrezervace platí pouze pět kalendářních dní a je bezplatná. Umožňuje novým klientům zabrat si místo na kurzu do té doby, než si dobijí konto a uhradí zálohu.

Skript nejprve zkontroluje parametry předané metodou GET. Zjistí data o kurzu z databáze a zkontroluje, zda je ještě volné místo, zda již není na předrezervaci pozdě, zda již uživatel na tento kurz nemá místo rezervované a také jestli uživatel nemá na tento kurz předrezervaci zakázanou. Zákaz předrezervace vzniká po uskutečnění jedné předrezervace na daný kurz a ukládá se do tabulky zakaz_predrezervace.

Předchází se tak nekonečnému blokování místa jedním uživatelem bez uhrazení zálohy na kurz.

V případě, že všechny kontroly proběhnou v pořádku, předrezervace se zapíše do databáze s platností pět dní od aktuálního data a času. Proběhne již zmíněný zápis zákazu předrezervace. Nakonec se uživateli odešle e-mailová zpráva o uskutečnění předrezervace a informace o úkonu se uloží do tabulky log.

4.7.4 Využití bonusu

Další metodou, jakou je možné provést rezervaci, je využití některého z bonusů.

Bonusy definuje administrátor podle vlastního uvážení. Klienti sbírají bonusové body za docházení na události tanečního studia a tyto body mohou poté využít k rezervacím se slevou nebo zakoupením permanentek se slevou.

Při kliknutí na příslušné tlačítko Využít bonus v detailu události se otevře colorbox s provedením příslušné akce a výpisem výsledku. Jako první se zkontrolují parametry předané metodou GET, dále existence volného místa na události, jestli již na rezervaci není pozdě a jestli již uživatel na tuto událost není přihlášen. Částka, která se má zaplatit, se ukládá do proměnné zaplatit a vypočítává z celkové ceny (může být ještě snížena o slevu pro klienty, kteří v době začátku události budou chodit do kurzu) odečtením slevy definované u bonusu.

Pokud má zákazník na účtě dostatek peněz i bonusových bodů, příslušné počty se mu z konta strhnou a rezervace se vloží do databáze spolu s informací, jakým způsobem byla provedena. Do tabulky dochazka se zapíší jednotlivé události pro vyplňování docházky lektorem. Jako poslední se odešle klientovi e-mail o provedení rezervace.

4.7.5 Náhrada zmeškané kurzové lekce

Posledním způsobem, jak si lze rezervovat místo na událost, je bezplatná náhrada zameškané kurzové lekce na některé z lekcí typu Volná hodina. Po kliknutí na příslušné tlačítko v detailu události se provede skript, který nejprve zkontroluje proměnné předané metodou GET. Pokud je žádaná událost typu Volná hodina a není již plně obsazena, systém zjistí, zda má uživatel nárok na bezplatnou náhradu, tedy zda v posledních třech měsících zmeškal nějakou kurzovou lekci. Po vyhodnocení dále proběhne kontrola, jestli událost již nezačala a jestli na ni uživatel již nemá rezervaci.

Pokud všechny kontroly proběhnou v pořádku, zmeškaná lekce se v databázi označí jako nahrazená a do tabulky rezervace a dochazka se vloží záznamy o rezervaci.

Systém odešle klientovi e-mailovou zprávu o vykonání rezervace a tato skutečnost se také zapíše do databázové tabulky log.

4.8 Zrušení rezervace

Zrušení rezervace může být provedeno přímo uživatelem v systému kliknutím na tlačítko Zrušit rezervaci v detailu události. Pokud jsou parametry předané metodou GET validní, uživatel má na událost skutečně rezervaci a na zrušení rezervace ještě není pozdě, proběhne i kontrola, zda není zrušení rezervace na tuto událost zakázáno.

Tato situace by nastala v případě, kdy administrátor vypíše slevu na kurz pro nalákání posledních klientů, aby se lekce naplnily. Rezervaci na kurz také nelze zrušit, pokud tento kurz byl využit ke slevě pro kurzisty na jinou událost či na permanentku.

Pokud skript projde všemi kontrolami s pozitivním výsledkem, rezervace se smaže z databáze a klientovi se vrátí na konto peníze, popřípadě bonusové body použité k rezervaci. Pokud byla rezervace provedena pomocí permanentky nebo jako náhrada zmeškané kurzové lekce, tyto akce se také invertují. Uživatel nakonec získá e-mailovou zprávu o zrušení rezervace. Obdobným způsobem probíhá i zrušení předrezervace.

Druhou metodou, jak zrušit zákazníkovu rezervaci, je zrušení lektorem. Když lektor klikne na příslušné tlačítko v detailu události, systém zobrazí dotaz, zda si lektor přeje klientovi vrátit peníze, popřípadě bonusové body nebo jiný způsob úhrady rezervace. Po udání odpovědi lektora proběhne kontrola parametrů v poli GET a kontrola existence dané rezervace. Poté dojde k ověření, zda nebyl kurz použit ke slevě pro kurzisty. V případě, že kontroly proběhly v pořádku, rezervace se smaže z databáze spolu s docházkou na události a podle požadavku se úhrada rezervace invertuje nebo ne. Klient, jemuž byla rezervace zrušena, obdrží na svou e-mailovou adresu zprávu o provedení této akce.

4.9 Sledování volných míst na události

Pokud by si klient přál provést rezervaci na událost, ale ta je již plně obsazena, systém mu nabízí možnost sledovat, zda se nějaké místo neuvolní. Při uvolnění místa systém odešle zákazníkovi sms a e-mailovou zprávu. Sledování zákazník zahajuje kliknutím na příslušné tlačítko v detailu události.

V takovém případě skript nejprve zkontroluje validitu parametrů předaných metodou GET a pokračuje dále v případě, že daná událost ještě nezačala. Poté zjistí, zda přihlášený uživatel již volná místa na tuto událost nesleduje a zda je událost skutečně plně obsazena. Pokud všechny kontroly proběhnou v pořádku, do databázové tabulky sledovani se vloží záznam s identifikačním číslem události a uživatele spolu s údajem, do kdy má sledování probíhat.

Sledování lze zrušit opět kliknutím na tlačítko Zrušit sledování v detailu události.

Po klasické kontrole parametrů v poli GET se z databáze odstraní příslušný záznam o sledování.

4.10 Registrace, přihlášení a odhlášení

Veškeré stránky, které přímo souvisí s uživatelským účtem, se nacházejí v souboru prihlaseni.py.

4.10.1 Registrace

Metoda obsah třídy Registrace je namapována na adresu /registrace. Jedná se o AJAX formulář, který klient vyplňuje svými kontaktními informacemi.

Do příslušných polí zadává své jméno, příjmení, e-mailovou adresu, telefonní číslo (nepovinné pole) a zvolené heslo pro přihlašování do systému zadávané pro kontrolu dvakrát. Po kliknutí na tlačítko Registrovat se data odešlou serveru metodou GET.

Skript na serveru zkontroluje přítomnost těchto dat. V případě, že některé z povinných polí nebylo vyplněno, zobrazí se znovu registrační formulář s hláškou o absenci požadované informace. Pokud byla zadána všechna data, zavolá se metoda registrovat třídy Autentif. Skript této metody zkontroluje validitu předaných proměnných. E-mailová adresa a telefonní číslo se například porovnává s příslušnými regulárními výrazy, omezuje se také délka jména, příjmení a hesla. Obě zadaná hesla se musí shodovat. Pokud je některé z těchto pravidel porušeno, metoda vyvolá výjimku a systém opět zobrazí registrační formulář a informuje uživatele o tom, které pole není správně vyplněno. V opačném případě se v databázi vytvoří nový uživatelský účet s danými parametry.

Related documents