# Проект "Каршеринг" ## Техническое задание >Сразу уточню: задание скомпилировано из нескольких демо-экзаменов, могут быть нестыковки. Необходимо разработать web приложение. >Дизайн только в виде скринов, фигмы нет. Описание протокола API в формате OpenAPI (Swagger) доступно по ссылке: https://swagger.kolei.ru/?url=https://carsharing.kolei.ru/swagger/api.yml 1. Создайте проект. Настройте иконку приложения согласно макету. 1. Реализуйте экран `SignUp Screen` согласно макету: ![](../img/mas1_03.png) >**Обратите внимание!** В оригинальном задании был вход по e-mail, но в моем АПИ нужно по телефону * При нажатии на кнопку "Зарегистрироваться" необходимо проверять поля для ввода на пустоту, а также телефон на корректность (требования к телефону описаны в документации к API). При некорректном заполнении необходимо отобразить ошибку с помощью диалогового окна. Так же необходимо проверять равенство пароля и его повтора. * При корректном заполнении формы необходимо отправлять запрос регистрации на сервер. При получении ошибки от сервера ее необходимо отобразить с помощью диалогового окна. При успешной регистрации нужно автоматически осуществить авторизацию и перейти на `Main Screen`. * При нажатии на кнопку "У меня уже есть аккаунт" необходимо осуществлять переход на `SignIn Screen`. На скрине этой кнопки нет - добавьте. * при нажатии на ссылку "Оферта" необходимо открыть web-страничку с текстом оферты. Этой кнопки тоже нет, тоже добавьте сами. 1. Реализуйте экран `SignIn Screen` согласно макету: ![](../img/mas1_02.png) * При нажатии на кнопку "Войти" необходимо проверять поля для ввода на пустоту, а также телефон на корректность (требования к телефону описаны в документации к API). При некорректном заполнении необходимо отобразить ошибку с помощью диалогового окна. При корректном заполнении формы необходимо отправить на сервер соответствующий запрос. * При нажатии на кнопку "Регистрация" необходимо осуществлять переход на `SignUp Screen`. * При успешной авторизации необходимо осуществлять переход на экран `Main Screen` или `Profile Screen`, в зависимости от состояния пользователя (загружены ли права и другие необходимые документы). При получении ошибки от сервера необходимо отобразить её с помощью диалогового окна. 1. Реализуйте экран `Profile Screen` согласно макету: * На экране необходимо отобразить аватарку пользователя. Рамка вокруг аватарки должна быть разного цвета в зависимости от состояния профиля: - *желтый*: не загружены фотографии водительских прав или паспорта - *красный*: есть штрафы от ГИБДД или претензии от владельца каршеринга - *зелёный*: всё OK (активный профиль) * При нажатии на аватарку выбрать файл и отправить его на сервер. * При нажатии на кнопки "Загрузить фото водительских прав" или "Загрузить файл паспорта" выбрать файл и выбранный файл отправить на сервер. 1. Реализуйте экран `Main Screen` согласно макету: ![](../img/mas1_04.png) * На экране необходимо отобразить карту с текущей позицией и маркерами автомобилей (список доступных автомобилей получить с сервера). Как работать с картой расписано в [лекции](./web_19.md) * при клике на маркер автомобиля показывать (во всплывающем окне) краткую информацию об автомобиле: марка автомобиля, фото, кнопки "забронировать" и "маршрут". Кнопка "забронировать" должна быть только у активного пользователя ![](../img/mas2_01.png) * При нажатии на иконку профиля необходимо переходить на `Profile Screen`.