= Имплементација на кориснички сценарија = === Клиент ||= ID =||= Use case =|| || 1 || Прави резервација || || 2 || Прави нарачка || || 3 || Прави преглед на резервации || || 4 || Прави преглед на нарачки || || 5 || Откажува резервација || || 6 || Откажува нарачка || === Администратор ||= ID =||= Use case =|| || 1 || Прави резервација || || 2 || Прави нарачка || || 3 || Прави преглед на резервации || || 4 || Прави преглед на нарачки || || 5 || Откажува резервација || || 6 || Откажува нарачка || || 7 || Блокира термин || || 8 || Менува статус на нарачка || == Корисничко сценарио "Клиент прави резервација" [[Image("scenario1.png",80%,align=center)]] \\ \\ Корисникот оди на страната за резервации и најпрво избира датум и тип на резервација. Системот ги покажува слободните термини за соодвената услуга и корисникот избира од понудените \\ \\ [[Image("reservation1.PNG",80%,align=center)]] \\ \\ [[Image("reservation2.PNG",80%,align=center)]] \\ \\ Најпрво се повикува методот 'getFreeReservations' од контролерот за резервации, при што тој прима параметри за датум и тип на услуга. Системот преку методот 'getFreeReservations' кој се наоѓа во сервисниот слој(service layer) ги наоѓа слободните термини за соодвениот датум и тип на услуга и му ги враќа назад на клиентот преку моделот. Откако клиентот ќе избере соодветен термин и ја направи резервацијата, се повикува методот 'make-reservation' од контролерот за резервации, при што тука се примаат сите параметри за резервацијата. Системот преку методот 'makeReservation' кој се наоѓа во сервисниот слој(service layer), прави објект од 'Reservation Entity' и го зачувува во базата. Во самиот објект, ги имаме сите информации за резервацијата(датум,тип,време,од кој корисник е направена резервацијата итн.) \\ \\ == Корисничко сценарио "Клиент прави нарачка" [[Image("scenario3-1.png",80%,align=center)]] \\ \\ [[Image("scenario3-2.png",80%,align=center)]] \\ \\ Корисникот оди на страната за нарачки, ги избира посакуваните продукти и во ShoppingCart ја избира количината на продуктите и прави нарачка \\ \\ [[Image("order1.PNG",80%,align=center)]] \\ \\ [[Image("order2.PNG",80%,align=center)]] \\ \\ [[Image("order3.PNG",80%,align=center)]] \\ \\ [[Image("order4.PNG",80%,align=center)]] \\ \\ [[Image("order5.PNG",80%,align=center)]] \\ \\ За секој избран продукт од страна на корисникот се повикува методот 'add-to-cart' од контролерот за кошничката , при што се испраќа ИД на продуктот што го избрал корисникот и тој се зачувува во сесијата. При нарачка се повикува методот 'order' од контролерот за нарачки, при што прво се валидираат квантитетите за секој продукт и потоа се повикува методот 'saveOrder' од сервисниот слој, при што се креира објект од тип 'Order Entity' и се зачувува во базата на податоци. Во самиот објект имаме информации за нарачката(од кој е направена, кога е направена, вкупната цена на нарачката, статусот на нарачката итн.). Исто така, во базата се зачувуваат и деталите на нарачките, кој производ е нарачан и квантитетот за тој производ.На крајот, се бришат сите информации за нарачката од сесијата на самиот корисник \\ \\ == Корисничко сценарио "Администратор прави преглед на резервации" [[Image("scenario5.png",80%,align=center)]] \\ \\ Администраторот прави преглед на резервации за соодветен тип на услуга и датум \\ \\ [[Image("admin-reservation-1.PNG",80%,align=center)]] \\ \\ [[Image("admin-reservation-2.PNG",80%,align=center)]] \\ \\ [[Image("admin-reservation-3.PNG",80%,align=center)]] \\ \\ Администраторот најпрво избира соодветен датум и тип на услуга и потоа се повикува методот 'admin-get-scheduled-reservations' од контролерот за резервации. Од тука, се повикува методот 'getScheduledReservations' од сервисниот слој, при што се прави пребарување во базата на податоци според датум и тип на услуга. Резултатот се сместува во моделот и се враќа назад на администраторот. Администраторот исто така може да откаже резервација преку копчето 'Cancel Reservation' при што се повикува методот 'admin-cancel-reservation' од контролерот за резервации, при што се испраќа ИД на резервацијата,датумот и типот на резервацијата. Потоа се повикува 'cancelReservationAdmin' методот од сервисниот слој, при што резервацијата се брише од базата на податоци.