Gestió Hotelera.

Primer, heu de tenir en compte el següent:
L’hotel té diversos tipus d’habitacions: individuals, dobles, dobles amb vistes… De cada tipus d’habitació, s’ha de poder definir els extres i serveis que té (un camp de text), el número d’ocupants que té l’habitació i els metres quadrats, així com diverses imatges.
De cada tipus d’habitacions, tindrem un número x d’habitacions. És a dir: l’hotel té 15 habitacions individual estàndard i 22 dobles estàndard. “Individuals estàndard” i “dobles estàndard” serien tipus d’habitacions.
A l’hora de definir els preus, s’han de definir per cada tipus d’habitació. Així doncs, totes les habitacions d’un mateix tipus valdran el mateix.
Tindrem tres tipus d’usuari: l’usuari administrador, que tindrà tots els privilegis i podrà crear usuaris i l’usuari gestor, que ha de poder crear habitacions, definir preus i l’usuari client que podrà fer reserves i consultar-les.
Hi ha períodes que l’hotel tanca, sigui per vacances, o per reformes. S’ha de poder establir un (o diversos) períodes en què l’hotel estarà tancat.
Des de la gestió, també necessiten un apartat on veure les dades dels clients que han reservat. Volen que, indicant un dia o un període de dies, apareguin tots els clients amb l’habitació reservada, el dia d’entrada i el dia de sortida, i el preu total de la reserva.
A més a més de la gestió de preus, també heu de fer un motor de reserves per l’hotel.
Se li ha de poder indicar una data d’entrada, una data de sortida i un número d’ocupants que s’hi pot anar, i que podrà ser d’1 a 4 ocupants
Quan faci la cerca, el sistema ha de consultar la base de dades, i veure quines habitacions hi ha disponibles per les dates indicades (i que no estiguin tancades, és clar).
El sistema mostrarà les diferents opcions d’habitacions disponibles en funció dels ocupants que permet.
El client ha de poder veure informació de cada tipus d’habitació disponible: els serveis, els metres quadrats i les imatges. S’hauria de veure com un popup, que en tancar es torni a la finestra original.
Un cop el client selecciona l’habitació, ha d’aparèixer un formulari on el client ha d’entrar les seves dades personals: nom, cognoms, telèfon, email i un número de targeta de crèdit. (Les reserves es paguen sempre a l’hotel, però es demana el número de targeta com a garantia)
Un cop el client emplena les dades, ha d’aparèixer un resum de la reserva: “un bono”, que es pugui imprimir o descarregar com a pdf, perquè l’ha de portar el dia de la reserva
A tenir en compte:
Internament, quan es reserva una habitació, s’ha de restar a les habitacions disponibles. És a dir, si un hotel té 15 habitacions individuals estàndard, i un client en reserva 1, ara l’hotel passa a tenir només 14 habitacions disponibles per les dates de la reserva. En el moment que un dia no té habitacions disponibles, no es pot oferir aquella habitació en fer la cerca.
Si es fa una cerca per un període de 15 dies, i hi ha un sol dia on un tipus d’habitació no té disponibilitat (o està tancat), el sistema no ha d’oferir aquesta habitació
Servidor de proves
Servidor en una màquina virtual amb una xarxa NAT i una xarxa pont.
Servidor web Apache, utilitzant virtualhost per poder allotjar més d’un domini. El servidor ha de tenir el PHP configurat amb els mòduls necessaris..
Configurar un servidor FTP per permetre transmetre fitxers al servidor i des del servidor. (S’accepten propostes de millora, sempre que permetin fer chroot).
Control de versions
Utilitzarem Git com a eina de control de versions.
Crearem un repositori compartit a Github per col·laborar.
Utilitzarem la metodologia Git-flow per col·laborar.
Publicarem totes les branques “feature” al repositori compartit.
Punts de reforç-ampliació:
Que els preus puguin variar en funció de la temporada. Així doncs, s’ha de poder definir un preu diferent per diferents períodes de temps.
Que s’enviï la reserva per email a l’adreça indicada al formulari.
Que es puguin reservar diverses habitacions a la mateixa reserva.
Que es pugui cancel·lar la reserva amb un enllaç
Que es pugui cancel·lar la reserva a la gestió (per si truca el client)
De cada habitació, es pot definir una ocupació mínima i una màxima. Per exemple, a una habitació doble se li pot definir una ocupació mínima perquè es pugui reservar amb un sol ocupant, o de 3 afegint un llit extra. Si es fa això, també es podria definir preus diferents en funció del número d’ocupants
Que es permeti editar el contingut de la HOME per un usuari (canviar els Sliders, canviar els texts amb un editor WYSIWYG)
Que es faci el pagament de la reserva amb un tpv
Definir un preu mínim, per evitar possibles errors i un màxim de nits per una reserva. (en general un apartat on poder definir paràmetres generals de l’hotel)
Que cada domini tingui un certificat SSL i la connexió HTTPS sigui la predeterminada.
Parts del projecte
Control de versions
Crear un repositori a Github i compartir-lo amb l’equip docent i la resta de components del grup.
Crear un repositori local i vincular-lo amb el remot.
Servidor web
Crear una màquina virtual amb un servidor web
Executar l’aplicació en el servidor
Aplicació
Gestió Hotelera
Definir zona d’accés restringit (Gestió d’usuaris).
Gestió d’habitacions, gestió de preus, gestió de clients, gestió de reserves.
Establir rols d’accés als usuaris: Administrador, Editor i client.
Motor de reserves.
Formulari de reserva: Data inicial i final, nombre d’ocupants, nombre d’habitacions.
Pàgina principal: Darreres cerques o carrusel d’habitacions o ofertes.
Es mostraran els resultats de la cerca: Descripció, imatges, característiques de l’habitació.
Enviament de confirmació a través de correu electrònic.
Mostrar un resum de la reserva efectuada.
Gestió del nombre d’habitacions disponibles.
Documentació
Planificació
Requisits
Documentació del desplegament i joc de proves.
Diagrama de classes
Diagrama ER
Millores
Documentar el codi amb format Docblock
Etapes (setmanes)
Etapa 1 (w41)
Hauríeu de tenir:
Anàlisi de requisits
Disseny del Model ER
Disseny del diagrama de classes
Planificació del projecte
Esquemes “wireframes” de la pàgina principal, dels resultats de les cerques i del detall d’una habitació.
Entorn de desenvolupament (Realització de proves)
Servidor de proves configurat per poder allotjar més d’un domini.
Etapa 2 (w42)
Hauríeu de tenir:
Maquetació bàsica de l’eina de gestió hotelera (a partir dels wireframes).
Es valora l’ús de tècniques Flexbox i/o CSS Grid.
Es valora l’ús de @media-queries
Es valora l’ús de Frameworks CSS (Bootstrap)
Gestió d’usuaris.
Gestió d’habitacions.
Automatitzar l’alta de nous dominis al servidor de proves
Etapa 3 (w43)
Hauríeu de tenir:
Codi actualitzat amb la llibreria jQuery / jQuery-UI
Framework CSS vàlid i opcional: Bootstrap
Gestió de preus.
Inici del motor de reserves
El codi backend organitzat amb el patró MVC.
Etapa 4 (w44)
Hauríeu de tenir:
Motor de reserves operatiu.
El codi backend reorganitzat amb un patró MVC bàsic amb Middleware per controlar l’accés d’usuaris a accions restringides.
Adaptació inicial a un disseny RWD (vista de mòbil).
Efectes JS incorporats (Slider al HOME, imatges amb LightBox en la fitxa de detall d’una habitació).
Etapa 5 (w45)
Hauríeu de tenir:
Gestió de reserves.
Generació d’un PDF com a confirmació de la reserva.
Disseny responsive funcional per a dispositius mòbils.
Definir rols. Els usuaris normals podran accedir a la seva reserva i el seu perfil, els gestors podran gestionar les reserves, habitacions i els administradors podran fer tot el que fan els gestors i gestionar usuaris.
Etapa 6 (w46)
Hauríeu de tenir:
Implementació d’algun punt de reforç / ampliació
Proves de funcionament
Generar automàticament la documentació del codi
Implementar les correccions
Mètode d’entrega
Control periòdic del projecte a l’aula.
Entrega de la documentació en format PDF.
Entrega del codi compartint el repositori de Github.
Prova final de funcionament / Demostració