# Аннотация

RestaurantApp - это настольная информационная система для автоматизации работы ресторана. Программа разработана на C# Windows Forms и предназначена для учета клиентов, сотрудников, блюд, заказов, бронирований столов, платежей и формирования отчетов.

Система подключается к базе данных PostgreSQL, использует разграничение доступа по ролям пользователей и предоставляет графический интерфейс для просмотра, добавления, редактирования и удаления данных.

# Введение

Основные возможности программы:

- авторизация пользователя по логину;
- разграничение доступа для ролей `admin`, `manager`, `waiter`;
- просмотр и поиск клиентов ресторана;
- добавление, редактирование и удаление записей о клиентах;
- управление справочником блюд и фильтрация блюд по категории и доступности;
- управление сотрудниками ресторана;
- создание и ведение заказов;
- добавление блюд в заказ и расчет суммы заказа;
- проведение оплаты заказа;
- закрытие заказов;
- создание, редактирование и удаление бронирований;
- просмотр отчетов по выручке, продажам блюд, работе официантов, способам оплаты и остаткам ингредиентов.

# Назначение и условия применения

Программа предназначена для использования сотрудниками ресторана при ведении оперативного учета. Система помогает хранить сведения о клиентах, блюдах, сотрудниках, заказах и бронированиях, а также получать аналитические отчеты по работе заведения.

Для работы программы необходимы:

- операционная система Windows;
- установленный .NET Framework 4.7.2 или новее;
- доступ к серверу PostgreSQL;
- наличие базы данных с нужной структурой таблиц, представлений, функций и триггеров;
- сетевое подключение к серверу базы данных;
- учетная запись пользователя в таблице `app_user`.

Приложение подключается к удаленной базе данных PostgreSQL через библиотеку `Npgsql`. Параметры подключения заданы в модуле `Database.cs`.

# Установка

1. [x] Убедиться, что на компьютере установлена Windows.
2. [x] Установить .NET Framework 4.7.2 или более новую версию.
3. [x] Проверить наличие доступа к серверу PostgreSQL и базе данных приложения.
4. [x] Собрать проект в Visual Studio в конфигурации `Release`.
5. [x] Открыть файл `RestaurantAppSetup.iss` в Inno Setup.
6. [x] Скомпилировать установщик командой:

```powershell
ISCC.exe RestaurantAppSetup.iss
```

7. [x] Запустить созданный файл `installer-output\RestaurantAppSetup.exe`.
8. [x] Следовать шагам мастера установки.
9. [x] После завершения установки запустить программу через ярлык в меню "Пуск" или на рабочем столе.
10. [ ] Войти в систему под учетной записью пользователя.

# Описание операций

## Авторизация

После запуска программы открывается форма входа. Пользователь вводит логин. Если логин найден в базе данных, система определяет ФИО пользователя и его роль, после чего открывает главное окно приложения.

## Работа с клиентами

Раздел "Клиенты" позволяет просматривать список клиентов, искать записи, добавлять новых клиентов, редактировать существующие данные и удалять выбранные записи. В таблице отображаются имя, фамилия, телефон, email, дата рождения, бонусные баллы и дата регистрации.

## Работа с блюдами

Раздел "Блюда" предназначен для ведения меню ресторана. Пользователь может искать блюда, фильтровать их по категории и доступности, добавлять новые позиции, редактировать сведения о блюде и удалять выбранные записи.

## Работа с сотрудниками

Раздел "Сотрудники" доступен пользователям с ролями `admin` и `manager`. В нем можно просматривать список сотрудников, фильтровать записи по должности и активности, добавлять сотрудников, редактировать их данные и отмечать сотрудника как уволенного.

## Работа с заказами

Раздел "Заказы" используется для создания и сопровождения заказов. Пользователь может создать новый заказ, выбрать заказ из списка, добавить в него блюда, изменить или удалить позиции заказа, провести оплату и закрыть заказ.

## Работа с бронированиями

Раздел "Бронирования" позволяет вести учет резервирования столов. Пользователь может искать бронирования, фильтровать их по статусу, добавлять новые записи, редактировать существующие и удалять отмененные или ошибочные бронирования.

## Работа с отчетами

Раздел "Отчеты" доступен пользователям с ролями `admin` и `manager`. В нем отображаются отчеты по дневной выручке, продажам блюд, статистике официантов, способам оплаты и ингредиентам с низким остатком.

## Выход из программы

Для завершения работы используется пункт меню "Выход" или стандартная кнопка закрытия окна. После выхода приложение завершает текущий сеанс пользователя.

# Термины и сокращения

| Термин | Описание |
| - | - |
| ИС | Информационная система, предназначенная для хранения и обработки данных |
| БД | База данных, в которой хранятся сведения ресторана |
| PostgreSQL | Система управления базами данных, используемая приложением |
| Windows Forms | Технология создания настольных приложений Windows на языке C# |
| Npgsql | Библиотека для подключения C#-приложения к PostgreSQL |
| Клиент | Посетитель ресторана, сведения о котором хранятся в системе |
| Сотрудник | Работник ресторана, например официант или менеджер |
| Заказ | Набор блюд, оформленный для клиента или стола |
| Бронирование | Запись о резервировании стола на определенное время |
| Платеж | Операция оплаты заказа |
| Роль | Уровень доступа пользователя к функциям системы |
| Инсталлятор | Программа установки, созданная с помощью Inno Setup |
