diff --git a/bench.php b/bench.php
deleted file mode 100644
index 53bfe261b..000000000
--- a/bench.php
+++ /dev/null
@@ -1,81 +0,0 @@
- $function) {
- if (!function_exists($function)) unset($mathFunctions[$key]);
- }
- for ($i=0; $i < $count; $i++) {
- foreach ($mathFunctions as $function) {
- $r = call_user_func_array($function, array($i));
- }
- }
- return number_format(microtime(true) - $time_start, 3);
- }
-
-
- function test_StringManipulation($count = 130000) {
- $time_start = microtime(true);
- $stringFunctions = array("addslashes", "chunk_split", "metaphone", "strip_tags", "md5", "sha1", "strtoupper", "strtolower", "strrev", "strlen", "soundex", "ord");
- foreach ($stringFunctions as $key => $function) {
- if (!function_exists($function)) unset($stringFunctions[$key]);
- }
- $string = "the quick brown fox jumps over the lazy dog";
- for ($i=0; $i < $count; $i++) {
- foreach ($stringFunctions as $function) {
- $r = call_user_func_array($function, array($string));
- }
- }
- return number_format(microtime(true) - $time_start, 3);
- }
-
-
- function test_Loops($count = 19000000) {
- $time_start = microtime(true);
- for($i = 0; $i < $count; ++$i);
- $i = 0; while($i < $count) ++$i;
- return number_format(microtime(true) - $time_start, 3);
- }
-
-
- function test_IfElse($count = 9000000) {
- $time_start = microtime(true);
- for ($i=0; $i < $count; $i++) {
- if ($i == -1) {
- } elseif ($i == -2) {
- } else if ($i == -3) {
- }
- }
- return number_format(microtime(true) - $time_start, 3);
- }
-
-
- $total = 0;
- $functions = get_defined_functions();
- $line = str_pad("-",38,"-");
- echo "
$line\n|".str_pad("PHP BENCHMARK SCRIPT",36," ",STR_PAD_BOTH)."|\n$line\nStart : ".date("Y-m-d H:i:s")."\nServer : {$_SERVER['SERVER_NAME']}@{$_SERVER['SERVER_ADDR']}\nPHP version : ".PHP_VERSION."\nPlatform : ".PHP_OS. "\n$line\n";
- foreach ($functions['user'] as $user) {
- if (preg_match('/^test_/', $user)) {
- $total += $result = $user();
- echo str_pad($user, 25) . " : " . $result ." sec.\n";
- }
- }
- echo str_pad("-", 38, "-") . "\n" . str_pad("Total time:", 25) . " : " . $total ." sec.";
-
-?>
-
diff --git a/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Product.java b/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Product.java
index 1ecf7c65c..623b9dfe5 100644
--- a/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Product.java
+++ b/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Product.java
@@ -24,6 +24,9 @@ public class Product {
@SerializedName("price")
private BigDecimal price;
+ @SerializedName("price_locale")
+ private String price_locale;
+
@SerializedName("old_price")
private BigDecimal oldPrice;
@@ -44,13 +47,28 @@ public class Product {
public Product() { }
- public Product(long id, long organizationId, long productCategoryId, String name, String description, BigDecimal price, BigDecimal oldPrice, long totalAmount, long soldAmount, Logo photo, ProductCategory productCategory, Organization organization) {
+ public Product(
+ long id,
+ long organizationId,
+ long productCategoryId,
+ String name,
+ String description,
+ BigDecimal price,
+ String price_locale,
+ BigDecimal oldPrice,
+ long totalAmount,
+ long soldAmount,
+ Logo photo,
+ ProductCategory productCategory,
+ Organization organization
+ ) {
this.id = id;
this.organizationId = organizationId;
this.productCategoryId = productCategoryId;
this.name = name;
this.description = description;
this.price = price;
+ this.price_locale = price_locale;
this.oldPrice = oldPrice;
this.totalAmount = totalAmount;
this.soldAmount = soldAmount;
@@ -102,6 +120,9 @@ public void setDescription(String description) {
public BigDecimal getPrice() {
return price;
}
+ public String getPriceLocale() {
+ return price_locale;
+ }
public void setPrice(BigDecimal price) {
this.price = price;
diff --git a/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Transaction.java b/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Transaction.java
index 3cdbd40ac..43c2ab228 100644
--- a/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Transaction.java
+++ b/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Transaction.java
@@ -19,9 +19,15 @@ public class Transaction {
@SerializedName("amount")
private BigDecimal amount;
+ @SerializedName("amount_locale")
+ private String amount_locale;
+
@SerializedName("amount_extra_cash")
private BigDecimal amount_extra_cash;
+ @SerializedName("amount_extra_cash_locale")
+ private String amount_extra_cash_locale;
+
@SerializedName("address")
private String address;
@@ -56,14 +62,17 @@ public class Transaction {
public Transaction() { }
- public Transaction(Long id, Long organizationId, Long productId, BigDecimal amount, BigDecimal amount_extra_cash,
+ public Transaction(Long id, Long organizationId, Long productId, BigDecimal amount, String amount_locale, BigDecimal amount_extra_cash,
+ String amount_extra_cash_locale,
String address, Date createdAt, Date updatedAt, String date, Long timestamp,
Organization organization, Product product, Fund fund, String state, String note) {
this.id = id;
this.organizationId = organizationId;
this.productId = productId;
this.amount = amount;
+ this.amount_locale = amount_locale;
this.amount_extra_cash = amount_extra_cash;
+ this.amount_extra_cash_locale = amount_extra_cash_locale;
this.address = address;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
@@ -104,6 +113,10 @@ public BigDecimal getAmount() {
return amount;
}
+ public String getAmountLocale() {
+ return amount_locale;
+ }
+
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
@@ -184,6 +197,10 @@ public BigDecimal getAmount_extra_cash() {
return amount_extra_cash;
}
+ public String getAmountExtraCashLocale() {
+ return amount_extra_cash_locale;
+ }
+
public void setAmount_extra_cash(BigDecimal amount_extra_cash) {
this.amount_extra_cash = amount_extra_cash;
diff --git a/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Voucher.java b/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Voucher.java
index d5ec0df8b..fab3c1884 100644
--- a/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Voucher.java
+++ b/data/src/main/java/io/forus/me/android/data/entity/vouchers/response/Voucher.java
@@ -53,6 +53,9 @@ public enum Type {
@SerializedName("amount")
private BigDecimal amount;
+ @SerializedName("amount_locale")
+ private String amount_locale;
+
@SerializedName("fund")
private Fund fund;
@@ -78,13 +81,31 @@ public enum Type {
@SerializedName("amount_visible")
private boolean amount_visible;
- public Voucher() { }
-
- public Voucher(Long fundId, String identityAddress, String address, Date createdAt, String createdAtLocale,
- boolean expired, String expireAtLocale, Long timestamp, Type type, Product product, BigDecimal amount,
- Fund fund, List transactions, List allowedOrganizations, List allowedProductCategories,
- List allowedProducts, List childVouchers, List offices,
- boolean amount_visible) {
+ public Voucher() {
+ }
+
+ public Voucher(
+ Long fundId,
+ String identityAddress,
+ String address,
+ Date createdAt,
+ String createdAtLocale,
+ boolean expired,
+ String expireAtLocale,
+ Long timestamp,
+ Type type,
+ Product product,
+ BigDecimal amount,
+ String amount_locale,
+ Fund fund,
+ List transactions,
+ List allowedOrganizations,
+ List allowedProductCategories,
+ List allowedProducts,
+ List childVouchers,
+ List offices,
+ boolean amount_visible
+ ) {
this.fundId = fundId;
this.identityAddress = identityAddress;
this.address = address;
@@ -96,6 +117,7 @@ public Voucher(Long fundId, String identityAddress, String address, Date created
this.type = type;
this.product = product;
this.amount = amount;
+ this.amount_locale = amount_locale;
this.fund = fund;
this.transactions = transactions;
this.allowedOrganizations = allowedOrganizations;
@@ -181,6 +203,9 @@ public void setProduct(Product product) {
public BigDecimal getAmount() {
return amount;
}
+ public String getAmountLocale() {
+ return amount_locale;
+ }
public void setAmount(BigDecimal amount) {
this.amount = amount;
@@ -262,11 +287,11 @@ public void setUsed(boolean used) {
this.used = used;
}
- public void setAmountVisible(boolean amount_visible){
+ public void setAmountVisible(boolean amount_visible) {
this.amount_visible = amount_visible;
}
- public boolean getAmountVisible(){
+ public boolean getAmountVisible() {
return amount_visible;
}
}
diff --git a/data/src/main/java/io/forus/me/android/data/net/MeServiceFactory.java b/data/src/main/java/io/forus/me/android/data/net/MeServiceFactory.java
index d77107123..c5208714d 100755
--- a/data/src/main/java/io/forus/me/android/data/net/MeServiceFactory.java
+++ b/data/src/main/java/io/forus/me/android/data/net/MeServiceFactory.java
@@ -51,7 +51,6 @@ public T createRetrofitService(final Class clazz, final String endPoint)
}
public T createRetrofitService(final Class clazz, final String endPoint, final String customAccessToken) throws Exception{
-
okhttp3.OkHttpClient.Builder httpClient = new okhttp3.OkHttpClient.Builder();
MeHttpLoggingInterceptor logging = new MeHttpLoggingInterceptor(HttpLoggingInterceptor.Logger.DEFAULT);
@@ -59,14 +58,8 @@ public T createRetrofitService(final Class clazz, final String endPoint,
logging.setLogAccessToken(false);
httpClient.addInterceptor(logging);
httpClient.addInterceptor(chain -> {
-
Request original = chain.request();
-
- HttpUrl url = original.url()
- .newBuilder()
- .build();
-
-
+ HttpUrl url = original.url().newBuilder().build();
String userAgent = getUserAgent();
Log.d("forus","userAgent="+userAgent);
@@ -134,7 +127,6 @@ private String getUserAgent(){
e.printStackTrace();
}
-
return String.format(Locale.US,
"%s/%s (Android %s; %s; %s %s; %s)",
appName,
@@ -145,8 +137,4 @@ private String getUserAgent(){
Build.DEVICE,
Locale.getDefault().getLanguage());
}
-
-
-
-
}
diff --git a/data/src/main/java/io/forus/me/android/data/net/common/CommonService.kt b/data/src/main/java/io/forus/me/android/data/net/common/CommonService.kt
index 0b22658ff..312f2948c 100644
--- a/data/src/main/java/io/forus/me/android/data/net/common/CommonService.kt
+++ b/data/src/main/java/io/forus/me/android/data/net/common/CommonService.kt
@@ -1,8 +1,5 @@
package io.forus.me.android.data.net.common
-import io.forus.me.android.data.entity.common.Success
-import io.forus.me.android.data.entity.records.request.*
-import io.forus.me.android.data.entity.records.response.*
import io.reactivex.Observable
import okhttp3.ResponseBody
import retrofit2.http.*
@@ -11,12 +8,6 @@ import retrofit2.http.*
* Created by maestrovs on 03.05.2020
*/
interface CommonService {
-
-
-
@GET("api/v1/status")
fun status() : Observable
-
-
-
}
\ No newline at end of file
diff --git a/data/src/main/java/io/forus/me/android/data/repository/common/CommonRepository.kt b/data/src/main/java/io/forus/me/android/data/repository/common/CommonRepository.kt
index d8fb42f59..3106d4f4e 100644
--- a/data/src/main/java/io/forus/me/android/data/repository/common/CommonRepository.kt
+++ b/data/src/main/java/io/forus/me/android/data/repository/common/CommonRepository.kt
@@ -4,14 +4,8 @@ import io.forus.me.android.data.repository.common.datasource.CommonDataSource
import io.forus.me.android.domain.repository.common.CommonRepository
import io.reactivex.Observable
-
class CommonRepository(private val commonDataSource: CommonDataSource) : CommonRepository {
-
-
override fun status(): Observable {
- return commonDataSource.status()
- .map {
- it
- }
+ return commonDataSource.status().map { it }
}
}
\ No newline at end of file
diff --git a/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonDataSource.kt b/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonDataSource.kt
index 8f18c5c91..3acb45a2f 100644
--- a/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonDataSource.kt
+++ b/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonDataSource.kt
@@ -1,9 +1,7 @@
package io.forus.me.android.data.repository.common.datasource
-import com.gigawatt.android.data.net.sign.models.request.SignUp
import io.reactivex.Observable
interface CommonDataSource {
-
fun status(): Observable
}
\ No newline at end of file
diff --git a/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonRemoteDataSource.kt b/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonRemoteDataSource.kt
index a10dd40f3..6cd3c278c 100644
--- a/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonRemoteDataSource.kt
+++ b/data/src/main/java/io/forus/me/android/data/repository/common/datasource/CommonRemoteDataSource.kt
@@ -4,14 +4,13 @@ import io.forus.me.android.data.net.common.CommonService
import io.forus.me.android.data.repository.datasource.RemoteDataSource
import io.reactivex.Observable
-class CommonRemoteDataSource(f: () -> CommonService) : CommonDataSource, RemoteDataSource(f) {
+class CommonRemoteDataSource(f: () -> CommonService) : CommonDataSource,
+ RemoteDataSource(f) {
override fun status(): Observable {
- return service.status()
- .map {
- val result = it.string();
- result == "1"||result.isEmpty()
-
- }
+ return service.status().map {
+ val json = it.string()
+ json.contains("\"success\":true")
+ }
}
}
diff --git a/data/src/main/java/io/forus/me/android/data/repository/vouchers/VouchersRepository.kt b/data/src/main/java/io/forus/me/android/data/repository/vouchers/VouchersRepository.kt
index ce6394462..1ce79d055 100644
--- a/data/src/main/java/io/forus/me/android/data/repository/vouchers/VouchersRepository.kt
+++ b/data/src/main/java/io/forus/me/android/data/repository/vouchers/VouchersRepository.kt
@@ -16,10 +16,8 @@ import java.util.*
class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
io.forus.me.android.domain.repository.vouchers.VouchersRepository {
-
val dateLocaleFormat = SimpleDateFormat("MMM dd, yyyy HH:mm", Locale.US)
-
@Suppress("SENSELESS_COMPARISON")
private fun voucherIsUsed(voucher: io.forus.me.android.data.entity.vouchers.response.Voucher): Boolean {
return if (voucher.isUsed != null) {
@@ -42,24 +40,22 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
if (isProduct) voucher.product.organization.name else voucher.fund.organization.name
var createdAt: Date? = null
- try {
- if (voucher.createdAtLocale != null) createdAt =
- dateLocaleFormat.parse(voucher.createdAtLocale)
- } catch (e: Exception) {
+ try {
+ if (voucher.createdAtLocale != null)
+ createdAt = dateLocaleFormat.parse(voucher.createdAtLocale)
+ } catch (_: Exception) {
}
if (createdAt == null) {
- createdAt =
- if (voucher.createdAt != null) voucher.createdAt
- else (Date(voucher.timestamp * 1000))
+ createdAt = voucher.createdAt ?: Date(voucher.timestamp * 1000)
}
val description = if (isProduct) voucher.product.description else null
val product = voucher.product
val amount = voucher.amount ?: voucher.product.price
- val euro = Currency("€")
+ val amountLocale = voucher.amountLocale ?: voucher.product?.priceLocale ?: ""
val productLogoUrl = voucher.product?.photo?.sizes?.large
?: (voucher.product?.organization?.logo?.sizes?.large
?: ((voucher.fund?.logo?.sizes?.large
@@ -67,13 +63,10 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
?: ""))))
val organizationLogoUrl = voucher.product?.organization?.logo?.sizes?.large ?: ""
-
val transactions = mutableListOf()
- if (voucher.transactions != null) {
-
+ if (voucher.transactions != null) {
transactions.addAll(voucher.transactions.map {
-
val fund = Fund(
it.fund.id, it.fund.name, it.fund.organization?.id, null,
Organization(
@@ -88,38 +81,44 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
)
)
- val _product = if (it.product == null) {
- null
- } else {
-
- val logo = if (it.product.organization.logo != null) {
- it.product.organization.logo.sizes.thumbnail
- } else {
+ val voucherProduct =
+ if (it.product == null) {
null
- }
-
- Product(
- it.product.id, it.product.organizationId,
- it.product.productCategoryId,
- it.product.name, it.product.description,
- it.product.price, it.product.oldPrice,
- it.product.totalAmount, it.product.soldAmount,
- ProductCategory(
- it.product.productCategory.id,
- it.product.productCategory.key,
- it.product.productCategory.name
- ),
- Organization(
- it.product.organization.id, it.product.organization.name,
- logo, it.product.organization.lat,
- it.product.organization.lon, it.product.organization.identityAddress,
- it.product.organization.phone, it.product.organization.email
+ } else {
+ val logo = if (it.product.organization.logo != null) {
+ it.product.organization.logo.sizes.thumbnail
+ } else {
+ null
+ }
+
+ Product(
+ it.product.id, it.product.organizationId,
+ it.product.productCategoryId,
+ it.product.name, it.product.description,
+ it.product.price, it.product.oldPrice,
+ it.product.totalAmount, it.product.soldAmount,
+ ProductCategory(
+ it.product.productCategory?.id
+ ?: it.product.productCategoryId,
+ it.product.productCategory?.key ?: "",
+ it.product.productCategory?.name ?: ""
+ ),
+ Organization(
+ it.product.organization.id,
+ it.product.organization.name,
+ logo,
+ it.product.organization.lat,
+ it.product.organization.lon,
+ it.product.organization.identityAddress,
+ it.product.organization.phone,
+ it.product.organization.email
+ )
)
- )
- }
+ }
Transaction(
- it.address, Organization(
+ it.address,
+ Organization(
it.organization.id,
it.organization.name,
it.organization?.logo?.sizes?.large
@@ -132,57 +131,78 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
?: "",
it.organization?.email
?: ""
- ), euro, it.amount, it.amount_extra_cash, it.createdAt, _product, it.state,
- fund, it.note
+ ),
+ it.amount,
+ it.amountLocale,
+ it.amount_extra_cash,
+ it.amountExtraCashLocale,
+ it.createdAt,
+ voucherProduct,
+ it.state,
+ fund,
+ it.note
)
})
}
if (voucher.childVouchers != null) {
transactions.addAll(voucher.childVouchers.map { childVoucher ->
-
-
val organization = childVoucher.product?.organization
- val _product = if (voucher.product == null) {
- null
- } else {
- Product(
- voucher.product.id, voucher.product.organizationId,
- voucher.product.productCategoryId,
- voucher.product.name, voucher.product.description,
- voucher.product.price, voucher.product.oldPrice,
- voucher.product.totalAmount, voucher.product.soldAmount,
- ProductCategory(
- voucher.product.productCategory.id,
- voucher.product.productCategory.key,
- voucher.product.productCategory.name
- ),
- Organization(
- voucher.product.organization.id,
- voucher.product.organization.name,
- voucher.product.organization.logo.sizes.thumbnail,
- voucher.product.organization.lat,
- voucher.product.organization.lon,
- voucher.product.organization.identityAddress,
- voucher.product.organization.phone,
- voucher.product.organization.email
+
+ val voucherProduct =
+ if (voucher.product == null) {
+ null
+ } else {
+ Product(
+ voucher.product.id,
+ voucher.product.organizationId,
+ voucher.product.productCategoryId,
+ voucher.product.name,
+ voucher.product.description,
+ voucher.product.price,
+ voucher.product.oldPrice,
+ voucher.product.totalAmount,
+ voucher.product.soldAmount,
+ ProductCategory(
+ voucher.product.productCategory?.id
+ ?: voucher.product.productCategoryId,
+ voucher.product.productCategory?.key ?: "",
+ voucher.product.productCategory?.name ?: ""
+ ),
+ Organization(
+ voucher.product.organization.id,
+ voucher.product.organization.name,
+ voucher.product.organization.logo?.sizes?.thumbnail,
+ voucher.product.organization.lat,
+ voucher.product.organization.lon,
+ voucher.product.organization.identityAddress,
+ voucher.product.organization.phone,
+ voucher.product.organization.email
+ )
)
- )
- }
+ }
+
Transaction(
- "", Organization(
+ "",
+ Organization(
childVoucher.product.organizationId,
childVoucher.product.name,
"",
- organization?.lat
- ?: 0.0,
+ organization?.lat ?: 0.0,
organization?.lon ?: 0.0,
- organization?.identityAddress
- ?: "",
+ organization?.identityAddress ?: "",
organization?.phone ?: "",
- organization?.email
- ?: ""
- ), euro, childVoucher.amount, 0f.toBigDecimal(), childVoucher.createdAt, _product, null, null, null
+ organization?.email ?: ""
+ ),
+ childVoucher.amount,
+ childVoucher.amountLocale,
+ 0f.toBigDecimal(),
+ null,
+ childVoucher.createdAt,
+ voucherProduct,
+ null,
+ null,
+ null
)
})
}
@@ -191,8 +211,8 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
})
var productMapped: Product? = null
- product?.let {
+ product?.let {
var organization = Organization(
it.organization.id,
it.organization.name, organizationLogoUrl, it.organization.lat,
@@ -234,30 +254,26 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
val offices = mutableListOf()
- if (voucher.offices != null) {
- voucher.offices.map {
+ if (voucher.offices != null) {
+ voucher.offices.forEach { it ->
val schedulers = mutableListOf()
+
if (it.schedule != null) {
- it.schedule.map {
+ it.schedule.forEach {
schedulers.add(
- Schedule(
- it.id,
- it.officeId,
- it.weekDay,
- it.startTime,
- it.endTime
- )
+ Schedule(it.id, it.officeId, it.weekDay, it.startTime, it.endTime)
)
}
}
- var organization = Organization(
+ val organization = Organization(
it.organization.id,
it.organization.name, organizationLogoUrl, it.organization.lat,
it.organization.lon, it.organization.identityAddress ?: "",
it.organization.phone ?: "", it.organization.email ?: ""
)
+
offices.add(
Office(
it.id,
@@ -277,27 +293,23 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
return Voucher(
isProduct,
isUsed,
- voucher.address
- ?: "",
+ voucher.address ?: "",
voucher.identityAddress ?: "",
name,
organizationName,
- voucher.fund?.name
- ?: "",
- voucher.fund?.type
- ?: "",
+ voucher.fund?.name ?: "",
+ voucher.fund?.type ?: "",
voucher.fund?.webShopUrl ?: "",
description,
- createdAt!!,
- euro,
+ createdAt,
amount,
+ amountLocale,
productLogoUrl,
transactions,
productMapped,
voucher.isDeactivated,
voucher.isExpired,
- voucher.expireAtLocale
- ?: "",
+ voucher.expireAtLocale ?: "",
offices,
voucher.amountVisible
)
@@ -324,6 +336,7 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
null
} else {
val org = productAction.organization
+
Organization(
org.id,
org.name,
@@ -340,6 +353,7 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
null
} else {
val org = productAction.sponsor
+
Organization(
org.id,
org.name,
@@ -381,10 +395,9 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
}
private fun mapToLogTransaction(transaction: io.forus.me.android.data.entity.vouchers.response.Transaction): Transaction {
-
-
val fund = Fund(
transaction.fund.id, transaction.fund.name, transaction.fund.organization?.id, null,
+
Organization(
transaction.organization.id,
transaction.organization.name,
@@ -397,7 +410,6 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
)
)
-
val organization: Organization? = if (transaction.organization == null) {
null
} else {
@@ -414,41 +426,44 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
)
}
-
- val product: Product? = if (transaction.product == null) {
- null
- } else {
- val prc = transaction.product
- Product(
- prc.id, prc.organizationId, null, prc.name, null, prc.price,
- null, null, null, null, null
- )
- }
-
-
-
+ val product: Product? =
+ if (transaction.product == null) {
+ null
+ } else {
+ val prc = transaction.product
+ Product(
+ prc.id, prc.organizationId, null, prc.name, null, prc.price,
+ null, null, null, null, null
+ )
+ }
return Transaction(
- transaction.id.toString(), organization, null, transaction.amount,
+ transaction.id.toString(),
+ organization,
+ transaction.amount,
+ transaction.amountLocale,
transaction.amount_extra_cash,
- transaction.createdAt, product, transaction.state, fund, transaction.note
+ transaction.amountExtraCashLocale,
+ transaction.createdAt,
+ product,
+ transaction.state,
+ fund,
+ transaction.note,
)
-
}
-
private fun getFakeVoucherProvider(): VoucherProvider {
val date = Calendar.getInstance().getTime()
- val currency = Currency("EUR", "")
val organization = Organization(
0, "Test bedrijf", "", 0.0, 0.0,
"", "", ""
)
+
val organizationsList = mutableListOf()
organizationsList.add(organization)
val transaction = Transaction(
- "0", organization, currency, 0f.toBigDecimal(), 0f.toBigDecimal(), date, null,
+ "0", organization, 0f.toBigDecimal(), "€ 0,-", 0f.toBigDecimal(), "€ 0,-", date, null,
null, null, ""
)
val transactionList = mutableListOf()
@@ -468,7 +483,7 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
val voucher = Voucher(
false, false, "", "", "Test bedrijf",
"", "", "", "",
- "", date, currency, 1000.toBigDecimal(), "",
+ "", date, 1000.toBigDecimal(), "€ 1000,-", "",
transactionList, product, false, false, "", offices, false
)
@@ -480,7 +495,6 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
return vouchersDataSource.listAllVouchers().map { it.map { mapToSimple(it) } }
}
-
override fun getVoucher(address: String): Observable {
return vouchersDataSource.retrieveVoucher(address).map { mapToSimple(it) }
}
@@ -529,12 +543,12 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
note: String,
organizationId: Long
): Observable {
- return if(amountExtraCash > 0.toBigDecimal()){ //Make transaction with extra cash amount
+ return if (amountExtraCash > 0.toBigDecimal()) { //Make transaction with extra cash amount
vouchersDataSource.makeTransactionWithExtraCashAmount(
address,
MakeTransactionWithExtraCashAmount(amount, amountExtraCash, note, organizationId)
).map { true }
- }else { //Make transaction without extra cash amount
+ } else { //Make transaction without extra cash amount
vouchersDataSource.makeTransaction(
address,
MakeTransaction(
@@ -566,4 +580,4 @@ class VouchersRepository(private val vouchersDataSource: VouchersDataSource) :
it.data.state == "accepted"
}
}
-}
\ No newline at end of file
+}
diff --git a/data/src/main/java/io/forus/me/android/data/repository/vouchers/datasource/TransactionsMockList.kt b/data/src/main/java/io/forus/me/android/data/repository/vouchers/datasource/TransactionsMockList.kt
index 53e379273..f1184137d 100644
--- a/data/src/main/java/io/forus/me/android/data/repository/vouchers/datasource/TransactionsMockList.kt
+++ b/data/src/main/java/io/forus/me/android/data/repository/vouchers/datasource/TransactionsMockList.kt
@@ -1,5 +1,5 @@
package io.forus.me.android.data.repository.vouchers.datasource
-import io.forus.me.android.domain.models.currency.Currency
+
import io.forus.me.android.domain.models.vouchers.Transaction
import java.math.BigDecimal
import java.util.Date
@@ -23,10 +23,21 @@ fun mockTransactionsList(page: Int, perPage: Int): List {
fun generateMockTransaction(id: Int): Transaction {
val organization = null
- val currency = Currency()
val amount = BigDecimal(id)
val createdAt = Date()
val state = "Active"
- return Transaction(id.toString(), organization, currency, amount, 0f.toBigDecimal(), createdAt, null, state, null, null)
+ return Transaction(
+ id.toString(),
+ organization,
+ amount,
+ "€ $id,-",
+ 0f.toBigDecimal(),
+ "€ 0,-",
+ createdAt,
+ null,
+ state,
+ null,
+ null,
+ )
}
diff --git a/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Transaction.kt b/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Transaction.kt
index 60ec543f4..258aeb852 100644
--- a/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Transaction.kt
+++ b/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Transaction.kt
@@ -1,6 +1,5 @@
package io.forus.me.android.domain.models.vouchers
-import io.forus.me.android.domain.models.currency.Currency
import java.math.BigDecimal
import java.util.*
@@ -10,12 +9,14 @@ class Transaction {
var organization: Organization?
- var currency: Currency?
-
var amount: BigDecimal?
+ var amount_locale: String?
+
var amount_extra_cash: BigDecimal?
+ var amount_extra_cash_locale: String?
+
var createdAt: Date?
var type: Type = Type.Payed
@@ -26,15 +27,27 @@ class Transaction {
var fund: Fund?
- var note : String?
-
- constructor(id: String, organization: Organization?, currency: Currency?, amount: BigDecimal?,amount_extra_cash: BigDecimal?, createdAt: Date?,
- product: Product?, state: String?, fund: Fund?, note: String?) {
+ var note: String?
+
+ constructor(
+ id: String,
+ organization: Organization?,
+ amount: BigDecimal?,
+ amount_locale: String?,
+ amount_extra_cash: BigDecimal?,
+ amount_extra_cash_locale: String?,
+ createdAt: Date?,
+ product: Product?,
+ state: String?,
+ fund: Fund?,
+ note: String?
+ ) {
this.id = id
this.organization = organization
- this.currency = currency
this.amount = amount
+ this.amount_locale = amount_locale
this.amount_extra_cash = amount_extra_cash
+ this.amount_extra_cash_locale = amount_extra_cash_locale
this.createdAt = createdAt
this.type = type
this.product = product
diff --git a/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Voucher.kt b/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Voucher.kt
index e4a871888..1ec48b666 100644
--- a/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Voucher.kt
+++ b/domain/src/main/java/io/forus/me/android/domain/models/vouchers/Voucher.kt
@@ -1,13 +1,28 @@
package io.forus.me.android.domain.models.vouchers
-import io.forus.me.android.domain.models.currency.Currency
import java.math.BigDecimal
import java.util.Date
-class Voucher(var isProduct: Boolean?, var isUsed: Boolean?, var address: String?, var identyAddress: String?, var name: String?, var organizationName: String?, var fundName: String?, var fundType: String?, var fundWebShopUrl: String?,
- var description: String?, var createdAt: Date?, var currency: Currency?, var amount: BigDecimal?, var logo: String, var transactions: List, var product: Product? = null,
- val deactivated: Boolean?, val expired: Boolean?, val expireDate: String?, val offices: List,
- var amount_visible: Boolean?) {
-
-
-}
+class Voucher(
+ var isProduct: Boolean?,
+ var isUsed: Boolean?,
+ var address: String?,
+ var identyAddress: String?,
+ var name: String?,
+ var organizationName: String?,
+ var fundName: String?,
+ var fundType: String?,
+ var fundWebShopUrl: String?,
+ var description: String?,
+ var createdAt: Date?,
+ var amount: BigDecimal?,
+ var amount_locale: String,
+ var logo: String,
+ var transactions: List,
+ var product: Product? = null,
+ val deactivated: Boolean?,
+ val expired: Boolean?,
+ val expireDate: String?,
+ val offices: List,
+ var amount_visible: Boolean?
+)
diff --git a/domain/src/main/java/io/forus/me/android/domain/models/wallets/Transaction.kt b/domain/src/main/java/io/forus/me/android/domain/models/wallets/Transaction.kt
index 62192df0b..d4861b3ad 100644
--- a/domain/src/main/java/io/forus/me/android/domain/models/wallets/Transaction.kt
+++ b/domain/src/main/java/io/forus/me/android/domain/models/wallets/Transaction.kt
@@ -23,7 +23,17 @@ class Transaction {
var status: Status
- constructor(id: String, walletId: Long, timestamp: Date, title: String, receiver: String, currency: Currency, value: Double, type: Type, status: Status) {
+ constructor(
+ id: String,
+ walletId: Long,
+ timestamp: Date,
+ title: String,
+ receiver: String,
+ currency: Currency,
+ value: Double,
+ type: Type,
+ status: Status
+ ) {
this.id = id
this.walletId = walletId
this.timestamp = timestamp
@@ -35,7 +45,6 @@ class Transaction {
this.status = status
}
-
enum class Type {
PAYMENT, INCOME
}
diff --git a/presentation/src/dev/AndroidManifest.xml b/presentation/src/dev/AndroidManifest.xml
new file mode 100644
index 000000000..5230cc750
--- /dev/null
+++ b/presentation/src/dev/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/api_config/check_api_status/CheckApiPresenter.kt b/presentation/src/main/java/io/forus/me/android/presentation/api_config/check_api_status/CheckApiPresenter.kt
index acd754238..1cd42207e 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/api_config/check_api_status/CheckApiPresenter.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/api_config/check_api_status/CheckApiPresenter.kt
@@ -5,35 +5,26 @@ import io.forus.me.android.data.net.MeServiceFactory
import io.forus.me.android.data.net.common.CommonService
import io.forus.me.android.data.repository.common.CommonRepository
import io.forus.me.android.data.repository.common.datasource.CommonRemoteDataSource
-import io.forus.me.android.presentation.api_config.ApiConfig
-import io.forus.me.android.presentation.internal.Injection
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
-import javax.inject.Inject
class CheckApiPresenter(val context: Context) {
-
-
fun checkApi(apiString: String, success: (Boolean) -> Unit, error: (Throwable) -> Unit) {
-
try {
-
val commonRemoteDataSource = CommonRemoteDataSource { MeServiceFactory.getInstance().createRetrofitService(CommonService::class.java, apiString) }
-
val commonRepository = CommonRepository(commonRemoteDataSource)
commonRepository.status()
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .map {
- success(it)
- it
- }
- .onErrorReturn {
- error(it)
- false
- }.subscribe()
-
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .map { result ->
+ success(result)
+ result
+ }
+ .onErrorReturn { throwable ->
+ error(throwable)
+ false
+ }.subscribe()
} catch (e: Exception) {
error(e)
}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiErrorDialog.kt b/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiErrorDialog.kt
index 2996f93cd..f1a18fd9b 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiErrorDialog.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiErrorDialog.kt
@@ -2,20 +2,20 @@ package io.forus.me.android.presentation.api_config.dialogs
import android.content.Context
import com.afollestad.materialdialogs.MaterialDialog
-import io.forus.me.android.presentation.R
-
-
-class TestApiErrorDialog(private val context: Context, private val message: String,
- private val cancelListener: () -> Unit){
+class TestApiErrorDialog(
+ context: Context,
+ message: String,
+ private val cancelListener: () -> Unit
+) {
private val dialog: MaterialDialog = MaterialDialog.Builder(context)
- .title("Error test API server")
- .content(message)
- .negativeText("Cancel")
- .cancelListener { cancelListener.invoke() }
- .build()
+ .title("Error test API server")
+ .content(message)
+ .negativeText("Cancel")
+ .cancelListener { cancelListener.invoke() }
+ .build()
- fun show(){
+ fun show() {
dialog.show()
}
}
\ No newline at end of file
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiSuccessDialog.kt b/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiSuccessDialog.kt
index 29e79fbaa..e10cb1639 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiSuccessDialog.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/api_config/dialogs/TestApiSuccessDialog.kt
@@ -2,20 +2,20 @@ package io.forus.me.android.presentation.api_config.dialogs
import android.content.Context
import com.afollestad.materialdialogs.MaterialDialog
-import io.forus.me.android.presentation.R
-
-
-class TestApiSuccessDialog(private val context: Context, private val message: String,
- private val positiveCallback: () -> Unit){
+class TestApiSuccessDialog(
+ context: Context,
+ message: String,
+ private val positiveCallback: () -> Unit
+) {
private val dialog: MaterialDialog = MaterialDialog.Builder(context)
- .title("Success test API server")
- .content(message)
- .positiveText("OK")
- .onPositive { dialog, which -> positiveCallback.invoke() }
- .build()
+ .title("Success test API server")
+ .content(message)
+ .positiveText("OK")
+ .onPositive { dialog, which -> positiveCallback.invoke() }
+ .build()
- fun show(){
+ fun show() {
dialog.show()
}
}
\ No newline at end of file
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/mappers/CurrencyDataMapper.kt b/presentation/src/main/java/io/forus/me/android/presentation/mappers/CurrencyDataMapper.kt
deleted file mode 100644
index daeb1891b..000000000
--- a/presentation/src/main/java/io/forus/me/android/presentation/mappers/CurrencyDataMapper.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package io.forus.me.android.presentation.mappers
-
-import io.forus.me.android.presentation.models.currency.Currency
-import io.forus.me.android.domain.models.currency.Currency as CurrencyDomain
-
-class CurrencyDataMapper: Mapper() {
-
- override fun transform(domainModel: CurrencyDomain?): Currency? =
- if (domainModel != null) Currency(domainModel.name, domainModel.logoUrl) else null
-}
\ No newline at end of file
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/mappers/TransactionDataMapper.kt b/presentation/src/main/java/io/forus/me/android/presentation/mappers/TransactionDataMapper.kt
index 0f1d49b50..856b3f1b1 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/mappers/TransactionDataMapper.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/mappers/TransactionDataMapper.kt
@@ -3,15 +3,20 @@ package io.forus.me.android.presentation.mappers
import io.forus.me.android.presentation.models.vouchers.Transaction
import io.forus.me.android.domain.models.vouchers.Transaction as TransactionDomain
-class TransactionDataMapper(private val currencyDataMapper: CurrencyDataMapper,
- private val organizationDataMapper: OrganizationDataMapper,
- private val productDataMapper: ProductDataMapper) : Mapper() {
-
+class TransactionDataMapper(
+ private val organizationDataMapper: OrganizationDataMapper,
+ private val productDataMapper: ProductDataMapper,
+) : Mapper() {
override fun transform(domainModel: TransactionDomain): Transaction =
- Transaction(domainModel.id,
- if (domainModel.organization != null) organizationDataMapper.transform(domainModel.organization!!) else null,
- if (domainModel.currency != null) currencyDataMapper.transform(domainModel.currency) else null,
- domainModel.amount ?: 0f.toBigDecimal(), domainModel.createdAt,
- Transaction.Type.valueOf(domainModel.type.name),
- if (domainModel.product != null) productDataMapper.transform(domainModel.product!!) else null)
-}
\ No newline at end of file
+ Transaction(
+ domainModel.id,
+ if (domainModel.organization != null) organizationDataMapper.transform(domainModel.organization!!) else null,
+ domainModel.amount ?: 0f.toBigDecimal(),
+ domainModel.amount_locale,
+ domainModel.amount_extra_cash ?: 0f.toBigDecimal(),
+ domainModel.amount_extra_cash_locale,
+ domainModel.createdAt,
+ Transaction.Type.valueOf(domainModel.type.name),
+ if (domainModel.product != null) productDataMapper.transform(domainModel.product!!) else null
+ )
+}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/mappers/VoucherDataMapper.kt b/presentation/src/main/java/io/forus/me/android/presentation/mappers/VoucherDataMapper.kt
index a8581ef00..4c8c15cf2 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/mappers/VoucherDataMapper.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/mappers/VoucherDataMapper.kt
@@ -6,41 +6,42 @@ import io.forus.me.android.presentation.models.vouchers.Voucher
import io.forus.me.android.domain.models.vouchers.Voucher as VoucherDomain
-class VoucherDataMapper(private val currencyDataMapper: CurrencyDataMapper,
- private val transactionDataMapper: TransactionDataMapper,
- private val productDataMapper: ProductDataMapper,
- private val officeDataMapper: OfficeDataMapper) : Mapper() {
+class VoucherDataMapper(
+ private val transactionDataMapper: TransactionDataMapper,
+ private val productDataMapper: ProductDataMapper,
+ private val officeDataMapper: OfficeDataMapper
+) : Mapper() {
override fun transform(domainModel: VoucherDomain): Voucher {
-
return with(domainModel) {
- Voucher(isProduct ?: false,
- isUsed ?: false,
- address ?: "",
- identyAddress?:"",
- name ?: "",
- organizationName ?: "",
- fundName ?: "",
- fundType ?: "",
- fundWebShopUrl ?: "",
- description ?: "",
- createdAt,
- currencyDataMapper.transform(currency),
- amount ?: 0f.toBigDecimal(),
- logo,
- transactionDataMapper.transform(transactions) as List,
- if (product != null) {
- productDataMapper.transform(product!!)
- } else {
- null
- },
- deactivated ?: false,
- expired ?: false,
- expireDate ?: "",
- officeDataMapper.transform(offices) as List,
+ Voucher(
+ isProduct ?: false,
+ isUsed ?: false,
+ address ?: "",
+ identyAddress ?: "",
+ name ?: "",
+ organizationName ?: "",
+ fundName ?: "",
+ fundType ?: "",
+ fundWebShopUrl ?: "",
+ description ?: "",
+ createdAt,
+ amount ?: 0f.toBigDecimal(),
+ amount_locale,
+ logo,
+ transactionDataMapper.transform(transactions) as List,
+ if (product != null) {
+ productDataMapper.transform(product!!)
+ } else {
+ null
+ },
+ deactivated ?: false,
+ expired ?: false,
+ expireDate ?: "",
+ officeDataMapper.transform(offices) as List,
amount_visible ?: false
)
}
}
-}
\ No newline at end of file
+}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Transaction.kt b/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Transaction.kt
index 4b72167ed..153b6d850 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Transaction.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Transaction.kt
@@ -2,23 +2,31 @@ package io.forus.me.android.presentation.models.vouchers
import android.os.Parcel
import android.os.Parcelable
-
-import io.forus.me.android.presentation.models.currency.Currency
import java.math.BigDecimal
-import java.util.*
-
-class Transaction(var id: String, var organization: Organization?, var currency: Currency?, var amount: BigDecimal, var createdAt: Date?,
- var type: Type = Type.Payed, var product: Product?) : Parcelable {
-
-
+import java.util.Date
+
+class Transaction(
+ var id: String,
+ var organization: Organization?,
+ var amount: BigDecimal,
+ var amount_locale: String? = null,
+ var amount_extra_cash: BigDecimal,
+ var amount_extra_cash_locale: String? = null,
+ var createdAt: Date?,
+ var type: Type = Type.Payed,
+ var product: Product?
+) : Parcelable {
constructor(parcel: Parcel) : this(
- parcel.readString() ?: "",
- parcel.readParcelable(Organization::class.java.classLoader)?: Organization(),
- parcel.readParcelable(Currency::class.java.classLoader) ?: Currency(),
- BigDecimal.valueOf(parcel.readDouble()),
- Date(parcel.readLong()),
- Type.valueOf(parcel.readString() ?: "Payed"),
- parcel.readParcelable(Product::class.java.classLoader) ?: null)
+ parcel.readString() ?: "",
+ parcel.readParcelable(Organization::class.java.classLoader) ?: Organization(),
+ BigDecimal.valueOf(parcel.readDouble()),
+ parcel.readString(),
+ BigDecimal.valueOf(parcel.readDouble()),
+ parcel.readString(),
+ Date(parcel.readLong()),
+ Type.valueOf(parcel.readString() ?: "Payed"),
+ parcel.readParcelable(Product::class.java.classLoader) ?: null
+ )
enum class Type {
Payed, Refund, Cancel, Income, Product
@@ -27,8 +35,10 @@ class Transaction(var id: String, var organization: Organization?, var currency:
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(id)
parcel.writeParcelable(organization, flags)
- parcel.writeParcelable(currency, flags)
parcel.writeDouble(amount.toDouble())
+ parcel.writeString(amount_locale)
+ parcel.writeDouble(amount_extra_cash.toDouble())
+ parcel.writeString(amount_extra_cash_locale)
parcel.writeLong(createdAt?.time ?: 0)
parcel.writeString(type.name)
parcel.writeParcelable(product, flags)
@@ -47,5 +57,4 @@ class Transaction(var id: String, var organization: Organization?, var currency:
return arrayOfNulls(size)
}
}
-
}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Voucher.kt b/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Voucher.kt
index ab428cbb3..5d7b9fcdb 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Voucher.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/models/vouchers/Voucher.kt
@@ -2,9 +2,8 @@ package io.forus.me.android.presentation.models.vouchers
import android.os.Parcel
import android.os.Parcelable
-import io.forus.me.android.presentation.models.currency.Currency
import java.math.BigDecimal
-import java.util.*
+import java.util.Date
class Voucher(
var isProduct: Boolean,
@@ -18,8 +17,8 @@ class Voucher(
var fundWebShopUrl: String?,
var description: String?,
var createdAt: Date?,
- var currency: Currency?,
var amount: BigDecimal?,
+ var amount_locale: String?,
var logo: String?,
var transactions: List,
val product: Product? = null,
@@ -41,8 +40,8 @@ class Voucher(
parcel.readString() ?: "",
parcel.readString() ?: "",
Date(parcel.readLong()),
- parcel.readParcelable(Currency::class.java.classLoader) ?: Currency(),
BigDecimal.valueOf(parcel.readDouble()),
+ parcel.readString(),
parcel.readString() ?: "",
parcel.createTypedArrayList(Transaction) ?: listOf(),
parcel.readParcelable(Product::class.java.classLoader),
@@ -51,7 +50,6 @@ class Voucher(
parcel.readString() ?: "",
parcel.createTypedArrayList(Office) ?: listOf(),
parcel.readByte() != 0.toByte()
-
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
@@ -65,7 +63,9 @@ class Voucher(
parcel.writeString(fundType)
parcel.writeString(fundWebShopUrl)
parcel.writeString(description)
- parcel.writeParcelable(currency, flags)
+ parcel.writeLong(createdAt?.time ?: 0)
+ parcel.writeDouble(amount?.toDouble() ?: 0.0)
+ parcel.writeString(amount_locale)
parcel.writeString(logo)
parcel.writeTypedList(transactions)
parcel.writeParcelable(product, flags)
@@ -89,6 +89,4 @@ class Voucher(
return arrayOfNulls(size)
}
}
-
-
}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/account/pair_device/PairDeviceActivity.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/account/pair_device/PairDeviceActivity.kt
index 6ee76cb14..0e6d1d3a0 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/account/pair_device/PairDeviceActivity.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/account/pair_device/PairDeviceActivity.kt
@@ -5,19 +5,13 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import io.forus.me.android.presentation.R
-
-import io.forus.me.android.presentation.view.activity.BaseActivity
import io.forus.me.android.presentation.view.activity.CommonActivity
/**
* Activity Pair Device.
*/
class PairDeviceActivity : CommonActivity() {
-
-
companion object {
-
-
fun getCallingIntent(context: Context): Intent {
return Intent(context, PairDeviceActivity::class.java)
}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/item/VoucherFragment.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/item/VoucherFragment.kt
index 172ec8bb2..c87d2b3e9 100755
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/item/VoucherFragment.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/item/VoucherFragment.kt
@@ -27,9 +27,7 @@ import io.forus.me.android.domain.models.qr.QrCode
import io.forus.me.android.presentation.R
import io.forus.me.android.presentation.UIThread
import io.forus.me.android.presentation.databinding.FragmentVoucherBinding
-import io.forus.me.android.presentation.helpers.format
import io.forus.me.android.presentation.internal.Injection
-import io.forus.me.android.presentation.mappers.CurrencyDataMapper
import io.forus.me.android.presentation.mappers.OfficeDataMapper
import io.forus.me.android.presentation.mappers.OrganizationDataMapper
import io.forus.me.android.presentation.mappers.ProductDataMapper
@@ -128,21 +126,17 @@ class VoucherFragment : ToolbarLRFragment()
- override fun getShortToken(): Observable = shortToken
+ override fun getShortToken(): Observable = shortToken
override fun viewForSnackbar(): View = binding.root
-
override fun loadRefreshPanel() = binding.lrPanel
-
- override fun sendEmail(): Observable = RxView.clicks(binding.btnEmail).map { Unit }
-
- override fun showInfo(): Observable = RxView.clicks(info_button!!).map { Unit }
+ override fun sendEmail(): Observable = RxView.clicks(binding.btnEmail).map { }
+ override fun showInfo(): Observable = RxView.clicks(info_button!!).map { }
private val sendEmailDialogShows = PublishSubject.create()
private val sentEmailDialogShown = PublishSubject.create()
override fun sendEmailDialogShows(): Observable = sendEmailDialogShows
-
override fun sentEmailDialogShown(): Observable = sentEmailDialogShown
override fun onCreate(savedInstanceState: Bundle?) {
@@ -157,12 +151,8 @@ class VoucherFragment : ToolbarLRFragment 0) {
+ if ((activity?.supportFragmentManager?.backStackEntryCount ?: 0) > 0) {
activity?.supportFragmentManager?.popBackStack()
-
} else {
activity?.onBackPressed()
}
@@ -244,7 +217,6 @@ class VoucherFragment : ToolbarLRFragment) {
super.render(vs)
-
binding.name.text = vs.model.item?.name
binding.type.text = vs.model.item?.organizationName
-
-
-
vs.model.item?.let { voucher ->
-
+
setToolbarTitle(resources.getString(if (voucher.isProduct) R.string.vouchers_item_product else R.string.vouchers_item))
if (voucher.fundType == FundType.subsidies.name) {
adapter.isActionsVoucher = true
@@ -376,9 +343,7 @@ class VoucherFragment : ToolbarLRFragment {
showEmailSendDialog()
}
@@ -539,18 +489,13 @@ class VoucherFragment : ToolbarLRFragment() {
-
-
var vouchers: List = emptyList()
set(value) {
val old = field
@@ -18,29 +16,31 @@ class VouchersAdapter : RecyclerView.Adapter() {
DiffUtil.calculateDiff(object : DiffUtil.Callback() {
override fun getOldListSize() = old.size
override fun getNewListSize() = field.size
- override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = old[oldItemPosition] == field[newItemPosition]
- override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = old[oldItemPosition] == field[newItemPosition]
+ override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) =
+ old[oldItemPosition] == field[newItemPosition]
+
+ override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) =
+ old[oldItemPosition] == field[newItemPosition]
}).dispatchUpdatesTo(this)
notifyDataSetChanged()
}
-
+ var clickListener: ((voucher: Voucher, sharedViews: List, position: Int) -> Unit)? = null
+
init {
setHasStableIds(true)
}
- var clickListener: ((voucher: Voucher, sharedViews: List, position: Int) -> Unit)? = null
-
-
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VouchersVH {
- val binding = ItemVouchersListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ val binding =
+ ItemVouchersListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return VouchersVH(binding)
}
override fun onBindViewHolder(holder: VouchersVH, position: Int) {
val item = vouchers[position]
- holder.bind(item){ voucher ->
- clickListener?.invoke(voucher, listOf(),position)
+ holder.bind(item) { voucher ->
+ clickListener?.invoke(voucher, listOf(), position)
}
}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersFragment.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersFragment.kt
index 1e7c58f5f..b2653113b 100755
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersFragment.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersFragment.kt
@@ -1,30 +1,28 @@
package io.forus.me.android.presentation.view.screens.vouchers.list
import android.os.Bundle
-import androidx.recyclerview.widget.LinearLayoutManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.ImageView
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
-import io.forus.me.android.presentation.view.base.lr.LRViewState
+import androidx.recyclerview.widget.LinearLayoutManager
import io.forus.me.android.presentation.R
import io.forus.me.android.presentation.databinding.FragmentVouchersRecyclerBinding
import io.forus.me.android.presentation.internal.Injection
import io.forus.me.android.presentation.models.vouchers.Voucher
-import io.forus.me.android.presentation.view.activity.BaseActivity
import io.forus.me.android.presentation.view.base.MViewModelProvider
+import io.forus.me.android.presentation.view.base.lr.LRViewState
import io.forus.me.android.presentation.view.component.images.AutoLoadImageView
import io.forus.me.android.presentation.view.fragment.ToolbarLRFragment
import io.forus.me.android.presentation.view.screens.vouchers.VoucherViewModel
-import io.forus.me.android.presentation.view.screens.vouchers.item.VoucherFragment
/**
* Fragment Vouchers Delegates Screen.
*/
-class VouchersFragment : ToolbarLRFragment(), VouchersView,
+class VouchersFragment : ToolbarLRFragment(),
+ VouchersView,
MViewModelProvider {
override val viewModel by lazy {
@@ -42,7 +40,6 @@ class VouchersFragment : ToolbarLRFragment, position: Int ->
viewModel.setVoucher(voucher)
- viewModel.setAddress(voucher.address?:"")
+ viewModel.setAddress(voucher.address ?: "")
findNavController().navigate(R.id.action_vouchersFragment_to_voucherFragment)
}
@@ -87,7 +85,7 @@ class VouchersFragment : ToolbarLRFragment) {
super.render(vs)
- binding.tvNoVouchers.visibility = if (!vs.loading && vs.loadingError == null && vs.model.items.isEmpty()) View.VISIBLE else View.INVISIBLE
+ binding.tvNoVouchers.visibility =
+ if (!vs.loading && vs.loadingError == null && vs.model.items.isEmpty()) View.VISIBLE else View.INVISIBLE
adapter.vouchers = vs.model.items
}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersPresenter.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersPresenter.kt
index 877f9cc07..79d95441e 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersPresenter.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersPresenter.kt
@@ -1,9 +1,13 @@
package io.forus.me.android.presentation.view.screens.vouchers.list
-import io.forus.me.android.domain.models.vouchers.Schedule
import io.forus.me.android.domain.repository.vouchers.VouchersRepository
-import io.forus.me.android.presentation.models.currency.Currency
-import io.forus.me.android.presentation.models.vouchers.*
+import io.forus.me.android.presentation.models.vouchers.Office
+import io.forus.me.android.presentation.models.vouchers.Organization
+import io.forus.me.android.presentation.models.vouchers.Product
+import io.forus.me.android.presentation.models.vouchers.ProductCategory
+import io.forus.me.android.presentation.models.vouchers.Schedule
+import io.forus.me.android.presentation.models.vouchers.Transaction
+import io.forus.me.android.presentation.models.vouchers.Voucher
import io.forus.me.android.presentation.view.base.lr.LRPresenter
import io.forus.me.android.presentation.view.base.lr.LRViewState
import io.forus.me.android.presentation.view.base.lr.PartialChange
@@ -11,90 +15,171 @@ import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import java.math.BigDecimal
-class VouchersPresenter constructor(val vouchersRepository: VouchersRepository) : LRPresenter, VouchersModel, VouchersView>() {
-
-
- override fun initialModelSingle(): Single> = Single.fromObservable(vouchersRepository.getVouchers().map { domainVouchers ->
- domainVouchers.map { domainVoucher ->
- with(domainVoucher) {
-
- val transactionsMapped = transactions.map {
-
- val organization = Organization(it.organization?.id ?: 0,
- it.organization?.name ?: "", it.organization?.logo ?: "",
- it.organization?.lat ?: 0.0, it.organization?.lon ?: 0.0,
+class VouchersPresenter(val vouchersRepository: VouchersRepository) :
+ LRPresenter, VouchersModel, VouchersView>() {
+
+ override fun initialModelSingle(): Single> =
+ Single.fromObservable(vouchersRepository.getVouchers().map { domainVouchers ->
+ domainVouchers.map { domainVoucher ->
+ with(domainVoucher) {
+ val transactionsMapped = transactions.map {
+ val organization = Organization(
+ it.organization?.id ?: 0,
+ it.organization?.name ?: "",
+ it.organization?.logo ?: "",
+ it.organization?.lat ?: 0.0,
+ it.organization?.lon ?: 0.0,
it.organization?.address ?: "",
it.organization?.phone ?: "",
- it.organization?.email ?: "")
-
- val product:io.forus.me.android.presentation.models.vouchers.Product? =
- if(it.product == null){ null }else{
- Product(it.product!!.id?:-1L, it.product!!.organizationId?:-1L,
- it.product!!.productCategoryId?:-1L,
- it.product!!.name,it.product!!.description,
- it.product!!.price?: BigDecimal(-1),
- it.product!!.oldPrice?:BigDecimal(-1), it.product!!.totalAmount?:-1L,
- it.product!!.soldAmount?:-1L,
- ProductCategory(it.product?.productCategory?.id?:-1L,
- it.product?.productCategory?.key?:"",
- it.product?.productCategory?.name?:""),organization)
- }
+ it.organization?.email ?: ""
+ )
+ val product: Product? = if (it.product == null) {
+ null
+ } else {
+ Product(
+ it.product!!.id ?: -1L,
+ it.product!!.organizationId ?: -1L,
+ it.product!!.productCategoryId ?: -1L,
+ it.product!!.name,
+ it.product!!.description,
+ it.product!!.price ?: BigDecimal(-1),
+ it.product!!.oldPrice ?: BigDecimal(-1),
+ it.product!!.totalAmount ?: -1L,
+ it.product!!.soldAmount ?: -1L,
+ ProductCategory(
+ it.product?.productCategory?.id ?: -1L,
+ it.product?.productCategory?.key ?: "",
+ it.product?.productCategory?.name ?: ""
+ ),
+ organization
+ )
+ }
- Transaction(it.id, organization,
- Currency(it.currency?.name ?: "", it.currency?.logoUrl ?: ""),
- it?.amount ?: 0f.toBigDecimal(), it.createdAt,
- Transaction.Type.valueOf(it.type.name), product)
- }
- val domainProduct = domainVoucher.product
- val product = when (domainProduct) {
- null -> null
- else -> Product(domainProduct.id ?:-1L,
- domainProduct.organizationId?:-1L,
- domainProduct.productCategoryId?:-1L,
- domainProduct.name, domainProduct.description,
- domainProduct.price?: BigDecimal(-1), domainProduct.oldPrice?: BigDecimal(-1),
- domainProduct.totalAmount?:-1L, domainProduct.soldAmount?:-1L,
- if(domainProduct.productCategory != null){
- ProductCategory( domainProduct.productCategory!!.id,
- domainProduct!!.productCategory!!.key, domainProduct!!.productCategory!!.name)}else{null},
- if(domainProduct.organization!=null){
- Organization(domainProduct.organization!!.id,
- domainProduct.organization!!.name, domainProduct.organization!!.logo, domainProduct.organization!!.lat, domainProduct.organization!!.lon,
- domainProduct.organization!!.address, domainProduct.organization!!.phone, domainProduct.organization!!.email)}else{null})
- }
-
- val officesList = mutableListOf()
- val officesMapped = offices.map {
+ Transaction(
+ it.id,
+ organization,
+ it.amount ?: 0f.toBigDecimal(),
+ it.amount_locale,
+ it.amount_extra_cash ?: 0f.toBigDecimal(),
+ it.amount_extra_cash_locale,
+ it.createdAt,
+ Transaction.Type.valueOf(it.type.name),
+ product
+ )
+ }
- val schedulers = mutableListOf()
- if(it.schedulers != null){
- it.schedulers!!.map {
- schedulers.add(io.forus.me.android.presentation.models.vouchers.Schedule(it.id,it.officeId ?:-1L,it.weekDay?:0,it.startTime,it.endTime))
- }
+ val product = when (val domainProduct = domainVoucher.product) {
+ null -> null
+ else -> Product(
+ domainProduct.id ?: -1L,
+ domainProduct.organizationId ?: -1L,
+ domainProduct.productCategoryId ?: -1L,
+ domainProduct.name,
+ domainProduct.description,
+ domainProduct.price ?: BigDecimal(-1),
+ domainProduct.oldPrice ?: BigDecimal(-1),
+ domainProduct.totalAmount ?: -1L,
+ domainProduct.soldAmount ?: -1L,
+ if (domainProduct.productCategory != null) {
+ ProductCategory(
+ domainProduct.productCategory!!.id,
+ domainProduct.productCategory!!.key,
+ domainProduct.productCategory!!.name
+ )
+ } else {
+ null
+ },
+ if (domainProduct.organization != null) {
+ Organization(
+ domainProduct.organization!!.id,
+ domainProduct.organization!!.name,
+ domainProduct.organization!!.logo,
+ domainProduct.organization!!.lat,
+ domainProduct.organization!!.lon,
+ domainProduct.organization!!.address,
+ domainProduct.organization!!.phone,
+ domainProduct.organization!!.email
+ )
+ } else {
+ null
+ }
+ )
}
+ val officesList = mutableListOf()
+ offices.forEach { it ->
+ val schedulers = mutableListOf()
+
+ if (it.schedulers != null) {
+ it.schedulers!!.forEach {
+ schedulers.add(
+ Schedule(
+ it.id,
+ it.officeId ?: -1L,
+ it.weekDay ?: 0,
+ it.startTime,
+ it.endTime
+ )
+ )
+ }
+ }
- val organization = Organization(it.organization?.id ?: 0,
- it.organization?.name ?: "", it.organization?.logo ?: "",
- it.organization?.lat ?: 0.0, it.organization?.lon ?: 0.0,
+ val organization = Organization(
+ it.organization?.id ?: 0,
+ it.organization?.name ?: "",
+ it.organization?.logo ?: "",
+ it.organization?.lat ?: 0.0,
+ it.organization?.lon ?: 0.0,
it.organization?.address ?: "",
it.organization?.phone ?: "",
- it.organization?.email ?: "")
+ it.organization?.email ?: ""
+ )
+
+ officesList.add(
+ Office(
+ it.id,
+ it.organizationId,
+ it.address,
+ it.phone,
+ it.lat,
+ it.lon,
+ it.photo,
+ organization,
+ schedulers
+ )
+ )
- officesList.add(Office(it.id,it.organizationId,it.address,it.phone,it.lat,it.lon,it.photo,organization, schedulers))
+ }
+ Voucher(
+ isProduct ?: false,
+ isUsed ?: false,
+ address,
+ identyAddress,
+ name,
+ organizationName,
+ fundName,
+ fundType,
+ fundWebShopUrl,
+ description,
+ createdAt,
+ amount,
+ amount_locale,
+ logo,
+ transactionsMapped,
+ product,
+ deactivated ?: false,
+ expired ?: false,
+ expireDate,
+ officesList,
+ amount_visible ?: false
+ )
}
-
- Voucher(isProduct ?: false, isUsed ?: false, address, identyAddress, name, organizationName,
- fundName, fundType,fundWebShopUrl, description, createdAt, Currency(currency?.name, currency?.logoUrl), amount, logo,
- transactionsMapped, product, deactivated ?: false, expired ?: false, expireDate , officesList, amount_visible?:false
- )
}
- }
- })
+ })
override fun VouchersModel.changeInitialModel(i: List): VouchersModel {
val vouchers: MutableList = mutableListOf()
@@ -108,31 +193,24 @@ class VouchersPresenter constructor(val vouchersRepository: VouchersRepository)
val initialViewState = LRViewState(
- false,
- null,
- false,
- false,
- null,
- false,
- VouchersModel(),
- false)
+ false, null, false, false, null, false, VouchersModel(), false
+ )
subscribeViewState(
- observable.scan(initialViewState, this::stateReducer)
- .observeOn(AndroidSchedulers.mainThread()),
- VouchersView::render)
-
+ observable.scan(initialViewState, this::stateReducer)
+ .observeOn(AndroidSchedulers.mainThread()), VouchersView::render
+ )
}
- override fun stateReducer(viewState: LRViewState, change: PartialChange): LRViewState {
-
- if (change !is VouchersPartialChanges) return super.stateReducer(viewState, change)
+ override fun stateReducer(
+ vs: LRViewState, change: PartialChange
+ ): LRViewState {
+ if (change !is VouchersPartialChanges) {
+ return super.stateReducer(vs, change)
+ }
return run {
- super.stateReducer(viewState, change)
+ super.stateReducer(vs, change)
}
-
}
-
-
-}
\ No newline at end of file
+}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersVH.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersVH.kt
index 847d78e80..3189afaab 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersVH.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/list/VouchersVH.kt
@@ -4,7 +4,6 @@ import android.view.View
import androidx.recyclerview.widget.RecyclerView
import io.forus.me.android.presentation.R
import io.forus.me.android.presentation.databinding.ItemVouchersListBinding
-import io.forus.me.android.presentation.helpers.format
import io.forus.me.android.presentation.models.vouchers.FundType
import io.forus.me.android.presentation.models.vouchers.Voucher
@@ -13,8 +12,7 @@ class VouchersVH(private val binding: ItemVouchersListBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(
- item: Voucher,
- clickListener: ((Voucher) -> Unit)?
+ item: Voucher, clickListener: ((Voucher) -> Unit)?
) {
binding.apply {
@@ -45,13 +43,11 @@ class VouchersVH(private val binding: ItemVouchersListBinding) :
usedOrExpiredLb.text = usedOrExpiredLb.context.getString(R.string.voucher_expired)
} else if (item.deactivated) {
usedOrExpiredLb.visibility = View.VISIBLE
- usedOrExpiredLb.text =
- usedOrExpiredLb.context.getString(R.string.voucher_deactivated)
+ usedOrExpiredLb.text = usedOrExpiredLb.context.getString(R.string.voucher_deactivated)
} else {
usedOrExpiredLb.visibility = View.GONE
- value.text = "${item.currency?.name} ${item.amount?.toDouble().format(2)}"
+ value.text = item.amount_locale ?: ""
}
-
}
value.visibility = if (item.isProduct) {
@@ -62,7 +58,6 @@ class VouchersVH(private val binding: ItemVouchersListBinding) :
root.setOnClickListener {
clickListener?.invoke(item)
}
-
}
}
-}
\ No newline at end of file
+}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/product_reservation/ProductReservationPresenter.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/product_reservation/ProductReservationPresenter.kt
index 063f005a2..edcb78dcb 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/product_reservation/ProductReservationPresenter.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/product_reservation/ProductReservationPresenter.kt
@@ -2,108 +2,187 @@ package io.forus.me.android.presentation.view.screens.vouchers.product_reservati
import io.forus.me.android.domain.repository.vouchers.VouchersRepository
import io.forus.me.android.presentation.firestore_logging.FirestoreTokenManager
-import io.forus.me.android.presentation.models.currency.Currency
-import io.forus.me.android.presentation.models.vouchers.*
+import io.forus.me.android.presentation.models.vouchers.Office
+import io.forus.me.android.presentation.models.vouchers.Organization
+import io.forus.me.android.presentation.models.vouchers.Product
+import io.forus.me.android.presentation.models.vouchers.ProductCategory
+import io.forus.me.android.presentation.models.vouchers.Schedule
+import io.forus.me.android.presentation.models.vouchers.Transaction
+import io.forus.me.android.presentation.models.vouchers.Voucher
import io.forus.me.android.presentation.view.base.lr.LRPresenter
import io.forus.me.android.presentation.view.base.lr.LRViewState
import io.forus.me.android.presentation.view.base.lr.PartialChange
-
import io.forus.me.android.presentation.view.screens.vouchers.list.VouchersPartialChanges
-import io.forus.me.android.presentation.view.screens.vouchers.list.VouchersView
-import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
-import io.reactivex.schedulers.Schedulers
import java.math.BigDecimal
-class ProductReservationPresenter constructor(val vouchersRepository: VouchersRepository,
- val voucherAddress: String
- , private val firestoreTokenManager: FirestoreTokenManager
-)
- : LRPresenter, ProductReservationModel, ProductReservationView>() {
-
-
- override fun initialModelSingle(): Single> = Single.fromObservable(vouchersRepository.getProductVouchersAsProvider(voucherAddress).map { domainVouchers ->
- domainVouchers.map { domainVoucher ->
- with(domainVoucher) {
-
- firestoreTokenManager.writeGetProductVoucherAsProvider(
- voucherAddress, true, null
- )
-
- val transactionsMapped = transactions.map {
- val organization = Organization(it.organization?.id ?: 0,
- it.organization?.name ?: "", it.organization?.logo ?: "",
- it.organization?.lat ?: 0.0, it.organization?.lon ?: 0.0,
+class ProductReservationPresenter(
+ val vouchersRepository: VouchersRepository,
+ val voucherAddress: String,
+ private val firestoreTokenManager: FirestoreTokenManager
+) : LRPresenter, ProductReservationModel, ProductReservationView>() {
+ override fun initialModelSingle(): Single> = Single.fromObservable(
+ vouchersRepository.getProductVouchersAsProvider(voucherAddress).map { domainVouchers ->
+ domainVouchers.map { domainVoucher ->
+ with(domainVoucher) {
+
+ firestoreTokenManager.writeGetProductVoucherAsProvider(
+ voucherAddress, true, null
+ )
+
+ val transactionsMapped = transactions.map {
+ val organization = Organization(
+ it.organization?.id ?: 0,
+ it.organization?.name ?: "",
+ it.organization?.logo ?: "",
+ it.organization?.lat ?: 0.0,
+ it.organization?.lon ?: 0.0,
it.organization?.address ?: "",
it.organization?.phone ?: "",
- it.organization?.email ?: "")
-
- val product:io.forus.me.android.presentation.models.vouchers.Product? =
- if(it.product == null){ null }else{
- Product(it.product!!.id?:-1L, it.product!!.organizationId?:-1L,
- it.product!!.productCategoryId?:-1L,
- it.product!!.name,it.product!!.description,
- it.product!!.price?: BigDecimal(-1),
- it.product!!.oldPrice?: BigDecimal(-1), it.product!!.totalAmount?:-1L,
- it.product!!.soldAmount?:-1L,
- ProductCategory(it.product!!.productCategory?.id?:-1L,
- it.product!!.productCategory?.key,
- it.product!!.productCategory?.name),organization)
+ it.organization?.email ?: ""
+ )
+
+ val product: io.forus.me.android.presentation.models.vouchers.Product? =
+ if (it.product == null) {
+ null
+ } else {
+ Product(
+ it.product!!.id ?: -1L,
+ it.product!!.organizationId ?: -1L,
+ it.product!!.productCategoryId ?: -1L,
+ it.product!!.name,
+ it.product!!.description,
+ it.product!!.price ?: BigDecimal(-1),
+ it.product!!.oldPrice ?: BigDecimal(-1),
+ it.product!!.totalAmount ?: -1L,
+ it.product!!.soldAmount ?: -1L,
+ ProductCategory(
+ it.product!!.productCategory?.id ?: -1L,
+ it.product!!.productCategory?.key,
+ it.product!!.productCategory?.name
+ ),
+ organization
+ )
}
- Transaction(it.id, organization,
- Currency(it.currency?.name ?: "", it.currency?.logoUrl ?: ""),
- it?.amount ?: 0f.toBigDecimal(), it.createdAt,
+ Transaction(
+ it.id,
+ organization,
+ it.amount ?: 0f.toBigDecimal(),
+ it.amount_locale,
+ it.amount_extra_cash ?: 0f.toBigDecimal(),
+ it.amount_extra_cash_locale,
+ it.createdAt,
Transaction.Type.valueOf(it.type.name),
- product)
- }
-
- val domainProduct = domainVoucher.product
- val product = when (domainProduct) {
- null -> null
- else -> Product(domainProduct.id?:-1L,
- domainProduct.organizationId?:-1L,
- domainProduct.productCategoryId?:-1L,
- domainProduct.name, domainProduct.description,
- domainProduct.price?: BigDecimal(-1), domainProduct.oldPrice?: BigDecimal(-1),
- domainProduct.totalAmount?:-1L, domainProduct.soldAmount?:-1L,
- ProductCategory( domainProduct.productCategory?.id?:-1L,
- domainProduct.productCategory?.key, domainProduct.productCategory?.name),
- Organization(domainProduct.organization?.id?:-1L,
- domainProduct.organization?.name, domainProduct.organization?.logo, domainProduct.organization?.lat,
- domainProduct.organization?.lon, domainProduct.organization?.address, domainProduct.organization?.phone, domainProduct.organization?.email))
- }
+ product
+ )
+ }
- val officesList = mutableListOf()
- val officesMapped = offices.map {
+ val domainProduct = domainVoucher.product
+
+ val product = when (domainProduct) {
+ null -> null
+ else -> Product(
+ domainProduct.id ?: -1L,
+ domainProduct.organizationId ?: -1L,
+ domainProduct.productCategoryId ?: -1L,
+ domainProduct.name,
+ domainProduct.description,
+ domainProduct.price ?: BigDecimal(-1),
+ domainProduct.oldPrice ?: BigDecimal(-1),
+ domainProduct.totalAmount ?: -1L,
+ domainProduct.soldAmount ?: -1L,
+ ProductCategory(
+ domainProduct.productCategory?.id ?: -1L,
+ domainProduct.productCategory?.key,
+ domainProduct.productCategory?.name
+ ),
+ Organization(
+ domainProduct.organization?.id ?: -1L,
+ domainProduct.organization?.name,
+ domainProduct.organization?.logo,
+ domainProduct.organization?.lat,
+ domainProduct.organization?.lon,
+ domainProduct.organization?.address,
+ domainProduct.organization?.phone,
+ domainProduct.organization?.email
+ )
+ )
+ }
- val schedulers = mutableListOf()
- if(it.schedulers != null){
- it.schedulers!!.map {
- schedulers.add(io.forus.me.android.presentation.models.vouchers.Schedule(it.id,it.officeId ?:-1L,it.weekDay?:0,it.startTime,it.endTime))
+ val officesList = mutableListOf()
+ offices.forEach { it ->
+ val schedulers = mutableListOf()
+
+ if (it.schedulers != null) {
+ it.schedulers!!.forEach {
+ schedulers.add(
+ Schedule(
+ it.id,
+ it.officeId ?: -1L,
+ it.weekDay ?: 0,
+ it.startTime,
+ it.endTime
+ )
+ )
+ }
}
- }
- val organization = Organization(it.organization?.id ?: 0,
- it.organization?.name ?: "", it.organization?.logo ?: "",
- it.organization?.lat ?: 0.0, it.organization?.lon ?: 0.0,
+ val organization = Organization(
+ it.organization?.id ?: 0,
+ it.organization?.name ?: "",
+ it.organization?.logo ?: "",
+ it.organization?.lat ?: 0.0,
+ it.organization?.lon ?: 0.0,
it.organization?.address ?: "",
it.organization?.phone ?: "",
- it.organization?.email ?: "")
+ it.organization?.email ?: ""
+ )
+
+ officesList.add(
+ Office(
+ it.id,
+ it.organizationId,
+ it.address,
+ it.phone,
+ it.lat,
+ it.lon,
+ it.photo,
+ organization,
+ schedulers
+ )
+ )
- officesList.add(Office(it.id,it.organizationId,it.address,it.phone,it.lat,it.lon,it.photo,organization,schedulers))
+ }
+ Voucher(
+ isProduct ?: false,
+ isUsed ?: false,
+ address,
+ identyAddress,
+ name,
+ organizationName,
+ fundName,
+ fundType,
+ fundWebShopUrl,
+ description,
+ createdAt,
+ amount,
+ amount_locale,
+ logo,
+ transactionsMapped,
+ product,
+ deactivated ?: false,
+ expired ?: false,
+ expireDate,
+ officesList,
+ amount_visible ?: false
+ )
}
-
- Voucher(isProduct ?: false, isUsed ?: false, address, identyAddress, name, organizationName,
- fundName, fundType, fundWebShopUrl, description, createdAt, Currency(currency?.name, currency?.logoUrl), amount, logo,
- transactionsMapped, product, deactivated ?: false, expired ?: false, expireDate,officesList, amount_visible?:false
- )
}
- }
- })
+ })
override fun ProductReservationModel.changeInitialModel(i: List): ProductReservationModel {
val vouchers: MutableList = mutableListOf()
@@ -115,35 +194,23 @@ class ProductReservationPresenter constructor(val vouchersRepository: VouchersRe
override fun bindIntents() {
val observable = loadRefreshPartialChanges()
-
val initialViewState = LRViewState(
- false,
- null,
- false,
- false,
- null,
- false,
- ProductReservationModel(),
- false)
+ false, null, false, false, null, false, ProductReservationModel(), false
+ )
subscribeViewState(
- observable.scan(initialViewState, this::stateReducer)
- .observeOn(AndroidSchedulers.mainThread()),
- ProductReservationView::render)
-
+ observable.scan(initialViewState, this::stateReducer)
+ .observeOn(AndroidSchedulers.mainThread()), ProductReservationView::render
+ )
}
-
-
- override fun stateReducer(viewState: LRViewState, change: PartialChange): LRViewState {
-
- if (change !is VouchersPartialChanges) return super.stateReducer(viewState, change)
+ override fun stateReducer(
+ vs: LRViewState, change: PartialChange
+ ): LRViewState {
+ if (change !is VouchersPartialChanges) return super.stateReducer(vs, change)
return run {
- super.stateReducer(viewState, change)
+ super.stateReducer(vs, change)
}
-
}
-
-
-}
\ No newline at end of file
+}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/provider/ProviderFragment.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/provider/ProviderFragment.kt
index ef450e1e8..36c76bb17 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/provider/ProviderFragment.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/provider/ProviderFragment.kt
@@ -1,12 +1,13 @@
package io.forus.me.android.presentation.view.screens.vouchers.provider
+//import kotlinx.android.synthetic.main.fragment_voucher_provider.*
+//import kotlinx.android.synthetic.main.view_organization.*
import android.content.DialogInterface
import android.content.DialogInterface.OnDismissListener
import android.content.res.ColorStateList
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -16,7 +17,6 @@ import io.forus.me.android.domain.exception.RetrofitException
import io.forus.me.android.domain.exception.RetrofitExceptionMapper
import io.forus.me.android.presentation.R
import io.forus.me.android.presentation.databinding.FragmentVoucherProviderBinding
-import io.forus.me.android.presentation.helpers.format
import io.forus.me.android.presentation.internal.Injection
import io.forus.me.android.presentation.models.vouchers.Organization
import io.forus.me.android.presentation.view.base.MViewModelProvider
@@ -33,8 +33,6 @@ import io.forus.me.android.presentation.view.screens.vouchers.provider.dialogs.C
import io.forus.me.android.presentation.view.screens.vouchers.provider.dialogs.organizations_dialog.OrganizationsListDialog
import io.reactivex.Observable
import io.reactivex.subjects.PublishSubject
-//import kotlinx.android.synthetic.main.fragment_voucher_provider.*
-//import kotlinx.android.synthetic.main.view_organization.*
import java.math.BigDecimal
@@ -185,11 +183,7 @@ class ProviderFragment : ToolbarLRFragment
- binding.tvPrice.text = "€ ${amount.toFloat().format(2)}"
- }
-
-
+ binding.tvPrice.text = vs.model.item?.voucher?.amount_locale ?: ""
if (isDemoVoucher != null && isDemoVoucher!!) {
tv_organization_name?.text =
@@ -333,4 +327,4 @@ class ProviderFragment : ToolbarLRFragment() {
+class ProviderPresenter(
+ private val vouchersRepository: VouchersRepository,
+ private val firestoreTokenManager: FirestoreTokenManager,
+ private val address: String,
+ private val isDemoVoucher: Boolean? = false
+) : LRPresenter() {
private var organizationId = 0L
private var note = ""
@@ -24,140 +30,225 @@ class ProviderPresenter constructor(private val vouchersRepository: VouchersRepo
override fun initialModelSingle(): Single {
if (isDemoVoucher != null && isDemoVoucher) {
-
val officesList = mutableListOf()
- return return Single.fromObservable(vouchersRepository.getTestVoucherAsProvider().map {
- VoucherProvider(Voucher(it.voucher?.isProduct ?: false, it.voucher?.isUsed
- ?: false, it.voucher.address, it.voucher.identyAddress,it.voucher.name, it.voucher.organizationName,
- it.voucher.fundName, it.voucher.fundType, it.voucher.fundWebShopUrl, it.voucher.description, it.voucher.createdAt,
- Currency(it.voucher.currency?.name, it.voucher.currency?.logoUrl), it.voucher.amount, it.voucher.logo,
+ return Single.fromObservable(vouchersRepository.getTestVoucherAsProvider().map {
+ VoucherProvider(
+ Voucher(
+ it.voucher.isProduct ?: false,
+ it.voucher.isUsed ?: false,
+ it.voucher.address,
+ it.voucher.identyAddress,
+ it.voucher.name,
+ it.voucher.organizationName,
+ it.voucher.fundName,
+ it.voucher.fundType,
+ it.voucher.fundWebShopUrl,
+ it.voucher.description,
+ it.voucher.createdAt,
+ it.voucher.amount,
+ it.voucher.amount_locale,
+ it.voucher.logo,
it.voucher.transactions.map { transaction ->
- Transaction(transaction.id,
- Organization(transaction.organization?.id ?: 0,
- transaction.organization?.name,
- transaction.organization?.logo,
- transaction.organization?.lat,
- transaction.organization?.lon,
- transaction.organization?.address,
- transaction.organization?.phone,
- transaction.organization?.email),
- Currency(transaction.currency?.name,
- transaction.currency?.logoUrl),
- transaction?.amount ?: 0f.toBigDecimal(),
- transaction.createdAt,
- Transaction.Type.valueOf(transaction.type.name), null)
- }, null, it.voucher.deactivated ?: false, it.voucher.expired ?: false,"", officesList,
- it.voucher.amount_visible?:false
- ),
-
- it.allowedOrganizations.map { organization ->
- Organization(organization.id,
- organization.name,
- organization.logo,
- organization.lat,
- organization.lon,
- organization.address,
- organization.phone,
- organization.email)
+ Transaction(
+ transaction.id,
+ Organization(
+ transaction.organization?.id ?: 0,
+ transaction.organization?.name,
+ transaction.organization?.logo,
+ transaction.organization?.lat,
+ transaction.organization?.lon,
+ transaction.organization?.address,
+ transaction.organization?.phone,
+ transaction.organization?.email
+ ),
+ transaction.amount ?: 0f.toBigDecimal(),
+ transaction.amount_locale,
+ transaction.amount_extra_cash ?: 0f.toBigDecimal(),
+ transaction.amount_extra_cash_locale,
+ transaction.createdAt,
+ Transaction.Type.valueOf(transaction.type.name),
+ null
+ )
},
+ null,
+ it.voucher.deactivated ?: false,
+ it.voucher.expired ?: false,
+ "",
+ officesList,
+ it.voucher.amount_visible ?: false
+ ),
- it.allowedProductCategories.map { productCategory ->
- ProductCategory(productCategory.id, productCategory.key, productCategory.name)
- })
+ it.allowedOrganizations.map { organization ->
+ Organization(
+ organization.id,
+ organization.name,
+ organization.logo,
+ organization.lat,
+ organization.lon,
+ organization.address,
+ organization.phone,
+ organization.email
+ )
+ },
+
+ it.allowedProductCategories.map { productCategory ->
+ ProductCategory(productCategory.id, productCategory.key, productCategory.name)
+ })
})
} else {
- return Single.fromObservable(vouchersRepository.getVoucherAsProvider(address).map {
-
- firestoreTokenManager.writeGetVoucherAsProvider(
- address, true, null
- )
+ return Single.fromObservable(vouchersRepository.getVoucherAsProvider(address).map { it ->
+ firestoreTokenManager.writeGetVoucherAsProvider(address, true, null)
val officesList = mutableListOf()
- val officesMapped = it.voucher.offices.map {
+ it.voucher.offices.forEach {
val schedulers = mutableListOf()
- if(it.schedulers != null){
+
+ if (it.schedulers != null) {
it.schedulers!!.map {
- schedulers.add(io.forus.me.android.presentation.models.vouchers.Schedule(it.id,it.officeId ?:-1L,it.weekDay?:0,it.startTime,it.endTime))
+ schedulers.add(
+ io.forus.me.android.presentation.models.vouchers.Schedule(
+ it.id, it.officeId ?: -1L, it.weekDay ?: 0, it.startTime, it.endTime
+ )
+ )
}
}
- val organization = Organization(it.organization?.id ?: 0,
- it.organization?.name ?: "", it.organization?.logo ?: "",
- it.organization?.lat ?: 0.0, it.organization?.lon ?: 0.0,
- it.organization?.address ?: "",
- it.organization?.phone ?: "",
- it.organization?.email ?: "")
-
- officesList.add(Office(it.id,it.organizationId,it.address,it.phone,it.lat,it.lon,it.photo,organization,schedulers))
+ val organization = Organization(
+ it.organization?.id ?: 0,
+ it.organization?.name ?: "",
+ it.organization?.logo ?: "",
+ it.organization?.lat ?: 0.0,
+ it.organization?.lon ?: 0.0,
+ it.organization?.address ?: "",
+ it.organization?.phone ?: "",
+ it.organization?.email ?: ""
+ )
+
+ officesList.add(
+ Office(
+ it.id,
+ it.organizationId,
+ it.address,
+ it.phone,
+ it.lat,
+ it.lon,
+ it.photo,
+ organization,
+ schedulers
+ )
+ )
}
+ VoucherProvider(
+ Voucher(
+ it.voucher.isProduct ?: false,
+ it.voucher.isUsed ?: false,
+ it.voucher.address,
+ it.voucher.identyAddress,
+ it.voucher.name,
+ it.voucher.organizationName,
+ it.voucher.fundName,
+ it.voucher.fundType,
+ it.voucher.fundWebShopUrl,
+ it.voucher.description,
+ it.voucher.createdAt,
+ it.voucher.amount,
+ it.voucher.amount_locale,
+ it.voucher.logo,
+ it.voucher.transactions.map { transaction ->
+ val organization = Organization(
+ transaction.organization?.id ?: 0,
+ transaction.organization?.name,
+ transaction.organization?.logo,
+ transaction.organization?.lat,
+ transaction.organization?.lon,
+ transaction.organization?.address,
+ transaction.organization?.phone,
+ transaction.organization?.email
+ )
+
+ val product: io.forus.me.android.presentation.models.vouchers.Product? =
+ if (transaction.product == null) {
+ null
+ } else {
+ io.forus.me.android.presentation.models.vouchers.Product(
+ transaction.product?.id ?: -1L,
+ transaction.product!!.organizationId!!,
+ transaction.product!!.productCategoryId!!,
+ transaction.product!!.name,
+ transaction.product!!.description,
+ transaction.product!!.price!!,
+ transaction.product!!.oldPrice!!,
+ transaction.product!!.totalAmount!!,
+ transaction.product!!.soldAmount!!,
+ ProductCategory(
+ transaction.product!!.productCategory?.id ?: -1L,
+ transaction.product!!.productCategory?.key,
+ transaction.product!!.productCategory?.name
+ ),
+ organization
+ )
+ }
- VoucherProvider(Voucher(it.voucher?.isProduct ?: false, it.voucher?.isUsed
- ?: false, it.voucher.address, it.voucher.identyAddress, it.voucher.name, it.voucher.organizationName,
- it.voucher.fundName, it.voucher.fundType, it.voucher.fundWebShopUrl, it.voucher.description, it.voucher.createdAt,
- Currency(it.voucher.currency?.name, it.voucher.currency?.logoUrl), it.voucher.amount, it.voucher.logo,
- it.voucher.transactions.map { transaction ->
- val organization = Organization(transaction.organization?.id ?: 0,
- transaction.organization?.name,
- transaction.organization?.logo,
- transaction.organization?.lat,
- transaction.organization?.lon,
- transaction.organization?.address,
- transaction.organization?.phone,
- transaction.organization?.email)
-
- val product:io.forus.me.android.presentation.models.vouchers.Product? = if(transaction.product == null){ null }else {
- io.forus.me.android.presentation.models.vouchers.Product(transaction.product?.id?:-1L,
- transaction.product!!.organizationId!!,transaction.product!!.productCategoryId!!,
- transaction.product!!.name,transaction.product!!.description,
- transaction.product!!.price!!,transaction.product!!.oldPrice!!,
- transaction.product!!.totalAmount!!,transaction.product!!.soldAmount!!,
- ProductCategory(transaction.product!!.productCategory?.id?:-1L,
- transaction.product!!.productCategory?.key,
- transaction.product!!.productCategory?.name), organization)
- }
-
-
-
- Transaction(transaction.id,organization,
- Currency(transaction.currency?.name,
- transaction.currency?.logoUrl),
- transaction?.amount ?: 0f.toBigDecimal(),
- transaction.createdAt,
- Transaction.Type.valueOf(transaction.type.name), product)
- }, null, it.voucher.deactivated ?: false, it.voucher.expired ?: false,"", officesList,
- it.voucher.amount_visible?:false),
-
- it.allowedOrganizations.map { organization ->
- Organization(organization.id,
- organization.name,
- organization.logo,
- organization.lat,
- organization.lon,
- organization.address,
- organization.phone,
- organization.email)
+ Transaction(
+ transaction.id,
+ organization,
+ transaction.amount ?: 0f.toBigDecimal(),
+ transaction.amount_locale,
+ transaction.amount_extra_cash ?: 0f.toBigDecimal(),
+ transaction.amount_extra_cash_locale,
+ transaction.createdAt,
+ Transaction.Type.valueOf(transaction.type.name),
+ product
+ )
},
+ null,
+ it.voucher.deactivated ?: false,
+ it.voucher.expired ?: false,
+ "",
+ officesList,
+ it.voucher.amount_visible ?: false
+ ),
- it.allowedProductCategories.map { productCategory ->
- ProductCategory(productCategory.id, productCategory.key, productCategory.name)
- })
+ it.allowedOrganizations.map { organization ->
+ Organization(
+ organization.id,
+ organization.name,
+ organization.logo,
+ organization.lat,
+ organization.lon,
+ organization.address,
+ organization.phone,
+ organization.email
+ )
+ },
+
+ it.allowedProductCategories.map { productCategory ->
+ ProductCategory(
+ productCategory.id, productCategory.key, productCategory.name
+ )
+ })
})
}
}
override fun ProviderModel.changeInitialModel(i: VoucherProvider): ProviderModel {
- val organization = if (i.allowedOrganizations.isNotEmpty()) i.allowedOrganizations.get(0) else Organization(organizationId, i.voucher.organizationName, "", i.voucher.product?.organization?.lat
- ?: 0.0, i.voucher.product?.organization?.lon
- ?: 0.0, i.voucher.product?.organization?.address
- ?: "", i.voucher.product?.organization?.phone
- ?: "", i.voucher.product?.organization?.email ?: "")
+ val organization = if (i.allowedOrganizations.isNotEmpty()) i.allowedOrganizations.get(0) else Organization(
+ organizationId,
+ i.voucher.organizationName,
+ "",
+ i.voucher.product?.organization?.lat ?: 0.0,
+ i.voucher.product?.organization?.lon ?: 0.0,
+ i.voucher.product?.organization?.address ?: "",
+ i.voucher.product?.organization?.phone ?: "",
+ i.voucher.product?.organization?.email ?: ""
+ )
organizationId = organization.id
return copy(item = i, selectedOrganization = organization)
}
@@ -166,103 +257,79 @@ class ProviderPresenter constructor(private val vouchersRepository: VouchersRepo
val observable = Observable.merge(
- Arrays.asList(
-
- loadRefreshPartialChanges(),
-
- intent { it.selectAmount() }
- .map { ProviderPartialChanges.SetAmount(it) },
-
- intent { it.selectNote() }
- .map { ProviderPartialChanges.SetNote(it) },
-
-
- intent { it.charge() }
- .switchMap {amount ->
- vouchersRepository.makeTransaction(
- address,
- amount.first,
- amount.second,
- note,
- organizationId
- )
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .map {
- firestoreTokenManager.writeTransaction(
- address, amount.first, note, organizationId, true, null
- )
- ProviderPartialChanges.MakeTransactionEnd()
- }
- .onErrorReturn { throwable ->
- firestoreTokenManager.writeTransaction(
- address, amount.first, note, organizationId, false,
- throwable.localizedMessage
- )
- ProviderPartialChanges.MakeTransactionError(throwable)
- }
- .startWith(ProviderPartialChanges.MakeTransactionStart())
- },
-
-
- intent { it.selectOrganization() }
- .map { ProviderPartialChanges.SelectOrganization(it) },
-
- intent { it.demoCharge() }
- .switchMap {
-
-
- vouchersRepository.makeDemoTransaction(address)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .map {
- ProviderPartialChanges.MakeTransactionEnd()
- }
- .onErrorReturn {
- ProviderPartialChanges.MakeTransactionError(it)
- }
- .startWith(ProviderPartialChanges.MakeTransactionStart())
-
-
- }
- )
+ Arrays.asList(
+ loadRefreshPartialChanges(),
+ intent { it.selectAmount() }.map { ProviderPartialChanges.SetAmount(it) },
+ intent { it.selectNote() }.map { ProviderPartialChanges.SetNote(it) },
+ intent { it.charge() }.switchMap { amount ->
+ vouchersRepository.makeTransaction(
+ address, amount.first, amount.second, note, organizationId
+ ).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).map {
+ firestoreTokenManager.writeTransaction(
+ address, amount.first, note, organizationId, true, null
+ )
+ ProviderPartialChanges.MakeTransactionEnd()
+ }.onErrorReturn { throwable ->
+ firestoreTokenManager.writeTransaction(
+ address, amount.first, note, organizationId, false, throwable.localizedMessage
+ )
+ ProviderPartialChanges.MakeTransactionError(throwable)
+ }.startWith(ProviderPartialChanges.MakeTransactionStart())
+ },
+ intent { it.selectOrganization() }.map { ProviderPartialChanges.SelectOrganization(it) },
+ intent { it.demoCharge() }.switchMap {
+ vouchersRepository.makeDemoTransaction(address).subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread()).map {
+ ProviderPartialChanges.MakeTransactionEnd()
+ }.onErrorReturn {
+ ProviderPartialChanges.MakeTransactionError(it)
+ }.startWith(ProviderPartialChanges.MakeTransactionStart())
+ })
)
- val initialViewState = LRViewState(
- false,
- null,
- false,
- false,
- null,
- false,
- ProviderModel(),
- false)
+ val initialViewState = LRViewState(false, null, false, false, null, false, ProviderModel(), false)
subscribeViewState(
- observable.scan(initialViewState, this::stateReducer)
- .observeOn(AndroidSchedulers.mainThread()),
- ProviderView::render)
+ observable.scan(initialViewState, this::stateReducer).observeOn(AndroidSchedulers.mainThread()),
+ ProviderView::render
+ )
}
- override fun stateReducer(vs: LRViewState, change: PartialChange): LRViewState {
+ override fun stateReducer(
+ vs: LRViewState, change: PartialChange
+ ): LRViewState {
if (change !is ProviderPartialChanges) return super.stateReducer(vs, change)
return when (change) {
- is ProviderPartialChanges.MakeTransactionEnd -> vs.copy(closeScreen = true, model = vs.model.copy(sendingMakeTransaction = false, makeTransactionError = null), loading = false)
- is ProviderPartialChanges.MakeTransactionStart -> vs.copy(model = vs.model.copy(sendingMakeTransaction = true, makeTransactionError = null), loading = true)
- is ProviderPartialChanges.MakeTransactionError -> vs.copy(model = vs.model.copy(sendingMakeTransaction = false, makeTransactionError = change.error))
- is ProviderPartialChanges.SetAmount -> vs.copy(model = vs.model.copy(selectedAmount = change.amount, makeTransactionError = null))
+ is ProviderPartialChanges.MakeTransactionEnd -> vs.copy(
+ closeScreen = true,
+ model = vs.model.copy(sendingMakeTransaction = false, makeTransactionError = null),
+ loading = false
+ )
+
+ is ProviderPartialChanges.MakeTransactionStart -> vs.copy(
+ model = vs.model.copy(sendingMakeTransaction = true, makeTransactionError = null), loading = true
+ )
+
+ is ProviderPartialChanges.MakeTransactionError -> vs.copy(
+ model = vs.model.copy(sendingMakeTransaction = false, makeTransactionError = change.error)
+ )
+
+ is ProviderPartialChanges.SetAmount -> vs.copy(
+ model = vs.model.copy(selectedAmount = change.amount, makeTransactionError = null)
+ )
+
is ProviderPartialChanges.SetNote -> {
note = change.note
vs.copy(model = vs.model.copy(selectedNote = change.note, makeTransactionError = null))
}
- is ProviderPartialChanges.SelectOrganization -> {
+ is ProviderPartialChanges.SelectOrganization -> {
organizationId = change.organization.id
vs.copy(model = vs.model.copy(selectedOrganization = change.organization, makeTransactionError = null))
}
}
}
-}
\ No newline at end of file
+}
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/adapter/TransactionsLogAdapter.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/adapter/TransactionsLogAdapter.kt
index dae5d99f4..aedd5a7c4 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/adapter/TransactionsLogAdapter.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/adapter/TransactionsLogAdapter.kt
@@ -1,20 +1,16 @@
package io.forus.me.android.presentation.view.screens.vouchers.transactions_log.adapter
import android.content.Context
-import androidx.recyclerview.widget.RecyclerView
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
-import io.forus.me.android.domain.models.vouchers.ProductAction
+import androidx.recyclerview.widget.RecyclerView
import io.forus.me.android.domain.models.vouchers.Transaction
import io.forus.me.android.presentation.R
import io.forus.me.android.presentation.view.screens.vouchers.transactions_log.utils.transactionsDateFormat
-import java.text.NumberFormat
import java.text.SimpleDateFormat
-import java.util.*
-import kotlin.collections.ArrayList
+import java.util.Locale
class TransactionsLogAdapter(val context: Context, var items: ArrayList,
val callback: Callback) : RecyclerView.Adapter() {
@@ -45,12 +41,12 @@ class TransactionsLogAdapter(val context: Context, var items: ArrayList 0.0) {
+ subtitle2.text = if (hasAmount) {
overline2.visibility = View.VISIBLE
- NumberFormat.getCurrencyInstance(Locale("nl", "NL")).format(item.amount?.toDouble())
+ item.amount_locale
} else {
overline2.visibility = View.INVISIBLE
"" }
diff --git a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/details/TransactionDetailsPopupDialog.kt b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/details/TransactionDetailsPopupDialog.kt
index 441088b5b..2763e1e15 100644
--- a/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/details/TransactionDetailsPopupDialog.kt
+++ b/presentation/src/main/java/io/forus/me/android/presentation/view/screens/vouchers/transactions_log/details/TransactionDetailsPopupDialog.kt
@@ -13,8 +13,6 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import io.forus.me.android.domain.models.vouchers.Transaction
import io.forus.me.android.presentation.R
import io.forus.me.android.presentation.extensions.formatToDisplay
-import java.text.NumberFormat
-import java.util.Locale
class TransactionDetailsPopupDialog(
@@ -74,8 +72,7 @@ class TransactionDetailsPopupDialog(
}
dateTimeTV.text = transaction.createdAt.formatToDisplay()
- amountTV.text = NumberFormat.getCurrencyInstance(Locale("nl", "NL"))
- .format(transaction.amount)
+ amountTV.text = transaction.amount_locale ?: ""
val status =
when (transaction.state) {
@@ -88,15 +85,11 @@ class TransactionDetailsPopupDialog(
idTV.text = transaction.id
fundTV.text = transaction.fund?.name
providerTV.text = transaction.organization?.name
- extraAmountTV.text = NumberFormat.getCurrencyInstance(Locale("nl", "NL"))
- .format(transaction.amount_extra_cash)
+ extraAmountTV.text = transaction.amount_extra_cash_locale ?: ""
noteTV.text = transaction.note ?: ""
-
-
}
-
override fun getTheme(): Int {
return R.style.AppBottomSheetDialogTheme
}
-}
\ No newline at end of file
+}