DriversApp
Данное приложение предназначеное для водителей компании посредством которой осуществляется отправка товара клиента по нужному адресу, либо возврат на склад компании.
Interface-классы - нужны для описания основных фунций и расширений других классов при необходимости
1 view. Вид/Экран (Kotlin/XML/AppCompatActivity)
-
StarView - чисто загрузочный экран, не несет смысловой нагрузки:
- load() - на протяжении 3-х секунд крутит progressBar, и переходит на LoginViewImp.
-
ScanActivity - сканер штрих-кода.
-
LoginViewImp - экран приветствия с дальнейшими инструкциями и кнопкой для сканирования штрих-кода задания для водителя (путевого листа):
- reactionBarcode() - полученный в ScanActivity штрих-код передаем дальше, для получения данных.
- loginVisibility() - возможность сканирования штрих-кода (скрываем функционал ручного ввода);
- handWriteVisibility() - возможность ручного ввода штрих-кода(скрываем функционал сканирования).
-
ListViewImpl - экран со списком клиентов и двумя кнопками, с возможностью просмотра более подробной информации по клиентам, а также переходом в просмотр полного маршрута, либо в начало движения по маршруту до ближайшего клиента:
- successResult() - view сообщает presenter-у о том, что мы уже прошли экран сканирования, передает ему штрих-код;
- onCreateOptionsMenu() - создаем list-меню с одним пунктом;
- onOptionsItemSelected() - по нажатию на пункт меню пишем логи в файл за весь маршрут и отправляем в компанию;
- openMaps() - открываем выбранные карты;
- onSuccessResult() - при успешном получении данных идем их парсить, иначе спрашиваем еще раз;
- onSuccessParse() - все шикарно, просим распарсить данные, заполнить табличку, потом показываем;
- onSuccessCreateFile() - вызывается через широковещательный приемник, формируем отчет и пишем его в файл и отправляем в компанию.
- createLocationRequest() - формируем запрос геолокации (интервалы запросов по времени и приоритетность самого запроса);
- requestLocationUpdates() - начинаем запрашивать геолокацию;
- removeLocationUpdates() - подчищаем ненужные данные (при первичном вызове у нас пустой объект поэтому создаем пустую строку для заполнения);
- showNumber() - передача номера клиента/менеджера в "Телефон" для совершения вызова;
- onSet...Visible() - отображение элементов на экране по мере получения данных.
-
FullRoute() - webView, в котором открывается OpenRoute Service с полным маршрутом до всех клиентов.
2 presenter. Представление (Kotlin)
-
LoginPresenter - выполняет проверку на разрешения:
- checkPermission() - проверяет наличие разрешений на камеру и геолокации, вызывается при каждом запуске;
- onRequestPermissionsResult() - при отсутствии нужных разрешений делает запрос на подтверждение выводя диалоговые окна.
-
ListPresenter - presenter-распределитель:
- successWrite() - вызываем отправку нужного нам файла;
- createJsonFile() - формирует JSON-object для отправки отчета (раз в 5 минут);
- setPhoneID() - выставляем id-телефона на время всей поездки(нужно для логов);
- transferValues() - вызываем создание и запись файла.
-
DisplayPresenter - отображение всего UI:
- pushNotify() - создание уведомления для возврата в приложение по нажатию;
- showCard() - заполнение и отображение подробных данных о клиенте в диалоговом окне;
- showTable() - заполнение и отображение списка клиентов;
- showMapSelector() - список с радио-кнопками для выбора карт(2-gis, google maps);
- showNumberSelector() - список с радио-кнопками для выбора номера телефона (если в документе указано более одного);
- pushNotify() - отображение уведомления для возврата в приложение;
- getNumber() - получение номеров клиентов в карточке;
- selectDoneClient() - выбираем нужного клиента/удаляем/сбрасываем значения(зависит от флага).
-
RoutePresenter - указываем настройки сайта, получаем нужные нам значения и отображаем полный маршрут до клиентов:
- getValues() - получаем количество точек, стартовую точку и сами точки;
- urlConstruct() - добавляем точки клиентов в ссылку;
- showWebView() - отображаем карты с отправкой на него скрипта.
3 model. Модель (Kotlin)
-
DataBase - класс получения/отправки данных через API:
- requestBarcode() - отправка HTTP-запроса с полученным штрих-кодом на получения JSON-файла;
- requestData() - c помощью корутины отправляем на FTP клиент файл;
- connectFtp() - указываем директорию, подключаемся к ftp-клиенту и отправляем туда наш файл;
- getJSON() - получение JSON-файла(используется только в других классах).
-
JsonParse - класс для десериализации полученного JSON:
- setJson() - из DataBase получаем JSON;
- jsonParser() - десериализуем все данные.
-
JsonFileConstructor - класс для формирования файлов:
- writeInFile() - создание и запись в файл нужных данных;
- createJsonFile() - сериализуем данные в JSON.
4 data. Дата классы (Kotlin)
- DriverReport - дата-класс для формирования отчета (аннотация SerializedName - ключ в JSON)
Other
-
LocationUpdateBroadcastReceiver - широковещательный приемник для получения обновлений геолокации и последующим запросом на формирование файла для отчета.
-
Utils - объект, который запрашивает с определенным интервалом геолокацию.
-
Global.kt - абстрактный класс для view с функциями для правильной работы сканера
-
Все основные строковые значения приложения лежат в файлике res/values/strings.xml. Также они переведены на Британский и Американский английские языки (по факту ничем не отличаются).
-
Папка tasks содержит BugList и NeedList. В первом описаны баги, будут добавляться/удалятся по мере появления/решения. Во втором описаны задачи, которые можно реализовать для полноты картины.