# Проект управления отелями

## Описание

Проект для управления отелями, пользователями, интеграциями с PMS, а также для контроля статистики и уведомлений. Включает веб-админку, REST API для управления данными и Telegram-бота для взаимодействия с пользователями.

## Стек технологий

- Django (для бэкенда)
- Jazzmin (для кастомизации админки)
- MySQL (для хранения данных)
- python-telegram-bot (для Telegram-бота)
- Docker (для контейнеризации базы данных и проекта)

## Установка

### 1. Клонирование репозитория

```bash
git clone <repo url>
cd yourrepository
````

### 2. Установка зависимостей

```bash

python -m venv .venv
source .venv/bin/activate  # Для Linux/MacOS
.venv\Scripts\activate  # Для Windows

pip install -r requirements.txt
```
### 3. Настройка базы данных MySQL
#### 3.1. Запуск контейнера с MySQL

Используем Docker для поднятия MySQL контейнера:

``` bash
docker-compose up -d mysql
```
#### 3.2. Создание базы данных и пользователя

После поднятия контейнера с MySQL, создайте базу данных и пользователя:

### 3.2. Настройка базы данных

После поднятия контейнера с MySQL, создайте таблицы и загрузите дамп:

```
docker exec -it mysql_container bash
mysql -u root -p 
```

Введите пароль от MySQL, а затем загрузите ваш дамп:

```bash
mysql -u root -p your_database_name < /path/to/your_dump.sql
```
### 3.3. Применение миграций

После настройки базы данных выполните миграции для вашего Django-проекта:

```bash 
python manage.py migrate
```

### 4. Настройка админки

Для настройки админки с использованием Dazzling и Jazzmin, добавьте соответствующие настройки в settings.py:

```python
INSTALLED_APPS = [
    'dazzle',
    'jazzmin',
    ...
]

JAZZMIN_SETTINGS = {
    "site_title": "My Admin",
    "site_header": "My Administration",
    "site_brand": "My Brand",
    "footer": {
        "copyright": False,
        "version": False,
    },
}
```

### 5. Запуск проекта

Запустите сервер Django:

```bash 
python manage.py runserver
```

Теперь проект будет доступен по адресу http://127.0.0.1:8000.

##### Структура проекта

    hotel_manager/ — основная директория проекта.
    hotel_manager/settings.py — настройки Django.
    hotel_manager/models.py — модели данных для отелей, пользователей и статистики.
    hotel_manager/views.py — представления для работы с данными.
    hotel_manager/urls.py — маршруты проекта.
    bot/ — директория для бота, использующего python-telegram-bot.

##### Модели

    Отель (Hotel)
        Название отеля
        ID отеля
        PMS (Bnovo, Travel Line, Realty)
        Статус интеграции с PMS

    Пользователь (User)
        Имя пользователя
        Роль (Admin или Hotel User)
        Связь с отелем

    Настройки уведомлений (Notification Settings)
        Включено/выключено уведомление
        Часовой пояс
        Время отправки уведомлений

    Статистика (Statistics)
        Количество несанкционированных заселений за период
        Статус ошибок
        Даты и номера нарушений

##### API

    Администратор:
        Добавить/удалить отель
        Добавить/удалить пользователя
        Проверка статуса интеграции с PMS
        Управление уведомлениями

    Пользователь отеля:
        Получение статистики по заселениям
        Управление уведомлениями

##### Интеграция с Telegram-ботом

    Бот для администраторов позволяет управлять отелями, пользователями, уведомлениями и проверять статус интеграций.
    
    Бот для пользователей отелей позволяет получать статистику по заселениям и управлять уведомлениями.

##### Пример команды для администратора

    Добавить отель
    Список отелей
    Удалить отель
    Проверить статус PMS

##### Пример команды для пользователя отеля

    Показать статистику за вчера
    Управление уведомлениями

#### Проверка интеграции с PMS

Для каждого отеля можно проверять статус интеграции с PMS (Bnovo, Travel Line, Realty) и получать ответ о доступности PMS.