Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Disign_table_reservation_system_Figma.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ERD_table_reservation_system.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UML_table_reservation_system.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions hw_8/.idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions hw_8/hw_8.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
5 changes: 5 additions & 0 deletions hw_8/src/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
13 changes: 13 additions & 0 deletions hw_8/src/Model/Client.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package Model;


/**
* Client - сущность с данными о клиенте
*/
public class Client {
public String nameClient;
public String surnameClient;
public Integer phoneClient;
public String emailClient;
public Boolean advertisingConsent;
}
41 changes: 41 additions & 0 deletions hw_8/src/Model/Repository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package Model;

import Presenter.iModel;
import View.Area;

import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;

/**
* Repository - класс, содержащий методы для работы с базой данных; реализует интерфейс iModel
* getTables(Date date, Integer seats, Time time, Boolean smoking, Area area) - запрашивает данные о столиках из источника данных
* getStatusOccupationTable(Integer number, Date date, Time time) - проверяет, свободен ли
* * данный столик в указанное время
* getDataTable(Integer numberTable) - возвращает данные о конкретном столике
* updateDB(Integer numberTable, Date date, Time time, Client client) - вносит данные о бронировании в БД
*/
public class Repository implements iModel {
@Override
public ArrayList<Table> getTables(Date date, Integer seats, Time time, Boolean smoking, Area area) throws Exception {
ArrayList<Table> listItem = new ArrayList<Table>();
if (listItem.isEmpty()) {
throw new Exception("There are no free tables matching the filters");
}
return listItem;
}

@Override
public Boolean getStatusOccupationTable(Integer number, Date date, Time time) {
return true;
}

@Override
public Table getDataTable(Integer numberTable) {
return new Table();
}

public Boolean updateDB(Integer numberTable, Date date, Time time, Client client){
return true;
}
}
12 changes: 12 additions & 0 deletions hw_8/src/Model/Table.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package Model;


/**
* Table - сущность с данными о каждом столике
*/
public class Table {
public Integer numberTable;
public Integer seats;
public Boolean smoking;
public String area;
}
69 changes: 69 additions & 0 deletions hw_8/src/Presenter/Presenter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package Presenter;

import Model.Client;
import Model.Repository;
import Model.Table;
import View.Area;
import View.View;

import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;

/**
* Presenter - класс, содержащий методы, отвечающие за логику приложения
* getData(Date date, Integer seats, Time time, Boolean smoking, Area area) возвращает список столиков,
* * удовлетворяющих заданным условиям
* isBusyTable(Integer numberTable, Date date, Time time) - запрашивает данные о стлике и
* * возвращает True, если столик занят, и False, если столик свободен
* getDetailsTable(Integer numberTable) - возвращает данные о конкретном столике
* setReserve(Integer numberTable, Date date, Time time) - отвечает за бронирование столика - проверяет,
* * свободен ли выбранный столик, запрашивает данные клиентаи подтверждение брони
* getDataClient() - запрашивает данные о клиенте
* getConfirmReserve() - запрашивает подтверждение брони
*/
public class Presenter {
public ArrayList<Table> getData(Date date, Integer seats, Time time, Boolean smoking, Area area) throws Exception {
iModel imodel = new Repository();
return ((Repository) imodel).getTables(date, seats, time, smoking, area);
}

public Boolean isBusyTable(Integer numberTable, Date date, Time time){
iModel imodel = new Repository();
return ((Repository) imodel).getStatusOccupationTable(numberTable, date, time);
}

public Table getDetailsTable(Integer numberTable){
iModel imodel = new Repository();
return ((Repository) imodel).getDataTable(numberTable);
}

public Boolean setReserve(Integer numberTable, Date date, Time time) throws Exception{
Presenter presenterItem = new Presenter();
Boolean realStatus = presenterItem.isBusyTable(numberTable, date, time);

if (realStatus) {
throw new Exception("The table is busy. Choose another.");
}

Client clientItem = presenterItem.getDataClient();
Boolean confirmItem = presenterItem.getConfirmReserve();

if (!confirmItem) {
throw new Exception("You canceled the reservation");
}

iModel imodel = new Repository();
return ((Repository) imodel).updateDB(numberTable, date, time, clientItem);
}

public Client getDataClient(){
iView iview = new View();
return iview.inputDataClient();
}

public Boolean getConfirmReserve(){
iView iview = new View();
return iview.confirmReserve();
}
}
25 changes: 25 additions & 0 deletions hw_8/src/Presenter/iModel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package Presenter;

import Model.Client;
import Model.Table;
import View.Area;

import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;


/**
* iModel - интерфейс, позволяющий избежать зависимости более абстрактного класс Presenter
* * от менее абстрактного класса Repository
*/
public interface iModel {

ArrayList<Table> getTables(Date date, Integer seats, Time time, Boolean smoking, Area area) throws Exception;

public Boolean getStatusOccupationTable(Integer number, Date date, Time time);

public Table getDataTable(Integer numberTable);

public Boolean updateDB(Integer numberTable, Date date, Time time, Client client);
}
12 changes: 12 additions & 0 deletions hw_8/src/Presenter/iView.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package Presenter;

import Model.Client;

/**
* iView - интерфейс, позволяющий избежать зависимости более абстрактного класс Presenter
* * от менее абстрактного класса View
*/
public interface iView {
public Client inputDataClient();
public Boolean confirmReserve();
}
15 changes: 15 additions & 0 deletions hw_8/src/View/Area.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package View;

/**
* Area - отдельные зоны, на которые можно поделить ресторан. Каждой зоне характерны свои особенности.
* * Клиент при выборе столика может на них ориентироваться
*/
public enum Area {
barArea,
windowArea,
centralArea,
secludedArea,
danceArea,
stageArea,
streetArea
}
51 changes: 51 additions & 0 deletions hw_8/src/View/View.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package View;

import Model.Client;
import Presenter.Presenter;
import Presenter.iView;
import java.sql.Time;
import java.util.Date;

/**
* View - класс, содержащий методы для работы свнешней частью приложения, для взаимодействия с клиентом
* selectTables(Date date, Time time, Integer seats, Boolean smoking, Area area) - инициализирует процесс
* * подбора столиков, удовлетворяющих заданным критериям
* isTableFree(Integer numberTable, Date date, Time time) - предоставляет клиету информацию о занятости столика
* infOfTable(Integer numberTable) - предоставляет клиету подробную информацию о выбранном столике
* reserveTable(Integer numberTable,Date date, Time time) - инициализирует процесс бронирования столика
* inputDataClient() - запрашивает личные данные для бронирования у клиента
* confirmReserve() - запрашивает подтверждение о бронировании у клиента
*/
public class View implements iView {

public void selectTables(Date date, Time time, Integer seats, Boolean smoking, Area area) throws Exception {
Presenter presenterItem = new Presenter();
presenterItem.getData(date, seats, time, smoking, area);
}

public Boolean isTableFree(Integer numberTable, Date date, Time time) {
Presenter presenterItem = new Presenter();
return !(presenterItem.isBusyTable(numberTable, date, time));
}

public void infOfTable(Integer numberTable){
Presenter presenterItem = new Presenter();
presenterItem.getDetailsTable(numberTable);
}

public void reserveTable(Integer numberTable,Date date, Time time) throws Exception {
Presenter presenterItem = new Presenter();
Boolean reserveItem = presenterItem.setReserve(numberTable,date, time);

System.out.println("Table reservation was successful");
}

public Client inputDataClient(){
return new Client();
}

public Boolean confirmReserve(){
System.out.println("Confirmation received");
return true;
}
}