Version estable despues de campaña
This commit is contained in:
parent
093779996d
commit
c7093c679f
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,2 @@
|
||||||
|
#Mon Sep 17 12:10:45 CEST 2018
|
||||||
|
gradle.version=4.4
|
Binary file not shown.
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="WizardSettings">
|
|
||||||
<option name="children">
|
|
||||||
<map>
|
|
||||||
<entry key="imageWizard">
|
|
||||||
<value>
|
|
||||||
<PersistentState />
|
|
||||||
</value>
|
|
||||||
</entry>
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
Binary file not shown.
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: annotations-13.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/5991ca87ef1fb5544943d9abc5a9a37583fabe03/annotations-13.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: assertj-core-1.7.1">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/1.7.1/c12282981e9bab2afdd38987295e76b35c33abb2/assertj-core-1.7.1.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/1.7.1/353f0ac2df4a7eb913e61acadfba13b8515778c0/assertj-core-1.7.1-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: byte-buddy-1.5.12">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.5.12/b1ba1d15f102b36ed43b826488114678d6d413da/byte-buddy-1.5.12.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.5.12/377024bc29fb84da8df6b6ba2088bb71dfa1b64e/byte-buddy-1.5.12-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: byte-buddy-agent-1.5.12">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.5.12/bc2c4dc0a0c7ddc12d2bb389e228cd88378a8e3a/byte-buddy-agent-1.5.12.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.5.12/dc690b44fc62db706a47b38f8257af5f7464a3f1/byte-buddy-agent-1.5.12-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.android.support.constraint:constraint-layout-1.1.3">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="file://$PROJECT_DIR$/presentation/build/intermediates/exploded-aar/com.android.support.constraint/constraint-layout/1.1.3/res" />
|
||||||
|
<root url="jar://$PROJECT_DIR$/presentation/build/intermediates/exploded-aar/com.android.support.constraint/constraint-layout/1.1.3/jars/classes.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support.constraint/constraint-layout-solver/1.1.3/bde0667d7414c16ed62d3cfe993cff7f9d732373/constraint-layout-solver-1.1.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.android.volley:volley-1.1.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/presentation/build/intermediates/exploded-aar/com.android.volley/volley/1.1.0/jars/classes.jar!/" />
|
||||||
|
<root url="file://$PROJECT_DIR$/presentation/build/intermediates/exploded-aar/com.android.volley/volley/1.1.0/res" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.volley/volley/1.1.0/65ed7df4af0e83a626f383ff49c3403342659aa9/volley-1.1.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: hamcrest-core-1.3">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: javax.inject-1">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/a00123f261762a7c5e0ec916a2c7c8298d29c400/javax.inject-1-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: junit-4.12">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: junixsocket-common-2.0.4">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.kohlschutter.junixsocket/junixsocket-common/2.0.4/b4d1870bf903412533e0b79c6fcd402defcfc05b/junixsocket-common-2.0.4.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.kohlschutter.junixsocket/junixsocket-common/2.0.4/93f60af6bcdca6eee8d3ed5914bcfabb9f2618f0/junixsocket-common-2.0.4-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: junixsocket-native-common-2.0.4">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.kohlschutter.junixsocket/junixsocket-native-common/2.0.4/726bd66a934dea39c817382986496fa4eda96411/junixsocket-native-common-2.0.4.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.kohlschutter.junixsocket/junixsocket-native-common/2.0.4/c5c3baaf3ca3fe0012ac6826a232e45ffa704c30/junixsocket-native-common-2.0.4-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: kluent-1.14">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.amshove.kluent/kluent/1.14/7d88188e60072e6e563d91b89ea712f0c9e0ae96/kluent-1.14.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.amshove.kluent/kluent/1.14/1155192e5283fc5d602d36dc1c783d903dfe1975/kluent-1.14-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: kotlin-reflect-1.0.6">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.0.6/3d499d3b7768f88c4796e5a1e357933e11a8936d/kotlin-reflect-1.0.6.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.0.6/5dd213a21097b9f6b35ed270130a314d72a468f0/kotlin-reflect-1.0.6-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: kotlin-stdlib-1.1.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.0/96a07041a11a09cf578892932d7511e1e11e3b6c/kotlin-stdlib-1.1.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.0/3303374103edd7cee62bf3539c40aa193d1c4767/kotlin-stdlib-1.1.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: kotlin-test-1.1.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.0/5fac2076f2399c6ca0da1d14012e9ccf130ac3/kotlin-test-1.1.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.1.0/576bd16a86dd1d16a2d9ae0397e455ff73fd6a55/kotlin-test-1.1.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: kotlin-test-junit-1.1.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.0/b516787bb3efb327ad7693c65fac0d5fa4a70216/kotlin-test-junit-1.1.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit/1.1.0/ff4787c601a131af1e75227b0ff951af81ec718d/kotlin-test-junit-1.1.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: log4j-1.2.17">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/log4j/log4j/1.2.17/5af35056b4d257e4b64b9e8069c0746e8b08629f/log4j-1.2.17.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/log4j/log4j/1.2.17/677abe279b68c5e7490d6d50c6951376238d7d3e/log4j-1.2.17-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: mockito-core-2.4.5">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/2.4.5/7977632cfc4597ef25097b6c1ab84284d61ac70e/mockito-core-2.4.5.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/2.4.5/20df42e57ef294099eae701b3b071dddd3a522e5/mockito-core-2.4.5-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: mockito-kotlin-1.1.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.nhaarman/mockito-kotlin/1.1.0/18a1bdb7cfa6ac47bc381deda5ee58bc9d821fea/mockito-kotlin-1.1.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.nhaarman/mockito-kotlin/1.1.0/9f89b111a97b82ec1f5c9f02824cd2064a710e1a/mockito-kotlin-1.1.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: native-lib-loader-2.0.2">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.scijava/native-lib-loader/2.0.2/1451fa03954c5e31a358b411147de472b4dab92c/native-lib-loader-2.0.2.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.scijava/native-lib-loader/2.0.2/b1e0fa440cac2b1ba8ee6694f5a70cd4d79ff85b/native-lib-loader-2.0.2-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: objenesis-2.4">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/2.4/2916b6c96b50c5b3ec4452ed99401db745aabb27/objenesis-2.4.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/2.4/19b316d8da7da3ae2539ee4ee2cf73a1e127fa73/objenesis-2.4-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: okio-1.11.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.11.0/840897fcd7223a8143f1d9b6f69714e7be34fd50/okio-1.11.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.11.0/46bdbd0e079883accbf581986e7f8f0d999a2637/okio-1.11.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: reactive-streams-1.0.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.reactivestreams/reactive-streams/1.0.0/14b8c877d98005ba3941c9257cfe09f6ed0e0d74/reactive-streams-1.0.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.reactivestreams/reactive-streams/1.0.0/5be7bd3f38e43c8fc83699bbb5328c62adb95bbf/reactive-streams-1.0.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: rxjava-2.0.6">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.6/b0100ee9ceee5d1861371aefc814cee3e78ed23b/rxjava-2.0.6.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.6/b65373443c52d95b6ccb0e83f303f6a6d438fbc0/rxjava-2.0.6-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -1,9 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="multidex-1.0.1">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/multidex/1.0.1/60d4a46aa19ed61f4903ca2e0ad9e959eac06ec5/multidex-1.0.1.aar" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES />
|
|
||||||
</library>
|
|
||||||
</component>
|
|
|
@ -25,7 +25,7 @@
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|
1977
.idea/workspace.xml
1977
.idea/workspace.xml
File diff suppressed because it is too large
Load Diff
|
@ -23,8 +23,8 @@ buildscript {
|
||||||
allprojects {
|
allprojects {
|
||||||
ext {
|
ext {
|
||||||
androidApplicationId = 'es.verdnatura.vndelivery.presentation'
|
androidApplicationId = 'es.verdnatura.vndelivery.presentation'
|
||||||
androidVersionCode = 3
|
androidVersionCode = 6
|
||||||
androidVersionName = "1.0.3"
|
androidVersionName = "1.0.5"
|
||||||
testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
|
||||||
testApplicationId = 'es.verdnatura.vndelivery.presentation.test'
|
testApplicationId = 'es.verdnatura.vndelivery.presentation.test'
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -33,7 +33,11 @@ class RouteDb {
|
||||||
TableRoute.DRIVER to TEXT,
|
TableRoute.DRIVER to TEXT,
|
||||||
TableRoute.M3 to REAL,
|
TableRoute.M3 to REAL,
|
||||||
TableRoute.PLATE to TEXT,
|
TableRoute.PLATE to TEXT,
|
||||||
TableRoute.AGENCY to TEXT)
|
TableRoute.AGENCY to TEXT,
|
||||||
|
TableRoute.KMSTART to TEXT,
|
||||||
|
TableRoute.KMEND to TEXT,
|
||||||
|
TableRoute.DSTART to TEXT,
|
||||||
|
TableRoute.DEND to TEXT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +55,11 @@ class RouteDb {
|
||||||
TableRoute.M3 to r.M3,
|
TableRoute.M3 to r.M3,
|
||||||
TableRoute.PLATE to r.Plate,
|
TableRoute.PLATE to r.Plate,
|
||||||
TableRoute.AGENCY to r.Agency,
|
TableRoute.AGENCY to r.Agency,
|
||||||
TableRoute.DRIVER to r.Driver)
|
TableRoute.DRIVER to r.Driver,
|
||||||
|
TableRoute.KMSTART to r.kmStart,
|
||||||
|
TableRoute.KMEND to r.kmEnd,
|
||||||
|
TableRoute.DSTART to r.dStart,
|
||||||
|
TableRoute.DEND to r.dEnd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,7 +106,11 @@ class RouteDb {
|
||||||
TableRoute.DRIVER,
|
TableRoute.DRIVER,
|
||||||
TableRoute.HOUR,
|
TableRoute.HOUR,
|
||||||
TableRoute.M3,
|
TableRoute.M3,
|
||||||
TableRoute.PLATE)
|
TableRoute.PLATE,
|
||||||
|
TableRoute.KMSTART,
|
||||||
|
TableRoute.KMEND,
|
||||||
|
TableRoute.DSTART,
|
||||||
|
TableRoute.DEND)
|
||||||
if(onlyToday)
|
if(onlyToday)
|
||||||
sql = sql.whereSimple("${TableRoute.DATE} = ?", today)
|
sql = sql.whereSimple("${TableRoute.DATE} = ?", today)
|
||||||
sql.exec {
|
sql.exec {
|
||||||
|
@ -117,7 +129,11 @@ class RouteDb {
|
||||||
columns[TableRoute.M3].toString().toDouble(),
|
columns[TableRoute.M3].toString().toDouble(),
|
||||||
columns[TableRoute.PLATE] as String,
|
columns[TableRoute.PLATE] as String,
|
||||||
columns[TableRoute.AGENCY] as String,
|
columns[TableRoute.AGENCY] as String,
|
||||||
columns[TableRoute.DRIVER] as String)
|
columns[TableRoute.DRIVER] as String,
|
||||||
|
columns[TableRoute.KMSTART] as String,
|
||||||
|
columns[TableRoute.KMEND] as String,
|
||||||
|
columns[TableRoute.DSTART] as String,
|
||||||
|
columns[TableRoute.DEND] as String)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ class TableRoute {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
val TABLE_ROUTE = "TABLE_ROUTE"
|
val TABLE_ROUTE = "TABLE_ROUTE_v2"
|
||||||
val ID = "ID"
|
val ID = "ID"
|
||||||
val HOUR = "HOUR"
|
val HOUR = "HOUR"
|
||||||
val DATE = "DATE"
|
val DATE = "DATE"
|
||||||
|
@ -15,6 +15,13 @@ class TableRoute {
|
||||||
val PLATE = "PLATE"
|
val PLATE = "PLATE"
|
||||||
val AGENCY = "AGENCY"
|
val AGENCY = "AGENCY"
|
||||||
val DRIVER = "DRIVER"
|
val DRIVER = "DRIVER"
|
||||||
|
|
||||||
|
val KMSTART = "KMSTART"
|
||||||
|
val KMEND = "KMEND"
|
||||||
|
val DSTART = "DSTART"
|
||||||
|
val DEND = "DEND"
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -115,23 +115,44 @@ class TicketOps(val db: VnOpenHelper) {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun uploadTickets(ticket: Ticket){
|
private fun uploadTickets(ticket: Ticket){
|
||||||
db.use {
|
if (ticket.Packages > 0) {
|
||||||
update(TableTicket.TABLE_TICKET,
|
db.use {
|
||||||
TableTicket.CLIENT to ticket.Client,
|
update(TableTicket.TABLE_TICKET,
|
||||||
TableTicket.CLIENT_NAME to ticket.ClientName,
|
TableTicket.CLIENT to ticket.Client,
|
||||||
TableTicket.ADDRESS to ticket.Address,
|
TableTicket.CLIENT_NAME to ticket.ClientName,
|
||||||
TableTicket.ADDRESS_NAME to ticket.AddressName,
|
TableTicket.ADDRESS to ticket.Address,
|
||||||
TableTicket.PACKAGES to ticket.Packages,
|
TableTicket.ADDRESS_NAME to ticket.AddressName,
|
||||||
TableTicket.POSTAL_CODE to ticket.PostalCode,
|
TableTicket.PACKAGES to ticket.Packages,
|
||||||
TableTicket.CITY to ticket.City,
|
TableTicket.POSTAL_CODE to ticket.PostalCode,
|
||||||
TableTicket.WAREHOUSE to ticket.Warehouse,
|
TableTicket.CITY to ticket.City,
|
||||||
TableTicket.LONGITUDE to ticket.Loc.Longitude,
|
TableTicket.WAREHOUSE to ticket.Warehouse,
|
||||||
TableTicket.LATITUDE to ticket.Loc.Latitude,
|
TableTicket.LONGITUDE to ticket.Loc.Longitude,
|
||||||
TableTicket.NOTE to ticket.Note,
|
TableTicket.LATITUDE to ticket.Loc.Latitude,
|
||||||
TableTicket.SALE_PERSON_PHONE to ticket.SalePersonPhone,
|
TableTicket.NOTE to ticket.Note,
|
||||||
TableTicket.UPDATE_INTENT to ticket.UpdateIntent)
|
TableTicket.SALE_PERSON_PHONE to ticket.SalePersonPhone,
|
||||||
.whereSimple("ID=?",ticket.Id.toString()).exec()
|
TableTicket.UPDATE_INTENT to ticket.UpdateIntent)
|
||||||
}
|
.whereSimple("ID=?", ticket.Id.toString()).exec()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
db.use {
|
||||||
|
update(TableTicket.TABLE_TICKET,
|
||||||
|
TableTicket.CLIENT to ticket.Client,
|
||||||
|
TableTicket.CLIENT_NAME to ticket.ClientName,
|
||||||
|
TableTicket.ADDRESS to ticket.Address,
|
||||||
|
TableTicket.ADDRESS_NAME to ticket.AddressName,
|
||||||
|
TableTicket.POSTAL_CODE to ticket.PostalCode,
|
||||||
|
TableTicket.CITY to ticket.City,
|
||||||
|
TableTicket.WAREHOUSE to ticket.Warehouse,
|
||||||
|
TableTicket.LONGITUDE to ticket.Loc.Longitude,
|
||||||
|
TableTicket.LATITUDE to ticket.Loc.Latitude,
|
||||||
|
TableTicket.NOTE to ticket.Note,
|
||||||
|
TableTicket.SALE_PERSON_PHONE to ticket.SalePersonPhone,
|
||||||
|
TableTicket.UPDATE_INTENT to ticket.UpdateIntent)
|
||||||
|
.whereSimple("ID=?", ticket.Id.toString()).exec()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ticket.Phones.forEach { phone -> updatePhones(ticket.Id, phone) }
|
ticket.Phones.forEach { phone -> updatePhones(ticket.Id, phone) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,4 +12,8 @@ class RouteDto {
|
||||||
var Plate = ""
|
var Plate = ""
|
||||||
var Agency = ""
|
var Agency = ""
|
||||||
var Driver = ""
|
var Driver = ""
|
||||||
|
var kmStart = ""
|
||||||
|
var kmEnd = ""
|
||||||
|
var dStart = ""
|
||||||
|
var dEnd = ""
|
||||||
}
|
}
|
|
@ -19,5 +19,7 @@ class TicketDto {
|
||||||
var Phones = listOf<String>()
|
var Phones = listOf<String>()
|
||||||
var Location = LocationDto()
|
var Location = LocationDto()
|
||||||
var Signed = 0
|
var Signed = 0
|
||||||
|
var Longitude = 0.0
|
||||||
|
var Latitude = 0.0
|
||||||
|
|
||||||
}
|
}
|
|
@ -9,15 +9,15 @@ class Host {
|
||||||
|
|
||||||
companion object{
|
companion object{
|
||||||
|
|
||||||
private val TESTHOST = "http://172.16.119.95:8080/"
|
private val TESTHOST = "http://172.16.198.221:8080/"
|
||||||
private val RELEASEHOST = "https://app.verdnatura.es/"
|
private val RELEASEHOST = "https://app.verdnatura.es/"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fun getHost(): String{
|
fun getHost(): String{
|
||||||
if(Build.FINGERPRINT.startsWith("generic"))
|
if(Build.FINGERPRINT.startsWith("generic"))
|
||||||
return RELEASEHOST
|
return TESTHOST
|
||||||
return RELEASEHOST
|
return TESTHOST
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,9 @@ import es.verdnatura.data.entity.RouteDto
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import retrofit2.Response
|
import retrofit2.Response
|
||||||
|
import retrofit2.http.Field
|
||||||
import retrofit2.http.POST
|
import retrofit2.http.POST
|
||||||
|
import retrofit2.http.Query
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by nelo on 5/7/17.
|
* Created by nelo on 5/7/17.
|
||||||
|
@ -20,4 +22,6 @@ interface RouteApi {
|
||||||
@POST("bin/vndelivery.apk")
|
@POST("bin/vndelivery.apk")
|
||||||
fun getApk(): Observable<Response<ResponseBody>>
|
fun getApk(): Observable<Response<ResponseBody>>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -21,6 +21,8 @@ import javax.inject.Singleton
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
class RouteApiImpl: RouteRepository {
|
class RouteApiImpl: RouteRepository {
|
||||||
|
|
||||||
|
|
||||||
val routeDb: RouteDb
|
val routeDb: RouteDb
|
||||||
val serializer: Serializer
|
val serializer: Serializer
|
||||||
val routeApi: RouteApi
|
val routeApi: RouteApi
|
||||||
|
|
|
@ -54,7 +54,7 @@ class TicketApiImpl: TicketRepository {
|
||||||
|
|
||||||
override fun getTickets(route: Int): Observable<List<Ticket>> {
|
override fun getTickets(route: Int): Observable<List<Ticket>> {
|
||||||
var tickets = listOf<Ticket>()
|
var tickets = listOf<Ticket>()
|
||||||
return ticketApi.getTickets(route)
|
var result = ticketApi.getTickets(route)
|
||||||
.map { tickets -> serializer.serialize(tickets, List::class.java) }
|
.map { tickets -> serializer.serialize(tickets, List::class.java) }
|
||||||
.map { json -> serializer.deserializeList(json, Ticket::class.java) }
|
.map { json -> serializer.deserializeList(json, Ticket::class.java) }
|
||||||
.map { ts -> tickets = ts }
|
.map { ts -> tickets = ts }
|
||||||
|
@ -65,6 +65,7 @@ class TicketApiImpl: TicketRepository {
|
||||||
.map { tt -> markUploadedTicket(tickets, tt)}
|
.map { tt -> markUploadedTicket(tickets, tt)}
|
||||||
.map { tt -> tt }
|
.map { tt -> tt }
|
||||||
.doOnError { t -> generateError(t, R.string.error_tickets) }
|
.doOnError { t -> generateError(t, R.string.error_tickets) }
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
fun markSigndedTicket(tickets: List<Ticket>, ids: List<Int>): List<Ticket>{
|
fun markSigndedTicket(tickets: List<Ticket>, ids: List<Int>): List<Ticket>{
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -53,27 +53,27 @@
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" exported="" name="rxjava-2.0.6" level="project" />
|
<orderEntry type="library" exported="" name="Gradle: rxjava-2.0.6" level="project" />
|
||||||
<orderEntry type="library" exported="" name="javax.inject-1" level="project" />
|
<orderEntry type="library" exported="" name="Gradle: javax.inject-1" level="project" />
|
||||||
<orderEntry type="library" exported="" name="kotlin-stdlib-1.1.0" level="project" />
|
<orderEntry type="library" exported="" name="Gradle: kotlin-stdlib-1.1.0" level="project" />
|
||||||
<orderEntry type="library" exported="" name="okio-1.11.0" level="project" />
|
<orderEntry type="library" exported="" name="Gradle: okio-1.11.0" level="project" />
|
||||||
<orderEntry type="library" exported="" name="reactive-streams-1.0.0" level="project" />
|
<orderEntry type="library" exported="" name="Gradle: reactive-streams-1.0.0" level="project" />
|
||||||
<orderEntry type="library" exported="" name="annotations-13.0" level="project" />
|
<orderEntry type="library" exported="" name="Gradle: annotations-13.0" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: junit-4.12" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="kotlin-test-junit-1.1.0" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: kotlin-test-junit-1.1.0" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="mockito-kotlin-1.1.0" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: mockito-kotlin-1.1.0" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="kluent-1.14" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: kluent-1.14" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="assertj-core-1.7.1" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: assertj-core-1.7.1" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: hamcrest-core-1.3" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="kotlin-test-1.1.0" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: kotlin-test-1.1.0" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="kotlin-reflect-1.0.6" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: kotlin-reflect-1.0.6" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="mockito-core-2.4.5" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: mockito-core-2.4.5" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="byte-buddy-1.5.12" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: byte-buddy-1.5.12" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="byte-buddy-agent-1.5.12" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: byte-buddy-agent-1.5.12" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="objenesis-2.4" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: objenesis-2.4" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="junixsocket-native-common-2.0.4" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: junixsocket-native-common-2.0.4" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="junixsocket-common-2.0.4" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: junixsocket-common-2.0.4" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="native-lib-loader-2.0.2" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: native-lib-loader-2.0.2" level="project" />
|
||||||
<orderEntry type="library" exported="" scope="TEST" name="log4j-1.2.17" level="project" />
|
<orderEntry type="library" exported="" scope="TEST" name="Gradle: log4j-1.2.17" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
|
@ -1,13 +1,14 @@
|
||||||
package es.verdnatura.domain.entity
|
package es.verdnatura.domain.entity
|
||||||
|
|
||||||
|
import java.io.Serializable
|
||||||
import javax.inject.Named
|
import javax.inject.Named
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by nelo on 5/7/17.
|
* Created by nelo on 5/7/17.
|
||||||
*/
|
*/
|
||||||
class Route() {
|
class Route():Serializable {
|
||||||
|
|
||||||
constructor(id: Int, hour: String, date: String, m3: Double, plate: String, agency: String, driver: String): this(){
|
constructor(id: Int, hour: String, date: String, m3: Double, plate: String, agency: String, driver: String,kmStart:String,kmEnd:String,dStart:String,dEnd:String): this(){
|
||||||
this.Id = id
|
this.Id = id
|
||||||
this.Hour = hour
|
this.Hour = hour
|
||||||
this.Date = date
|
this.Date = date
|
||||||
|
@ -15,6 +16,11 @@ class Route() {
|
||||||
this.Plate = plate
|
this.Plate = plate
|
||||||
this.Agency = agency
|
this.Agency = agency
|
||||||
this.Driver = driver
|
this.Driver = driver
|
||||||
|
|
||||||
|
this.kmStart = kmStart
|
||||||
|
this.kmEnd = kmEnd
|
||||||
|
this.dStart = dStart
|
||||||
|
this.dEnd = dEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
@Named("Id")
|
@Named("Id")
|
||||||
|
@ -38,4 +44,17 @@ class Route() {
|
||||||
@Named("Driver")
|
@Named("Driver")
|
||||||
var Driver = ""
|
var Driver = ""
|
||||||
|
|
||||||
|
@Named("kmStart")
|
||||||
|
var kmStart = ""
|
||||||
|
|
||||||
|
@Named("kmEnd")
|
||||||
|
var kmEnd = ""
|
||||||
|
|
||||||
|
@Named("dStart")
|
||||||
|
var dStart = ""
|
||||||
|
|
||||||
|
@Named("dEnd")
|
||||||
|
var dEnd = ""
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -26,7 +26,10 @@ class Ticket() {
|
||||||
this.Signed = signed
|
this.Signed = signed
|
||||||
this.Uploaded = uploaded
|
this.Uploaded = uploaded
|
||||||
this.UpdateIntent = update_intent
|
this.UpdateIntent = update_intent
|
||||||
|
|
||||||
if(latitude != "null" && longitude != "null") {
|
if(latitude != "null" && longitude != "null") {
|
||||||
|
this.Longitude = longitude.toDouble()
|
||||||
|
this.Latitude = latitude.toDouble()
|
||||||
val loc = Location()
|
val loc = Location()
|
||||||
loc.Longitude = longitude.toDouble()
|
loc.Longitude = longitude.toDouble()
|
||||||
loc.Latitude = latitude.toDouble()
|
loc.Latitude = latitude.toDouble()
|
||||||
|
@ -70,7 +73,7 @@ class Ticket() {
|
||||||
@Named("Phones")
|
@Named("Phones")
|
||||||
var Phones = listOf<String>()
|
var Phones = listOf<String>()
|
||||||
|
|
||||||
@Named("LocationDto")
|
@Named("Location")
|
||||||
var Loc = Location()
|
var Loc = Location()
|
||||||
|
|
||||||
@Named("Signed")
|
@Named("Signed")
|
||||||
|
@ -81,4 +84,10 @@ class Ticket() {
|
||||||
|
|
||||||
@Named("UpdateIntent")
|
@Named("UpdateIntent")
|
||||||
var UpdateIntent = 0
|
var UpdateIntent = 0
|
||||||
|
|
||||||
|
@Named("Longitude")
|
||||||
|
var Longitude = 0.0
|
||||||
|
|
||||||
|
@Named("Latitude")
|
||||||
|
var Latitude = 0.0
|
||||||
}
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package es.verdnatura.domain.interactor.route
|
||||||
|
|
||||||
|
import es.verdnatura.domain.entity.Route
|
||||||
|
import es.verdnatura.domain.repository.RouteRepository
|
||||||
|
import es.verdnatura.vndelivery.domain.interactor.UseCase
|
||||||
|
import io.reactivex.Observable
|
||||||
|
import io.reactivex.Scheduler
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class UpdateRoutesUseCase: UseCase<List<Route>, Boolean> {
|
||||||
|
|
||||||
|
val repository: RouteRepository
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
constructor(repository: RouteRepository, uiThread: Scheduler, thread: Scheduler): super(uiThread, thread){
|
||||||
|
this.repository = repository
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun buildUseCaseObservable(params: Boolean): Observable<List<Route>> {
|
||||||
|
return repository.getRoutes()
|
||||||
|
}
|
||||||
|
}
|
|
@ -103,6 +103,9 @@ dependencies {
|
||||||
//compile developmentDependencies.leakCanary
|
//compile developmentDependencies.leakCanary
|
||||||
|
|
||||||
compile fileTree(dir: 'libs', include: '*.jar')
|
compile fileTree(dir: 'libs', include: '*.jar')
|
||||||
|
compile 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||||
|
|
||||||
|
compile 'com.android.volley:volley:1.1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
|
|
@ -41,6 +41,9 @@
|
||||||
<activity android:name=".view.activity.SignDataActivity"
|
<activity android:name=".view.activity.SignDataActivity"
|
||||||
android:label="@string/activity_tickets"/>
|
android:label="@string/activity_tickets"/>
|
||||||
|
|
||||||
|
<activity android:name=".view.activity.ConfigActivity"
|
||||||
|
android:label="@string/activity_config"/>
|
||||||
|
|
||||||
<activity android:name=".view.activity.SignActivity"
|
<activity android:name=".view.activity.SignActivity"
|
||||||
android:label="@string/activity_tickets"
|
android:label="@string/activity_tickets"
|
||||||
android:configChanges="keyboardHidden|orientation"/>
|
android:configChanges="keyboardHidden|orientation"/>
|
||||||
|
|
|
@ -0,0 +1,157 @@
|
||||||
|
package es.verdnatura.presentation
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.preference.PreferenceManager
|
||||||
|
import android.view.View
|
||||||
|
import android.view.animation.AnimationUtils
|
||||||
|
import android.widget.ImageView
|
||||||
|
import android.widget.TextView
|
||||||
|
import com.android.volley.VolleyError
|
||||||
|
import es.verdnatura.vndelivery.data.rest.Host
|
||||||
|
import org.json.JSONException
|
||||||
|
import org.json.JSONObject
|
||||||
|
|
||||||
|
class Utils(context: Context) {
|
||||||
|
private var json:String? = null
|
||||||
|
private val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
private var host: String = Host.getHost()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fun parseNetworkError( volleyError: VolleyError): String? {
|
||||||
|
if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
|
||||||
|
json = String(volleyError.networkResponse.data,Charsets.UTF_8)
|
||||||
|
json = trimMessage(json!!,"message")
|
||||||
|
return json
|
||||||
|
}
|
||||||
|
return json
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun trimMessage(json: String, key: String): String? {
|
||||||
|
var trimmedString: String? = null
|
||||||
|
|
||||||
|
try {
|
||||||
|
val obj = JSONObject(json)
|
||||||
|
trimmedString = obj.getString(key)
|
||||||
|
} catch (e: JSONException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
return trimmedString
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getHeadersForRequest(): Map<String,String> {
|
||||||
|
val valuesMap = mutableMapOf<String, String>()
|
||||||
|
valuesMap["version"] = "1"
|
||||||
|
valuesMap["aplicacion"] = "json"
|
||||||
|
valuesMap["user"] = "quique"
|
||||||
|
valuesMap["pass"] = "blasco.14255"
|
||||||
|
valuesMap["Content-Type"] = "application/json"
|
||||||
|
return valuesMap.toMap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saveUserAndPass(user:String,pass:String,id:String){
|
||||||
|
val edit: SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.putString("user",user)
|
||||||
|
edit.putString("pass",pass)
|
||||||
|
edit.putString("id",id)
|
||||||
|
|
||||||
|
edit.commit()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logOut(){
|
||||||
|
/*val pin = sharedPref.getInt("pin",-1)
|
||||||
|
val edit:SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.remove("warehouse")
|
||||||
|
edit.remove("empresa")
|
||||||
|
edit.commit()
|
||||||
|
setPin(pin)*/
|
||||||
|
}
|
||||||
|
|
||||||
|
fun animateImage(context: Context, image: ImageView, textView: TextView) {
|
||||||
|
/*var rotation = AnimationUtils.loadAnimation(context, R.anim.rotate)
|
||||||
|
rotation.fillAfter = true
|
||||||
|
image.startAnimation(rotation)
|
||||||
|
textView.visibility = View.VISIBLE*/
|
||||||
|
}
|
||||||
|
|
||||||
|
fun stopAnimateImage(image: ImageView, textView: TextView) {
|
||||||
|
image.clearAnimation()
|
||||||
|
textView.visibility = View.GONE
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getHost():String{
|
||||||
|
return sharedPref.getString("host",host)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setHost(host:String){
|
||||||
|
val edit: SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.putString("host",host)
|
||||||
|
edit.commit()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkWarehouseState():Boolean{
|
||||||
|
return sharedPref.contains("warehouse")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setWareHouse(w:Int){
|
||||||
|
val edit: SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.putInt("warehouse",w)
|
||||||
|
edit.commit()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getWareHouse():Int{
|
||||||
|
return sharedPref.getInt("warehouse",0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkEmpresaState():Boolean{
|
||||||
|
return sharedPref.contains("empresa")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setEmpresa(e:Int){
|
||||||
|
val edit: SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.putInt("empresa",e)
|
||||||
|
edit.commit()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getEmpresa():Int{
|
||||||
|
return sharedPref.getInt("empresa",0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setHistorico(h:Int){
|
||||||
|
val edit: SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.putInt("historico",h)
|
||||||
|
edit.commit()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getHistorico():Int{
|
||||||
|
return sharedPref.getInt("historico",0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setPin(pin:Int){
|
||||||
|
val edit: SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.putInt("pin",pin)
|
||||||
|
edit.commit()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getPin():Int{
|
||||||
|
return sharedPref.getInt("pin",-1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun deletePin(){
|
||||||
|
val edit: SharedPreferences.Editor = sharedPref.edit()
|
||||||
|
edit.remove("pin")
|
||||||
|
edit.commit()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun intOrString(str: String) = try { // returns Any
|
||||||
|
str.toInt()
|
||||||
|
} catch(e: NumberFormatException) {
|
||||||
|
-1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package es.verdnatura.presentation.navigation
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
interface ConfiNavigator {
|
||||||
|
fun editRoute()
|
||||||
|
}
|
|
@ -1,10 +1,12 @@
|
||||||
package es.verdnatura.presentation.navigation
|
package es.verdnatura.presentation.navigation
|
||||||
|
|
||||||
|
import es.verdnatura.domain.entity.Location
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by nelo on 10/7/17.
|
* Created by nelo on 10/7/17.
|
||||||
*/
|
*/
|
||||||
interface NavigateToSign {
|
interface NavigateToSign {
|
||||||
|
|
||||||
fun navigateToSign(tickets: List<Int>, packages: Int)
|
fun navigateToSign(tickets: List<Int>, packages: Int,location:es.verdnatura.domain.entity.Location)
|
||||||
|
|
||||||
}
|
}
|
|
@ -2,6 +2,9 @@ package es.verdnatura.vndelivery.presentation.navigation
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import es.verdnatura.core.activity.BaseActivity
|
import es.verdnatura.core.activity.BaseActivity
|
||||||
|
import es.verdnatura.domain.entity.Location
|
||||||
|
import es.verdnatura.domain.entity.Route
|
||||||
|
|
||||||
import es.verdnatura.vndelivery.presentation.view.activity.*
|
import es.verdnatura.vndelivery.presentation.view.activity.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
@ -26,10 +29,12 @@ class Navigator @Inject constructor(){
|
||||||
activity.startActivity(intent)
|
activity.startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun navigateToSign(activity: BaseActivity, tickets: List<Int>, packages: Int){
|
fun navigateToSign(activity: BaseActivity, tickets: List<Int>, packages: Int,location:Location){
|
||||||
val intent = Intent(activity, SignActivity::class.java)
|
val intent = Intent(activity, SignActivity::class.java)
|
||||||
intent.putExtra(SignActivity.TICKETS, tickets.toIntArray())
|
intent.putExtra(SignActivity.TICKETS, tickets.toIntArray())
|
||||||
intent.putExtra(SignActivity.PACKAGES, packages)
|
intent.putExtra(SignActivity.PACKAGES, packages)
|
||||||
|
intent.putExtra("lat",location.Latitude)
|
||||||
|
intent.putExtra("long",location.Longitude)
|
||||||
activity.startActivity(intent)
|
activity.startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,4 +42,10 @@ class Navigator @Inject constructor(){
|
||||||
activity.startActivity(Intent(activity, SignDataActivity::class.java))
|
activity.startActivity(Intent(activity, SignDataActivity::class.java))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun navigateToConfig(activity: BaseActivity,route: Route){
|
||||||
|
val intent = Intent(activity, ConfigActivity::class.java)
|
||||||
|
intent.putExtra(TicketActivity.ROUTE, route)
|
||||||
|
activity.startActivity(intent)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package es.verdnatura.presentation.presenter
|
package es.verdnatura.presentation.presenter
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import android.widget.Toast
|
||||||
import es.verdnatura.domain.interactor.ticket.SignTicketsUseCase
|
import es.verdnatura.domain.interactor.ticket.SignTicketsUseCase
|
||||||
import es.verdnatura.domain.interactor.ticket.UploadSignsUseCase
|
import es.verdnatura.domain.interactor.ticket.UploadSignsUseCase
|
||||||
import es.verdnatura.presentation.observer.UploadObserver
|
import es.verdnatura.presentation.observer.UploadObserver
|
||||||
|
@ -40,6 +41,7 @@ class SignPresenter: BasePresenter {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun uploadSign(fileName: String){
|
fun uploadSign(fileName: String){
|
||||||
|
view.showToast()
|
||||||
uploadSignUseCase.execute(SignObserverFinish(this), UploadSignsUseCase.Params.forUploadSign(fileName))
|
uploadSignUseCase.execute(SignObserverFinish(this), UploadSignsUseCase.Params.forUploadSign(fileName))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package es.verdnatura.presentation.presenter
|
package es.verdnatura.presentation.presenter
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import android.widget.Toast
|
||||||
import es.verdnatura.domain.entity.Ticket
|
import es.verdnatura.domain.entity.Ticket
|
||||||
import es.verdnatura.domain.interactor.ticket.FilterTicketsUseCase
|
import es.verdnatura.domain.interactor.ticket.FilterTicketsUseCase
|
||||||
import es.verdnatura.domain.interactor.ticket.GetTicketsUseCase
|
import es.verdnatura.domain.interactor.ticket.GetTicketsUseCase
|
||||||
|
@ -22,6 +23,7 @@ class TicketPresenter: BasePresenter {
|
||||||
private val selectTicketUseCase: SelectTicketUseCase
|
private val selectTicketUseCase: SelectTicketUseCase
|
||||||
private val filterTicketUSeCase: FilterTicketsUseCase
|
private val filterTicketUSeCase: FilterTicketsUseCase
|
||||||
private var filter:Boolean = false
|
private var filter:Boolean = false
|
||||||
|
public var listOnline:List<List<Ticket>>? = null
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
@ -51,10 +53,33 @@ class TicketPresenter: BasePresenter {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onDownloadTickets(tickets: List<List<Ticket>>){
|
fun onDownloadTickets(tickets: List<List<Ticket>>){
|
||||||
this.tickets = tickets
|
var cont = 0
|
||||||
|
var cont2 = 0
|
||||||
|
if (listOnline != null) {
|
||||||
|
for (list in tickets) {
|
||||||
|
if (listOnline!!.size > cont) {
|
||||||
|
for (ticket in list) {
|
||||||
|
if (listOnline!![cont].size > cont2) {
|
||||||
|
if (ticket.Signed == 1) {
|
||||||
|
listOnline!![cont][cont2].Signed = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cont2+=1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cont+=1
|
||||||
|
cont2 = 0
|
||||||
|
}
|
||||||
|
this.tickets = listOnline!!
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.tickets = tickets
|
||||||
|
}
|
||||||
filterTickets(filter)
|
filterTickets(filter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fun onFilterTickets(tickets: List<List<Ticket>>){
|
fun onFilterTickets(tickets: List<List<Ticket>>){
|
||||||
createAdapter(tickets)
|
createAdapter(tickets)
|
||||||
}
|
}
|
||||||
|
@ -72,6 +97,10 @@ class TicketPresenter: BasePresenter {
|
||||||
selectTicketUseCase.execute(TicketDbObserver(this), SelectTicketUseCase.Params.forSelectTickets(route))
|
selectTicketUseCase.execute(TicketDbObserver(this), SelectTicketUseCase.Params.forSelectTickets(route))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun onCompareDbTickets(route: Int){
|
||||||
|
selectTicketUseCase.execute(TicketDbCompare(this), SelectTicketUseCase.Params.forSelectTickets(route))
|
||||||
|
}
|
||||||
|
|
||||||
fun filterTickets(signed: Boolean){
|
fun filterTickets(signed: Boolean){
|
||||||
if (signed != filter) {
|
if (signed != filter) {
|
||||||
filter = signed
|
filter = signed
|
||||||
|
@ -82,10 +111,13 @@ class TicketPresenter: BasePresenter {
|
||||||
class TicketObserver(val presenter: TicketPresenter, val route: Int): DisposableObserver<List<List<Ticket>>>(){
|
class TicketObserver(val presenter: TicketPresenter, val route: Int): DisposableObserver<List<List<Ticket>>>(){
|
||||||
|
|
||||||
override fun onNext(t: List<List<Ticket>>?) {
|
override fun onNext(t: List<List<Ticket>>?) {
|
||||||
presenter.onDownloadTickets(t!!)
|
presenter.listOnline = t!!
|
||||||
|
presenter.onCompareDbTickets(route)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onError(e: Throwable?) {
|
override fun onError(e: Throwable?) {
|
||||||
|
presenter.listOnline = null
|
||||||
presenter.getTicketsDb(route)
|
presenter.getTicketsDb(route)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,6 +143,22 @@ class TicketPresenter: BasePresenter {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TicketDbCompare(val presenter: TicketPresenter): DisposableObserver<List<List<Ticket>>>(){
|
||||||
|
|
||||||
|
override fun onNext(t: List<List<Ticket>>?) {
|
||||||
|
presenter.onDownloadTickets(t!!)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(e: Throwable?) {
|
||||||
|
presenter.onErrorDownloadTickets(e?.message.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onComplete() {
|
||||||
|
presenter.onCopleteDownloadTickets()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class TicketFilterObserver(val presenter: TicketPresenter): DisposableObserver<List<List<Ticket>>> () {
|
class TicketFilterObserver(val presenter: TicketPresenter): DisposableObserver<List<List<Ticket>>> () {
|
||||||
override fun onNext(t: List<List<Ticket>>?) {
|
override fun onNext(t: List<List<Ticket>>?) {
|
||||||
presenter.onFilterTickets(t!!)
|
presenter.onFilterTickets(t!!)
|
||||||
|
|
|
@ -0,0 +1,236 @@
|
||||||
|
package es.verdnatura.vndelivery.presentation.view.activity
|
||||||
|
|
||||||
|
import android.app.TimePickerDialog
|
||||||
|
import android.content.Intent
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.KeyEvent
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.Button
|
||||||
|
import android.widget.EditText
|
||||||
|
import android.widget.TextView
|
||||||
|
import android.widget.Toast
|
||||||
|
import com.android.volley.Request
|
||||||
|
import com.android.volley.RequestQueue
|
||||||
|
import com.android.volley.Response
|
||||||
|
import com.android.volley.VolleyError
|
||||||
|
import com.android.volley.toolbox.StringRequest
|
||||||
|
import com.android.volley.toolbox.Volley
|
||||||
|
import com.google.gson.internal.LinkedTreeMap
|
||||||
|
import es.verdnatura.domain.entity.Route
|
||||||
|
import es.verdnatura.domain.interactor.route.UpdateRoutesUseCase
|
||||||
|
import es.verdnatura.presentation.Utils
|
||||||
|
import es.verdnatura.presentation.di.components.RouteComponent
|
||||||
|
import es.verdnatura.presentation.di.modules.RouteModule
|
||||||
|
import es.verdnatura.presentation.navigation.ConfiNavigator
|
||||||
|
import es.verdnatura.presentation.navigation.RouterNavigator
|
||||||
|
import es.verdnatura.presentation.presenter.RoutePresenter
|
||||||
|
import es.verdnatura.presentation.view.fragment.DataFragment
|
||||||
|
import es.verdnatura.presentation.view.fragment.RouteFragment
|
||||||
|
import es.verdnatura.presentation.view.view.UpdateView
|
||||||
|
import es.verdnatura.vndelivery.presentation.R
|
||||||
|
import es.verdnatura.vndelivery.presentation.di.HasComponent
|
||||||
|
import es.verdnatura.vndelivery.presentation.presenter.BasePresenter
|
||||||
|
import es.verdnatura.vndelivery.presentation.view.activity.BaseActivity
|
||||||
|
import es.verdnatura.vndelivery.presentation.view.view.BaseView
|
||||||
|
import io.reactivex.observers.DisposableObserver
|
||||||
|
import org.json.JSONObject
|
||||||
|
import java.io.File
|
||||||
|
import java.text.DecimalFormat
|
||||||
|
import java.text.ParseException
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
class ConfigActivity : BaseActivity(), HasComponent<RouteComponent>, ConfiNavigator {
|
||||||
|
|
||||||
|
private var route:Route? = null
|
||||||
|
private var txtKmStart:EditText? = null
|
||||||
|
private var txtKmEnd:EditText? = null
|
||||||
|
private var txtDStart:EditText? = null
|
||||||
|
private var txtDFin:EditText? = null
|
||||||
|
private var txtRuta:TextView? = null
|
||||||
|
private var utils: Utils? = null
|
||||||
|
private var queue: RequestQueue? = null
|
||||||
|
private var btnGuardar:Button? = null
|
||||||
|
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
setContentView(R.layout.config_activity)
|
||||||
|
route = intent.extras.getSerializable(TicketActivity.ROUTE) as Route
|
||||||
|
setViews()
|
||||||
|
setEvents()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fun setViews() {
|
||||||
|
txtKmStart = findViewById(R.id.txtKmStart) as EditText
|
||||||
|
txtKmEnd = findViewById(R.id.txtKmEnd) as EditText
|
||||||
|
txtDStart = findViewById(R.id.txtDStart) as EditText
|
||||||
|
txtDFin = findViewById(R.id.txtDFin) as EditText
|
||||||
|
txtRuta = findViewById(R.id.txtRuta) as TextView
|
||||||
|
btnGuardar = findViewById(R.id.btnGuardar) as Button
|
||||||
|
|
||||||
|
txtKmStart!!.setText(route!!.kmStart)
|
||||||
|
txtKmEnd!!.setText(route!!.kmEnd)
|
||||||
|
txtDStart!!.setText(getHour(route!!.dStart))
|
||||||
|
txtDFin!!.setText(getHour(route!!.dEnd))
|
||||||
|
txtRuta!!.setText(route!!.Id.toString()+" "+route!!.Driver)
|
||||||
|
|
||||||
|
utils = Utils(applicationContext)
|
||||||
|
queue = Volley.newRequestQueue(this)
|
||||||
|
}
|
||||||
|
fun setEvents(){
|
||||||
|
txtDStart!!.setOnClickListener(View.OnClickListener {
|
||||||
|
val cal = Calendar.getInstance()
|
||||||
|
|
||||||
|
val timeSetListener = TimePickerDialog.OnTimeSetListener { timePicker, hour, minute ->
|
||||||
|
cal.set(Calendar.HOUR_OF_DAY, hour)
|
||||||
|
cal.set(Calendar.MINUTE, minute)
|
||||||
|
txtDStart!!.setText(getHour("0000-00-00 "+hour+":"+minute+":00"))
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
TimePickerDialog(this, timeSetListener, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true).show()
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
txtDFin!!.setOnClickListener(View.OnClickListener {
|
||||||
|
val cal = Calendar.getInstance()
|
||||||
|
|
||||||
|
val timeSetListener = TimePickerDialog.OnTimeSetListener { timePicker, hour, minute ->
|
||||||
|
cal.set(Calendar.HOUR_OF_DAY, hour)
|
||||||
|
cal.set(Calendar.MINUTE, minute)
|
||||||
|
val f = DecimalFormat("00")
|
||||||
|
|
||||||
|
if ((txtDStart!!.text.toString()).replace(":","").toInt() < (""+f.format(hour)+f.format(minute)).toInt())
|
||||||
|
txtDFin!!.setText(getHour("0000-00-00 $hour:$minute:00"))
|
||||||
|
else Toast.makeText(this,"La hora fin no puede ser menor que la de inicio", Toast.LENGTH_LONG).show()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
TimePickerDialog(this, timeSetListener, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true).show()
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* txtKmStart!!.setOnEditorActionListener(TextView.OnEditorActionListener { v, actionId, event ->
|
||||||
|
if (event == null || event.action != KeyEvent.ACTION_DOWN) {
|
||||||
|
updateRoute()
|
||||||
|
}
|
||||||
|
true
|
||||||
|
})
|
||||||
|
|
||||||
|
txtKmEnd!!.setOnEditorActionListener(TextView.OnEditorActionListener { v, actionId, event ->
|
||||||
|
if (event == null || event.action != KeyEvent.ACTION_DOWN) {
|
||||||
|
updateRoute()
|
||||||
|
}
|
||||||
|
true
|
||||||
|
})
|
||||||
|
txtDStart!!.setOnEditorActionListener(TextView.OnEditorActionListener { v, actionId, event ->
|
||||||
|
if (event == null || event.action != KeyEvent.ACTION_DOWN) {
|
||||||
|
updateRoute()
|
||||||
|
}
|
||||||
|
true
|
||||||
|
})
|
||||||
|
txtDFin!!.setOnEditorActionListener(TextView.OnEditorActionListener { v, actionId, event ->
|
||||||
|
if (event == null || event.action != KeyEvent.ACTION_DOWN) {
|
||||||
|
updateRoute()
|
||||||
|
}
|
||||||
|
true
|
||||||
|
})*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getSubComponent(): RouteComponent {
|
||||||
|
return app.component.plus(RouteModule())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun editRoute(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getHour(dtStart:String):String{
|
||||||
|
|
||||||
|
val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
||||||
|
try {
|
||||||
|
var cal = Calendar.getInstance()
|
||||||
|
cal.time = format.parse(dtStart)
|
||||||
|
val f = DecimalFormat("00")
|
||||||
|
return ""+f.format(cal.get(Calendar.HOUR_OF_DAY))+":"+f.format(cal.get(Calendar.MINUTE))
|
||||||
|
|
||||||
|
|
||||||
|
} catch (e: ParseException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateRoute(v:View){
|
||||||
|
|
||||||
|
if (txtKmStart!!.text.trim().length > 0) {
|
||||||
|
route!!.kmStart = txtKmStart!!.text.trim().toString()
|
||||||
|
}
|
||||||
|
if (txtKmEnd!!.text.trim().length > 0) {
|
||||||
|
route!!.kmEnd = txtKmEnd!!.text.trim().toString()
|
||||||
|
}
|
||||||
|
if (txtDStart!!.text.trim().length > 0) {
|
||||||
|
route!!.dStart = txtDStart!!.text.trim().toString()
|
||||||
|
}
|
||||||
|
if (txtDFin!!.text.trim().length > 0) {
|
||||||
|
route!!.dEnd = txtDFin!!.text.trim().toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
btnGuardar!!.text = "Cargando..."
|
||||||
|
val jsonObjectRequest = object : StringRequest(Request.Method.POST, utils!!.getHost() + "delivery/update_routes",
|
||||||
|
Response.Listener { response ->
|
||||||
|
|
||||||
|
Toast.makeText(this,"Datos actualizados", Toast.LENGTH_SHORT).show()
|
||||||
|
btnGuardar!!.text = "GUARDAR"
|
||||||
|
},
|
||||||
|
Response.ErrorListener { error ->
|
||||||
|
Log.i("RESPUESTA", "Error peticion " + utils!!.parseNetworkError(error))
|
||||||
|
onError(error)
|
||||||
|
btnGuardar!!.text = "GUARDAR"
|
||||||
|
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
override fun getHeaders(): Map<String, String> {
|
||||||
|
return utils!!.getHeadersForRequest()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getBody(): ByteArray {
|
||||||
|
val body: String = "[\"" + route!!.Id + "\",\"" + route!!.kmStart + "\",\"" + route!!.kmEnd + "\",\"" + route!!.dStart + "\",\"" + route!!.dEnd + "\"]"
|
||||||
|
return body.toByteArray(Charsets.UTF_8)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
queue!!.add(jsonObjectRequest)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onError(error: VolleyError){
|
||||||
|
if (error.networkResponse != null){
|
||||||
|
Toast.makeText(this,"Error de servidor", Toast.LENGTH_SHORT).show()
|
||||||
|
}else{
|
||||||
|
Toast.makeText(this,"Error de conexión", Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun cancelConf(v:View){
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -3,6 +3,8 @@ package es.verdnatura.vndelivery.presentation.view.activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.View
|
||||||
|
import es.verdnatura.domain.entity.Route
|
||||||
import es.verdnatura.presentation.di.components.RouteComponent
|
import es.verdnatura.presentation.di.components.RouteComponent
|
||||||
import es.verdnatura.presentation.di.modules.RouteModule
|
import es.verdnatura.presentation.di.modules.RouteModule
|
||||||
import es.verdnatura.presentation.navigation.RouterNavigator
|
import es.verdnatura.presentation.navigation.RouterNavigator
|
||||||
|
@ -50,4 +52,8 @@ class RouteActivity: BaseActivity(), HasComponent<RouteComponent>, RouterNavigat
|
||||||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun navigateToConfig(route: Route){
|
||||||
|
navigator.navigateToConfig(this,route)
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -22,7 +22,9 @@ class SignActivity: BaseActivity(), HasComponent<SignComponent> {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
val tickets = intent.extras.getIntArray(TICKETS).toList()
|
val tickets = intent.extras.getIntArray(TICKETS).toList()
|
||||||
val packages = intent.extras.getInt(PACKAGES)
|
val packages = intent.extras.getInt(PACKAGES)
|
||||||
addFragment(R.id.fragmentContainer, SignFragment(tickets, packages))
|
val lat = intent.extras.getDouble("lat")
|
||||||
|
val long = intent.extras.getDouble("long")
|
||||||
|
addFragment(R.id.fragmentContainer, SignFragment(tickets, packages,lat,long))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSubComponent(): SignComponent {
|
override fun getSubComponent(): SignComponent {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package es.verdnatura.vndelivery.presentation.view.activity
|
package es.verdnatura.vndelivery.presentation.view.activity
|
||||||
|
|
||||||
|
import android.location.Location
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import es.verdnatura.presentation.di.components.TicketComponent
|
import es.verdnatura.presentation.di.components.TicketComponent
|
||||||
import es.verdnatura.presentation.di.modules.TicketModule
|
import es.verdnatura.presentation.di.modules.TicketModule
|
||||||
|
@ -28,8 +29,8 @@ class TicketActivity: BaseActivity(), HasComponent<TicketComponent>, NavigateToS
|
||||||
return app.component.plus(TicketModule())
|
return app.component.plus(TicketModule())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun navigateToSign(tickets: List<Int>, packages: Int) {
|
override fun navigateToSign(tickets: List<Int>, packages: Int,location:es.verdnatura.domain.entity.Location) {
|
||||||
navigator.navigateToSign(this, tickets, packages)
|
navigator.navigateToSign(this, tickets, packages,location)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import es.verdnatura.domain.entity.Route
|
import es.verdnatura.domain.entity.Route
|
||||||
import es.verdnatura.vndelivery.presentation.R
|
import es.verdnatura.vndelivery.presentation.R
|
||||||
|
import es.verdnatura.vndelivery.presentation.view.activity.RouteActivity
|
||||||
import kotlinx.android.synthetic.main.item_route.view.*
|
import kotlinx.android.synthetic.main.item_route.view.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,6 +41,16 @@ class RouteAdapter(var items: MutableList<Route>, val listener: (Route) -> Unit)
|
||||||
|
|
||||||
setOnClickListener { listener(item) }
|
setOnClickListener { listener(item) }
|
||||||
|
|
||||||
|
btnConfig.setOnClickListener(View.OnClickListener {
|
||||||
|
if (context is RouteActivity) {
|
||||||
|
(context as RouteActivity).navigateToConfig(item)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
btnEntrar.setOnClickListener(View.OnClickListener {
|
||||||
|
listener(item)
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package es.verdnatura.presentation.view.adapter
|
package es.verdnatura.presentation.view.adapter
|
||||||
|
|
||||||
|
import android.app.AlertDialog
|
||||||
|
import android.content.DialogInterface
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.support.v7.widget.RecyclerView
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -8,6 +11,7 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import es.verdnatura.core.components.dialogs.options.DialogOptions
|
import es.verdnatura.core.components.dialogs.options.DialogOptions
|
||||||
import es.verdnatura.core.components.dialogs.options.DialogOptionsItem
|
import es.verdnatura.core.components.dialogs.options.DialogOptionsItem
|
||||||
|
import es.verdnatura.domain.entity.Location
|
||||||
import es.verdnatura.domain.entity.Ticket
|
import es.verdnatura.domain.entity.Ticket
|
||||||
import es.verdnatura.presentation.view.component.ticket.TicketData
|
import es.verdnatura.presentation.view.component.ticket.TicketData
|
||||||
import es.verdnatura.presentation.view.dialog.DialogNotes
|
import es.verdnatura.presentation.view.dialog.DialogNotes
|
||||||
|
@ -18,7 +22,7 @@ import java.util.*
|
||||||
/**
|
/**
|
||||||
* Created by nelo on 7/7/17.
|
* Created by nelo on 7/7/17.
|
||||||
*/
|
*/
|
||||||
class TicketAdapter(var items: MutableList<List<Ticket>>, val signAction: (List<Int>, Int) -> Unit) : RecyclerView.Adapter<TicketAdapter.ViewHolder>() {
|
class TicketAdapter(var items: MutableList<List<Ticket>>, val signAction: (List<Int>, Int,Location) -> Unit) : RecyclerView.Adapter<TicketAdapter.ViewHolder>() {
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_ticket, parent, false)
|
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_ticket, parent, false)
|
||||||
|
@ -30,7 +34,7 @@ class TicketAdapter(var items: MutableList<List<Ticket>>, val signAction: (List<
|
||||||
override fun getItemCount() = items.size
|
override fun getItemCount() = items.size
|
||||||
|
|
||||||
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||||
fun bind(item: List<Ticket>, signAction: (List<Int>, Int) -> Unit) = with(itemView) {
|
fun bind(item: List<Ticket>, signAction: (List<Int>, Int,Location) -> Unit) = with(itemView) {
|
||||||
val ticket = item[0]
|
val ticket = item[0]
|
||||||
textClientValue.text = "${ticket.Client} ${ticket.ClientName}"
|
textClientValue.text = "${ticket.Client} ${ticket.ClientName}"
|
||||||
textConsigneValue.text = ticket.Address.toString()
|
textConsigneValue.text = ticket.Address.toString()
|
||||||
|
@ -52,7 +56,14 @@ class TicketAdapter(var items: MutableList<List<Ticket>>, val signAction: (List<
|
||||||
|
|
||||||
maps.setOnClickListener { goToMaps(ticket) }
|
maps.setOnClickListener { goToMaps(ticket) }
|
||||||
|
|
||||||
sign.setOnClickListener { signAction(item.map { t -> t.Id }, getPackagesNumber(item)) }
|
var items = item.map { t -> t.Id }
|
||||||
|
var latLong =
|
||||||
|
sign.setOnClickListener {
|
||||||
|
var loc:Location = Location()
|
||||||
|
loc.Latitude = ticket.Latitude
|
||||||
|
loc.Longitude = ticket.Longitude
|
||||||
|
signAction(item.map { t -> t.Id }, getPackagesNumber(item),loc)
|
||||||
|
}
|
||||||
|
|
||||||
ticketGrouped.removeAllViews()
|
ticketGrouped.removeAllViews()
|
||||||
item.forEach { t -> ticketGrouped.addView(getTicketData(t)) }
|
item.forEach { t -> ticketGrouped.addView(getTicketData(t)) }
|
||||||
|
@ -77,10 +88,37 @@ class TicketAdapter(var items: MutableList<List<Ticket>>, val signAction: (List<
|
||||||
}
|
}
|
||||||
|
|
||||||
fun goToMaps(ticket: Ticket){
|
fun goToMaps(ticket: Ticket){
|
||||||
var uri = "geo:0,0?q=${ticket.ClientName}"
|
var uri = "geo:0,0?q=${ticket.ClientName} ${ticket.AddressName} ${ticket.City}"
|
||||||
if(ticket.Loc.Longitude != 0.0 && ticket.Loc.Latitude != 0.0)
|
if(ticket.Longitude != 0.0 && ticket.Latitude != 0.0)
|
||||||
uri = String.format(Locale.ENGLISH, "geo:0,0?q=%f,%f", ticket.Loc.Latitude, ticket.Loc.Longitude)
|
uri = String.format(Locale.ENGLISH, "geo:0,0?q=%f,%f", ticket.Latitude, ticket.Longitude)
|
||||||
itemView.context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(uri)))
|
if (isGoogleMapsInstalled()) {
|
||||||
|
itemView.context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(uri)))
|
||||||
|
} else {
|
||||||
|
val builder = AlertDialog.Builder(itemView.context)
|
||||||
|
builder.setMessage("Install Google Maps")
|
||||||
|
builder.setCancelable(true)
|
||||||
|
builder.setPositiveButton("Install", getGoogleMapsListener())
|
||||||
|
val dialog = builder.create()
|
||||||
|
dialog.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun isGoogleMapsInstalled(): Boolean {
|
||||||
|
try {
|
||||||
|
val info = itemView.context.getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0)
|
||||||
|
return true
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
fun getGoogleMapsListener(): DialogInterface.OnClickListener {
|
||||||
|
return object : DialogInterface.OnClickListener{
|
||||||
|
override fun onClick(dialog: DialogInterface, which: Int) {
|
||||||
|
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.google.android.apps.maps"))
|
||||||
|
itemView.context.startActivity(intent)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPackagesNumber(tickets: List<Ticket>): Int{
|
fun getPackagesNumber(tickets: List<Ticket>): Int{
|
||||||
|
|
|
@ -45,13 +45,14 @@ class RouteFragment: ListFragment(), UpdateView {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
getComponent(RouteComponent::class.java).inject(this)
|
getComponent(RouteComponent::class.java).inject(this)
|
||||||
presenter.setView(this)
|
presenter.setView(this)
|
||||||
presenter.listRoutes()
|
|
||||||
presenter.getVersion(getVersionApp())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
location.createLocationManager(activity)
|
location.createLocationManager(activity)
|
||||||
|
presenter.listRoutes()
|
||||||
|
presenter.getVersion(getVersionApp())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
|
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
|
||||||
|
|
|
@ -1,24 +1,30 @@
|
||||||
package es.verdnatura.vndelivery.presentation.view.fragment
|
package es.verdnatura.vndelivery.presentation.view.fragment
|
||||||
|
|
||||||
|
import android.app.AlertDialog
|
||||||
|
import android.app.DialogFragment
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuInflater
|
import android.view.MenuInflater
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.widget.Toast
|
||||||
import es.verdnatura.core.UtilsResources
|
import es.verdnatura.core.UtilsResources
|
||||||
import es.verdnatura.data.image.ImageConverter
|
import es.verdnatura.data.image.ImageConverter
|
||||||
import es.verdnatura.presentation.di.components.SignComponent
|
import es.verdnatura.presentation.di.components.SignComponent
|
||||||
import es.verdnatura.presentation.location.LocationProvider
|
import es.verdnatura.presentation.location.LocationProvider
|
||||||
import es.verdnatura.presentation.presenter.SignPresenter
|
import es.verdnatura.presentation.presenter.SignPresenter
|
||||||
|
import es.verdnatura.presentation.view.dialog.DialogLocation
|
||||||
import es.verdnatura.presentation.view.view.SignView
|
import es.verdnatura.presentation.view.view.SignView
|
||||||
import es.verdnatura.vndelivery.presentation.R
|
import es.verdnatura.vndelivery.presentation.R
|
||||||
import kotlinx.android.synthetic.main.fragment_sign.*
|
import kotlinx.android.synthetic.main.fragment_sign.*
|
||||||
|
import org.jetbrains.anko.alert
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by nelo on 10/7/17.
|
* Created by nelo on 10/7/17.
|
||||||
*/
|
*/
|
||||||
class SignFragment(val tickets: List<Int>, val packages: Int): BaseFragment(R.layout.fragment_sign), SignView {
|
class SignFragment(val tickets: List<Int>, val packages: Int,val lat:Double,val long:Double): BaseFragment(R.layout.fragment_sign), SignView {
|
||||||
|
|
||||||
@Inject lateinit var presenter: SignPresenter
|
@Inject lateinit var presenter: SignPresenter
|
||||||
@Inject lateinit var location: LocationProvider
|
@Inject lateinit var location: LocationProvider
|
||||||
|
@ -50,10 +56,60 @@ class SignFragment(val tickets: List<Int>, val packages: Int): BaseFragment(R.la
|
||||||
|
|
||||||
fun signTickets(){
|
fun signTickets(){
|
||||||
val loc = location.getLastKnowLocation(activity)
|
val loc = location.getLastKnowLocation(activity)
|
||||||
|
//COMMPBORAR DISTANCIA ENTRE UNO Y OTRO
|
||||||
|
val isLong = checkMeters(loc)
|
||||||
val sign = ink.bitmap
|
val sign = ink.bitmap
|
||||||
val signString = imageConverter.imageToString(sign)
|
val signString = imageConverter.imageToString(sign)
|
||||||
if(loc != null) presenter.signTicket(signString, tickets, loc.longitude, loc.latitude)
|
|
||||||
else presenter.signTicket(signString, tickets, null, null)
|
if (isLong){
|
||||||
|
alert(R.string.long_location_message) {
|
||||||
|
title("Alert")
|
||||||
|
yesButton {
|
||||||
|
if(loc != null) presenter.signTicket(signString, tickets, loc.longitude, loc.latitude)
|
||||||
|
else presenter.signTicket(signString, tickets, null, null)
|
||||||
|
}
|
||||||
|
noButton {
|
||||||
|
presenter.signTicket(signString, tickets, null, null)
|
||||||
|
}
|
||||||
|
}.show()
|
||||||
|
}else{
|
||||||
|
if(loc != null) presenter.signTicket(signString, tickets, loc.longitude, loc.latitude)
|
||||||
|
else presenter.signTicket(signString, tickets, null, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkMeters(locStart: android.location.Location?):Boolean{
|
||||||
|
if (locStart!=null){
|
||||||
|
var dist = meterDistanceBetweenPoints(locStart.latitude!!,locStart.longitude!!,lat,long)
|
||||||
|
if(dist>30.0)return true
|
||||||
|
}else return false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun meterDistanceBetweenPoints(lat_a: Double, lng_a: Double, lat_b: Double, lng_b: Double): Double {
|
||||||
|
val pk = (180f / Math.PI).toDouble()
|
||||||
|
|
||||||
|
val a1 = lat_a / pk
|
||||||
|
val a2 = lng_a / pk
|
||||||
|
val b1 = lat_b / pk
|
||||||
|
val b2 = lng_b / pk
|
||||||
|
|
||||||
|
val t1 = Math.cos(a1.toDouble()) * Math.cos(a2.toDouble()) * Math.cos(b1.toDouble()) * Math.cos(b2.toDouble())
|
||||||
|
val t2 = Math.cos(a1.toDouble()) * Math.sin(a2.toDouble()) * Math.cos(b1.toDouble()) * Math.sin(b2.toDouble())
|
||||||
|
val t3 = Math.sin(a1.toDouble()) * Math.sin(b1.toDouble())
|
||||||
|
val tt = Math.acos(t1 + t2 + t3)
|
||||||
|
|
||||||
|
return 6366000 * tt
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun showToast(){
|
||||||
|
val toast = Toast.makeText(this.activity.baseContext,"Guardando firma...", Toast.LENGTH_SHORT);
|
||||||
|
toast.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -8,6 +8,7 @@ import android.view.MenuInflater
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import es.verdnatura.core.UtilsResources
|
import es.verdnatura.core.UtilsResources
|
||||||
|
import es.verdnatura.domain.entity.Location
|
||||||
import es.verdnatura.domain.entity.Ticket
|
import es.verdnatura.domain.entity.Ticket
|
||||||
import es.verdnatura.presentation.di.components.TicketComponent
|
import es.verdnatura.presentation.di.components.TicketComponent
|
||||||
import es.verdnatura.presentation.navigation.NavigateToSign
|
import es.verdnatura.presentation.navigation.NavigateToSign
|
||||||
|
@ -61,7 +62,7 @@ class TicketFragment(val route: Int): ListFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <T> generateAdapter(elements: List<T>): RecyclerView.Adapter<*> {
|
override fun <T> generateAdapter(elements: List<T>): RecyclerView.Adapter<*> {
|
||||||
return TicketAdapter(elements as MutableList<List<Ticket>>, { it, p -> sign(it, p) })
|
return TicketAdapter(elements as MutableList<List<Ticket>>, { it,p,l -> sign(it,p,l) })
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <T> changeItems(elements: List<T>) {
|
override fun <T> changeItems(elements: List<T>) {
|
||||||
|
@ -76,8 +77,8 @@ class TicketFragment(val route: Int): ListFragment() {
|
||||||
presenter.downloadTickets(route)
|
presenter.downloadTickets(route)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sign(tickets: List<Int>, packages: Int){
|
fun sign(tickets: List<Int>, packages: Int,location: Location){
|
||||||
navigator.navigateToSign(tickets, packages)
|
navigator.navigateToSign(tickets, packages,location)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun changeMenuTitle(item: MenuItem?) {
|
fun changeMenuTitle(item: MenuItem?) {
|
||||||
|
|
|
@ -8,5 +8,7 @@ import es.verdnatura.vndelivery.presentation.view.view.BaseView
|
||||||
interface SignView: BaseView {
|
interface SignView: BaseView {
|
||||||
|
|
||||||
fun close()
|
fun close()
|
||||||
|
fun showToast()
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,233 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/grisclarogoogle">
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/linearLayout"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/green"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="10dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/txtRuta"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Ruta 45643"
|
||||||
|
android:textColor="@color/grisclarogoogle"
|
||||||
|
android:textSize="18dp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/lkm"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/linearLayout"
|
||||||
|
android:background="@color/txtreservado"
|
||||||
|
android:padding="10dp">
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Kilometros"
|
||||||
|
android:textColor="@color/green"
|
||||||
|
android:textSize="18dp"
|
||||||
|
android:layout_marginBottom="2dp"/>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="2dp"
|
||||||
|
android:background="@color/green"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginBottom="8dp"></LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginBottom="8dp">
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Km de inicio:"
|
||||||
|
android:textColor="@color/negrogoogle"
|
||||||
|
android:textSize="16dp"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="text"
|
||||||
|
android:maxLines="1"/>
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/txtKmStart"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/grisclarogoogle"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="124567"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxLines="1"/>
|
||||||
|
</LinearLayout>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Km fin:"
|
||||||
|
android:textColor="@color/negrogoogle"
|
||||||
|
android:textSize="16dp"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/txtKmEnd"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/grisclarogoogle"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="124567"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxLines="1"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/lkm"
|
||||||
|
android:background="@color/txtreservado"
|
||||||
|
android:padding="10dp">
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Horas"
|
||||||
|
android:textColor="@color/green"
|
||||||
|
android:textSize="18dp"
|
||||||
|
android:layout_marginBottom="2dp"/>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="2dp"
|
||||||
|
android:background="@color/green"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginBottom="8dp"></LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginBottom="8dp">
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Hora de inicio:"
|
||||||
|
android:textColor="@color/negrogoogle"
|
||||||
|
android:textSize="16dp"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/txtDStart"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/grisclarogoogle"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="124567"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:focusable="false"/>
|
||||||
|
</LinearLayout>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Hora fin:"
|
||||||
|
android:textColor="@color/negrogoogle"
|
||||||
|
android:textSize="16dp"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="text"
|
||||||
|
android:maxLines="1"/>
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/txtDFin"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/grisclarogoogle"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="124567"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="text"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:focusable="false"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent">
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnCancelar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="cancelar"
|
||||||
|
android:background="@color/grisgoogle"
|
||||||
|
android:textColor="@color/grisclarogoogle"
|
||||||
|
android:onClick="cancelConf"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnGuardar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="guardar"
|
||||||
|
android:background="@color/green"
|
||||||
|
android:textColor="@color/grisclarogoogle"
|
||||||
|
android:onClick="updateRoute"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
|
@ -2,7 +2,7 @@
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:id="@+id/containerList"
|
android:id="@+id/containerList"
|
||||||
style="@style/WidhtMatchHeightMatch"
|
style="@style/WidhtMatchHeightMatch"
|
||||||
android:background="@color/background_grey"
|
android:background="@color/grisclarogoogle"
|
||||||
android:padding="@dimen/padding_large">
|
android:padding="@dimen/padding_large">
|
||||||
|
|
||||||
<es.verdnatura.core.components.swiperefreshlayout.VnSwipeRefreshLayout
|
<es.verdnatura.core.components.swiperefreshlayout.VnSwipeRefreshLayout
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/colorPrimary">
|
android:background="@color/grisclarogoogle">
|
||||||
|
|
||||||
<es.verdnatura.core.components.login.Vnlogin
|
<es.verdnatura.core.components.login.Vnlogin
|
||||||
android:id="@+id/vnLogin"
|
android:id="@+id/vnLogin"
|
||||||
|
|
|
@ -89,5 +89,39 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginTop="20dp">
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnConfig"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="Configurar"
|
||||||
|
android:background="@color/grisgoogle"
|
||||||
|
android:textColor="@color/grisclarogoogle"
|
||||||
|
android:layout_marginRight="4dp"/>
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnEntrar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="Entrar"
|
||||||
|
android:background="@color/green"
|
||||||
|
android:textColor="@color/grisclarogoogle"
|
||||||
|
android:layout_marginLeft="4dp"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
|
@ -34,5 +34,12 @@
|
||||||
<string name="menu_logout">Salir</string>
|
<string name="menu_logout">Salir</string>
|
||||||
|
|
||||||
<string name="location_message">Encienda la localización para continuar</string>
|
<string name="location_message">Encienda la localización para continuar</string>
|
||||||
|
<string name="activity_config">Configurar</string>
|
||||||
|
<string name="kminicio">KM Inicio</string>
|
||||||
|
<string name="kmfin">KM Fin</string>
|
||||||
|
<string name="horaInicio">Hora Inicio</string>
|
||||||
|
<string name="horaFin">Hora FIN</string>
|
||||||
|
|
||||||
|
<string name="long_location_message">La localización supera en 30 metros respecto a la almacenada. ¿Quieres modificar la localización?</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue