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>
|
||||
</option>
|
||||
</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" />
|
||||
</component>
|
||||
<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 {
|
||||
ext {
|
||||
androidApplicationId = 'es.verdnatura.vndelivery.presentation'
|
||||
androidVersionCode = 3
|
||||
androidVersionName = "1.0.3"
|
||||
androidVersionCode = 6
|
||||
androidVersionName = "1.0.5"
|
||||
testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
|
||||
testApplicationId = 'es.verdnatura.vndelivery.presentation.test'
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -33,7 +33,11 @@ class RouteDb {
|
|||
TableRoute.DRIVER to TEXT,
|
||||
TableRoute.M3 to REAL,
|
||||
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.PLATE to r.Plate,
|
||||
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.HOUR,
|
||||
TableRoute.M3,
|
||||
TableRoute.PLATE)
|
||||
TableRoute.PLATE,
|
||||
TableRoute.KMSTART,
|
||||
TableRoute.KMEND,
|
||||
TableRoute.DSTART,
|
||||
TableRoute.DEND)
|
||||
if(onlyToday)
|
||||
sql = sql.whereSimple("${TableRoute.DATE} = ?", today)
|
||||
sql.exec {
|
||||
|
@ -117,7 +129,11 @@ class RouteDb {
|
|||
columns[TableRoute.M3].toString().toDouble(),
|
||||
columns[TableRoute.PLATE] 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 {
|
||||
|
||||
val TABLE_ROUTE = "TABLE_ROUTE"
|
||||
val TABLE_ROUTE = "TABLE_ROUTE_v2"
|
||||
val ID = "ID"
|
||||
val HOUR = "HOUR"
|
||||
val DATE = "DATE"
|
||||
|
@ -15,6 +15,13 @@ class TableRoute {
|
|||
val PLATE = "PLATE"
|
||||
val AGENCY = "AGENCY"
|
||||
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){
|
||||
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.PACKAGES to ticket.Packages,
|
||||
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()
|
||||
}
|
||||
if (ticket.Packages > 0) {
|
||||
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.PACKAGES to ticket.Packages,
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
||||
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) }
|
||||
}
|
||||
|
|
|
@ -12,4 +12,8 @@ class RouteDto {
|
|||
var Plate = ""
|
||||
var Agency = ""
|
||||
var Driver = ""
|
||||
var kmStart = ""
|
||||
var kmEnd = ""
|
||||
var dStart = ""
|
||||
var dEnd = ""
|
||||
}
|
|
@ -19,5 +19,7 @@ class TicketDto {
|
|||
var Phones = listOf<String>()
|
||||
var Location = LocationDto()
|
||||
var Signed = 0
|
||||
var Longitude = 0.0
|
||||
var Latitude = 0.0
|
||||
|
||||
}
|
|
@ -9,15 +9,15 @@ class Host {
|
|||
|
||||
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/"
|
||||
|
||||
|
||||
|
||||
fun getHost(): String{
|
||||
if(Build.FINGERPRINT.startsWith("generic"))
|
||||
return RELEASEHOST
|
||||
return RELEASEHOST
|
||||
return TESTHOST
|
||||
return TESTHOST
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,9 @@ import es.verdnatura.data.entity.RouteDto
|
|||
import io.reactivex.Observable
|
||||
import okhttp3.ResponseBody
|
||||
import retrofit2.Response
|
||||
import retrofit2.http.Field
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Query
|
||||
|
||||
/**
|
||||
* Created by nelo on 5/7/17.
|
||||
|
@ -20,4 +22,6 @@ interface RouteApi {
|
|||
@POST("bin/vndelivery.apk")
|
||||
fun getApk(): Observable<Response<ResponseBody>>
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -21,6 +21,8 @@ import javax.inject.Singleton
|
|||
*/
|
||||
@Singleton
|
||||
class RouteApiImpl: RouteRepository {
|
||||
|
||||
|
||||
val routeDb: RouteDb
|
||||
val serializer: Serializer
|
||||
val routeApi: RouteApi
|
||||
|
|
|
@ -54,7 +54,7 @@ class TicketApiImpl: TicketRepository {
|
|||
|
||||
override fun getTickets(route: Int): Observable<List<Ticket>> {
|
||||
var tickets = listOf<Ticket>()
|
||||
return ticketApi.getTickets(route)
|
||||
var result = ticketApi.getTickets(route)
|
||||
.map { tickets -> serializer.serialize(tickets, List::class.java) }
|
||||
.map { json -> serializer.deserializeList(json, Ticket::class.java) }
|
||||
.map { ts -> tickets = ts }
|
||||
|
@ -65,6 +65,7 @@ class TicketApiImpl: TicketRepository {
|
|||
.map { tt -> markUploadedTicket(tickets, tt)}
|
||||
.map { tt -> tt }
|
||||
.doOnError { t -> generateError(t, R.string.error_tickets) }
|
||||
return result
|
||||
}
|
||||
|
||||
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>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" exported="" name="rxjava-2.0.6" level="project" />
|
||||
<orderEntry type="library" exported="" name="javax.inject-1" level="project" />
|
||||
<orderEntry type="library" exported="" name="kotlin-stdlib-1.1.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="okio-1.11.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="reactive-streams-1.0.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="annotations-13.0" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="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="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="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="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="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="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="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="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="" name="Gradle: rxjava-2.0.6" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: javax.inject-1" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: kotlin-stdlib-1.1.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: okio-1.11.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: reactive-streams-1.0.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: annotations-13.0" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: junit-4.12" 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="Gradle: mockito-kotlin-1.1.0" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: kluent-1.14" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: assertj-core-1.7.1" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: hamcrest-core-1.3" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: kotlin-test-1.1.0" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: kotlin-reflect-1.0.6" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: mockito-core-2.4.5" level="project" />
|
||||
<orderEntry type="library" exported="" scope="TEST" name="Gradle: byte-buddy-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="Gradle: objenesis-2.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="Gradle: junixsocket-common-2.0.4" 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="Gradle: log4j-1.2.17" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -1,13 +1,14 @@
|
|||
package es.verdnatura.domain.entity
|
||||
|
||||
import java.io.Serializable
|
||||
import javax.inject.Named
|
||||
|
||||
/**
|
||||
* 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.Hour = hour
|
||||
this.Date = date
|
||||
|
@ -15,6 +16,11 @@ class Route() {
|
|||
this.Plate = plate
|
||||
this.Agency = agency
|
||||
this.Driver = driver
|
||||
|
||||
this.kmStart = kmStart
|
||||
this.kmEnd = kmEnd
|
||||
this.dStart = dStart
|
||||
this.dEnd = dEnd
|
||||
}
|
||||
|
||||
@Named("Id")
|
||||
|
@ -38,4 +44,17 @@ class Route() {
|
|||
@Named("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.Uploaded = uploaded
|
||||
this.UpdateIntent = update_intent
|
||||
|
||||
if(latitude != "null" && longitude != "null") {
|
||||
this.Longitude = longitude.toDouble()
|
||||
this.Latitude = latitude.toDouble()
|
||||
val loc = Location()
|
||||
loc.Longitude = longitude.toDouble()
|
||||
loc.Latitude = latitude.toDouble()
|
||||
|
@ -70,7 +73,7 @@ class Ticket() {
|
|||
@Named("Phones")
|
||||
var Phones = listOf<String>()
|
||||
|
||||
@Named("LocationDto")
|
||||
@Named("Location")
|
||||
var Loc = Location()
|
||||
|
||||
@Named("Signed")
|
||||
|
@ -81,4 +84,10 @@ class Ticket() {
|
|||
|
||||
@Named("UpdateIntent")
|
||||
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 fileTree(dir: 'libs', include: '*.jar')
|
||||
compile 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
|
||||
compile 'com.android.volley:volley:1.1.0'
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
|
@ -41,6 +41,9 @@
|
|||
<activity android:name=".view.activity.SignDataActivity"
|
||||
android:label="@string/activity_tickets"/>
|
||||
|
||||
<activity android:name=".view.activity.ConfigActivity"
|
||||
android:label="@string/activity_config"/>
|
||||
|
||||
<activity android:name=".view.activity.SignActivity"
|
||||
android:label="@string/activity_tickets"
|
||||
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
|
||||
|
||||
import es.verdnatura.domain.entity.Location
|
||||
|
||||
/**
|
||||
* Created by nelo on 10/7/17.
|
||||
*/
|
||||
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 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 javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
@ -26,10 +29,12 @@ class Navigator @Inject constructor(){
|
|||
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)
|
||||
intent.putExtra(SignActivity.TICKETS, tickets.toIntArray())
|
||||
intent.putExtra(SignActivity.PACKAGES, packages)
|
||||
intent.putExtra("lat",location.Latitude)
|
||||
intent.putExtra("long",location.Longitude)
|
||||
activity.startActivity(intent)
|
||||
}
|
||||
|
||||
|
@ -37,4 +42,10 @@ class Navigator @Inject constructor(){
|
|||
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
|
||||
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import es.verdnatura.domain.interactor.ticket.SignTicketsUseCase
|
||||
import es.verdnatura.domain.interactor.ticket.UploadSignsUseCase
|
||||
import es.verdnatura.presentation.observer.UploadObserver
|
||||
|
@ -40,6 +41,7 @@ class SignPresenter: BasePresenter {
|
|||
}
|
||||
|
||||
fun uploadSign(fileName: String){
|
||||
view.showToast()
|
||||
uploadSignUseCase.execute(SignObserverFinish(this), UploadSignsUseCase.Params.forUploadSign(fileName))
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package es.verdnatura.presentation.presenter
|
||||
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import es.verdnatura.domain.entity.Ticket
|
||||
import es.verdnatura.domain.interactor.ticket.FilterTicketsUseCase
|
||||
import es.verdnatura.domain.interactor.ticket.GetTicketsUseCase
|
||||
|
@ -22,6 +23,7 @@ class TicketPresenter: BasePresenter {
|
|||
private val selectTicketUseCase: SelectTicketUseCase
|
||||
private val filterTicketUSeCase: FilterTicketsUseCase
|
||||
private var filter:Boolean = false
|
||||
public var listOnline:List<List<Ticket>>? = null
|
||||
|
||||
|
||||
@Inject
|
||||
|
@ -51,10 +53,33 @@ class TicketPresenter: BasePresenter {
|
|||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun onFilterTickets(tickets: List<List<Ticket>>){
|
||||
createAdapter(tickets)
|
||||
}
|
||||
|
@ -72,6 +97,10 @@ class TicketPresenter: BasePresenter {
|
|||
selectTicketUseCase.execute(TicketDbObserver(this), SelectTicketUseCase.Params.forSelectTickets(route))
|
||||
}
|
||||
|
||||
fun onCompareDbTickets(route: Int){
|
||||
selectTicketUseCase.execute(TicketDbCompare(this), SelectTicketUseCase.Params.forSelectTickets(route))
|
||||
}
|
||||
|
||||
fun filterTickets(signed: Boolean){
|
||||
if (signed != filter) {
|
||||
filter = signed
|
||||
|
@ -82,10 +111,13 @@ class TicketPresenter: BasePresenter {
|
|||
class TicketObserver(val presenter: TicketPresenter, val route: Int): DisposableObserver<List<List<Ticket>>>(){
|
||||
|
||||
override fun onNext(t: List<List<Ticket>>?) {
|
||||
presenter.onDownloadTickets(t!!)
|
||||
presenter.listOnline = t!!
|
||||
presenter.onCompareDbTickets(route)
|
||||
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable?) {
|
||||
presenter.listOnline = null
|
||||
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>>> () {
|
||||
override fun onNext(t: List<List<Ticket>>?) {
|
||||
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.net.Uri
|
||||
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.modules.RouteModule
|
||||
import es.verdnatura.presentation.navigation.RouterNavigator
|
||||
|
@ -50,4 +52,8 @@ class RouteActivity: BaseActivity(), HasComponent<RouteComponent>, RouterNavigat
|
|||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
fun navigateToConfig(route: Route){
|
||||
navigator.navigateToConfig(this,route)
|
||||
}
|
||||
}
|
|
@ -22,7 +22,9 @@ class SignActivity: BaseActivity(), HasComponent<SignComponent> {
|
|||
super.onCreate(savedInstanceState)
|
||||
val tickets = intent.extras.getIntArray(TICKETS).toList()
|
||||
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 {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package es.verdnatura.vndelivery.presentation.view.activity
|
||||
|
||||
import android.location.Location
|
||||
import android.os.Bundle
|
||||
import es.verdnatura.presentation.di.components.TicketComponent
|
||||
import es.verdnatura.presentation.di.modules.TicketModule
|
||||
|
@ -28,8 +29,8 @@ class TicketActivity: BaseActivity(), HasComponent<TicketComponent>, NavigateToS
|
|||
return app.component.plus(TicketModule())
|
||||
}
|
||||
|
||||
override fun navigateToSign(tickets: List<Int>, packages: Int) {
|
||||
navigator.navigateToSign(this, tickets, packages)
|
||||
override fun navigateToSign(tickets: List<Int>, packages: Int,location:es.verdnatura.domain.entity.Location) {
|
||||
navigator.navigateToSign(this, tickets, packages,location)
|
||||
}
|
||||
|
||||
}
|
|
@ -6,6 +6,7 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import es.verdnatura.domain.entity.Route
|
||||
import es.verdnatura.vndelivery.presentation.R
|
||||
import es.verdnatura.vndelivery.presentation.view.activity.RouteActivity
|
||||
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) }
|
||||
|
||||
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
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.DialogInterface
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
|
@ -8,6 +11,7 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import es.verdnatura.core.components.dialogs.options.DialogOptions
|
||||
import es.verdnatura.core.components.dialogs.options.DialogOptionsItem
|
||||
import es.verdnatura.domain.entity.Location
|
||||
import es.verdnatura.domain.entity.Ticket
|
||||
import es.verdnatura.presentation.view.component.ticket.TicketData
|
||||
import es.verdnatura.presentation.view.dialog.DialogNotes
|
||||
|
@ -18,7 +22,7 @@ import java.util.*
|
|||
/**
|
||||
* 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 {
|
||||
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
|
||||
|
||||
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]
|
||||
textClientValue.text = "${ticket.Client} ${ticket.ClientName}"
|
||||
textConsigneValue.text = ticket.Address.toString()
|
||||
|
@ -52,7 +56,14 @@ class TicketAdapter(var items: MutableList<List<Ticket>>, val signAction: (List<
|
|||
|
||||
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()
|
||||
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){
|
||||
var uri = "geo:0,0?q=${ticket.ClientName}"
|
||||
if(ticket.Loc.Longitude != 0.0 && ticket.Loc.Latitude != 0.0)
|
||||
uri = String.format(Locale.ENGLISH, "geo:0,0?q=%f,%f", ticket.Loc.Latitude, ticket.Loc.Longitude)
|
||||
itemView.context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(uri)))
|
||||
var uri = "geo:0,0?q=${ticket.ClientName} ${ticket.AddressName} ${ticket.City}"
|
||||
if(ticket.Longitude != 0.0 && ticket.Latitude != 0.0)
|
||||
uri = String.format(Locale.ENGLISH, "geo:0,0?q=%f,%f", ticket.Latitude, ticket.Longitude)
|
||||
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{
|
||||
|
|
|
@ -45,13 +45,14 @@ class RouteFragment: ListFragment(), UpdateView {
|
|||
super.onViewCreated(view, savedInstanceState)
|
||||
getComponent(RouteComponent::class.java).inject(this)
|
||||
presenter.setView(this)
|
||||
presenter.listRoutes()
|
||||
presenter.getVersion(getVersionApp())
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
location.createLocationManager(activity)
|
||||
presenter.listRoutes()
|
||||
presenter.getVersion(getVersionApp())
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
|
||||
|
|
|
@ -1,24 +1,30 @@
|
|||
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.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import es.verdnatura.core.UtilsResources
|
||||
import es.verdnatura.data.image.ImageConverter
|
||||
import es.verdnatura.presentation.di.components.SignComponent
|
||||
import es.verdnatura.presentation.location.LocationProvider
|
||||
import es.verdnatura.presentation.presenter.SignPresenter
|
||||
import es.verdnatura.presentation.view.dialog.DialogLocation
|
||||
import es.verdnatura.presentation.view.view.SignView
|
||||
import es.verdnatura.vndelivery.presentation.R
|
||||
import kotlinx.android.synthetic.main.fragment_sign.*
|
||||
import org.jetbrains.anko.alert
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* 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 location: LocationProvider
|
||||
|
@ -50,10 +56,60 @@ class SignFragment(val tickets: List<Int>, val packages: Int): BaseFragment(R.la
|
|||
|
||||
fun signTickets(){
|
||||
val loc = location.getLastKnowLocation(activity)
|
||||
//COMMPBORAR DISTANCIA ENTRE UNO Y OTRO
|
||||
val isLong = checkMeters(loc)
|
||||
val sign = ink.bitmap
|
||||
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.View
|
||||
import es.verdnatura.core.UtilsResources
|
||||
import es.verdnatura.domain.entity.Location
|
||||
import es.verdnatura.domain.entity.Ticket
|
||||
import es.verdnatura.presentation.di.components.TicketComponent
|
||||
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<*> {
|
||||
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>) {
|
||||
|
@ -76,8 +77,8 @@ class TicketFragment(val route: Int): ListFragment() {
|
|||
presenter.downloadTickets(route)
|
||||
}
|
||||
|
||||
fun sign(tickets: List<Int>, packages: Int){
|
||||
navigator.navigateToSign(tickets, packages)
|
||||
fun sign(tickets: List<Int>, packages: Int,location: Location){
|
||||
navigator.navigateToSign(tickets, packages,location)
|
||||
}
|
||||
|
||||
fun changeMenuTitle(item: MenuItem?) {
|
||||
|
|
|
@ -8,5 +8,7 @@ import es.verdnatura.vndelivery.presentation.view.view.BaseView
|
|||
interface SignView: BaseView {
|
||||
|
||||
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"
|
||||
android:id="@+id/containerList"
|
||||
style="@style/WidhtMatchHeightMatch"
|
||||
android:background="@color/background_grey"
|
||||
android:background="@color/grisclarogoogle"
|
||||
android:padding="@dimen/padding_large">
|
||||
|
||||
<es.verdnatura.core.components.swiperefreshlayout.VnSwipeRefreshLayout
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/colorPrimary">
|
||||
android:background="@color/grisclarogoogle">
|
||||
|
||||
<es.verdnatura.core.components.login.Vnlogin
|
||||
android:id="@+id/vnLogin"
|
||||
|
|
|
@ -89,5 +89,39 @@
|
|||
</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="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>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue