consta7 / DriverApp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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. В первом описаны баги, будут добавляться/удалятся по мере появления/решения. Во втором описаны задачи, которые можно реализовать для полноты картины.

About


Languages

Language:Kotlin 100.0%