poszukiwałem dłuższy czas rozwiązania (gotowego) dla rezerwacji biletów, głównie na spektakle. Na każdy spektakl może być kilka typów biletów w różnych cenach. Nie odnalazłem rozwiązania spełniającego takie wymagania. Stąd dzisiaj pomyślałem nad własną implementacją.
Kwestia logiki i bazy danych.
Każde wydarzenie ma tytuł, opis i obrazek. Do każdego wydarzenia mogą być różne bilety. Tą część realizują tabele "Wydarzenie", "Wydarzenie_typ_biletu" oraz "Typ_biletu".
Tabela "Kalendarz" ma za zadanie przechowywać listę wydarzeń.
Problem mam z dwiema ostatnimi tabelami "Rezerwacja" oraz "Klient". Rezerwacja biletów ma być dostępna bez rejestracji. Wybór biletów i ich ilości, następne potwierdzenie zakupu utworzy w tabeli "Rezerwacja" stosowną ilość wpisów. Następnie klient będzie musiał podać dane, które zostaną zapisane w tabeli "Klient".
Domyślnie wpis w tabeli "Rezerwacja" otrzyma status 'w trakcie', do momentu potwierdzenia płatności (przez np. DotPay).
W tabeli "Rezerwacja" jest też pole "timeout". Zadaniem pola jest przechowanie daty ważności rejestracji, np 20 minut od momentu rozpoczęcia procesu do momentu potwierdzenia płatności. Celem tego jest uniknięcie sytuacji sprzedania nadwymiarowych biletów. Czyli jeśli rezerwacja jest "w trakcie", timeout jeszcze nie upłynął to od ilości dostępnych biletów odejmuję ilość biletów z rezerwacji. W przypadku kiedy rezerwacja jest "w trakcie", timeout już upłynął to nie uwzględniam tej rezerwacji w obliczaniu ilości dostępnych biletów.
Co myślcie o takim rozwiązaniu? Jakieś zastrzeżenia, pomysły?
