Skip to content
This repository has been archived by the owner on Nov 22, 2018. It is now read-only.

allanwalpy/kaluga_astral

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание

Постановка

Реализовать систему администрирования отеля. Требования к функционалу:

  1. Система должна представлять собой web-приложение, имеющее страницу авторизации и страницу администрирования.

  2. В БД системы должна иметься таблица пользователей, содержащая логины и хэши паролей.

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

  4. Должна иметься операция заселения в номер при которой создается новая запись о посетителе с датой въезда.

  5. Должна иметься операция выезда из номера, при которой номер освобождается и подсчитывается оплата в зависимости от типа номера, количества мест и времени.

Предметная область

В отеле имеется определенное количество номеров.

У каждого номера имеется:

  • вместимость;
  • количество человек, которое может в нем проживать;
  • тип: стандартный, полулюкс и люкс;
  • состояние - занят или не занят;
  • и т.п.

При въезде в номер создается запись в таблице:

  • Посетитель: сущность, которая содержит:
    • ФИО
  • дата въезда,
  • дата выезда.

Для системы авторизации должна иметься таблица пользователей, содержащая:

  • логин,
  • хэш пароля.

Другие сущности могут создаваться на усмотрение.

Техническая часть

Система должна быть реализована с использованием ASP.NET Core.

Для системы авторизации необходимо использовать Identity.

Для работы с БД ORM Entity Framework Core.

Желательно проектировать api с учетом REST.

Клиентская сторона (frontend) на усмотрение.

Дополнительный функционал приветствуется.

Результат

api

для каждой команды есть два вызова api - через post, либо через любой другой подходящий по смыслу метод (включая Post);

/room

add

Post /room/add/

Post /room/

В теле запроса обязателен объект serealized в json:

{
    "Number": 1408,
    "Capacity": 1,
    "Category": "HalfLuxury"
}

Возможные ответы:

- `201`
в теле ответа придёт serealized json объект с указанием id записи;

- `400`
в теле пришедшего запроза нет данных;

- `409`
такая комната уже добавлена;

remove

Post /room/remove/{id:int}

Delete /room/{id:int}

Тела запроса пусто;

Возможные ответы:

- `200`
удаление прошло успешно;

- `404`
нет комнаты с таким `id`;

get

Post /room/get/{id:int}

Get /room/{id:int}

Тела запроса пусто;

Возможные ответы:

- `200`
удаление прошло успешно;

- `404`
нет комнаты с таким `id`;

update

Post /room/update/{id:int}

Patch /room/{id:int}

В теле запроса обязателен объект serealized в json, без указания ключевого поля id; Старая запись будет заменена новой;

{
    "Number": 13,
    "Capacity": 2,
    "Category": "Standart"
}

Возможные ответы:

- `200`
объект обновлён;

- `400`
в теле пришедшего запроза нет данных;

get all

Post /room/all/

Get /room/

Тела запроса желательно оставить пустым;

Возможные ответы:

- `200`
в теле запроса содержится List/Array объектов serealized в Json;

/customer

add

Post /customer/add/

Post /customer/

В теле запроса обязателен объект serealized в json:

{
    "FirstName": "allan",
    "SecondName": "walpy"
}

Возможные ответы:

- `201`
в теле ответа придёт serealized json объект с указанием id записи;

- `400`
в теле пришедшего запроза нет данных;

- `409`
такой клиент уже добавлен;

remove

Post /customer/remove/{id:int}

Delete /customer/{id:int}

Тела запроса пусто;

Возможные ответы:

- `200`
удаление прошло успешно;

- `404`
нет комнаты с таким `id`;

get

Post /room/get/{id:int}

Get /room/{id:int}

Тела запроса пусто;

Возможные ответы:

- `200`
удаление прошло успешно;

- `404`
нет комнаты с таким `id`;

update

Post /customer/update/{id:int}

Patch /customer/{id:int}

В теле запроса обязателен объект serealized в json, без указания ключевого поля id; Старая запись будет заменена новой;

{
    "FirstName": "Allan",
    "SecondName": "Walpy",
    "ThirdName": "Egorovich"
}

Возможные ответы:

- `200`
объект обновлён;

- `400`
в теле пришедшего запроза нет данных;

get all

Post /customer/all/

Get /customer/

Тела запроса желательно оставить пустым;

Возможные ответы:

- `200`
в теле запроса содержится List/Array объектов serealized в Json;

hostel/

check in

Post hostel/checkin/{roomId:int}/{customerId:int}

Post hostel/{roomId:int}/{customerId:int}

Тело запроса желательно пустое;

Возможные ответы:

- `201`
человек заселен в номер начиная с текущего момента;

- `409`
комната занята или человек уже поселён в другую комнату;

check out

Post hostel/checkout/{id:int}

Delete hostel/{id:int}

Тело запроса желательно пустое;

В ответе в теле запроса будет json данные с одним полем Price - стоимости данного проживания;

Возможные ответы:

- `200`
человек выселен из номера начиная с текущего момента;

- `404`
записи об этом заселении в номер нет;

get

Post hostel/get/{id:int}

Get hostel/{id:int}

Тело запроса желательно пустое;

Возможные ответы:

- `200`
данные выданы в теле ответа в json виде;

- `404`
записи об этом заселении в номер нет;

get all

Post hostel/get/

Get hostel/

Тела запроса желательно оставить пустым;

Возможные ответы:

- `200`
в теле запроса содержится List/Array объектов serealized в Json;

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published