From 48ce8aa4e470dfaa7d87b79ea73696de33cd1967 Mon Sep 17 00:00:00 2001 From: Daniel Santiago Date: Thu, 21 Nov 2019 17:14:22 -0300 Subject: [PATCH 1/3] wip kt-target using jetpack --- API.kt | 15864 ++++++++++++++++ src/codegen_types/array.cr | 11 - src/codegen_types/hex.cr | 8 +- src/main.cr | 3 +- src/target/kt_jetpack_android.cr | 337 + target-android-kt-jetpack/.gitignore | 63 + target-android-kt-jetpack/.idea/compiler.xml | 22 + .../.idea/copyright/profiles_settings.xml | 3 + target-android-kt-jetpack/.idea/misc.xml | 33 + target-android-kt-jetpack/.idea/modules.xml | 9 + .../.idea/runConfigurations.xml | 12 + target-android-kt-jetpack/.project | 17 + .../org.eclipse.buildship.core.prefs | 2 + target-android-kt-jetpack/Dockerfile | 6 + target-android-kt-jetpack/api/.classpath | 6 + target-android-kt-jetpack/api/.project | 23 + .../org.eclipse.buildship.core.prefs | 2 + target-android-kt-jetpack/api/build.gradle | 76 + .../api/proguard-rules.pro | 25 + .../api/src/main/AndroidManifest.xml | 3 + .../api/src/main/res/values/strings.xml | 3 + target-android-kt-jetpack/build.gradle | 26 + .../build_and_publish.sh | 22 + target-android-kt-jetpack/gradle.properties | 17 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + target-android-kt-jetpack/gradlew | 160 + target-android-kt-jetpack/gradlew.bat | 90 + target-android-kt-jetpack/settings.gradle | 1 + 29 files changed, 16834 insertions(+), 16 deletions(-) create mode 100644 API.kt create mode 100644 src/target/kt_jetpack_android.cr create mode 100644 target-android-kt-jetpack/.gitignore create mode 100644 target-android-kt-jetpack/.idea/compiler.xml create mode 100644 target-android-kt-jetpack/.idea/copyright/profiles_settings.xml create mode 100644 target-android-kt-jetpack/.idea/misc.xml create mode 100644 target-android-kt-jetpack/.idea/modules.xml create mode 100644 target-android-kt-jetpack/.idea/runConfigurations.xml create mode 100644 target-android-kt-jetpack/.project create mode 100644 target-android-kt-jetpack/.settings/org.eclipse.buildship.core.prefs create mode 100644 target-android-kt-jetpack/Dockerfile create mode 100644 target-android-kt-jetpack/api/.classpath create mode 100644 target-android-kt-jetpack/api/.project create mode 100644 target-android-kt-jetpack/api/.settings/org.eclipse.buildship.core.prefs create mode 100644 target-android-kt-jetpack/api/build.gradle create mode 100644 target-android-kt-jetpack/api/proguard-rules.pro create mode 100644 target-android-kt-jetpack/api/src/main/AndroidManifest.xml create mode 100644 target-android-kt-jetpack/api/src/main/res/values/strings.xml create mode 100644 target-android-kt-jetpack/build.gradle create mode 100644 target-android-kt-jetpack/build_and_publish.sh create mode 100644 target-android-kt-jetpack/gradle.properties create mode 100644 target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.jar create mode 100644 target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties create mode 100755 target-android-kt-jetpack/gradlew create mode 100644 target-android-kt-jetpack/gradlew.bat create mode 100644 target-android-kt-jetpack/settings.gradle diff --git a/API.kt b/API.kt new file mode 100644 index 0000000..0e5f3f0 --- /dev/null +++ b/API.kt @@ -0,0 +1,15864 @@ + +import android.util.Base64 +import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* +import java.util.concurrent.TimeUnit +import android.view.WindowManager +import android.content.pm.PackageManager +import android.os.Build +import org.json.JSONException +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Point +import android.os.Handler +import android.provider.Settings +import android.util.Log +import com.google.gson.Gson +import okhttp3.* +import java.io.IOException +import java.io.Serializable +import org.json.JSONArray +import com.google.gson.reflect.TypeToken +import android.os.Looper +import kotlinx.coroutines.* +import kotlinx.coroutines.Dispatchers.IO +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import kotlin.coroutines.resume +import kotlin.coroutines.suspendCoroutine +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.MediaType.Companion.toMediaTypeOrNull + +@ExperimentalCoroutinesApi +fun Deferred.result(callback: (error: Throwable?, response: T?) -> Unit) { + try { + this.invokeOnCompletion { cause -> + if (this.getCompletionExceptionOrNull() != null) + throw this.getCompletionExceptionOrNull()!! + + callback(cause, if (this.isCompleted) this.getCompleted() else null) + } + } catch (e: Throwable) { + callback(e, if (this.isCompleted) this.getCompleted() else null) + } +} + +@SuppressLint("SimpleDateFormat", "StaticFieldLeak") +object API { + + interface Calls { + fun getAllPermissions(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllRoles(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteRole(slug: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createRole(name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateRole(slug: String, name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAlerts(placeId: String, skip: Int, limit: Int): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun markAlertAsRead(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAnnounces(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createAnnounce(announce: Announce, eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editAnnounce(announce: Announce): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeAnnounce(announceId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeAccount(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeAccounts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeAccount(placeId: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeAccount(placeId: String, id: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeAccount(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBill(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeBill(placeId: String, bill: BackofficeNewBill, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeBill(placeId: String, id: String, bill: BackofficeNewBill): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun payBackofficeBill(placeId: String, id: String, date: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeBillAttachment(placeId: String, id: String, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeBill(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun exportBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun parseBackofficeBillsToImport(placeId: String, _file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun importBackofficeBills(placeId: String, _file: ByteArray): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeBillPlanCategory(name: String, parentId: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillPlans(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillPlansTreeLeafs(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillPlansTreeLeafsByLevel(level: Int): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeBillPlanCategoryName(id: String, name: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeBillPlanCategoryParent(id: String, newParentId: String?): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeSuggestedBillPlan(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun exportBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun importBackofficeBillPlan(_file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillType(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillTypes(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeBillType(placeId: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeBillType(placeId: String, id: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeBillType(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCategory(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeCategory(placeId: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeCategory(placeId: String, id: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeCategory(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductsCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductsCmvAvg(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCurrentProductsCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductsSimpleCurrentCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductsSimpleCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCostCenter(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCostCenters(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeCostCenter(placeId: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeCostCenter(placeId: String, id: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeCostCenter(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun insertBackofficeFocusCompany(placeId: String, cnpj: String, token: String, lastInvoiceVersion: Int?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateBackofficeFocusCompany(placeId: String, id: String, token: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeFocusCompany(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeFocusCompanies(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeFocusCompany(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeFocusInvoices(placeId: String, focusCompanyId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeInventory(placeId: String, inventory: BackofficeNewInventory, shouldOverlapOldInventory: Boolean): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addBackofficeStorageToInventory(placeId: String, inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeInventoryProductsAtStorage(placeId: String, inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeInventoryProducts(placeId: String, inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateBackofficeInventoryProduct(placeId: String, inventoryId: String, authorId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun closeBackofficeInventory(placeId: String, authorId: String, inventoryId: String, alterUnitValue: Boolean): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun cancelBackofficeInventory(placeId: String, authorId: String, inventoryId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeImportedInvoices(placeId: String, since: Calendar?, until: Calendar?): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun importBackofficeInvoice(placeId: String, storageId: String?, xml: ByteArray): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeManualInvoice(placeId: String, manualInvoice: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeManualInvoiceDetails(placeId: String, invoiceId: String, invoiceInfo: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun invalidateBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductLastInvoiceDetails(placeId: String, associatedProductId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeInvoiceProducts(placeId: String, invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeInvoiceBill(placeId: String, invoiceId: String, createBill: Boolean, accountId: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String, skipped: Boolean, productId: String?, unitValue: Int?, unitMultiplier: Int): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeInvoiceSupplier(placeId: String, invoiceId: String, skipped: Boolean, supplierId: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun upsertBackofficeManualInvoiceProduct(placeId: String, invoiceId: String, products: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun finishBackofficeInvoiceImport(invoiceId: String, skipPendings: Boolean, productsBillPlanCategories: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun upsertBackofficeInvoiceDuplicates(placeId: String, invoiceId: String, accountId: String, duplicates: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeInvoiceDetailsBillPlanCategories(invoiceId: String, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun saveBackofficeDetailsBillPlanCategories(invoiceId: String, objBillPlanCategories: ArrayList, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeReceivedInvoices(placeId: String, focusCompanyId: String, versao: Int?): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeReceivedInvoice(placeId: String, focusCompanyId: String, accessKey: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeInvoiceXmlUrl(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun postBackofficeManifest(placeId: String, id: String, manifestType: BackofficeManifestType, reason: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeIncomeStatement(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeIncomeByCategory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillHistory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeExtract(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCashFlow(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeDescriptionReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeDayReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillTypeReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillCategoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCostCenterReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeCategoryHistoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillSupplierTrackerReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeResume(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeResumeInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeBillPlanCategoriesReport(billPlanCategoryIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeStorage(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeStorages(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeStorage(placeId: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeStorage(placeId: String, id: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeStorage(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductStorageHistory(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductStorageHistoryXls(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductsStorageHistory(placeId: String, storageId: String, productIds: ArrayList, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun sellBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar, shouldApplyProductionRule: Boolean): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun refundBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun cancelBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun lostBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun manualBackofficeAdjustProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun transferBackofficeProduct(placeId: String, productId: String, fromId: String, toId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun transferBackofficeProducts(placeId: String, fromId: String, toId: String, date: Calendar, products: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeProductAtStorage(placeId: String, storageId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeProductsAtStorage(placeId: String, storageId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun zeroBackofficeAllProductsAtStorage(placeId: String, storageId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun inputBackofficeProduct(placeId: String, input: BackofficeInput, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun inputBackofficeProducts(placeId: String, inputs: ArrayList, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeProductionRule(placeId: String, rule: BackofficeNewProductionRule): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeProductionRuleInputs(placeId: String, productionRuleId: String, inputs: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeProductionRule(placeId: String, ruleId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun applyBackofficeProductionRule(placeId: String, storageId: String, ruleId: String, inputs: ArrayList, outputs: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductionRules(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeProductsStatusAtStorageAndDate(placeId: String, productIds: ArrayList, storageId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeSupplier(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeSuppliers(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createBackofficeSupplier(placeId: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeSupplier(placeId: String, id: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeSupplier(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBackofficeTransfers(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun doBackofficeTransfer(placeId: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBackofficeTransfer(placeId: String, id: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBackofficeTransfer(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editBar(bar: Bar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteBar(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addBar(placeId: String, barName: String, storageId: String, internalIp: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBars(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun productsSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deliveredProductsByBarAtEvent(eventId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun productsSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun productsSoldAtOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deliveredProductsByBarAtPlace(since: Calendar, until: Calendar, placeId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSellerReports(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSellerReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getNotDeliveredProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getConsolidatedBarSellingReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSellerDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSellerDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSellerProductDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSellerProductDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun exportAllTransactionProductsXlsx(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSoldBaseProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSoldBaseProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCashierClosingDetails(eventId: String, cashierId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun bleedCashier(eventId: String, cashierId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateCashierClosing(eventId: String, cashierId: String, values: CashierClosingValues): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlainCategories(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCategories(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createCategory(category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editCategory(id: String, category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteCategory(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSellablesFromCategory(categoryId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun filterSellablesCategories(name: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCurrentCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTotalCmvAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTotalCmvAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addNewCombo(placeId: String, combo: NewPlaceCombo, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editCombo(comboId: String, combo: NewPlaceCombo): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editComboImage(comboId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteCombo(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCoupon(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCoupons(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createCoupon(coupon: NewCoupon): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteCoupon(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addDeviceToOrganization(smallId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getDevices(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeDeviceFromOrganization(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getDeviceStatusAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeDeviceFromEvent(deviceId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun logOutAndRemoveAllDevices(): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getDeviceEventStatus(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEmployees(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEmployee(employeeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addEmployee(employee: NewEmployee, password: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editEmployee(id: String, employee: NewEmployee): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editEmployeePassword(id: String, password: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editEmployeeImage(id: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editMultipleEmployees(employeeIds: ArrayList, edition: EditMultipleEmployees): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeMultipleEmployees(employeeIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeEmployee(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addZigTagToWaiter(zigCode: String, employeeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeZigTagFromWaiter(employeeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createMultipleEmployees(placeId: String, bar: String?, quantity: Int, role: String?, permissions: ArrayList, username: String, password: String, initial: Int, _final: Int): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createEntrance(placeId: String, entrance: Entrance, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteEntrance(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllEntrances(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editEntrance(placeId: String, entrance: Entrance): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editEntranceImage(entranceId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun entrancesSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun entrancesSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun entrancesSoldByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEntrancesSoldToUserAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEntrancesSoldToUserAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllEvents(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createEvent(details: EventDetails, image: ByteArray?, cover: ByteArray?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun openEvent(id: String, actualizingdatetime: Boolean): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun closeEvent(id: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteEvent(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEvent(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEvents(placeId: String, month: Int, year: Int): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun extract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun extractResume(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getExtractDayResumeInSections(placeId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRechargeExpireResume(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRechargeExpireExtract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun askForAnticipation(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun withdraw(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun askForAnticipationWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun withdrawWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getWithdrawsResume(placeId: String, from: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getWithdraws(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getExtractAdjusts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getConsolidatedExtractInSections(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun cashierDetailsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun clientsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun clientsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun clientAtPlace(userId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun clientTransactionsAtEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun resumeForOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun cashierDetailsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun debtorsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun debtorsInPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBonusReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBonusReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getMinimumConsumptionReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCashierRechargeDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCashierPostDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getClientDetails(clientId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editClient(clientId: String, name: String, phone: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBonusByProduct(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBonusByProductAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRechargeConsumptions(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun payBillAtEventWithMultiplePayments(userId: String, eventId: String, payments: ArrayList, reason: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun payBillAtPlaceInPeriodWithMultiplePayments(userId: String, placeId: String, payments: ArrayList, since: Calendar, until: Calendar, reason: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun payBillsAtEventWithMultiplePayments(userIds: ArrayList, eventId: String, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun payBillsAtPlaceInPeriodWithMultiplePayments(userIds: ArrayList, placeId: String, since: Calendar, until: Calendar, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRefundedRechargesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCardActivationReturnReportAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getResumeForEventInSections(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getResumeForPlaceInSections(placeId: String, from: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPromotionsUsedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPromotionsUsedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEntrancesSoldByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEntrancesSoldByEmployeeAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRefundedProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRefundedProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTipsRemovedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTipsRemovedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCardActivationReturnReportByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getDiscountsAtEventByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getDiscountsAtPlaceByEmployee(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTransactionTransfersByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getManualInvoices(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPostLimitChangesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPostLimitChanges(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun emitInnovaroGeneralInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getOpenedBillPayments(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getOpenedBillPaymentsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRappiDiscountsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRappiDiscountsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun setCouvertFiscalData(placeId: String, _data: ProductFiscalData): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCouvertFiscalData(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun searchFiscalProducts(query: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun isNcmValid(ncm: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInvoicePrintout(invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun issueInvoicesForUser(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun emitAllInvoicesInMonth(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun issueInvoicesForCnpj(eventId: String, userId: String, cnpj: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun issueInvoicesForCpf(eventId: String, userId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun issueInvoicesOfTransactions(eventId: String, transactionIds: ArrayList, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInvoices(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInvoicesFromUser(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInvoicesFromUserAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun hasPendingInvoices(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun sendInvoicesByEmail(invoiceIds: ArrayList, email: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun printInvoice(invoiceId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun hasPrinter(invoiceId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getFiscalProfiles(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getFiscalProductGroups(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteFiscalProfile(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteFiscalProductGroup(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getFiscalInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPercentOfSalesIssuedInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInvoice(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getZippedInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getNotEmmitedTransactionsFromEvent(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun issueManualInvoice(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun issueManualInvoiceForReserve(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?, reserveId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun emitAllInnovaroInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getNotEmittedProductsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getNotEmittedProducts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInvoicePrintData(invoiceId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createInventory(placeId: String, storageIds: ArrayList, newInventory: NewInventory): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun cancelInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addStorageToInventory(inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun closeInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInventoryProductsAtStorage(inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getInventoryProducts(inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateInventoryProduct(inventoryId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getLiveResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getNewPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTopSellingProducts(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSelledProducts(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTotalReceipt(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getRechargeTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getConsumptionTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTopClients(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getBarConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEntrancesConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun logIn(username: String, password: String, organizationUsername: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun logOut(): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCurrentEmployee(): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getCurrentOrganization(): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaceDetails(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaces(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editPlace(place: NewPlace, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaceFeatures(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun setZigPlaceFeatures(placeId: String, featureIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editPlacePassword(placeId: String, pass: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlacePassword(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun overridePlaceAccountId(placeId: String, accountId: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getOverridenPlaceAccount(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editPlaceEverestConfig(placeId: String, config: EverestConfig?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaceEverestConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllPlaces(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPosMachineTransactions(placeId: String, dates: ArrayList, page: Int, searchTerm: String?, itemsPerPage: Int?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getConsolidatedPosMachineTransactions(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updatePriceAtPlace(placeId: String, productId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateProportionalValueAtPlace(placeId: String, productId: String, proportionalValue: ProportionalValue?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun activateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deactivateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addProductToPlace(placeId: String, productId: String, fiscalData: PlaceProductFiscalData?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeProductFromPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProductsByPlace(place: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addNewProductToOrganization(product: NewProduct, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun addNewProduct(product: NewPlaceProduct, placeId: String, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editProduct(id: String, product: NewProduct): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editProducts(products: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editPlaceProduct(id: String, product: NewPlaceProduct, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editProductImage(id: String, image: EditProductImage): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteProduct(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteMultipleProducts(productIds: ArrayList, placeId: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createSupply(name: String, placeId: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSupplyProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllProductCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaceProduct(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaceProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllProducts(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProduct(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun inputProductAtStorage(placeId: String, input: InputProduct): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun attachPlaceProductToProductionRule(productId: String, placeId: String, productionRuleId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removePlaceProductProductionRule(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProductionRuleFromProduct(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProductKinds(): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSuggestedImageFor(product: ProductImageSearch): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun applySuggestedImageForProduct(imageId: String, productId: String, type: ApplySuggestedImageForProductType): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProductsFromPlaceReportXls(placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaceProductsByType(placeId: String, productType: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createPromotion(promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createPromotionForPlace(promotion: NewPromotionInfo, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deletePromotion(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAvailablePromotions(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun givePromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun givePromotionToManyUsers(promotionId: String, cpfPhones: ArrayList): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPromotionUsers(promotionId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun removeUserFromPromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun editPromotion(promotionId: String, promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllRelationsFromEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllRelationsFromPlace(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteRelation(id: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createEventRelation(relation: Relation, eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createPlaceRelation(relation: Relation, placeId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getPlaceEmployeeReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getFinanceBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getClientsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProductsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun createReserve(eventId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun deleteReserve(reserveId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun updateReserve(reserveId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getReserves(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getReserveDetail(reserveId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getReservesReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getReserveDiscountDetails(reserveId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEntrancesSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getProductsSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getUser(placeId: String, cpf: String?, phone: String?): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getUserAtEvent(eventId: String, filter: UserFilter): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getUserDetailsAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getUserDetailsAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getUserRechargesInEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun giveRechargeToUsers(eventId: String, recharges: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getAllUsersAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getEventUserAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getClientsAtPlaceWithFilter(placeId: String, filters: SearchFilters, offset: Int): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getClientsAtPlaceWithFilterXls(placeId: String, filters: SearchFilters): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getUserByCpf(placeId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getUserDetailsAtEventsAndPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getSuggestedImages(keyword: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getZigTagBlockConfirmsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getZigTagBlockConfirmsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getZigTagSyncForcesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getZigTagSyncForcesAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getNotOpenedCashiers(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getStockTransferReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getTransactionHistory(placeId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getGuinnessResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun getGuinnessLog(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + MutableLiveData?>>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun ping(): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + fun setPushToken(token: String): Deferred>> = CoroutineScope(IO).async { + MutableLiveData>().apply { + postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) + } + } + } + + lateinit var context: Context + private val gson = Gson() + private val dateTimeFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.US).apply { + setTimeZone(TimeZone.getTimeZone("GMT")) + } + private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) + fun init(appContext: Context, useStaging: Boolean) { + API.useStaging = useStaging + context = appContext + } + + var BASE_URL = "api.zigcore.com.br/enterprise" + var useStaging = false + private val hexArray = "0123456789abcdef".toCharArray() + + var connectionPool = ConnectionPool(100, 45, TimeUnit.SECONDS) + var client = OkHttpClient.Builder() + .connectionPool(connectionPool) + .dispatcher(Dispatcher().apply { maxRequests = 200 ; maxRequestsPerHost = 200 }) + .connectTimeout(15, TimeUnit.SECONDS) + .build() + + class Error( + var type: ErrorType? = null, + var message: String? = null + ) + + private data class InternalResponse(val error: Error?, val data: JSONObject?) + + data class Response(val error: Error?, val data: T?) + + data class MinimalPromotionInfo( + var id: String, + var name: String, + var description: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MinimalPromotionInfo { + return gson.fromJson(jsonToParse.toString(), MinimalPromotionInfo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Permission( + var name: String, + var slug: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Permission { + return gson.fromJson(jsonToParse.toString(), Permission::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ChildPermission( + var parent: String?, + var name: String, + var slug: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ChildPermission { + return gson.fromJson(jsonToParse.toString(), ChildPermission::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Role( + var permissions: ArrayList, + var name: String, + var slug: String, + var isBase: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Role { + return gson.fromJson(jsonToParse.toString(), Role::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SimplifiedRole( + var permissions: ArrayList, + var name: String, + var slug: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SimplifiedRole { + return gson.fromJson(jsonToParse.toString(), SimplifiedRole::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PostPaymentEvent( + var acquirerTransactions: ArrayList, + var createdAt: Calendar, + var createdBy: String?, + var id: String, + var eventId: String?, + var event: String?, + var place: String?, + var employee: String?, + var isDeleted: Boolean, + var payments: ArrayList, + var payers: ArrayList, + var postPaymentType: PostPaymentEventPostPaymentType + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PostPaymentEvent { + return gson.fromJson(jsonToParse.toString(), PostPaymentEvent::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PostPaymentEventPayments( + var method: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PostPaymentEventPayments { + return gson.fromJson(jsonToParse.toString(), PostPaymentEventPayments::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PostPaymentEventPayers( + var cpf: String, + var name: String, + var email: String?, + var phone: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PostPaymentEventPayers { + return gson.fromJson(jsonToParse.toString(), PostPaymentEventPayers::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class AcquirerTransaction( + var transactionId: String?, + var acquirer: String?, + var transactionUrl: String?, + var cardBrand: String?, + var cardHolderName: String?, + var cardHolderNumber: String?, + var authorizatedAmount: Int?, + var capturedAmount: Int?, + var isExpiredCreditCard: Boolean?, + var expirationDate: String?, + var paidAmount: Int?, + var transactionType: String?, + var transactionStatus: String?, + var type: Int?, + var amount: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): AcquirerTransaction { + return gson.fromJson(jsonToParse.toString(), AcquirerTransaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewMountableSection( + var title: String, + var min: Int, + var max: Int, + var pricing: NewMountableSectionPricing, + var items: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewMountableSection { + return gson.fromJson(jsonToParse.toString(), NewMountableSection::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewMountableSectionItems( + var productId: String, + var storageCount: Int, + var price: Int, + var maxCount: Int?, + var selectedCount: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewMountableSectionItems { + return gson.fromJson(jsonToParse.toString(), NewMountableSectionItems::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MountableSection( + var id: String, + var order: Int, + var title: String, + var min: Int, + var max: Int, + var pricing: NewMountableSectionPricing, + var items: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MountableSection { + return gson.fromJson(jsonToParse.toString(), MountableSection::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewMountableDescription( + var sections: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewMountableDescription { + return gson.fromJson(jsonToParse.toString(), NewMountableDescription::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MountableDescription( + var sections: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MountableDescription { + return gson.fromJson(jsonToParse.toString(), MountableDescription::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalPrinter( + var type: PrinterType?, + var ip: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalPrinter { + return gson.fromJson(jsonToParse.toString(), FiscalPrinter::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class DashboardAlert( + var id: String, + var date: Calendar, + var title: String, + var description: String, + var image: ImageUrl, + var hasRead: Boolean, + var type: DashboardAlertType + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): DashboardAlert { + return gson.fromJson(jsonToParse.toString(), DashboardAlert::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Announce( + var id: String?, + var begin: Calendar, + var end: Calendar, + var text: String, + var active: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Announce { + return gson.fromJson(jsonToParse.toString(), Announce::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewAccount( + var name: String, + var bankAccount: BackofficeBankAccount? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewAccount { + return gson.fromJson(jsonToParse.toString(), BackofficeNewAccount::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeAccount( + var id: String, + var name: String, + var bankAccount: BackofficeBankAccount? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeAccount { + return gson.fromJson(jsonToParse.toString(), BackofficeAccount::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeAttachment( + var fileName: String, + var _data: ByteArray + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeAttachment { + return gson.fromJson(jsonToParse.toString(), BackofficeAttachment::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBaseBill( + var description: String, + var performDate: Calendar, + var payDate: Calendar?, + var dueDate: Calendar, + var supplierId: String?, + var accountId: String, + var paymentMethod: BackofficeBillPaymentMethod?, + var observation: String?, + var metadata: String?, + var value: Int, + var interest: Int, + var fine: Int, + var discount: Int, + var reconciled: Boolean, + var status: BackofficeBaseBillStatus, + var duplicateId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBaseBill { + return gson.fromJson(jsonToParse.toString(), BackofficeBaseBill::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillBillPlanCategory( + var id: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillBillPlanCategory { + return gson.fromJson(jsonToParse.toString(), BackofficeBillBillPlanCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewBill( + var billType: BackofficePartialBillType?, + var costCenter: String?, + var billPlanCategories: ArrayList, + var description: String, + var performDate: Calendar, + var payDate: Calendar?, + var dueDate: Calendar, + var supplierId: String?, + var accountId: String, + var paymentMethod: BackofficeBillPaymentMethod?, + var observation: String?, + var metadata: String?, + var value: Int, + var interest: Int, + var fine: Int, + var discount: Int, + var reconciled: Boolean, + var status: BackofficeBaseBillStatus, + var duplicateId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewBill { + return gson.fromJson(jsonToParse.toString(), BackofficeNewBill::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBill( + var id: String, + var supplier: BackofficeSupplier?, + var account: BackofficeAccount?, + var billType: BackofficeBillType?, + var costCenter: BackofficeCostCenter?, + var attachment: String?, + var billPlanCategories: ArrayList, + var createdBySystem: Boolean, + var description: String, + var performDate: Calendar, + var payDate: Calendar?, + var dueDate: Calendar, + var supplierId: String?, + var accountId: String, + var paymentMethod: BackofficeBillPaymentMethod?, + var observation: String?, + var metadata: String?, + var value: Int, + var interest: Int, + var fine: Int, + var discount: Int, + var reconciled: Boolean, + var status: BackofficeBaseBillStatus, + var duplicateId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBill { + return gson.fromJson(jsonToParse.toString(), BackofficeBill::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillBillPlanCategories( + var id: String, + var name: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillBillPlanCategories { + return gson.fromJson(jsonToParse.toString(), BackofficeBillBillPlanCategories::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryBase( + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryBase { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryBase::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategory( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategory { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren( + var children: ArrayList, + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren( + var id: String, + var name: String, + var path: String, + var parentId: String?, + var hasBills: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewBillType( + var name: String, + var categoryId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewBillType { + return gson.fromJson(jsonToParse.toString(), BackofficeNewBillType::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillType( + var id: String, + var category: BackofficeCategory, + var name: String, + var categoryId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillType { + return gson.fromJson(jsonToParse.toString(), BackofficeBillType::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficePartialBillType( + var idOrName: String, + var category: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficePartialBillType { + return gson.fromJson(jsonToParse.toString(), BackofficePartialBillType::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewCategory( + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewCategory { + return gson.fromJson(jsonToParse.toString(), BackofficeNewCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCategory( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCategory { + return gson.fromJson(jsonToParse.toString(), BackofficeCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductCmv( + var soldCount: Int, + var inputs: ArrayList, + var productId: String, + var unitCostValue: Int?, + var realUnitCostValue: Int?, + var absolutePopularity: Float?, + var relativePopularity: Float? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductCmv { + return gson.fromJson(jsonToParse.toString(), BackofficeProductCmv::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductCmvInputs( + var productId: String, + var count: Int, + var unitCostValue: Int?, + var realUnitCostValue: Int?, + var isCompound: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductCmvInputs { + return gson.fromJson(jsonToParse.toString(), BackofficeProductCmvInputs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductSimpleCmv( + var productId: String, + var unitCostValue: Int?, + var realUnitCostValue: Int?, + var absolutePopularity: Float?, + var relativePopularity: Float? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductSimpleCmv { + return gson.fromJson(jsonToParse.toString(), BackofficeProductSimpleCmv::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewCostCenter( + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewCostCenter { + return gson.fromJson(jsonToParse.toString(), BackofficeNewCostCenter::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCostCenter( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCostCenter { + return gson.fromJson(jsonToParse.toString(), BackofficeCostCenter::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeFocusCompany( + var id: String, + var cnpj: String, + var token: String, + var lastInvoiceVersion: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeFocusCompany { + return gson.fromJson(jsonToParse.toString(), BackofficeFocusCompany::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeFocusInvoice( + var id: String, + var focusCompanyId: String, + var supplierName: String, + var supplierDocument: String, + var accessKey: String, + var totalValue: Int, + var issueDate: Calendar, + var situation: String, + var completed: Boolean, + var type: Int, + var version: Int, + var digestValue: String?, + var targetManifestion: BackofficeManifestType? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeFocusInvoice { + return gson.fromJson(jsonToParse.toString(), BackofficeFocusInvoice::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBaseInventory( + var date: Calendar, + var isTotal: Boolean, + var createdBy: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBaseInventory { + return gson.fromJson(jsonToParse.toString(), BackofficeBaseInventory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewInventory( + var storageIds: ArrayList, + var date: Calendar, + var isTotal: Boolean, + var createdBy: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewInventory { + return gson.fromJson(jsonToParse.toString(), BackofficeNewInventory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeInventory( + var id: String, + var status: BackofficeInventoryStatus, + var storages: ArrayList, + var date: Calendar, + var isTotal: Boolean, + var createdBy: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeInventory { + return gson.fromJson(jsonToParse.toString(), BackofficeInventory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeInventoryStorages( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeInventoryStorages { + return gson.fromJson(jsonToParse.toString(), BackofficeInventoryStorages::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeInventoryProduct( + var productId: String, + var storageId: String, + var inventoryCount: Int?, + var inventoryUnitValue: Int?, + var realCount: Int?, + var realUnitValue: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeInventoryProduct { + return gson.fromJson(jsonToParse.toString(), BackofficeInventoryProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeInvoiceDuplicate( + var id: String?, + var code: String?, + var dueDate: Calendar?, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeInvoiceDuplicate { + return gson.fromJson(jsonToParse.toString(), BackofficeInvoiceDuplicate::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoice( + var id: String, + var createdAt: Calendar, + var xml: String?, + var completed: Boolean, + var storageId: String?, + var bill: BackofficeImportedInvoiceBill, + var details: BackofficeImportedInvoiceDetails, + var supplier: BackofficeImportedInvoiceSupplier, + var products: ArrayList, + var duplicates: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoice { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoice::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceBill( + var accountId: String?, + var createBill: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceBill { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceBill::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceDetails( + var num: Int, + var serie: Int, + var operationType: String, + var accessKey: String?, + var date: Calendar, + var supplier: BackofficeImportedInvoiceDetailsSupplier, + var totalValue: Int, + var totalProductsValue: Int, + var taxs: BackofficeImportedInvoiceDetailsTaxs, + var insuranceValue: Int, + var discountValue: Int, + var otherExpensesValue: Int, + var shippingValue: Int, + var cfop: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetails { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceDetailsSupplier( + var name: String, + var cpfOrCnpj: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsSupplier { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsSupplier::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceDetailsTaxs( + var icmsBase: Int, + var icmsValue: Int, + var icmsstBase: Int, + var icmsstValue: Int, + var ipiValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsTaxs { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsTaxs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceSupplier( + var pending: Boolean, + var skipped: Boolean, + var associatedSupplier: BackofficeSupplier?, + var invoiceEntry: BackofficeImportedInvoiceSupplierInvoiceEntry? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceSupplier { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceSupplier::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceSupplierInvoiceEntry( + var cpfOrCnpj: String, + var name: String, + var legalName: String?, + var inscricaoEstadual: String?, + var address: BackofficeAddress? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceSupplierInvoiceEntry { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceSupplierInvoiceEntry::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewManualInvoice( + var storageId: String?, + var bill: BackofficeNewManualInvoiceBill, + var details: BackofficeNewManualInvoiceDetails, + var supplierId: String?, + var products: ArrayList, + var duplicates: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoice { + return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoice::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewManualInvoiceBill( + var accountId: String?, + var createBill: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoiceBill { + return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoiceBill::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewManualInvoiceDetails( + var num: Int, + var serie: Int, + var operationType: String, + var date: Calendar, + var taxs: BackofficeNewManualInvoiceDetailsTaxs, + var insuranceValue: Int, + var discountValue: Int, + var otherExpensesValue: Int, + var shippingValue: Int, + var cfop: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoiceDetails { + return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoiceDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewManualInvoiceDetailsTaxs( + var icmsBase: Int, + var icmsValue: Int, + var icmsstBase: Int, + var icmsstValue: Int, + var ipiValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoiceDetailsTaxs { + return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoiceDetailsTaxs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeManualInvoiceProduct( + var associatedProductId: String, + var count: Int, + var unitValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeManualInvoiceProduct { + return gson.fromJson(jsonToParse.toString(), BackofficeManualInvoiceProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceProduct( + var entryId: String, + var pending: Boolean, + var skipped: Boolean, + var associatedProduct: Product?, + var unitValue: Int, + var unitMultiplier: Int, + var invoiceEntry: BackofficeImportedInvoiceProductInvoiceEntry + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceProduct { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceProductInvoiceEntry( + var index: Int, + var code: String, + var description: String, + var commercialUnit: String, + var commercialQuantity: Int, + var unitValue: Int, + var EAN: String?, + var totalValue: Int, + var icmsStValue: Int?, + var icmsStAliquot: Int?, + var icmsStBase: Int?, + var ipiValue: Int?, + var ipiAliquot: Int?, + var ipiBase: Int?, + var shippingValue: Int?, + var otherExpensesValue: Int?, + var discountValue: Int?, + var insuranceValue: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceProductInvoiceEntry { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceProductInvoiceEntry::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeUpsertManualProduct( + var id: String?, + var code: String, + var associatedProductId: String, + var count: Int, + var unitValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeUpsertManualProduct { + return gson.fromJson(jsonToParse.toString(), BackofficeUpsertManualProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceDetailsObjBillPlanCategory( + var billPlanCategoryId: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsObjBillPlanCategory { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsObjBillPlanCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeImportedInvoiceDetailsBillPlanCategory( + var invoiceId: String, + var invoiceDetailsField: BackofficeImportedInvoiceDetailsField, + var billPlanCategoryId: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsBillPlanCategory { + return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsBillPlanCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductLastInvoiceDetails( + var isImported: Boolean, + var totalProductValue: Int, + var entryId: String, + var pending: Boolean, + var skipped: Boolean, + var associatedProduct: Product?, + var unitValue: Int, + var unitMultiplier: Int, + var invoiceEntry: BackofficeImportedInvoiceProductInvoiceEntry + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductLastInvoiceDetails { + return gson.fromJson(jsonToParse.toString(), BackofficeProductLastInvoiceDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeReceivedInvoiceHeader( + var id: String, + var supplierName: String, + var supplierDocument: String, + var accessKey: String, + var totalValue: Int, + var issueDate: Calendar, + var state: String, + var targetManifestion: String?, + var completeNfe: Boolean, + var kindNfe: String, + var version: Int, + var digestValue: String?, + var numCorrection: String?, + var cancelDate: Calendar?, + var cancelJustification: String?, + var isImported: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeReceivedInvoiceHeader { + return gson.fromJson(jsonToParse.toString(), BackofficeReceivedInvoiceHeader::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeResponseInvoiceManifest( + var statusSefaz: String, + var messageSefaz: String, + var status: String, + var protocol: String, + var typeManifest: String, + var reason: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeResponseInvoiceManifest { + return gson.fromJson(jsonToParse.toString(), BackofficeResponseInvoiceManifest::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeIncomeStatement( + var grossRevenue: Int, + var grossProfit: Int, + var netTotal: Int, + var taxTotal: Int, + var categories: ArrayList, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeIncomeStatement { + return gson.fromJson(jsonToParse.toString(), BackofficeIncomeStatement::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCategoryTotal( + var name: String, + var categoryId: String?, + var parcialProfit: Int, + var total: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCategoryTotal { + return gson.fromJson(jsonToParse.toString(), BackofficeCategoryTotal::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillHistory( + var historicByDay: ArrayList, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillHistory { + return gson.fromJson(jsonToParse.toString(), BackofficeBillHistory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillHistoryByDay( + var billDataHistory: ArrayList, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillHistoryByDay { + return gson.fromJson(jsonToParse.toString(), BackofficeBillHistoryByDay::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillDataHistory( + var billId: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillDataHistory { + return gson.fromJson(jsonToParse.toString(), BackofficeBillDataHistory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCategoryHistory( + var historicByDay: ArrayList, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCategoryHistory { + return gson.fromJson(jsonToParse.toString(), BackofficeCategoryHistory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCategoryHistoryByDay( + var categoryDataHistory: ArrayList, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCategoryHistoryByDay { + return gson.fromJson(jsonToParse.toString(), BackofficeCategoryHistoryByDay::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCategoryDataHistory( + var categoryName: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCategoryDataHistory { + return gson.fromJson(jsonToParse.toString(), BackofficeCategoryDataHistory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeExtract( + var previousBalance: Int, + var finalBalance: Int, + var periodBalance: Int, + var totalReceipts: Int, + var totalExpenses: Int, + var billExtractData: ArrayList, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeExtract { + return gson.fromJson(jsonToParse.toString(), BackofficeExtract::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillData( + var date: Calendar, + var description: String, + var categoryName: String, + var value: Int, + var balance: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillData { + return gson.fromJson(jsonToParse.toString(), BackofficeBillData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCashFlow( + var previousBalance: Int, + var finalBalance: Int, + var periodBalance: Int, + var totalReceipts: Int, + var totalExpenses: Int, + var receipts: ArrayList, + var expenses: ArrayList, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCashFlow { + return gson.fromJson(jsonToParse.toString(), BackofficeCashFlow::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeDescriptionReport( + var bills: ArrayList, + var total: Int, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeDescriptionReport { + return gson.fromJson(jsonToParse.toString(), BackofficeDescriptionReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillDescriptionData( + var description: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillDescriptionData { + return gson.fromJson(jsonToParse.toString(), BackofficeBillDescriptionData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeDayReport( + var bills: ArrayList, + var total: Int, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeDayReport { + return gson.fromJson(jsonToParse.toString(), BackofficeDayReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillDayData( + var date: Calendar, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillDayData { + return gson.fromJson(jsonToParse.toString(), BackofficeBillDayData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeIncomeByCategory( + var categoryName: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeIncomeByCategory { + return gson.fromJson(jsonToParse.toString(), BackofficeIncomeByCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCostCenterReport( + var costCenterBills: ArrayList, + var total: Int, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCostCenterReport { + return gson.fromJson(jsonToParse.toString(), BackofficeCostCenterReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeCostCenterBills( + var name: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeCostCenterBills { + return gson.fromJson(jsonToParse.toString(), BackofficeCostCenterBills::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillSupplierTrackerReport( + var billSupplierTrackerData: ArrayList, + var since: Calendar, + var until: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillSupplierTrackerReport { + return gson.fromJson(jsonToParse.toString(), BackofficeBillSupplierTrackerReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillSupplierTrackerData( + var supplierId: String?, + var supplierName: String, + var billDescription: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillSupplierTrackerData { + return gson.fromJson(jsonToParse.toString(), BackofficeBillSupplierTrackerData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeResume( + var billsDueToToday: ArrayList, + var accountBalances: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeResume { + return gson.fromJson(jsonToParse.toString(), BackofficeResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeResumeBillsDueToToday( + var id: String, + var value: Int, + var status: BackofficeResumeBillsDueToTodayStatus, + var description: String, + var account: BackofficeResumeBillsDueToTodayAccount + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeResumeBillsDueToToday { + return gson.fromJson(jsonToParse.toString(), BackofficeResumeBillsDueToToday::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeResumeBillsDueToTodayAccount( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeResumeBillsDueToTodayAccount { + return gson.fromJson(jsonToParse.toString(), BackofficeResumeBillsDueToTodayAccount::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeResumeAccountBalances( + var id: String, + var name: String, + var balanceValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeResumeAccountBalances { + return gson.fromJson(jsonToParse.toString(), BackofficeResumeAccountBalances::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficePeriodResume( + var toReceive: BackofficePeriodResumeToReceive, + var toPay: BackofficePeriodResumeToPay, + var balance: Int, + var growth: Float? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficePeriodResume { + return gson.fromJson(jsonToParse.toString(), BackofficePeriodResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficePeriodResumeToReceive( + var paid: Int, + var pending: Int, + var total: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficePeriodResumeToReceive { + return gson.fromJson(jsonToParse.toString(), BackofficePeriodResumeToReceive::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficePeriodResumeToPay( + var paid: Int, + var pending: Int, + var total: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficePeriodResumeToPay { + return gson.fromJson(jsonToParse.toString(), BackofficePeriodResumeToPay::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoriesReport( + var id: String, + var name: String, + var total: Int, + var bills: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoriesReport { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoriesReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBillPlanCategoriesReportBills( + var description: String, + var performDate: Calendar, + var dueDate: Calendar, + var payDate: Calendar?, + var value: Int, + var account: String?, + var supplier: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoriesReportBills { + return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoriesReportBills::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewStorage( + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewStorage { + return gson.fromJson(jsonToParse.toString(), BackofficeNewStorage::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeStorage( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeStorage { + return gson.fromJson(jsonToParse.toString(), BackofficeStorage::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeStorageProduct( + var id: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeStorageProduct { + return gson.fromJson(jsonToParse.toString(), BackofficeStorageProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeStorageHistory( + var currentPage: Int?, + var initial: Int, + var totalTransfersItems: Int, + var transfers: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeStorageHistory { + return gson.fromJson(jsonToParse.toString(), BackofficeStorageHistory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeStorageHistoryTransfers( + var date: Calendar, + var type: BackofficeStorageTransferType, + var count: Int, + var employeeId: String, + var unitCostValue: Int?, + var referenceCode: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeStorageHistoryTransfers { + return gson.fromJson(jsonToParse.toString(), BackofficeStorageHistoryTransfers::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeStorageProductsHistory( + var productName: String?, + var productId: String, + var history: BackofficeStorageHistory + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeStorageProductsHistory { + return gson.fromJson(jsonToParse.toString(), BackofficeStorageProductsHistory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeDeleteProductsResult( + var success: ArrayList, + var error: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeDeleteProductsResult { + return gson.fromJson(jsonToParse.toString(), BackofficeDeleteProductsResult::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeDeleteProductsResultError( + var productId: String, + var reason: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeDeleteProductsResultError { + return gson.fromJson(jsonToParse.toString(), BackofficeDeleteProductsResultError::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeMultipleStorageTransferProduct( + var productId: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeMultipleStorageTransferProduct { + return gson.fromJson(jsonToParse.toString(), BackofficeMultipleStorageTransferProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeInput( + var productId: String, + var storageId: String, + var unitCostValue: Int?, + var obs: String?, + var count: Int, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeInput { + return gson.fromJson(jsonToParse.toString(), BackofficeInput::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeInputsResult( + var success: ArrayList, + var error: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeInputsResult { + return gson.fromJson(jsonToParse.toString(), BackofficeInputsResult::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeInputsResultError( + var input: BackofficeInput, + var reason: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeInputsResultError { + return gson.fromJson(jsonToParse.toString(), BackofficeInputsResultError::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewProductionRule( + var inputs: ArrayList, + var outputs: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewProductionRule { + return gson.fromJson(jsonToParse.toString(), BackofficeNewProductionRule::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewProductionRuleOutputs( + var productId: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewProductionRuleOutputs { + return gson.fromJson(jsonToParse.toString(), BackofficeNewProductionRuleOutputs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductionInput( + var productId: String, + var count: Int, + var loss: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductionInput { + return gson.fromJson(jsonToParse.toString(), BackofficeProductionInput::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductionOutput( + var productId: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductionOutput { + return gson.fromJson(jsonToParse.toString(), BackofficeProductionOutput::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductionRule( + var id: String, + var inputs: ArrayList, + var outputs: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductionRule { + return gson.fromJson(jsonToParse.toString(), BackofficeProductionRule::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductionRuleInputs( + var productId: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductionRuleInputs { + return gson.fromJson(jsonToParse.toString(), BackofficeProductionRuleInputs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductionRuleOutputs( + var productId: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductionRuleOutputs { + return gson.fromJson(jsonToParse.toString(), BackofficeProductionRuleOutputs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeProductStatusAtStorage( + var productId: String, + var storageId: String, + var count: Int, + var unitCostValue: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeProductStatusAtStorage { + return gson.fromJson(jsonToParse.toString(), BackofficeProductStatusAtStorage::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeAddress( + var street: String, + var number: String, + var complemento: String?, + var cep: String, + var state: String, + var city: String, + var neighborhood: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeAddress { + return gson.fromJson(jsonToParse.toString(), BackofficeAddress::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeBankAccount( + var bank: String, + var account: String, + var agency: String, + var cpfOrCnpj: String, + var ownerName: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeBankAccount { + return gson.fromJson(jsonToParse.toString(), BackofficeBankAccount::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewSupplier( + var name: String, + var legalName: String, + var inscricaoEstadual: String?, + var cpfOrCnpj: String?, + var address: BackofficeAddress?, + var bankAccount: BackofficeBankAccount? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewSupplier { + return gson.fromJson(jsonToParse.toString(), BackofficeNewSupplier::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeSupplier( + var id: String, + var name: String, + var legalName: String, + var inscricaoEstadual: String?, + var cpfOrCnpj: String?, + var address: BackofficeAddress?, + var bankAccount: BackofficeBankAccount? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeSupplier { + return gson.fromJson(jsonToParse.toString(), BackofficeSupplier::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeNewTransfer( + var date: Calendar, + var description: String, + var value: Int, + var paid: Boolean, + var sourceAccountId: String, + var destinationAccountId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeNewTransfer { + return gson.fromJson(jsonToParse.toString(), BackofficeNewTransfer::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BackofficeTransfer( + var id: String, + var date: Calendar, + var description: String, + var value: Int, + var paid: Boolean, + var sourceAccount: BackofficeAccount, + var destinationAccount: BackofficeAccount, + var sourceBill: BackofficeBill, + var destinationBill: BackofficeBill + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BackofficeTransfer { + return gson.fromJson(jsonToParse.toString(), BackofficeTransfer::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Bar( + var id: String?, + var name: String, + var image: ImageUrl?, + var storageId: String, + var storageName: String?, + var internalIp: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Bar { + return gson.fromJson(jsonToParse.toString(), Bar::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SellerReport( + var id: String, + var name: String, + var soldValue: Int, + var tip: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SellerReport { + return gson.fromJson(jsonToParse.toString(), SellerReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class WaiterDelivery( + var id: String, + var name: String, + var productsToDelivery: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): WaiterDelivery { + return gson.fromJson(jsonToParse.toString(), WaiterDelivery::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BarReport( + var id: String, + var name: String, + var quantity: Int, + var totalValue: Int, + var totalDiscount: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BarReport { + return gson.fromJson(jsonToParse.toString(), BarReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SellerTransaction( + var id: String, + var date: Calendar, + var clients: ArrayList, + var value: Int, + var tip: Int, + var refunded: Boolean, + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SellerTransaction { + return gson.fromJson(jsonToParse.toString(), SellerTransaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BaseProduct( + var id: String, + var name: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BaseProduct { + return gson.fromJson(jsonToParse.toString(), BaseProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierClosingValues( + var cashValue: Int, + var creditValue: Int, + var debitValue: Int, + var voucherValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierClosingValues { + return gson.fromJson(jsonToParse.toString(), CashierClosingValues::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierClosingDetails( + var bleedings: ArrayList, + var closing: CashierClosingValues + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierClosingDetails { + return gson.fromJson(jsonToParse.toString(), CashierClosingDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierClosingDetailsBleedings( + var id: String, + var author: String, + var date: Calendar, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierClosingDetailsBleedings { + return gson.fromJson(jsonToParse.toString(), CashierClosingDetailsBleedings::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BaseCategory( + var id: String, + var name: String, + var description: String?, + var priority: Int, + var image: ImageUrl?, + var parentId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BaseCategory { + return gson.fromJson(jsonToParse.toString(), BaseCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Category( + var subCategories: ArrayList, + var id: String, + var name: String, + var description: String?, + var priority: Int, + var image: ImageUrl?, + var parentId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Category { + return gson.fromJson(jsonToParse.toString(), Category::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CategorySubCategories( + var subCategories: ArrayList, + var id: String, + var name: String, + var description: String?, + var priority: Int, + var image: ImageUrl?, + var parentId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CategorySubCategories { + return gson.fromJson(jsonToParse.toString(), CategorySubCategories::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CategorySubCategoriesSubCategories( + var id: String, + var name: String, + var description: String?, + var priority: Int, + var image: ImageUrl?, + var parentId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CategorySubCategoriesSubCategories { + return gson.fromJson(jsonToParse.toString(), CategorySubCategoriesSubCategories::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewCategory( + var name: String, + var description: String?, + var priority: Int, + var parentId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewCategory { + return gson.fromJson(jsonToParse.toString(), NewCategory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SellableList( + var products: ArrayList, + var combos: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SellableList { + return gson.fromJson(jsonToParse.toString(), SellableList::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SellableListProducts( + var id: String, + var name: String, + var category: String, + var type: String, + var image: ImageUrl?, + var hasAlcohol: Boolean?, + var fiscalCode: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SellableListProducts { + return gson.fromJson(jsonToParse.toString(), SellableListProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SellableListCombos( + var id: String, + var name: String, + var description: String, + var category: String, + var image: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SellableListCombos { + return gson.fromJson(jsonToParse.toString(), SellableListCombos::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CostOfGoodsSold( + var id: String, + var name: String, + var supplies: ArrayList, + var resellingPrice: Int, + var productUnitCost: Int?, + var productRealCost: Int?, + var relativePopularity: Float?, + var absolutePopularity: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CostOfGoodsSold { + return gson.fromJson(jsonToParse.toString(), CostOfGoodsSold::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CostOfGoodsSoldSupplies( + var id: String, + var name: String, + var quantity: Int, + var unitCost: Int?, + var realCost: Int?, + var isCompound: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CostOfGoodsSoldSupplies { + return gson.fromJson(jsonToParse.toString(), CostOfGoodsSoldSupplies::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewCoupon( + var placeId: String, + var name: String, + var discountType: CouponDiscountType, + var bonusValue: Int?, + var promotionId: String?, + var type: CouponType, + var expiresAt: Calendar?, + var quantity: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewCoupon { + return gson.fromJson(jsonToParse.toString(), NewCoupon::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Coupon( + var id: String, + var valid: Boolean, + var usageCount: Int, + var clientsAverageTicket: Int?, + var qrCodeUrl: String, + var promotion: MinimalPromotionInfo?, + var placeId: String, + var name: String, + var discountType: CouponDiscountType, + var bonusValue: Int?, + var promotionId: String?, + var type: CouponType, + var expiresAt: Calendar?, + var quantity: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Coupon { + return gson.fromJson(jsonToParse.toString(), Coupon::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Device( + var code: String, + var id: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Device { + return gson.fromJson(jsonToParse.toString(), Device::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class DeviceStatus( + var id: String, + var smallId: String, + var employee: String, + var status: String?, + var updatedAt: Calendar?, + var removedFromEventAt: Calendar? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): DeviceStatus { + return gson.fromJson(jsonToParse.toString(), DeviceStatus::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class DeviceEventStatus( + var id: String, + var fingerprint: String, + var employeeName: String?, + var isOnline: Boolean, + var lastOfflineSync: Calendar, + var pdvVersion: String, + var hasFinishedActivity: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): DeviceEventStatus { + return gson.fromJson(jsonToParse.toString(), DeviceEventStatus::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Employee( + var id: String?, + var name: String, + var username: String, + var zigReadPermissionKey: String?, + var avatar: ImageUrl?, + var permissions: ArrayList, + var role: Role?, + var organization: Organization, + var places: ArrayList, + var bar: Bar?, + var zigTag: String?, + var deviceIds: ArrayList?, + var blacklistEntrances: ArrayList? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Employee { + return gson.fromJson(jsonToParse.toString(), Employee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewEmployee( + var name: String, + var username: String, + var zigReadPermissionKey: String?, + var permissions: ArrayList, + var role: Role?, + var places: ArrayList, + var bar: String?, + var blacklistEntrances: ArrayList? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewEmployee { + return gson.fromJson(jsonToParse.toString(), NewEmployee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EditMultipleEmployees( + var username: String?, + var initialUsernameNumber: Int?, + var name: String?, + var initialNameNumber: Int?, + var roleSlug: String?, + var barId: String?, + var placeIds: ArrayList? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EditMultipleEmployees { + return gson.fromJson(jsonToParse.toString(), EditMultipleEmployees::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MinimalEmployee( + var id: String, + var name: String, + var avatar: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MinimalEmployee { + return gson.fromJson(jsonToParse.toString(), MinimalEmployee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Entrance( + var id: String?, + var name: String, + var category: String, + var value: Int, + var image: ImageUrl?, + var minimumConsumptionValue: Int, + var active: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Entrance { + return gson.fromJson(jsonToParse.toString(), Entrance::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EntranceSold( + var id: String, + var name: String, + var image: ImageUrl?, + var count: Int, + var totalValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EntranceSold { + return gson.fromJson(jsonToParse.toString(), EntranceSold::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RelationTicket( + var names: String?, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RelationTicket { + return gson.fromJson(jsonToParse.toString(), RelationTicket::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TicketSold( + var id: String, + var name: String, + var averageValue: Int, + var perRelation: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TicketSold { + return gson.fromJson(jsonToParse.toString(), TicketSold::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Bilheteiro( + var id: String, + var name: String, + var tickets: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Bilheteiro { + return gson.fromJson(jsonToParse.toString(), Bilheteiro::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EntranceUser( + var id: String, + var name: String, + var cpf: String, + var date: Calendar, + var productName: String, + var category: String, + var count: Int, + var unitValue: Int, + var employeeName: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EntranceUser { + return gson.fromJson(jsonToParse.toString(), EntranceUser::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventList( + var totalClients: Int, + var averageTicket: Int, + var totalIncome: Int, + var futureEvents: Int, + var events: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventList { + return gson.fromJson(jsonToParse.toString(), EventList::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventListEvents( + var id: String, + var name: String, + var status: EventState, + var begin: Calendar, + var end: Calendar?, + var image: ImageUrl?, + var tags: ArrayList, + var averageTicket: Int?, + var income: Int?, + var totalPublic: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventListEvents { + return gson.fromJson(jsonToParse.toString(), EventListEvents::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class DayResume( + var date: Calendar, + var withdrew: Int, + var _in: Int, + var _out: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): DayResume { + return gson.fromJson(jsonToParse.toString(), DayResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ExtractResume( + var available: Int, + var availableInTwoDays: Int, + var toBeReleased: Int, + var availableInMoreThanOneMonth: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ExtractResume { + return gson.fromJson(jsonToParse.toString(), ExtractResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Fee( + var zigMachineCredit: Float, + var zigMachineDebit: Float, + var inHouse: Float, + var app: Float, + var rechargeRemainings: Float, + var bonus: Float, + var minimumConsumption: Float + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Fee { + return gson.fromJson(jsonToParse.toString(), Fee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RechargeAvailable( + var id: String, + var user: String, + var totalValue: Int, + var usedValue: Int, + var createdAt: Calendar, + var expiredAt: Calendar, + var fee: Float, + var availableValue: Int, + var withdrew: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RechargeAvailable { + return gson.fromJson(jsonToParse.toString(), RechargeAvailable::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RechargeExpireResume( + var toBeAvailable: Int, + var rechargesAvailable: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RechargeExpireResume { + return gson.fromJson(jsonToParse.toString(), RechargeExpireResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ExtractDayResumeSection( + var title: String, + var description: String?, + var tooltip: String?, + var date: Calendar?, + var values: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ExtractDayResumeSection { + return gson.fromJson(jsonToParse.toString(), ExtractDayResumeSection::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ExtractDayResumeSectionValues( + var modality: String, + var totalValue: Int, + var tax: Float?, + var payValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ExtractDayResumeSectionValues { + return gson.fromJson(jsonToParse.toString(), ExtractDayResumeSectionValues::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RechargeExpireDayResume( + var expired: Int, + var date: Calendar, + var toExpire: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RechargeExpireDayResume { + return gson.fromJson(jsonToParse.toString(), RechargeExpireDayResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class WithdrawBankAccount( + var bank: String, + var cpfOrCnpj: String, + var account: String, + var agency: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): WithdrawBankAccount { + return gson.fromJson(jsonToParse.toString(), WithdrawBankAccount::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Withdraw( + var id: String, + var type: WithdrawType, + var value: Int, + var anticipationFee: Float?, + var status: WithdrawStatus, + var date: Calendar, + var paymentMethod: String?, + var proRataFee: Float? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Withdraw { + return gson.fromJson(jsonToParse.toString(), Withdraw::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ExtractAdjust( + var id: String, + var value: Int, + var obs: String?, + var payDate: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ExtractAdjust { + return gson.fromJson(jsonToParse.toString(), ExtractAdjust::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ConsolidatedExtract( + var sections: ArrayList, + var availableValue: Int, + var withdrewValue: Int, + var anticipatedValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ConsolidatedExtract { + return gson.fromJson(jsonToParse.toString(), ConsolidatedExtract::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ConsolidatedExtractSection( + var title: String, + var description: String, + var values: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ConsolidatedExtractSection { + return gson.fromJson(jsonToParse.toString(), ConsolidatedExtractSection::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ConsolidatedExtractSectionValues( + var title: String, + var hideIfZero: Boolean, + var totalValueUnit: ConsolidatedExtractSectionValuesTotalValueUnit, + var totalValue: Int?, + var maxFee: Float?, + var minFee: Float?, + var payValue: Int, + var highlighted: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ConsolidatedExtractSectionValues { + return gson.fromJson(jsonToParse.toString(), ConsolidatedExtractSectionValues::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ZigMachineResume( + var debit: Int, + var credit: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ZigMachineResume { + return gson.fromJson(jsonToParse.toString(), ZigMachineResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class IncomeResume( + var products: Int, + var entrances: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): IncomeResume { + return gson.fromJson(jsonToParse.toString(), IncomeResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReceiptResume( + var cashReceipt: Int, + var debitReceipt: Int, + var creditReceipt: Int, + var voucherReceipt: Int, + var zigCreditReceipt: Int, + var zigDebitReceipt: Int, + var appReceipt: Int, + var dashboardReceipt: Int, + var anticipatedReceipt: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReceiptResume { + return gson.fromJson(jsonToParse.toString(), ReceiptResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MoneyReceived( + var cash: Int, + var debit: Int, + var credit: Int, + var zigDebit: Int, + var zigCredit: Int, + var postEvent: Int, + var voucher: Int, + var dashboard: Int, + var anticipated: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MoneyReceived { + return gson.fromJson(jsonToParse.toString(), MoneyReceived::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Cashier( + var id: String, + var name: String, + var rechargeMoneyReceived: MoneyReceived?, + var postPaidMoneyReceived: MoneyReceived?, + var bleedings: ArrayList, + var closedValues: CashierClosedValues?, + var cashZigTagDevolutions: Int, + var rechargeDevolutions: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Cashier { + return gson.fromJson(jsonToParse.toString(), Cashier::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierBleedings( + var id: String, + var author: String, + var date: Calendar, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierBleedings { + return gson.fromJson(jsonToParse.toString(), CashierBleedings::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierClosedValues( + var cash: Int, + var credit: Int, + var debit: Int, + var voucher: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierClosedValues { + return gson.fromJson(jsonToParse.toString(), CashierClosedValues::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Client( + var id: String, + var cpf: String, + var name: String, + var phone: String, + var zigCode: String?, + var appTransactionsValue: Int, + var housePostPaidTransactionsValue: Int, + var housePrePaidTransactionsValue: Int, + var bonusTransactionsValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Client { + return gson.fromJson(jsonToParse.toString(), Client::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserTransactionProduct( + var id: String, + var type: SellableThing, + var name: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserTransactionProduct { + return gson.fromJson(jsonToParse.toString(), UserTransactionProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Payments( + var bonus: Int, + var prePaid: Int, + var ppu: Int, + var postPaid: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Payments { + return gson.fromJson(jsonToParse.toString(), Payments::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TransactionBuyers( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TransactionBuyers { + return gson.fromJson(jsonToParse.toString(), TransactionBuyers::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserTransaction( + var id: String, + var products: ArrayList, + var seller: Seller, + var buyers: ArrayList, + var date: Calendar, + var refunded: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserTransaction { + return gson.fromJson(jsonToParse.toString(), UserTransaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Debtor( + var userId: String, + var userName: String, + var value: Int, + var paidValue: Int, + var phone: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Debtor { + return gson.fromJson(jsonToParse.toString(), Debtor::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserBonusReport( + var id: String, + var name: String, + var receivedValue: Int, + var spentValue: Int, + var givenBy: String, + var reason: String?, + var date: Calendar? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserBonusReport { + return gson.fromJson(jsonToParse.toString(), UserBonusReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RechargeDetails( + var id: String, + var totalValue: Int, + var usedValue: Int, + var isRefunded: Boolean, + var date: Calendar, + var user: String, + var method: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RechargeDetails { + return gson.fromJson(jsonToParse.toString(), RechargeDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Payment( + var method: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Payment { + return gson.fromJson(jsonToParse.toString(), Payment::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PostDetails( + var id: String, + var payments: ArrayList, + var payers: ArrayList, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PostDetails { + return gson.fromJson(jsonToParse.toString(), PostDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ClientDetails( + var id: String, + var name: String, + var email: String?, + var hasApp: Boolean, + var zigCode: String?, + var phone: String, + var cpf: String, + var avatar: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ClientDetails { + return gson.fromJson(jsonToParse.toString(), ClientDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RechargeConsumption( + var value: Int, + var user: String, + var method: RechargeConsumptionMethod?, + var author: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RechargeConsumption { + return gson.fromJson(jsonToParse.toString(), RechargeConsumption::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MultipleUserIdsResult( + var success: ArrayList, + var error: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MultipleUserIdsResult { + return gson.fromJson(jsonToParse.toString(), MultipleUserIdsResult::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MultipleUserIdsResultError( + var userId: String, + var reason: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MultipleUserIdsResultError { + return gson.fromJson(jsonToParse.toString(), MultipleUserIdsResultError::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BillPayment( + var method: PaymentMethod, + var value: Int, + var isBonus: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BillPayment { + return gson.fromJson(jsonToParse.toString(), BillPayment::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RefundedRecharge( + var id: String, + var totalValue: Int, + var usedValue: Int, + var date: Calendar, + var userName: String, + var authorName: String, + var refundedBy: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RefundedRecharge { + return gson.fromJson(jsonToParse.toString(), RefundedRecharge::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ActivationReturnReport( + var cashValue: Int, + var cashQuantity: Int, + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ActivationReturnReport { + return gson.fromJson(jsonToParse.toString(), ActivationReturnReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ActivationReturnReportProducts( + var id: String, + var count: Int, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ActivationReturnReportProducts { + return gson.fromJson(jsonToParse.toString(), ActivationReturnReportProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventResumeSection( + var title: String, + var description: String?, + var columns: ArrayList, + var values: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventResumeSection { + return gson.fromJson(jsonToParse.toString(), EventResumeSection::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventResumeSectionValues( + var name: String, + var tooltip: String?, + var values: ArrayList, + var highlighted: Boolean, + var hideIfZero: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventResumeSectionValues { + return gson.fromJson(jsonToParse.toString(), EventResumeSectionValues::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventResumeSectionValuesValues( + var value: Float?, + var unit: EventResumeSectionValuesValuesUnit + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventResumeSectionValuesValues { + return gson.fromJson(jsonToParse.toString(), EventResumeSectionValuesValues::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UsedPromotion( + var promotionId: String, + var promotionName: String, + var productId: String, + var productName: String, + var productCategory: String, + var totalDiscount: Int, + var uses: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UsedPromotion { + return gson.fromJson(jsonToParse.toString(), UsedPromotion::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SoldEntranceWithEmployee( + var employeeId: String, + var employeeName: String, + var entranceId: String, + var entranceName: String, + var totalValue: Int, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SoldEntranceWithEmployee { + return gson.fromJson(jsonToParse.toString(), SoldEntranceWithEmployee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RefundedProduct( + var id: String, + var refundedAt: Calendar, + var name: String, + var category: String, + var unitValue: Int, + var count: Int, + var refundedBy: String, + var refundObs: String, + var buyers: ArrayList, + var isCanceled: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RefundedProduct { + return gson.fromJson(jsonToParse.toString(), RefundedProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TipRemovedList( + var employee: MinimalEmployee, + var totalRemoved: Int, + var removals: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TipRemovedList { + return gson.fromJson(jsonToParse.toString(), TipRemovedList::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TipRemovedListRemovals( + var id: String, + var name: String, + var value: Int, + var reason: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TipRemovedListRemovals { + return gson.fromJson(jsonToParse.toString(), TipRemovedListRemovals::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CardReturnEmployee( + var id: String, + var name: String, + var cashReturn: CardReturnEmployeeCashReturn, + var productReturn: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CardReturnEmployee { + return gson.fromJson(jsonToParse.toString(), CardReturnEmployee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CardReturnEmployeeCashReturn( + var count: Int, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CardReturnEmployeeCashReturn { + return gson.fromJson(jsonToParse.toString(), CardReturnEmployeeCashReturn::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CardReturnEmployeeProductReturn( + var id: String, + var count: Int, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CardReturnEmployeeProductReturn { + return gson.fromJson(jsonToParse.toString(), CardReturnEmployeeProductReturn::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class DiscountEmployee( + var id: String, + var name: String, + var discounts: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): DiscountEmployee { + return gson.fromJson(jsonToParse.toString(), DiscountEmployee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class DiscountEmployeeDiscounts( + var date: Calendar, + var value: Int, + var users: ArrayList, + var products: ArrayList, + var reason: String?, + var percentual: Float? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): DiscountEmployeeDiscounts { + return gson.fromJson(jsonToParse.toString(), DiscountEmployeeDiscounts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TransferEmployee( + var id: String, + var name: String, + var transfers: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TransferEmployee { + return gson.fromJson(jsonToParse.toString(), TransferEmployee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TransferEmployeeTransfers( + var date: Calendar, + var fromUser: String, + var toUser: String, + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TransferEmployeeTransfers { + return gson.fromJson(jsonToParse.toString(), TransferEmployeeTransfers::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ManualInvoice( + var eventId: String, + var invoiceId: String, + var value: Int, + var paymentMethod: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ManualInvoice { + return gson.fromJson(jsonToParse.toString(), ManualInvoice::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PostLimitChange( + var userName: String, + var employeeId: String, + var employeeName: String, + var date: Calendar, + var limit: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PostLimitChange { + return gson.fromJson(jsonToParse.toString(), PostLimitChange::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class OpenedBillPayment( + var user: OpenedBillPaymentUser, + var employee: OpenedBillPaymentEmployee, + var openedEventsDates: ArrayList, + var paymentId: String, + var method: OpenedBillPaymentMethod, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): OpenedBillPayment { + return gson.fromJson(jsonToParse.toString(), OpenedBillPayment::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class OpenedBillPaymentUser( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): OpenedBillPaymentUser { + return gson.fromJson(jsonToParse.toString(), OpenedBillPaymentUser::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class OpenedBillPaymentEmployee( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): OpenedBillPaymentEmployee { + return gson.fromJson(jsonToParse.toString(), OpenedBillPaymentEmployee::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class RappiDiscount( + var id: String, + var products: ArrayList, + var value: Int, + var date: Calendar, + var employee: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): RappiDiscount { + return gson.fromJson(jsonToParse.toString(), RappiDiscount::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProduct( + var id: String, + var image: String?, + var name: String, + var ncm: String, + var ncms: ArrayList, + var slug: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProduct { + return gson.fromJson(jsonToParse.toString(), FiscalProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProductNcms( + var name: String, + var ncm: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProductNcms { + return gson.fromJson(jsonToParse.toString(), FiscalProductNcms::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PlaceProductFiscalData( + var ncm: String?, + var cest: String?, + var fiscalProfileId: String?, + var fiscalProductGroupId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PlaceProductFiscalData { + return gson.fromJson(jsonToParse.toString(), PlaceProductFiscalData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductFiscalData( + var codigo: String?, + var ncm: String?, + var cest: String?, + var fiscalProfileId: String?, + var fiscalProductGroupId: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductFiscalData { + return gson.fromJson(jsonToParse.toString(), ProductFiscalData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Invoice( + var id: String, + var mode: InvoiceMode, + var issuedAt: Calendar, + var isIssued: Boolean, + var isIssuing: Boolean, + var error: String?, + var users: ArrayList, + var pdfUrl: String?, + var imgUrl: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Invoice { + return gson.fromJson(jsonToParse.toString(), Invoice::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class InvoiceWithEvent( + var event: MinimalEvent, + var id: String, + var mode: InvoiceMode, + var issuedAt: Calendar, + var isIssued: Boolean, + var isIssuing: Boolean, + var error: String?, + var users: ArrayList, + var pdfUrl: String?, + var imgUrl: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): InvoiceWithEvent { + return gson.fromJson(jsonToParse.toString(), InvoiceWithEvent::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class IssueResult( + var issuedInvoices: ArrayList, + var errors: ArrayList, + var failedInvoiceCount: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): IssueResult { + return gson.fromJson(jsonToParse.toString(), IssueResult::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SimpleIssueResult( + var errors: ArrayList, + var failedInvoiceCount: Int, + var success: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SimpleIssueResult { + return gson.fromJson(jsonToParse.toString(), SimpleIssueResult::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfile( + var id: String, + var name: String, + var org: FiscalProfileOrg, + var contact: FiscalProfileContact, + var address: FiscalProfileAddress, + var nfce: FiscalProfileNfce?, + var sat: FiscalProfileSat?, + var fiscalMode: FiscalMode? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfile { + return gson.fromJson(jsonToParse.toString(), FiscalProfile::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileOrg( + var cnpj: String, + var razaoSocial: String, + var nomeFantasia: String, + var regimeTributario: RegimeTributario, + var inscricaoEstadual: String, + var inscricaoMunicipal: String?, + var codigoMunicipio: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileOrg { + return gson.fromJson(jsonToParse.toString(), FiscalProfileOrg::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileContact( + var email: String, + var telefone: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileContact { + return gson.fromJson(jsonToParse.toString(), FiscalProfileContact::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileAddress( + var logradouro: String, + var numero: String, + var complemento: String, + var bairro: String, + var cep: String, + var municipio: String, + var uf: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileAddress { + return gson.fromJson(jsonToParse.toString(), FiscalProfileAddress::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileNfce( + var cscNfceProducao: String, + var idNfceProducao: String, + var cscNfceHomologacao: String?, + var idNfceHomologacao: String?, + var certificado: ByteArray?, + var senhaCertificado: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileNfce { + return gson.fromJson(jsonToParse.toString(), FiscalProfileNfce::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileSat( + var numeroSerieSat: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileSat { + return gson.fromJson(jsonToParse.toString(), FiscalProfileSat::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileMock( + var id: String, + var name: String, + var org: FiscalProfileMockOrg, + var contact: FiscalProfileMockContact, + var address: FiscalProfileMockAddress, + var nfce: FiscalProfileMockNfce?, + var sat: FiscalProfileMockSat?, + var fiscalMode: FiscalMode? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileMock { + return gson.fromJson(jsonToParse.toString(), FiscalProfileMock::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileMockOrg( + var cnpj: String, + var razaoSocial: String, + var nomeFantasia: String, + var regimeTributario: RegimeTributario, + var inscricaoEstadual: String, + var inscricaoMunicipal: String?, + var codigoMunicipio: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileMockOrg { + return gson.fromJson(jsonToParse.toString(), FiscalProfileMockOrg::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileMockContact( + var email: String, + var telefone: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileMockContact { + return gson.fromJson(jsonToParse.toString(), FiscalProfileMockContact::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileMockAddress( + var logradouro: String, + var numero: String, + var complemento: String, + var bairro: String, + var cep: String, + var municipio: String, + var uf: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileMockAddress { + return gson.fromJson(jsonToParse.toString(), FiscalProfileMockAddress::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileMockNfce( + var cscNfceProducao: String, + var idNfceProducao: String, + var certificado: ByteArray?, + var senhaCertificado: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileMockNfce { + return gson.fromJson(jsonToParse.toString(), FiscalProfileMockNfce::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProfileMockSat( + var numeroSerieSat: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProfileMockSat { + return gson.fromJson(jsonToParse.toString(), FiscalProfileMockSat::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProductGroup( + var id: String, + var name: String, + var cfop: String?, + var icms: FiscalProductGroupIcms?, + var pis: FiscalProductGroupPis?, + var cofins: FiscalProductGroupCofins?, + var service: FiscalProductGroupService?, + var type: FiscalProductGroupType + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProductGroup { + return gson.fromJson(jsonToParse.toString(), FiscalProductGroup::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProductGroupIcms( + var origem: String?, + var csosn: String?, + var cst: String?, + var aliquota: Float?, + var baseCalculo: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProductGroupIcms { + return gson.fromJson(jsonToParse.toString(), FiscalProductGroupIcms::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProductGroupPis( + var cst: String?, + var baseCalculo: String?, + var aliquotaPerc: Float?, + var quantidadeVendida: String?, + var aliquotaReais: Float? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProductGroupPis { + return gson.fromJson(jsonToParse.toString(), FiscalProductGroupPis::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProductGroupCofins( + var cst: String?, + var baseCalculo: String?, + var aliquotaPerc: Float?, + var quantidadeVendida: String?, + var aliquotaReais: Float? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProductGroupCofins { + return gson.fromJson(jsonToParse.toString(), FiscalProductGroupCofins::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FiscalProductGroupService( + var aliquota: Float, + var tipoServico: String, + var codigoTributacaoMunicipio: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FiscalProductGroupService { + return gson.fromJson(jsonToParse.toString(), FiscalProductGroupService::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SalesIssuedInPeriod( + var sales: Int, + var invoices: Int, + var percent: Float + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SalesIssuedInPeriod { + return gson.fromJson(jsonToParse.toString(), SalesIssuedInPeriod::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NotEmmitedTransaction( + var id: String, + var products: ArrayList, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NotEmmitedTransaction { + return gson.fromJson(jsonToParse.toString(), NotEmmitedTransaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NotEmmitedTransactionProducts( + var id: String, + var name: String, + var unitValue: Int, + var count: Int, + var discountValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NotEmmitedTransactionProducts { + return gson.fromJson(jsonToParse.toString(), NotEmmitedTransactionProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ManualRequest( + var fiscalProfileId: String, + var paymentMethod: String?, + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ManualRequest { + return gson.fromJson(jsonToParse.toString(), ManualRequest::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ManualRequestProducts( + var ncm: String, + var cest: String?, + var fiscalProductGroupId: String, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ManualRequestProducts { + return gson.fromJson(jsonToParse.toString(), ManualRequestProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NotEmittedProductOrCombo( + var id: String, + var name: String, + var type: NotEmittedProductOrComboType, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NotEmittedProductOrCombo { + return gson.fromJson(jsonToParse.toString(), NotEmittedProductOrCombo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class InvoicePrintData( + var printData: ArrayList?, + var epsonPrintData: ArrayList? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): InvoicePrintData { + return gson.fromJson(jsonToParse.toString(), InvoicePrintData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewInventory( + var date: Calendar, + var isTotal: Boolean, + var createdBy: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewInventory { + return gson.fromJson(jsonToParse.toString(), NewInventory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Inventory( + var id: String, + var status: InventoryStatus, + var storages: ArrayList, + var date: Calendar, + var isTotal: Boolean, + var createdBy: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Inventory { + return gson.fromJson(jsonToParse.toString(), Inventory::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class InventoryStorages( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): InventoryStorages { + return gson.fromJson(jsonToParse.toString(), InventoryStorages::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewInventoryProduct( + var productId: String, + var storageId: String, + var inventoryCount: Int?, + var inventoryUnitValue: Int?, + var realCount: Int?, + var realUnitValue: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewInventoryProduct { + return gson.fromJson(jsonToParse.toString(), NewInventoryProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class InventoryProduct( + var productName: String, + var productCategory: String, + var productCategoryId: String, + var productId: String, + var storageId: String, + var inventoryCount: Int?, + var inventoryUnitValue: Int?, + var realCount: Int?, + var realUnitValue: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): InventoryProduct { + return gson.fromJson(jsonToParse.toString(), InventoryProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TopSelling( + var name: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TopSelling { + return gson.fromJson(jsonToParse.toString(), TopSelling::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TopSellingCashier( + var id: String, + var name: String, + var rechargeMoneyReceived: Int, + var postPaidMoneyReceived: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TopSellingCashier { + return gson.fromJson(jsonToParse.toString(), TopSellingCashier::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class LiveResume( + var womenInside: Int, + var menInside: Int, + var otherInside: Int, + var menOutside: Int, + var womenOutside: Int, + var otherOutside: Int, + var eventIncome: Int, + var productsSold: Int, + var top5SellingProductsByQuantity: ArrayList, + var top5SellingProductsByPrice: ArrayList, + var topSellingBar: TopSelling?, + var topSellingEmployee: TopSelling?, + var averageTicket: Int, + var top5Clients: ArrayList, + var topSellingCashier: TopSellingCashier?, + var topDeliveryBarman: TopSelling?, + var topSellingNonBarmanEmployee: TopSelling? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): LiveResume { + return gson.fromJson(jsonToParse.toString(), LiveResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Public( + var womenInside: Int, + var menInside: Int, + var otherInside: Int, + var menOutside: Int, + var womenOutside: Int, + var otherOutside: Int, + var ticketZero: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Public { + return gson.fromJson(jsonToParse.toString(), Public::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TopSellingProducts( + var top5SellingProductsByQuantity: ArrayList, + var top5SellingProductsByPrice: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TopSellingProducts { + return gson.fromJson(jsonToParse.toString(), TopSellingProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TotalReceipt( + var bar: Receipt, + var entrances: Receipt, + var rechargeConsumptions: Int, + var entranceConsumptions: Int, + var barConsumptions: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TotalReceipt { + return gson.fromJson(jsonToParse.toString(), TotalReceipt::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Receipt( + var cash: Int, + var credit: Int, + var debit: Int, + var postEvent: Int, + var voucher: Int, + var app: Int, + var opened: Int, + var dashboard: Int, + var anticipated: Int, + var rappi: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Receipt { + return gson.fromJson(jsonToParse.toString(), Receipt::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ConsumptionTimeline( + var start: Calendar, + var intervalInMinutes: Int, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ConsumptionTimeline { + return gson.fromJson(jsonToParse.toString(), ConsumptionTimeline::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ConsumptionResume( + var minimumConsumption: Int, + var bonus: Int, + var normal: Int, + var openedBils: Int, + var creditFromPreviousEvents: Int, + var paidInFutureEvents: Int, + var app: Int, + var productsSold: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ConsumptionResume { + return gson.fromJson(jsonToParse.toString(), ConsumptionResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SelledProduct( + var name: String, + var count: Int, + var totalValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SelledProduct { + return gson.fromJson(jsonToParse.toString(), SelledProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PublicDetail( + var consumption: Int, + var new: Int, + var old: Int, + var zero: Int, + var consumptionPercetage: Float, + var inside: Int, + var total: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PublicDetail { + return gson.fromJson(jsonToParse.toString(), PublicDetail::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewPublic( + var totalConsumption: Int?, + var totalPublic: Int?, + var male: PublicDetail, + var female: PublicDetail, + var other: PublicDetail + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewPublic { + return gson.fromJson(jsonToParse.toString(), NewPublic::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Organization( + var id: String, + var name: String, + var description: String?, + var username: String, + var icon: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Organization { + return gson.fromJson(jsonToParse.toString(), Organization::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BankAccount( + var bank: String, + var accountName: String, + var cnpj: String, + var type: String, + var agency: String, + var account: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BankAccount { + return gson.fromJson(jsonToParse.toString(), BankAccount::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PlaceContract( + var fee: Fee, + var createdAt: Calendar, + var account: BankAccount? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PlaceContract { + return gson.fromJson(jsonToParse.toString(), PlaceContract::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Couvert( + var value: Int, + var name: String, + var category: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Couvert { + return gson.fromJson(jsonToParse.toString(), Couvert::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Place( + var id: String?, + var name: String, + var image: ImageUrl?, + var postPaidLimit: Int?, + var maleCouvert: Couvert?, + var femaleCouvert: Couvert?, + var bars: ArrayList, + var tip: Float, + var zigTagProduct: PlaceProduct?, + var sellVisualizationFormat: PlaceSellVisualizationFormat, + var fiscalPrinters: ArrayList, + var localServerIp: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Place { + return gson.fromJson(jsonToParse.toString(), Place::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewPlace( + var id: String?, + var name: String, + var postPaidLimit: Int?, + var maleCouvert: Couvert?, + var femaleCouvert: Couvert?, + var bars: ArrayList, + var tip: Float, + var zigTagProductId: String?, + var sellVisualizationFormat: NewPlaceSellVisualizationFormat, + var localServerIp: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewPlace { + return gson.fromJson(jsonToParse.toString(), NewPlace::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PlaceDetails( + var place: Place, + var products: ArrayList, + var combos: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PlaceDetails { + return gson.fromJson(jsonToParse.toString(), PlaceDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PlaceFeature( + var id: String, + var name: String, + var isEditableByPlace: Boolean, + var isActive: Boolean, + var description: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PlaceFeature { + return gson.fromJson(jsonToParse.toString(), PlaceFeature::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EverestConfig( + var host: String, + var user: String, + var password: String, + var cnpj: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EverestConfig { + return gson.fromJson(jsonToParse.toString(), EverestConfig::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PosTransaction( + var brand: String?, + var value: Int, + var lastDigits: String?, + var date: Calendar, + var acquirerUid: String, + var method: PosTransactionMethodMethod + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PosTransaction { + return gson.fromJson(jsonToParse.toString(), PosTransaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PaginationPosTransaction( + var currentPage: Int, + var itemsPerPage: Int, + var totalItems: Int, + var _data: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PaginationPosTransaction { + return gson.fromJson(jsonToParse.toString(), PaginationPosTransaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PosMachineDayResume( + var soldValue: Int, + var date: Calendar, + var brand: String?, + var method: PosTransactionMethodMethod + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PosMachineDayResume { + return gson.fromJson(jsonToParse.toString(), PosMachineDayResume::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PosTransactionMethod( + var method: PosTransactionMethodMethod + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PosTransactionMethod { + return gson.fromJson(jsonToParse.toString(), PosTransactionMethod::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductBarEntry( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductBarEntry { + return gson.fromJson(jsonToParse.toString(), ProductBarEntry::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PlaceProduct( + var id: String?, + var name: String, + var category: String, + var categoryId: String, + var value: Int, + var image: ImageUrl?, + var bars: ArrayList, + var active: Boolean, + var hasAlcohol: Boolean?, + var fiscalData: PlaceProductFiscalData?, + var type: String, + var minimumConsumptionValue: Int?, + var hasProductionRule: Boolean, + var proportionalValue: ProportionalValue?, + var mountableDescription: MountableDescription?, + var fiscalCode: String?, + var kind: ProductKind + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PlaceProduct { + return gson.fromJson(jsonToParse.toString(), PlaceProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Product( + var id: String?, + var name: String, + var category: String, + var value: Int?, + var image: ImageUrl?, + var hasAlcohol: Boolean?, + var type: String, + var fiscalCode: String?, + var kind: ProductKind + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Product { + return gson.fromJson(jsonToParse.toString(), Product::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewProduct( + var name: String, + var category: String, + var hasAlcohol: Boolean, + var fiscalCode: String?, + var kindId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewProduct { + return gson.fromJson(jsonToParse.toString(), NewProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EditedProduct( + var id: String, + var name: String, + var category: String, + var hasAlcohol: Boolean, + var fiscalCode: String?, + var kindId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EditedProduct { + return gson.fromJson(jsonToParse.toString(), EditedProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EditedResults( + var success: ArrayList, + var error: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EditedResults { + return gson.fromJson(jsonToParse.toString(), EditedResults::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EditedResultsError( + var product: EditedProduct, + var reason: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EditedResultsError { + return gson.fromJson(jsonToParse.toString(), EditedResultsError::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProportionalValue( + var quantity: Int, + var value: Int, + var unit: ProportionalValueUnit + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProportionalValue { + return gson.fromJson(jsonToParse.toString(), ProportionalValue::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewPlaceProduct( + var name: String, + var category: String, + var hasAlcohol: Boolean, + var fiscalData: PlaceProductFiscalData?, + var value: Int?, + var proportionalValue: ProportionalValue?, + var mountableDescription: NewMountableDescription?, + var fiscalCode: String?, + var kindId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewPlaceProduct { + return gson.fromJson(jsonToParse.toString(), NewPlaceProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EditProductImage( + var imageId: String?, + var _data: ByteArray? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EditProductImage { + return gson.fromJson(jsonToParse.toString(), EditProductImage::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Supply( + var id: String, + var name: String, + var bars: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Supply { + return gson.fromJson(jsonToParse.toString(), Supply::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class OrganizationProduct( + var id: String, + var places: ArrayList, + var name: String, + var category: String, + var categoryId: String, + var hasAlcohol: Boolean?, + var type: String, + var image: ImageUrl?, + var fiscalCode: String?, + var kind: ProductKind + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): OrganizationProduct { + return gson.fromJson(jsonToParse.toString(), OrganizationProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class OrganizationProductPlaces( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): OrganizationProductPlaces { + return gson.fromJson(jsonToParse.toString(), OrganizationProductPlaces::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class InputProduct( + var productId: String, + var storageId: String, + var unitCostValue: Int?, + var obs: String?, + var count: Int, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): InputProduct { + return gson.fromJson(jsonToParse.toString(), InputProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductRule( + var id: String, + var inputs: ArrayList, + var outputs: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductRule { + return gson.fromJson(jsonToParse.toString(), ProductRule::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductRuleInputs( + var id: String, + var count: Int, + var loss: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductRuleInputs { + return gson.fromJson(jsonToParse.toString(), ProductRuleInputs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductRuleOutputs( + var id: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductRuleOutputs { + return gson.fromJson(jsonToParse.toString(), ProductRuleOutputs::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductKind( + var id: String, + var masterKind: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductKind { + return gson.fromJson(jsonToParse.toString(), ProductKind::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SuggestedImages( + var tags: ArrayList, + var id: String, + var url: String, + var weight: Float + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SuggestedImages { + return gson.fromJson(jsonToParse.toString(), SuggestedImages::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductImageSearch( + var name: String, + var category: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductImageSearch { + return gson.fromJson(jsonToParse.toString(), ProductImageSearch::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PromotionInfo( + var id: String, + var products: ArrayList?, + var name: String, + var description: String, + var productIds: ArrayList?, + var discount: Float, + var expiresIn: Int?, + var maxUses: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PromotionInfo { + return gson.fromJson(jsonToParse.toString(), PromotionInfo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewPromotionInfo( + var name: String, + var description: String, + var productIds: ArrayList?, + var discount: Float, + var expiresIn: Int?, + var maxUses: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewPromotionInfo { + return gson.fromJson(jsonToParse.toString(), NewPromotionInfo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MultipleUserPromotionResult( + var success: ArrayList, + var error: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MultipleUserPromotionResult { + return gson.fromJson(jsonToParse.toString(), MultipleUserPromotionResult::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MultipleUserPromotionResultError( + var cpfOrPhone: String, + var reason: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MultipleUserPromotionResultError { + return gson.fromJson(jsonToParse.toString(), MultipleUserPromotionResultError::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PromotionUser( + var id: String, + var name: String, + var cpf: String, + var uses: Int, + var promotionId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PromotionUser { + return gson.fromJson(jsonToParse.toString(), PromotionUser::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Promoter( + var id: String, + var name: String, + var image: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Promoter { + return gson.fromJson(jsonToParse.toString(), Promoter::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Relation( + var id: String?, + var user: User?, + var cpf: String?, + var email: String?, + var name: String?, + var zigCode: String?, + var phone: String?, + var description: String, + var promoter: Promoter?, + var employee: EmployeeBase?, + var couvertPercentage: Float?, + var entrances: ArrayList? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Relation { + return gson.fromJson(jsonToParse.toString(), Relation::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EmployeeReportItem( + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EmployeeReportItem { + return gson.fromJson(jsonToParse.toString(), EmployeeReportItem::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EmployeeReportItemWithTotal( + var total: Int, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EmployeeReportItemWithTotal { + return gson.fromJson(jsonToParse.toString(), EmployeeReportItemWithTotal::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EmployeeReport( + var totals: EmployeeReportTotals, + var employees: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EmployeeReport { + return gson.fromJson(jsonToParse.toString(), EmployeeReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EmployeeReportTotals( + var sells: Int, + var financialOperations: Int, + var tip: Int, + var refunds: Int, + var checkIns: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EmployeeReportTotals { + return gson.fromJson(jsonToParse.toString(), EmployeeReportTotals::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EmployeeReportEmployees( + var id: String, + var name: String, + var eventNames: ArrayList, + var role: String?, + var eventRoles: ArrayList, + var avatar: ImageUrl?, + var sells: EmployeeReportItemWithTotal, + var financialOperations: EmployeeReportItemWithTotal, + var financialOperationsClosedValue: Int, + var tipValue: Int, + var refunds: EmployeeReportItemWithTotal, + var sellRefunds: EmployeeReportItemWithTotal, + var checkIns: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EmployeeReportEmployees { + return gson.fromJson(jsonToParse.toString(), EmployeeReportEmployees::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FinanceBiReport( + var events: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FinanceBiReport { + return gson.fromJson(jsonToParse.toString(), FinanceBiReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FinanceBiReportEvents( + var id: String, + var date: Calendar, + var incomes: ArrayList, + var bonus: Int, + var ticketZero: Int, + var female: Int, + var male: Int, + var other: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FinanceBiReportEvents { + return gson.fromJson(jsonToParse.toString(), FinanceBiReportEvents::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class FinanceBiReportEventsIncomes( + var value: Int, + var method: FinanceBiMethod + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): FinanceBiReportEventsIncomes { + return gson.fromJson(jsonToParse.toString(), FinanceBiReportEventsIncomes::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ClientByReport( + var events: ArrayList, + var topIncomeClients: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ClientByReport { + return gson.fromJson(jsonToParse.toString(), ClientByReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ClientByReportEvents( + var id: String, + var date: Calendar, + var male: Int, + var female: Int, + var other: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ClientByReportEvents { + return gson.fromJson(jsonToParse.toString(), ClientByReportEvents::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ClientByReportTopIncomeClients( + var id: String, + var name: String, + var phone: String, + var cpf: String, + var income: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ClientByReportTopIncomeClients { + return gson.fromJson(jsonToParse.toString(), ClientByReportTopIncomeClients::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductBiReport( + var id: String, + var name: String, + var categoryId: String, + var categoryName: String, + var image: ImageUrl?, + var sellCount: Int, + var profit: Int, + var consumption: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductBiReport { + return gson.fromJson(jsonToParse.toString(), ProductBiReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewReserve( + var name: String, + var estimatedPeopleCount: Int, + var obs: String, + var date: Calendar, + var reserveValue: Int?, + var minimumConsumptionValue: Int, + var promotionIds: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewReserve { + return gson.fromJson(jsonToParse.toString(), NewReserve::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Reserve( + var id: String, + var name: String, + var estimatedPeopleCount: Int, + var realPeopleCount: Int, + var obs: String, + var date: Calendar, + var reserveValue: Int?, + var minimumConsumptionValue: Int, + var promotions: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Reserve { + return gson.fromJson(jsonToParse.toString(), Reserve::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReservePromotions( + var id: String, + var name: String, + var description: String?, + var discount: Float + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReservePromotions { + return gson.fromJson(jsonToParse.toString(), ReservePromotions::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReserveDiscountDetail( + var fiscalProductGroupId: String?, + var fiscalProductGroup: String?, + var value: Int, + var ncm: String?, + var cest: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReserveDiscountDetail { + return gson.fromJson(jsonToParse.toString(), ReserveDiscountDetail::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReserveDetail( + var discounts: ArrayList, + var users: ArrayList, + var invoices: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReserveDetail { + return gson.fromJson(jsonToParse.toString(), ReserveDetail::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReserveDetailUsers( + var id: String, + var name: String, + var addedAt: Calendar, + var isInside: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReserveDetailUsers { + return gson.fromJson(jsonToParse.toString(), ReserveDetailUsers::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReserveDetailInvoices( + var id: String, + var date: Calendar, + var imgUrl: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReserveDetailInvoices { + return gson.fromJson(jsonToParse.toString(), ReserveDetailInvoices::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReserveReportRow( + var id: String, + var name: String, + var estimatedPeopleCount: Int, + var realPeopleCount: Int, + var totalConsumed: Int, + var totalDiscount: Int, + var totalPaidOrRecharged: Int, + var minimumConsumptionGiven: Int, + var minimumConsumptionUsed: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReserveReportRow { + return gson.fromJson(jsonToParse.toString(), ReserveReportRow::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class StorageProduct( + var id: String, + var name: String, + var quantity: Int, + var category: String, + var categoryId: String, + var image: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): StorageProduct { + return gson.fromJson(jsonToParse.toString(), StorageProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class User( + var id: String, + var cpf: String, + var name: String, + var avatar: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): User { + return gson.fromJson(jsonToParse.toString(), User::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserFilter( + var type: UserFilterType, + var filter: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserFilter { + return gson.fromJson(jsonToParse.toString(), UserFilter::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MinimalEvent( + var id: String, + var name: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MinimalEvent { + return gson.fromJson(jsonToParse.toString(), MinimalEvent::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class MinimalEventDetails( + var id: String, + var name: String, + var beginAt: Calendar?, + var endAt: Calendar? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): MinimalEventDetails { + return gson.fromJson(jsonToParse.toString(), MinimalEventDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserDetails( + var recharges: ArrayList, + var transactions: ArrayList, + var postPayments: ArrayList, + var cpf: String, + var phone: String, + var email: String?, + var checkInTime: Calendar?, + var checkOutTime: Calendar? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserDetails { + return gson.fromJson(jsonToParse.toString(), UserDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserDetailsTransactions( + var id: String, + var userValue: Int, + var date: Calendar, + var isShared: Boolean, + var isRefunded: Boolean, + var refundedBy: String?, + var sellerName: String, + var event: MinimalEventDetails, + var tipValue: Int, + var consumptionWithCreditFromOtherEvents: Int, + var paidByApp: Boolean, + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserDetailsTransactions { + return gson.fromJson(jsonToParse.toString(), UserDetailsTransactions::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserDetailsTransactionsProducts( + var name: String, + var count: Int, + var value: Int, + var discountValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserDetailsTransactionsProducts { + return gson.fromJson(jsonToParse.toString(), UserDetailsTransactionsProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserRecharge( + var totalValue: Int, + var usedValue: Int, + var authorName: String, + var date: Calendar, + var isBonus: Boolean, + var method: UserRechargeMethod?, + var refunded: Boolean, + var expired: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserRecharge { + return gson.fromJson(jsonToParse.toString(), UserRecharge::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserRechargeWithEvent( + var event: MinimalEvent, + var totalValue: Int, + var usedValue: Int, + var authorName: String, + var date: Calendar, + var isBonus: Boolean, + var method: UserRechargeMethod?, + var refunded: Boolean, + var expired: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserRechargeWithEvent { + return gson.fromJson(jsonToParse.toString(), UserRechargeWithEvent::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewUserRecharge( + var type: NewUserRechargeType, + var reason: String?, + var value: Int, + var cpf: String, + var name: String?, + var email: String?, + var phone: String?, + var isForeign: Boolean?, + var gender: NewUserRechargeGender + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewUserRecharge { + return gson.fromJson(jsonToParse.toString(), NewUserRecharge::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class GiveRechargeError( + var cpf: String, + var err: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): GiveRechargeError { + return gson.fromJson(jsonToParse.toString(), GiveRechargeError::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventUser( + var id: String, + var hasApp: Boolean, + var checkInTime: Calendar, + var name: String, + var email: String?, + var gender: String?, + var phone: String, + var cpf: String, + var zigCode: String?, + var checkOutTime: Calendar? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventUser { + return gson.fromJson(jsonToParse.toString(), EventUser::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SearchFilters( + var gender: ArrayList, + var consumptionVolume: Int, + var presences: Int, + var presenceDays: ArrayList, + var productConsumption: ArrayList, + var notUsedRecharges: Int?, + var since: Calendar, + var until: Calendar, + var name: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SearchFilters { + return gson.fromJson(jsonToParse.toString(), SearchFilters::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SearchFiltersProductConsumption( + var id: String, + var amount: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SearchFiltersProductConsumption { + return gson.fromJson(jsonToParse.toString(), SearchFiltersProductConsumption::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class SearchResult( + var id: String, + var name: String, + var email: String?, + var birthdate: Calendar?, + var cpf: String, + var phone: String, + var hasApp: Boolean, + var consumption: Int, + var presences: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): SearchResult { + return gson.fromJson(jsonToParse.toString(), SearchResult::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserDetailsByEvents( + var event: MinimalEventDetails, + var recharges: ArrayList, + var transactions: ArrayList, + var postPayments: ArrayList, + var cpf: String, + var phone: String, + var email: String?, + var checkInTime: Calendar?, + var checkOutTime: Calendar? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserDetailsByEvents { + return gson.fromJson(jsonToParse.toString(), UserDetailsByEvents::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserDetailsByEventsTransactions( + var id: String, + var userValue: Int, + var date: Calendar, + var isShared: Boolean, + var isRefunded: Boolean, + var refundedBy: String?, + var sellerName: String, + var tipValue: Int, + var consumptionWithCreditFromOtherEvents: Int, + var paidByApp: Boolean, + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserDetailsByEventsTransactions { + return gson.fromJson(jsonToParse.toString(), UserDetailsByEventsTransactions::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserDetailsByEventsTransactionsProducts( + var name: String, + var count: Int, + var value: Int, + var discountValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserDetailsByEventsTransactionsProducts { + return gson.fromJson(jsonToParse.toString(), UserDetailsByEventsTransactionsProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ZigTagBlockConfirm( + var id: String, + var employee: MinimalEmployee, + var event: MinimalEvent, + var date: Calendar, + var user: User, + var zigTagCode: String, + var recharges: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ZigTagBlockConfirm { + return gson.fromJson(jsonToParse.toString(), ZigTagBlockConfirm::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ZigTagBlockConfirmRecharges( + var id: String, + var value: Int, + var date: Calendar, + var expirationDate: Calendar, + var paymentPrePaidType: PaymentPrePaidType? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ZigTagBlockConfirmRecharges { + return gson.fromJson(jsonToParse.toString(), ZigTagBlockConfirmRecharges::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ZigTagSyncForce( + var id: String, + var employee: MinimalEmployee, + var event: MinimalEvent, + var date: Calendar, + var user: User, + var reason: String, + var balance: Int, + var zigTagCode: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ZigTagSyncForce { + return gson.fromJson(jsonToParse.toString(), ZigTagSyncForce::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ImageUrl( + var url: String, + var sha256: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ImageUrl { + return gson.fromJson(jsonToParse.toString(), ImageUrl::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Event( + var id: String, + var name: String, + var description: String?, + var place: Place?, + var status: EventState, + var begin: Calendar, + var end: Calendar?, + var cover: ImageUrl?, + var image: ImageUrl?, + var attractions: ArrayList? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Event { + return gson.fromJson(jsonToParse.toString(), Event::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BaseCombo( + var name: String, + var value: Int, + var description: String?, + var category: String, + var active: Boolean, + var fiscalData: ProductFiscalData? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BaseCombo { + return gson.fromJson(jsonToParse.toString(), BaseCombo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewPlaceCombo( + var kindId: String, + var products: ArrayList, + var name: String, + var value: Int, + var description: String?, + var category: String, + var active: Boolean, + var fiscalData: ProductFiscalData? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewPlaceCombo { + return gson.fromJson(jsonToParse.toString(), NewPlaceCombo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class NewPlaceComboProducts( + var id: String, + var count: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): NewPlaceComboProducts { + return gson.fromJson(jsonToParse.toString(), NewPlaceComboProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PlaceCombo( + var id: String, + var kind: ProductKind, + var products: ArrayList, + var image: ImageUrl?, + var name: String, + var value: Int, + var description: String?, + var category: String, + var active: Boolean, + var fiscalData: ProductFiscalData? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PlaceCombo { + return gson.fromJson(jsonToParse.toString(), PlaceCombo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class PlaceComboProducts( + var id: String, + var count: Int, + var name: String, + var image: ImageUrl?, + var category: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): PlaceComboProducts { + return gson.fromJson(jsonToParse.toString(), PlaceComboProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventDetails( + var placeId: String, + var begin: Calendar, + var end: Calendar?, + var name: String, + var description: String?, + var attractions: ArrayList? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventDetails { + return gson.fromJson(jsonToParse.toString(), EventDetails::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class OpenedReports( + var type: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): OpenedReports { + return gson.fromJson(jsonToParse.toString(), OpenedReports::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EmployeeBase( + var id: String?, + var name: String, + var username: String, + var zigReadPermissionKey: String?, + var avatar: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EmployeeBase { + return gson.fromJson(jsonToParse.toString(), EmployeeBase::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Seller( + var id: String, + var name: String, + var avatar: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Seller { + return gson.fromJson(jsonToParse.toString(), Seller::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TransactionProduct( + var id: String, + var name: String, + var category: String, + var value: Int, + var count: Int, + var image: ImageUrl? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TransactionProduct { + return gson.fromJson(jsonToParse.toString(), TransactionProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TransactionComboProduct( + var id: String, + var name: String, + var count: Int, + var originalValue: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TransactionComboProduct { + return gson.fromJson(jsonToParse.toString(), TransactionComboProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TransactionCombo( + var id: String, + var products: ArrayList, + var value: Int, + var name: String, + var category: String, + var count: Int, + var description: String? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TransactionCombo { + return gson.fromJson(jsonToParse.toString(), TransactionCombo::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Transaction( + var id: String, + var date: Calendar, + var products: ArrayList, + var combos: ArrayList, + var place: String, + var event: String, + var seller: Seller, + var buyers: ArrayList, + var paid: Boolean, + var refunded: Boolean, + var refundedBy: String?, + var refundedObs: String?, + var value: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Transaction { + return gson.fromJson(jsonToParse.toString(), Transaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductSold( + var id: String, + var name: String, + var category: String, + var image: ImageUrl?, + var count: Int, + var type: SellableThing, + var totalValue: Int, + var totalDiscount: Int, + var mountableProducts: ArrayList, + var productUnitCost: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductSold { + return gson.fromJson(jsonToParse.toString(), ProductSold::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductSoldMountableProducts( + var id: String, + var name: String, + var count: Int, + var section: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductSoldMountableProducts { + return gson.fromJson(jsonToParse.toString(), ProductSoldMountableProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class StockProduct( + var id: String, + var name: String, + var quantity: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): StockProduct { + return gson.fromJson(jsonToParse.toString(), StockProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class Transfer( + var value: Int, + var date: Calendar, + var paid: Boolean, + var reason: TransferReason + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): Transfer { + return gson.fromJson(jsonToParse.toString(), Transfer::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ProductTransfer( + var employee: EmployeeBase, + var count: Int, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ProductTransfer { + return gson.fromJson(jsonToParse.toString(), ProductTransfer::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class ReportProduct( + var id: String, + var name: String, + var value: Int, + var image: ImageUrl?, + var transfers: ArrayList?, + var finalCount: Int?, + var lostCount: Int?, + var deliveredCount: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): ReportProduct { + return gson.fromJson(jsonToParse.toString(), ReportProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class StockReportData( + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): StockReportData { + return gson.fromJson(jsonToParse.toString(), StockReportData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BarReportData( + var products: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BarReportData { + return gson.fromJson(jsonToParse.toString(), BarReportData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierTransfer( + var value: Int, + var employee: EmployeeBase, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierTransfer { + return gson.fromJson(jsonToParse.toString(), CashierTransfer::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierReportDataInput( + var finalInputCredit: Int, + var finalInputDebit: Int, + var finalInputCash: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierReportDataInput { + return gson.fromJson(jsonToParse.toString(), CashierReportDataInput::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CashierReportData( + var finalInputCredit: Int?, + var finalInputDebit: Int?, + var finalInputCash: Int?, + var transfers: ArrayList, + var salesCredit: Int?, + var salesDebit: Int?, + var salesCash: Int? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CashierReportData { + return gson.fromJson(jsonToParse.toString(), CashierReportData::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class EventReport( + var id: String, + var type: ReportType, + var closed: Boolean, + var employee: Employee?, + var cashierData: CashierReportData?, + var barData: BarReportData?, + var stockData: StockReportData?, + var bar: Bar? + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): EventReport { + return gson.fromJson(jsonToParse.toString(), EventReport::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class StockTransfer( + var employeeBar: String, + var stocker: String, + var product: String, + var quantity: Int, + var date: Calendar, + var bar: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): StockTransfer { + return gson.fromJson(jsonToParse.toString(), StockTransfer::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BillProducts( + var category: String, + var name: String, + var value: Int, + var quantity: Int + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BillProducts { + return gson.fromJson(jsonToParse.toString(), BillProducts::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BillTransaction( + var id: String, + var date: Calendar, + var products: ArrayList, + var seller: String, + var refunded: Boolean, + var value: Int, + var tip: Int, + var totalValue: Int, + var paid: Boolean + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BillTransaction { + return gson.fromJson(jsonToParse.toString(), BillTransaction::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class UserBill( + var id: String, + var name: String, + var transactions: ArrayList + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): UserBill { + return gson.fromJson(jsonToParse.toString(), UserBill::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class CpfOrPhone( + var type: CpfOrPhoneType, + var value: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): CpfOrPhone { + return gson.fromJson(jsonToParse.toString(), CpfOrPhone::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TimelineProduct( + var name: String, + var id: String, + var count: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TimelineProduct { + return gson.fromJson(jsonToParse.toString(), TimelineProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class TimelineEvent( + var id: String, + var type: TimelineEventType, + var value: Int, + var products: ArrayList?, + var shared: Boolean?, + var paid: Boolean?, + var refunded: Boolean?, + var usedValue: Int?, + var expired: Boolean?, + var rechargeType: String?, + var date: Calendar + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): TimelineEvent { + return gson.fromJson(jsonToParse.toString(), TimelineEvent::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class BonusProduct( + var bonusValue: Int, + var name: String, + var id: String, + var category: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): BonusProduct { + return gson.fromJson(jsonToParse.toString(), BonusProduct::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class GuinnessLog( + var employee: String, + var name: String?, + var cpf: String?, + var uid: String, + var date: Calendar, + var type: GuinnessLogType + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): GuinnessLog { + return gson.fromJson(jsonToParse.toString(), GuinnessLog::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + data class GetBackofficeConfig( + var zigAccountId: String, + var placeAccountId: String, + var zigSupplierId: String + ): Serializable { + + companion object { + fun fromJson(jsonToParse : JSONObject): GetBackofficeConfig { + return gson.fromJson(jsonToParse.toString(), GetBackofficeConfig::class.java) + } + + fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { + return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) + } + } + fun toJson(): JSONObject { + return JSONObject(gson.toJson(this)) }} + + enum class CouponType { + DiscountCoupon, + GiftCard + } + + enum class CouponDiscountType { + Bonus, + Promotion + } + + enum class PostPaymentEventPostPaymentType { + App, + Place + } + + enum class NewMountableSectionPricing { + sum, + average, + higher + } + + enum class PrinterType { + EPSON, + BEMATECH + } + + enum class PaymentPrePaidType { + MinimumConsumption, + Bonus, + FromEvent, + FromOtherEvent, + FromApp, + FakeRecharge + } + + enum class DashboardAlertType { + ExtractPriority, + Normal + } + + enum class BackofficeBillPaymentMethod { + App, + Money, + Check, + Boleto, + CreditCard, + BankTransfer, + Promissory, + DebitCard, + AutomaticDebit + } + + enum class BackofficeBaseBillStatus { + Paid, + Pending + } + + enum class BackofficeBillStatusFilter { + Any, + ToPay, + ToReceive + } + + enum class BackofficeBillDateFilter { + ByDue, + ByPerform + } + + enum class BackofficeInventoryStatus { + Opened, + Closed, + Canceled + } + + enum class BackofficeImportedInvoiceDetailsField { + insuranceValue, + discountValue, + otherExpensesValue, + shippingValue + } + + enum class BackofficeManifestType { + ciencia, + confirmacao, + desconhecimento, + naoRealizada + } + + enum class BackofficeResumeBillsDueToTodayStatus { + Paid, + Pending + } + + enum class BackofficeStorageTransferType { + input, + transferOut, + transferIn, + lost, + sell, + refund, + manual, + productionOut, + productionIn, + invoice, + inventory + } + + enum class WithdrawStatus { + Pending, + Paid, + Refused, + Processing + } + + enum class WithdrawType { + Anticipation, + Withdraw + } + + enum class ConsolidatedExtractSectionValuesTotalValueUnit { + unit, + money + } + + enum class RechargeConsumptionMethod { + debit, + credit, + cash, + voucher, + dashboard, + anticipated + } + + enum class PaymentMethod { + CreditCard, + DebitCard, + Cash, + PostEvent, + ZigPosCredit, + ZigPosDebit, + Voucher + } + + enum class EventResumeSectionValuesValuesUnit { + money, + un, + percentage + } + + enum class OpenedBillPaymentMethod { + CreditCard, + DebitCard, + Cash, + PostEvent, + ZigPosCredit, + ZigPosDebit, + Voucher, + Bonus + } + + enum class RegimeTributario { + SimplesNacional, + SimplesNacionalExcesso, + RegimeNormal + } + + enum class FiscalMode { + nfce, + sat + } + + enum class InvoiceMode { + sat, + nfse, + nfce + } + + enum class FiscalProductGroupType { + invoice, + service + } + + enum class NotEmittedProductOrComboType { + combo, + product + } + + enum class InventoryStatus { + Opened, + Closed, + Canceled + } + + enum class PlaceSellVisualizationFormat { + Grid, + List + } + + enum class NewPlaceSellVisualizationFormat { + Grid, + List + } + + enum class PosTransactionMethodMethod { + Credit, + Debit + } + + enum class ProportionalValueUnit { + gramas, + ml + } + + enum class FinanceBiMethod { + Credit, + Debit, + Cash, + PostEvent, + ZigCredit, + ZigDebit, + Voucher, + Anticipated, + Dashboard, + App + } + + enum class UserFilterType { + cpf, + phone, + zigcode, + id + } + + enum class UserRechargeMethod { + CreditCard, + DebitCard, + Cash, + App, + ZigPosCredit, + ZigPosDebit, + Voucher, + Dashboard, + Anticipated + } + + enum class NewUserRechargeType { + minimumConsumption, + normal + } + + enum class NewUserRechargeGender { + Male, + Female, + Other + } + + enum class EventState { + Created, + Finished, + Running, + Canceled + } + + enum class SellableThing { + Product, + Combo + } + + enum class TransferReason { + PPUTransaction, + PostTransactionOnline, + PostTransactionInPlace, + RechargeInPlace, + RechargeInApp, + PreTransaction, + PreTransactionWithPlaceCredit, + PreTransactionWithPlaceCreditFromOtherEvent, + BonusTransaction, + RefundedTransaction, + PaidPostPaidTransactionsInPlace + } + + enum class ReportType { + Waiter, + Stock, + GeneralEmployee, + Cashier, + Bar + } + + enum class CpfOrPhoneType { + cpf, + phone + } + + enum class TimelineEventType { + Recharge, + Transaction, + PostPayment + } + + enum class GuinnessLogType { + checkin, + checkout + } + + enum class ErrorType { + BackofficeError, + NotLoggedIn, + LacksPermission, + InvalidArgument, + WrongLogin, + DoesntExist, + LacksFeature, + Fatal, + Connection, + Serialization + } + + enum class ApplySuggestedImageForProductType { + product, + combo + } + +var calls = object: Calls { + override fun getAllPermissions(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getAllPermissions", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllRoles(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getAllRoles", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteRole(slug: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("slug", slug) + } + val r = makeRequest("deleteRole", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createRole(name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("name", name) + put("permissions", JSONArray().apply { + permissions.forEach { item -> put(item) } + }) + } + val r = makeRequest("createRole", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Role::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateRole(slug: String, name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("slug", slug) + put("name", name) + put("permissions", JSONArray().apply { + permissions.forEach { item -> put(item) } + }) + } + val r = makeRequest("updateRole", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Role::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAlerts(placeId: String, skip: Int, limit: Int): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("skip", skip) + put("limit", limit) + } + val r = makeRequest("getAlerts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun markAlertAsRead(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("markAlertAsRead", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAnnounces(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getAnnounces", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createAnnounce(announce: Announce, eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("announce", gson.toJson(announce)) + put("eventId", eventId) + } + val r = makeRequest("createAnnounce", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editAnnounce(announce: Announce): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("announce", gson.toJson(announce)) + } + val r = makeRequest("editAnnounce", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeAnnounce(announceId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("announceId", announceId) + } + val r = makeRequest("removeAnnounce", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeConfig", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), GetBackofficeConfig::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeAccount(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeAccount", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeAccount::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeAccounts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeAccounts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeAccount(placeId: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("account", gson.toJson(account)) + } + val r = makeRequest("createBackofficeAccount", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeAccount::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeAccount(placeId: String, id: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("account", gson.toJson(account)) + } + val r = makeRequest("editBackofficeAccount", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeAccount(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeAccount", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBill(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeBill", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBill::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeBills", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeBill(placeId: String, bill: BackofficeNewBill, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("bill", gson.toJson(bill)) + put("attachment", attachment?.let { gson.toJson(attachment) }) + } + val r = makeRequest("createBackofficeBill", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBill::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeBill(placeId: String, id: String, bill: BackofficeNewBill): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("bill", gson.toJson(bill)) + } + val r = makeRequest("editBackofficeBill", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun payBackofficeBill(placeId: String, id: String, date: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("date", dateTimeFormat.format(date)) + } + val r = makeRequest("payBackofficeBill", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeBillAttachment(placeId: String, id: String, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("attachment", attachment?.let { gson.toJson(attachment) }) + } + val r = makeRequest("editBackofficeBillAttachment", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeBill(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeBill", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun exportBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("exportBackofficeBills", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun parseBackofficeBillsToImport(placeId: String, _file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("file", Base64.encodeToString(_file, Base64.DEFAULT)) + } + val r = makeRequest("parseBackofficeBillsToImport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun importBackofficeBills(placeId: String, _file: ByteArray): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("file", Base64.encodeToString(_file, Base64.DEFAULT)) + } + val r = makeRequest("importBackofficeBills", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeBillPlanCategory(name: String, parentId: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("name", name) + put("parentId", parentId?.let { parentId }) + } + val r = makeRequest("createBackofficeBillPlanCategory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillPlanCategoryBase::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteBackofficeBillPlanCategory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("getBackofficeBillPlanCategory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillPlanCategoryBase::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillPlans(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getBackofficeBillPlans", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillPlansTreeLeafs(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getBackofficeBillPlansTreeLeafs", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillPlansTreeLeafsByLevel(level: Int): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("level", level) + } + val r = makeRequest("getBackofficeBillPlansTreeLeafsByLevel", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeBillPlanCategoryName(id: String, name: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("name", name) + } + val r = makeRequest("editBackofficeBillPlanCategoryName", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillPlanCategoryBase::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeBillPlanCategoryParent(id: String, newParentId: String?): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("newParentId", newParentId?.let { newParentId }) + } + val r = makeRequest("editBackofficeBillPlanCategoryParent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeSuggestedBillPlan(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("createBackofficeSuggestedBillPlan", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun exportBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { + val r = makeRequest("exportBackofficeBillPlan", null) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun importBackofficeBillPlan(_file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("file", Base64.encodeToString(_file, Base64.DEFAULT)) + } + val r = makeRequest("importBackofficeBillPlan", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { + val r = makeRequest("deleteBackofficeBillPlan", null) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillType(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeBillType", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillType::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillTypes(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeBillTypes", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeBillType(placeId: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("billType", gson.toJson(billType)) + } + val r = makeRequest("createBackofficeBillType", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillType::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeBillType(placeId: String, id: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("billType", gson.toJson(billType)) + } + val r = makeRequest("editBackofficeBillType", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeBillType(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeBillType", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCategory(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeCategory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCategory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeCategories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeCategory(placeId: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("category", gson.toJson(category)) + } + val r = makeRequest("createBackofficeCategory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCategory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeCategory(placeId: String, id: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("category", gson.toJson(category)) + } + val r = makeRequest("editBackofficeCategory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeCategory(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeCategory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductsCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("shouldUseLastInvoice", shouldUseLastInvoice) + } + val r = makeRequest("getBackofficeProductsCmv", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductsCmvAvg(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("shouldUseLastInvoice", shouldUseLastInvoice) + } + val r = makeRequest("getBackofficeProductsCmvAvg", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCurrentProductsCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("shouldUseLastInvoice", shouldUseLastInvoice) + } + val r = makeRequest("getBackofficeCurrentProductsCmv", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductsSimpleCurrentCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("shouldUseLastInvoice", shouldUseLastInvoice) + } + val r = makeRequest("getBackofficeProductsSimpleCurrentCmv", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductsSimpleCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("shouldUseLastInvoice", shouldUseLastInvoice) + } + val r = makeRequest("getBackofficeProductsSimpleCmv", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCostCenter(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeCostCenter", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCostCenter::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCostCenters(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeCostCenters", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeCostCenter(placeId: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("costCenter", gson.toJson(costCenter)) + } + val r = makeRequest("createBackofficeCostCenter", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCostCenter::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeCostCenter(placeId: String, id: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("costCenter", gson.toJson(costCenter)) + } + val r = makeRequest("editBackofficeCostCenter", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeCostCenter(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeCostCenter", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun insertBackofficeFocusCompany(placeId: String, cnpj: String, token: String, lastInvoiceVersion: Int?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("cnpj", cnpj) + put("token", token) + put("lastInvoiceVersion", lastInvoiceVersion?.let { lastInvoiceVersion }) + } + val r = makeRequest("insertBackofficeFocusCompany", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeFocusCompany::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateBackofficeFocusCompany(placeId: String, id: String, token: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("token", token) + } + val r = makeRequest("updateBackofficeFocusCompany", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeFocusCompany::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeFocusCompany(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeFocusCompany", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeFocusCompanies(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeFocusCompanies", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeFocusCompany(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeFocusCompany", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeFocusCompany::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeFocusInvoices(placeId: String, focusCompanyId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("focusCompanyId", focusCompanyId) + } + val r = makeRequest("getBackofficeFocusInvoices", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeInventory(placeId: String, inventory: BackofficeNewInventory, shouldOverlapOldInventory: Boolean): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("inventory", gson.toJson(inventory)) + put("shouldOverlapOldInventory", shouldOverlapOldInventory) + } + val r = makeRequest("createBackofficeInventory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeInventory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getBackofficeInventories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeOpenedInventories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun addBackofficeStorageToInventory(placeId: String, inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("inventoryId", inventoryId) + put("storageIds", JSONArray().apply { + storageIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("addBackofficeStorageToInventory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeInventory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeInventoryProductsAtStorage(placeId: String, inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("inventoryId", inventoryId) + put("storageId", storageId) + } + val r = makeRequest("getBackofficeInventoryProductsAtStorage", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeInventoryProducts(placeId: String, inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("inventoryId", inventoryId) + } + val r = makeRequest("getBackofficeInventoryProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateBackofficeInventoryProduct(placeId: String, inventoryId: String, authorId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("inventoryId", inventoryId) + put("authorId", authorId) + put("products", JSONArray().apply { + products.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("updateBackofficeInventoryProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun closeBackofficeInventory(placeId: String, authorId: String, inventoryId: String, alterUnitValue: Boolean): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("authorId", authorId) + put("inventoryId", inventoryId) + put("alterUnitValue", alterUnitValue) + } + val r = makeRequest("closeBackofficeInventory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun cancelBackofficeInventory(placeId: String, authorId: String, inventoryId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("authorId", authorId) + put("inventoryId", inventoryId) + } + val r = makeRequest("cancelBackofficeInventory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeImportedInvoices(placeId: String, since: Calendar?, until: Calendar?): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", since?.let { dateTimeFormat.format(since) }) + put("until", until?.let { dateTimeFormat.format(until) }) + } + val r = makeRequest("getBackofficeImportedInvoices", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun importBackofficeInvoice(placeId: String, storageId: String?, xml: ByteArray): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId?.let { storageId }) + put("xml", Base64.encodeToString(xml, Base64.DEFAULT)) + } + val r = makeRequest("importBackofficeInvoice", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeImportedInvoice::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeManualInvoice(placeId: String, manualInvoice: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("manualInvoice", gson.toJson(manualInvoice)) + } + val r = makeRequest("createBackofficeManualInvoice", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeImportedInvoice::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeManualInvoiceDetails(placeId: String, invoiceId: String, invoiceInfo: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + put("invoiceInfo", gson.toJson(invoiceInfo)) + } + val r = makeRequest("editBackofficeManualInvoiceDetails", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun invalidateBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + put("entryId", entryId) + } + val r = makeRequest("invalidateBackofficeInvoiceProduct", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductLastInvoiceDetails(placeId: String, associatedProductId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("associatedProductId", associatedProductId) + } + val r = makeRequest("getBackofficeProductLastInvoiceDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeProductLastInvoiceDetails::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeInvoiceProducts(placeId: String, invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + } + val r = makeRequest("getBackofficeInvoiceProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeInvoiceBill(placeId: String, invoiceId: String, createBill: Boolean, accountId: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + put("createBill", createBill) + put("accountId", accountId?.let { accountId }) + } + val r = makeRequest("editBackofficeInvoiceBill", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String, skipped: Boolean, productId: String?, unitValue: Int?, unitMultiplier: Int): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + put("entryId", entryId) + put("skipped", skipped) + put("productId", productId?.let { productId }) + put("unitValue", unitValue?.let { unitValue }) + put("unitMultiplier", unitMultiplier) + } + val r = makeRequest("editBackofficeInvoiceProduct", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeInvoiceSupplier(placeId: String, invoiceId: String, skipped: Boolean, supplierId: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + put("skipped", skipped) + put("supplierId", supplierId?.let { supplierId }) + } + val r = makeRequest("editBackofficeInvoiceSupplier", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun upsertBackofficeManualInvoiceProduct(placeId: String, invoiceId: String, products: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + put("products", JSONArray().apply { + products.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("upsertBackofficeManualInvoiceProduct", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun finishBackofficeInvoiceImport(invoiceId: String, skipPendings: Boolean, productsBillPlanCategories: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceId", invoiceId) + put("skipPendings", skipPendings) + put("productsBillPlanCategories", JSONArray().apply { + productsBillPlanCategories.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("finishBackofficeInvoiceImport", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun upsertBackofficeInvoiceDuplicates(placeId: String, invoiceId: String, accountId: String, duplicates: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("invoiceId", invoiceId) + put("accountId", accountId) + put("duplicates", JSONArray().apply { + duplicates.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("upsertBackofficeInvoiceDuplicates", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeInvoiceDetailsBillPlanCategories(invoiceId: String, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceId", invoiceId) + put("invoiceDetailsField", invoiceDetailsField.name) + } + val r = makeRequest("getBackofficeInvoiceDetailsBillPlanCategories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun saveBackofficeDetailsBillPlanCategories(invoiceId: String, objBillPlanCategories: ArrayList, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceId", invoiceId) + put("objBillPlanCategories", JSONArray().apply { + objBillPlanCategories.forEach { item -> put(gson.toJson(item)) } + }) + put("invoiceDetailsField", invoiceDetailsField.name) + } + val r = makeRequest("saveBackofficeDetailsBillPlanCategories", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeReceivedInvoices(placeId: String, focusCompanyId: String, versao: Int?): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("focusCompanyId", focusCompanyId) + put("versao", versao?.let { versao }) + } + val r = makeRequest("getBackofficeReceivedInvoices", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeReceivedInvoice(placeId: String, focusCompanyId: String, accessKey: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("focusCompanyId", focusCompanyId) + put("accessKey", accessKey) + } + val r = makeRequest("getBackofficeReceivedInvoice", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeReceivedInvoiceHeader::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeInvoiceXmlUrl(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("getBackofficeInvoiceXmlUrl", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun postBackofficeManifest(placeId: String, id: String, manifestType: BackofficeManifestType, reason: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("manifestType", manifestType.name) + put("reason", reason?.let { reason }) + } + val r = makeRequest("postBackofficeManifest", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeResponseInvoiceManifest::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeIncomeStatement(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeIncomeStatement", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeIncomeStatement::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeIncomeByCategory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeIncomeByCategory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillHistory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeBillHistory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillHistory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeExtract(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeExtract", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeExtract::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCashFlow(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeCashFlow", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCashFlow::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeDescriptionReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeDescriptionReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDescriptionReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeDayReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeDayReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDayReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillTypeReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeBillTypeReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDescriptionReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillCategoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeBillCategoryReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDescriptionReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCostCenterReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeCostCenterReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCostCenterReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeCategoryHistoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeCategoryHistoryReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCategoryHistory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillSupplierTrackerReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("statusFilter", statusFilter.name) + put("dateFilter", dateFilter.name) + } + val r = makeRequest("getBackofficeBillSupplierTrackerReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillSupplierTrackerReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeResume(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeResume", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeResumeInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getBackofficeResumeInPeriod", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficePeriodResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeBillPlanCategoriesReport(billPlanCategoryIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("billPlanCategoryIds", JSONArray().apply { + billPlanCategoryIds.forEach { item -> put(item) } + }) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getBackofficeBillPlanCategoriesReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeStorage(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeStorage", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeStorage::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeStorages(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeStorages", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeStorage(placeId: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storage", gson.toJson(storage)) + } + val r = makeRequest("createBackofficeStorage", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeStorage::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeStorage(placeId: String, id: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("storage", gson.toJson(storage)) + } + val r = makeRequest("editBackofficeStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeStorage(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + } + val r = makeRequest("getBackofficeProductsAtStorage", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductStorageHistory(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("page", page?.let { page }) + put("itemPerPage", itemPerPage?.let { itemPerPage }) + } + val r = makeRequest("getBackofficeProductStorageHistory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeStorageHistory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductStorageHistoryXls(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getBackofficeProductStorageHistoryXls", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductsStorageHistory(placeId: String, storageId: String, productIds: ArrayList, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("page", page?.let { page }) + put("itemPerPage", itemPerPage?.let { itemPerPage }) + } + val r = makeRequest("getBackofficeProductsStorageHistory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun sellBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar, shouldApplyProductionRule: Boolean): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + put("count", count) + put("date", dateTimeFormat.format(date)) + put("shouldApplyProductionRule", shouldApplyProductionRule) + } + val r = makeRequest("sellBackofficeProductAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun refundBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + put("count", count) + put("date", dateTimeFormat.format(date)) + } + val r = makeRequest("refundBackofficeSellProductAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun cancelBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + put("count", count) + put("date", dateTimeFormat.format(date)) + } + val r = makeRequest("cancelBackofficeSellProductAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun lostBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + put("count", count) + put("date", dateTimeFormat.format(date)) + } + val r = makeRequest("lostBackofficeProductAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun manualBackofficeAdjustProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + put("count", count) + put("date", dateTimeFormat.format(date)) + } + val r = makeRequest("manualBackofficeAdjustProductAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun transferBackofficeProduct(placeId: String, productId: String, fromId: String, toId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + put("fromId", fromId) + put("toId", toId) + put("count", count) + put("date", dateTimeFormat.format(date)) + } + val r = makeRequest("transferBackofficeProduct", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun transferBackofficeProducts(placeId: String, fromId: String, toId: String, date: Calendar, products: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("fromId", fromId) + put("toId", toId) + put("date", dateTimeFormat.format(date)) + put("products", JSONArray().apply { + products.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("transferBackofficeProducts", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeProductAtStorage(placeId: String, storageId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productId", productId) + } + val r = makeRequest("deleteBackofficeProductAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeProductsAtStorage(placeId: String, storageId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("deleteBackofficeProductsAtStorage", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDeleteProductsResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun zeroBackofficeAllProductsAtStorage(placeId: String, storageId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + } + val r = makeRequest("zeroBackofficeAllProductsAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun inputBackofficeProduct(placeId: String, input: BackofficeInput, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("input", gson.toJson(input)) + put("transferType", transferType?.let { transferType.name }) + put("referenceCode", referenceCode?.let { referenceCode }) + } + val r = makeRequest("inputBackofficeProduct", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun inputBackofficeProducts(placeId: String, inputs: ArrayList, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("inputs", JSONArray().apply { + inputs.forEach { item -> put(gson.toJson(item)) } + }) + put("transferType", transferType?.let { transferType.name }) + put("referenceCode", referenceCode?.let { referenceCode }) + } + val r = makeRequest("inputBackofficeProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeInputsResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeProductionRule(placeId: String, rule: BackofficeNewProductionRule): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("rule", gson.toJson(rule)) + } + val r = makeRequest("createBackofficeProductionRule", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeProductionRuleInputs(placeId: String, productionRuleId: String, inputs: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productionRuleId", productionRuleId) + put("inputs", JSONArray().apply { + inputs.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("editBackofficeProductionRuleInputs", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeProductionRule(placeId: String, ruleId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("ruleId", ruleId) + } + val r = makeRequest("deleteBackofficeProductionRule", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun applyBackofficeProductionRule(placeId: String, storageId: String, ruleId: String, inputs: ArrayList, outputs: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + put("ruleId", ruleId) + put("inputs", JSONArray().apply { + inputs.forEach { item -> put(gson.toJson(item)) } + }) + put("outputs", JSONArray().apply { + outputs.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("applyBackofficeProductionRule", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductionRules(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeProductionRules", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeProductsStatusAtStorageAndDate(placeId: String, productIds: ArrayList, storageId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("storageId", storageId) + put("date", dateTimeFormat.format(date)) + } + val r = makeRequest("getBackofficeProductsStatusAtStorageAndDate", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeSupplier(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("placeId", placeId) + } + val r = makeRequest("getBackofficeSupplier", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeSupplier::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeSuppliers(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBackofficeSuppliers", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createBackofficeSupplier(placeId: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("supplier", gson.toJson(supplier)) + } + val r = makeRequest("createBackofficeSupplier", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeSupplier::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeSupplier(placeId: String, id: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("supplier", gson.toJson(supplier)) + } + val r = makeRequest("editBackofficeSupplier", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeSupplier(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeSupplier", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBackofficeTransfers(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getBackofficeTransfers", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun doBackofficeTransfer(placeId: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("transfer", gson.toJson(transfer)) + } + val r = makeRequest("doBackofficeTransfer", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeTransfer::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBackofficeTransfer(placeId: String, id: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + put("transfer", gson.toJson(transfer)) + } + val r = makeRequest("editBackofficeTransfer", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeTransfer::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBackofficeTransfer(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("id", id) + } + val r = makeRequest("deleteBackofficeTransfer", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editBar(bar: Bar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("bar", gson.toJson(bar)) + } + val r = makeRequest("editBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteBar(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addBar(placeId: String, barName: String, storageId: String, internalIp: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("barName", barName) + put("storageId", storageId) + put("internalIp", internalIp?.let { internalIp }) + } + val r = makeRequest("addBar", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBars(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getBars", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun activateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("barId", barId) + put("productId", productId) + } + val r = makeRequest("activateProductAtBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("barId", barId) + put("productId", productId) + } + val r = makeRequest("deactivateProductAtBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun activateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("barId", barId) + } + val r = makeRequest("activateAllProductsAtBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("barId", barId) + } + val r = makeRequest("deactivateAllProductsAtBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun activateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("barId", barId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("activateProductsAtBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("barId", barId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("deactivateProductsAtBar", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun productsSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("productsSoldAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun deliveredProductsByBarAtEvent(eventId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("barId", barId) + } + val r = makeRequest("deliveredProductsByBarAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun productsSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("placeId", placeId) + } + val r = makeRequest("productsSoldAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun productsSoldAtOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("organizationId", organizationId) + } + val r = makeRequest("productsSoldAtOrganization", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun deliveredProductsByBarAtPlace(since: Calendar, until: Calendar, placeId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("placeId", placeId) + put("barId", barId) + } + val r = makeRequest("deliveredProductsByBarAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSellerReports(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getSellerReports", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSellerReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getSellerReportForPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getNotDeliveredProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getNotDeliveredProductsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getConsolidatedBarSellingReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getConsolidatedBarSellingReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSellerDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("sellerId", sellerId) + } + val r = makeRequest("getSellerDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSellerDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("sellerId", sellerId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getSellerDetailsPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSellerProductDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("sellerId", sellerId) + } + val r = makeRequest("getSellerProductDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSellerProductDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("sellerId", sellerId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getSellerProductDetailsPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun exportAllTransactionProductsXlsx(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("exportAllTransactionProductsXlsx", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSoldBaseProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getSoldBaseProductsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSoldBaseProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getSoldBaseProductsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCashierClosingDetails(eventId: String, cashierId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("cashierId", cashierId) + } + val r = makeRequest("getCashierClosingDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), CashierClosingDetails::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun bleedCashier(eventId: String, cashierId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("cashierId", cashierId) + put("value", value) + } + val r = makeRequest("bleedCashier", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateCashierClosing(eventId: String, cashierId: String, values: CashierClosingValues): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("cashierId", cashierId) + put("values", gson.toJson(values)) + } + val r = makeRequest("updateCashierClosing", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlainCategories(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getPlainCategories", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCategories(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getCategories", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createCategory(category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("category", gson.toJson(category)) + put("data", _data?.let { Base64.encodeToString(_data, Base64.DEFAULT) }) + } + val r = makeRequest("createCategory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Category::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editCategory(id: String, category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("category", gson.toJson(category)) + put("data", _data?.let { Base64.encodeToString(_data, Base64.DEFAULT) }) + } + val r = makeRequest("editCategory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteCategory(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteCategory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSellablesFromCategory(categoryId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("categoryId", categoryId) + } + val r = makeRequest("getSellablesFromCategory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), SellableList::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun filterSellablesCategories(name: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("name", name) + } + val r = makeRequest("filterSellablesCategories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getCostOfGoodsSoldByProductList", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCurrentCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("getCurrentCostOfGoodsSoldByProductList", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTotalCmvAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getTotalCmvAtEvent", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getInt("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTotalCmvAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getTotalCmvAtPlace", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getInt("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addNewCombo(placeId: String, combo: NewPlaceCombo, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("combo", gson.toJson(combo)) + put("data", _data?.let { Base64.encodeToString(_data, Base64.DEFAULT) }) + } + val r = makeRequest("addNewCombo", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editCombo(comboId: String, combo: NewPlaceCombo): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("comboId", comboId) + put("combo", gson.toJson(combo)) + } + val r = makeRequest("editCombo", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editComboImage(comboId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("comboId", comboId) + put("data", Base64.encodeToString(_data, Base64.DEFAULT)) + } + val r = makeRequest("editComboImage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteCombo(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteCombo", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCoupon(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("getCoupon", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Coupon::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCoupons(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getCoupons", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createCoupon(coupon: NewCoupon): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("coupon", gson.toJson(coupon)) + } + val r = makeRequest("createCoupon", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Coupon::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteCoupon(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteCoupon", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addDeviceToOrganization(smallId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("smallId", smallId) + } + val r = makeRequest("addDeviceToOrganization", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Device::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getDevices(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getDevices", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeDeviceFromOrganization(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("removeDeviceFromOrganization", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getDeviceStatusAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getDeviceStatusAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeDeviceFromEvent(deviceId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("deviceId", deviceId) + } + val r = makeRequest("removeDeviceFromEvent", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun logOutAndRemoveAllDevices(): Deferred>> = CoroutineScope(IO).async { + val r = makeRequest("logOutAndRemoveAllDevices", null) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getDeviceEventStatus(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getDeviceEventStatus", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEmployees(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getEmployees", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEmployee(employeeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("employeeId", employeeId) + } + val r = makeRequest("getEmployee", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Employee::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addEmployee(employee: NewEmployee, password: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("employee", gson.toJson(employee)) + put("password", password) + put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) + } + val r = makeRequest("addEmployee", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editEmployee(id: String, employee: NewEmployee): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("employee", gson.toJson(employee)) + } + val r = makeRequest("editEmployee", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editEmployeePassword(id: String, password: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("password", password) + } + val r = makeRequest("editEmployeePassword", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editEmployeeImage(id: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("data", Base64.encodeToString(_data, Base64.DEFAULT)) + } + val r = makeRequest("editEmployeeImage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editMultipleEmployees(employeeIds: ArrayList, edition: EditMultipleEmployees): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("employeeIds", JSONArray().apply { + employeeIds.forEach { item -> put(item) } + }) + put("edition", gson.toJson(edition)) + } + val r = makeRequest("editMultipleEmployees", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeMultipleEmployees(employeeIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("employeeIds", JSONArray().apply { + employeeIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("removeMultipleEmployees", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeEmployee(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("removeEmployee", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addZigTagToWaiter(zigCode: String, employeeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("zigCode", zigCode) + put("employeeId", employeeId) + } + val r = makeRequest("addZigTagToWaiter", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeZigTagFromWaiter(employeeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("employeeId", employeeId) + } + val r = makeRequest("removeZigTagFromWaiter", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createMultipleEmployees(placeId: String, bar: String?, quantity: Int, role: String?, permissions: ArrayList, username: String, password: String, initial: Int, _final: Int): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("bar", bar?.let { bar }) + put("quantity", quantity) + put("role", role?.let { role }) + put("permissions", JSONArray().apply { + permissions.forEach { item -> put(item) } + }) + put("username", username) + put("password", password) + put("initial", initial) + put("final", _final) + } + val r = makeRequest("createMultipleEmployees", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createEntrance(placeId: String, entrance: Entrance, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("entrance", gson.toJson(entrance)) + put("data", Base64.encodeToString(_data, Base64.DEFAULT)) + } + val r = makeRequest("createEntrance", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteEntrance(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteEntrance", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllEntrances(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getAllEntrances", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun editEntrance(placeId: String, entrance: Entrance): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("entrance", gson.toJson(entrance)) + } + val r = makeRequest("editEntrance", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editEntranceImage(entranceId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("entranceId", entranceId) + put("data", Base64.encodeToString(_data, Base64.DEFAULT)) + } + val r = makeRequest("editEntranceImage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun entrancesSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("placeId", placeId) + } + val r = makeRequest("entrancesSoldAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun entrancesSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("entrancesSoldAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun entrancesSoldByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("entrancesSoldByEmployee", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEntrancesSoldToUserAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getEntrancesSoldToUserAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEntrancesSoldToUserAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getEntrancesSoldToUserAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllEvents(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("placeId", placeId) + } + val r = makeRequest("getAllEvents", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createEvent(details: EventDetails, image: ByteArray?, cover: ByteArray?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("details", gson.toJson(details)) + put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) + put("cover", cover?.let { Base64.encodeToString(cover, Base64.DEFAULT) }) + } + val r = makeRequest("createEvent", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun openEvent(id: String, actualizingdatetime: Boolean): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("actualizingdatetime", actualizingdatetime) + } + val r = makeRequest("openEvent", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun closeEvent(id: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("closeEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteEvent(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteEvent", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEvent(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("getEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Event::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEvents(placeId: String, month: Int, year: Int): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("month", month) + put("year", year) + } + val r = makeRequest("getEvents", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), EventList::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun extract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("extract", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun extractResume(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("extractResume", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ExtractResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getExtractDayResumeInSections(placeId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("date", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)) + } + val r = makeRequest("getExtractDayResumeInSections", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRechargeExpireResume(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getRechargeExpireResume", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), RechargeExpireResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRechargeExpireExtract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getRechargeExpireExtract", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun askForAnticipation(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("value", value) + } + val r = makeRequest("askForAnticipation", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun withdraw(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("value", value) + } + val r = makeRequest("withdraw", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun askForAnticipationWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("value", value) + put("obs", obs?.let { obs }) + put("otherBankAccount", otherBankAccount?.let { gson.toJson(otherBankAccount) }) + } + val r = makeRequest("askForAnticipationWithObservation", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun withdrawWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("value", value) + put("obs", obs?.let { obs }) + put("otherBankAccount", otherBankAccount?.let { gson.toJson(otherBankAccount) }) + } + val r = makeRequest("withdrawWithObservation", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getWithdrawsResume(placeId: String, from: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("from", dateTimeFormat.format(from)) + } + val r = makeRequest("getWithdrawsResume", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getWithdraws(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getWithdraws", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getExtractAdjusts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getExtractAdjusts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getConsolidatedExtractInSections(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getConsolidatedExtractInSections", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ConsolidatedExtract::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun cashierDetailsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("cashierDetailsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun clientsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("clientsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun clientsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("placeId", placeId) + } + val r = makeRequest("clientsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun clientAtPlace(userId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("userId", userId) + put("placeId", placeId) + } + val r = makeRequest("clientAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Client::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun clientTransactionsAtEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("userId", userId) + put("eventId", eventId) + } + val r = makeRequest("clientTransactionsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun resumeForOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("organizationId", organizationId) + } + val r = makeRequest("resumeForOrganization", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ReceiptResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun cashierDetailsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + put("placeId", placeId) + } + val r = makeRequest("cashierDetailsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun debtorsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("debtorsInEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun debtorsInPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("debtorsInPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBonusReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getBonusReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBonusReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getBonusReportForPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getMinimumConsumptionReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getMinimumConsumptionReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCashierRechargeDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("cashierId", cashierId) + } + val r = makeRequest("getCashierRechargeDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCashierPostDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("cashierId", cashierId) + } + val r = makeRequest("getCashierPostDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getClientDetails(clientId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("clientId", clientId) + } + val r = makeRequest("getClientDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ClientDetails::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editClient(clientId: String, name: String, phone: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("clientId", clientId) + put("name", name) + put("phone", phone) + } + val r = makeRequest("editClient", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBonusByProduct(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getBonusByProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBonusByProductAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getBonusByProductAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRechargeConsumptions(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getRechargeConsumptions", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun payBillAtEventWithMultiplePayments(userId: String, eventId: String, payments: ArrayList, reason: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("userId", userId) + put("eventId", eventId) + put("payments", JSONArray().apply { + payments.forEach { item -> put(gson.toJson(item)) } + }) + put("reason", reason?.let { reason }) + } + val r = makeRequest("payBillAtEventWithMultiplePayments", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun payBillAtPlaceInPeriodWithMultiplePayments(userId: String, placeId: String, payments: ArrayList, since: Calendar, until: Calendar, reason: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("userId", userId) + put("placeId", placeId) + put("payments", JSONArray().apply { + payments.forEach { item -> put(gson.toJson(item)) } + }) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + put("reason", reason?.let { reason }) + } + val r = makeRequest("payBillAtPlaceInPeriodWithMultiplePayments", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun payBillsAtEventWithMultiplePayments(userIds: ArrayList, eventId: String, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("userIds", JSONArray().apply { + userIds.forEach { item -> put(item) } + }) + put("eventId", eventId) + put("method", method.name) + put("isBonus", isBonus) + } + val r = makeRequest("payBillsAtEventWithMultiplePayments", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), MultipleUserIdsResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun payBillsAtPlaceInPeriodWithMultiplePayments(userIds: ArrayList, placeId: String, since: Calendar, until: Calendar, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("userIds", JSONArray().apply { + userIds.forEach { item -> put(item) } + }) + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + put("method", method.name) + put("isBonus", isBonus) + } + val r = makeRequest("payBillsAtPlaceInPeriodWithMultiplePayments", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), MultipleUserIdsResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRefundedRechargesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getRefundedRechargesAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCardActivationReturnReportAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getCardActivationReturnReportAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ActivationReturnReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getResumeForEventInSections(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getResumeForEventInSections", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getResumeForPlaceInSections(placeId: String, from: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("from", dateTimeFormat.format(from)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getResumeForPlaceInSections", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPromotionsUsedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getPromotionsUsedAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPromotionsUsedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getPromotionsUsedAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEntrancesSoldByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getEntrancesSoldByEmployeeAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEntrancesSoldByEmployeeAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getEntrancesSoldByEmployeeAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRefundedProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getRefundedProductsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRefundedProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getRefundedProductsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTipsRemovedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getTipsRemovedAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTipsRemovedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getTipsRemovedAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCardActivationReturnReportByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getCardActivationReturnReportByEmployeeAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getDiscountsAtEventByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getDiscountsAtEventByEmployee", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getDiscountsAtPlaceByEmployee(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getDiscountsAtPlaceByEmployee", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTransactionTransfersByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getTransactionTransfersByEmployee", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getManualInvoices(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getManualInvoices", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPostLimitChangesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getPostLimitChangesAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPostLimitChanges(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getPostLimitChanges", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun emitInnovaroGeneralInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("emitInnovaroGeneralInvoices", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getOpenedBillPayments(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getOpenedBillPayments", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getOpenedBillPaymentsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getOpenedBillPaymentsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRappiDiscountsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getRappiDiscountsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRappiDiscountsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getRappiDiscountsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun setCouvertFiscalData(placeId: String, _data: ProductFiscalData): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("data", gson.toJson(_data)) + } + val r = makeRequest("setCouvertFiscalData", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCouvertFiscalData(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getCouvertFiscalData", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ProductFiscalData::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun searchFiscalProducts(query: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("query", query) + } + val r = makeRequest("searchFiscalProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun isNcmValid(ncm: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("ncm", ncm) + } + val r = makeRequest("isNcmValid", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getBoolean("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInvoicePrintout(invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceId", invoiceId) + } + val r = makeRequest("getInvoicePrintout", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun issueInvoicesForUser(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + } + val r = makeRequest("issueInvoicesForUser", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun emitAllInvoicesInMonth(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("emitAllInvoicesInMonth", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), SimpleIssueResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun issueInvoicesForCnpj(eventId: String, userId: String, cnpj: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + put("cnpj", cnpj) + } + val r = makeRequest("issueInvoicesForCnpj", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun issueInvoicesForCpf(eventId: String, userId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + put("cpf", cpf) + } + val r = makeRequest("issueInvoicesForCpf", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun issueInvoicesOfTransactions(eventId: String, transactionIds: ArrayList, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("transactionIds", JSONArray().apply { + transactionIds.forEach { item -> put(item) } + }) + put("cpf", cpf?.let { cpf }) + put("cnpj", cnpj?.let { cnpj }) + } + val r = makeRequest("issueInvoicesOfTransactions", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInvoices(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getInvoices", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInvoicesFromUser(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + } + val r = makeRequest("getInvoicesFromUser", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInvoicesFromUserAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("userId", userId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getInvoicesFromUserAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun hasPendingInvoices(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + } + val r = makeRequest("hasPendingInvoices", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getBoolean("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun sendInvoicesByEmail(invoiceIds: ArrayList, email: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceIds", JSONArray().apply { + invoiceIds.forEach { item -> put(item) } + }) + put("email", email?.let { email }) + } + val r = makeRequest("sendInvoicesByEmail", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun printInvoice(invoiceId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceId", invoiceId) + } + val r = makeRequest("printInvoice", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun hasPrinter(invoiceId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceId", invoiceId) + } + val r = makeRequest("hasPrinter", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getBoolean("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getFiscalProfiles(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getFiscalProfiles", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getFiscalProductGroups(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getFiscalProductGroups", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("fiscalProfile", gson.toJson(fiscalProfile)) + } + val r = makeRequest("createFiscalProfile", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProfile::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("fiscalProfile", gson.toJson(fiscalProfile)) + } + val r = makeRequest("updateFiscalProfile", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProfile::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteFiscalProfile(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteFiscalProfile", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("fiscalProductGroup", gson.toJson(fiscalProductGroup)) + } + val r = makeRequest("createFiscalProductGroup", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProductGroup::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("fiscalProductGroup", gson.toJson(fiscalProductGroup)) + } + val r = makeRequest("updateFiscalProductGroup", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProductGroup::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteFiscalProductGroup(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteFiscalProductGroup", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getFiscalInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("fiscalProfileId", fiscalProfileId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getFiscalInvoices", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPercentOfSalesIssuedInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getPercentOfSalesIssuedInPeriod", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), SalesIssuedInPeriod::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInvoice(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("getInvoice", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Invoice::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getZippedInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("fiscalProfileId", fiscalProfileId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getZippedInvoices", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getNotEmmitedTransactionsFromEvent(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + } + val r = makeRequest("getNotEmmitedTransactionsFromEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun issueManualInvoice(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("manualRequest", gson.toJson(manualRequest)) + put("cpf", cpf?.let { cpf }) + put("cnpj", cnpj?.let { cnpj }) + } + val r = makeRequest("issueManualInvoice", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun issueManualInvoiceForReserve(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?, reserveId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("manualRequest", gson.toJson(manualRequest)) + put("cpf", cpf?.let { cpf }) + put("cnpj", cnpj?.let { cnpj }) + put("reserveId", reserveId) + } + val r = makeRequest("issueManualInvoiceForReserve", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun emitAllInnovaroInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("emitAllInnovaroInvoices", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getNotEmittedProductsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getNotEmittedProductsInEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getNotEmittedProducts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getNotEmittedProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInvoicePrintData(invoiceId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("invoiceId", invoiceId) + } + val r = makeRequest("getInvoicePrintData", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), InvoicePrintData::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createInventory(placeId: String, storageIds: ArrayList, newInventory: NewInventory): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageIds", JSONArray().apply { + storageIds.forEach { item -> put(item) } + }) + put("newInventory", gson.toJson(newInventory)) + } + val r = makeRequest("createInventory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Inventory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun cancelInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("inventoryId", inventoryId) + } + val r = makeRequest("cancelInventory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addStorageToInventory(inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("inventoryId", inventoryId) + put("storageIds", JSONArray().apply { + storageIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("addStorageToInventory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Inventory::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getInventories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getOpenedInventories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun closeInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("inventoryId", inventoryId) + } + val r = makeRequest("closeInventory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInventoryProductsAtStorage(inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("inventoryId", inventoryId) + put("storageId", storageId) + } + val r = makeRequest("getInventoryProductsAtStorage", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getInventoryProducts(inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("inventoryId", inventoryId) + } + val r = makeRequest("getInventoryProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateInventoryProduct(inventoryId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("inventoryId", inventoryId) + put("products", JSONArray().apply { + products.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("updateInventoryProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getLiveResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getLiveResume", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), LiveResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getPublic", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Public::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getNewPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getNewPublic", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), NewPublic::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTopSellingProducts(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getTopSellingProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), TopSellingProducts::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSelledProducts(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getSelledProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTotalReceipt(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getTotalReceipt", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), TotalReceipt::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getRechargeTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getRechargeTimeline", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getConsumptionTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getConsumptionTimeline", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTopClients(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getTopClients", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getBarConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getBarConsumptionResume", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ConsumptionResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEntrancesConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getEntrancesConsumptionResume", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ConsumptionResume::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun logIn(username: String, password: String, organizationUsername: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("username", username) + put("password", password) + put("organizationUsername", organizationUsername) + } + val r = makeRequest("logIn", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Employee::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun logOut(): Deferred>> = CoroutineScope(IO).async { + val r = makeRequest("logOut", null) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCurrentEmployee(): Deferred>> = CoroutineScope(IO).async { + val r = makeRequest("getCurrentEmployee", null) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Employee::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getCurrentOrganization(): Deferred>> = CoroutineScope(IO).async { + val r = makeRequest("getCurrentOrganization", null) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Organization::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaceDetails(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getPlaceDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceContract::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaces(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getPlaces", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceDetails::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editPlace(place: NewPlace, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("place", gson.toJson(place)) + put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) + } + val r = makeRequest("editPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Place::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaceFeatures(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getPlaceFeatures", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun activePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("featureId", featureId) + } + val r = makeRequest("activePlaceFeature", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("featureId", featureId) + } + val r = makeRequest("deactivePlaceFeature", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun setZigPlaceFeatures(placeId: String, featureIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("featureIds", JSONArray().apply { + featureIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("setZigPlaceFeatures", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editPlacePassword(placeId: String, pass: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("pass", pass?.let { pass }) + } + val r = makeRequest("editPlacePassword", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlacePassword(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getPlacePassword", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun overridePlaceAccountId(placeId: String, accountId: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("accountId", accountId?.let { accountId }) + } + val r = makeRequest("overridePlaceAccountId", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getOverridenPlaceAccount(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getOverridenPlaceAccount", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeAccount::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editPlaceEverestConfig(placeId: String, config: EverestConfig?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("config", config?.let { gson.toJson(config) }) + } + val r = makeRequest("editPlaceEverestConfig", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaceEverestConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getPlaceEverestConfig", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), EverestConfig::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllPlaces(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getAllPlaces", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPosMachineTransactions(placeId: String, dates: ArrayList, page: Int, searchTerm: String?, itemsPerPage: Int?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("dates", JSONArray().apply { + dates.forEach { item -> put(SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item)) } + }) + put("page", page) + put("searchTerm", searchTerm?.let { searchTerm }) + put("itemsPerPage", itemsPerPage?.let { itemsPerPage }) + } + val r = makeRequest("getPosMachineTransactions", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), PaginationPosTransaction::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getConsolidatedPosMachineTransactions(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getConsolidatedPosMachineTransactions", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun activateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + } + val r = makeRequest("activateProductInPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + } + val r = makeRequest("deactivateProductInPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updatePriceAtPlace(placeId: String, productId: String, value: Int): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + put("value", value) + } + val r = makeRequest("updatePriceAtPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateProportionalValueAtPlace(placeId: String, productId: String, proportionalValue: ProportionalValue?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + put("proportionalValue", proportionalValue?.let { gson.toJson(proportionalValue) }) + } + val r = makeRequest("updateProportionalValueAtPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun activateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("activateAllProductsInPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("deactivateAllProductsInPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun activateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("activateProductsInPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + } + val r = makeRequest("deactivateProductsInPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun activateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("categoryId", categoryId) + } + val r = makeRequest("activateAllProductsInPlaceFromCategory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deactivateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("categoryId", categoryId) + } + val r = makeRequest("deactivateAllProductsInPlaceFromCategory", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addProductToPlace(placeId: String, productId: String, fiscalData: PlaceProductFiscalData?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + put("fiscalData", fiscalData?.let { gson.toJson(fiscalData) }) + } + val r = makeRequest("addProductToPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeProductFromPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + } + val r = makeRequest("removeProductFromPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProductsByPlace(place: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("place", place) + } + val r = makeRequest("getProductsByPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun addNewProductToOrganization(product: NewProduct, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("product", gson.toJson(product)) + put("image", image?.let { gson.toJson(image) }) + } + val r = makeRequest("addNewProductToOrganization", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Product::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun addNewProduct(product: NewPlaceProduct, placeId: String, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("product", gson.toJson(product)) + put("placeId", placeId) + put("image", image?.let { gson.toJson(image) }) + } + val r = makeRequest("addNewProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceProduct::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editProduct(id: String, product: NewProduct): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("product", gson.toJson(product)) + } + val r = makeRequest("editProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), Product::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editProducts(products: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("products", JSONArray().apply { + products.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("editProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), EditedResults::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editPlaceProduct(id: String, product: NewPlaceProduct, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("product", gson.toJson(product)) + put("placeId", placeId) + } + val r = makeRequest("editPlaceProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceProduct::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editProductImage(id: String, image: EditProductImage): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + put("image", gson.toJson(image)) + } + val r = makeRequest("editProductImage", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteProduct(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteProduct", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteMultipleProducts(productIds: ArrayList, placeId: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("productIds", JSONArray().apply { + productIds.forEach { item -> put(item) } + }) + put("placeId", placeId?.let { placeId }) + } + val r = makeRequest("deleteMultipleProducts", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createSupply(name: String, placeId: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("name", name) + put("placeId", placeId) + put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) + } + val r = makeRequest("createSupply", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSupplyProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getSupplyProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllProductCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getAllProductCategories", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaceProduct(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productId", productId) + } + val r = makeRequest("getPlaceProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceProduct::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaceProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getPlaceProducts", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllProducts(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getAllProducts", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProduct(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("getProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), OrganizationProduct::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun inputProductAtStorage(placeId: String, input: InputProduct): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("input", gson.toJson(input)) + } + val r = makeRequest("inputProductAtStorage", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun attachPlaceProductToProductionRule(productId: String, placeId: String, productionRuleId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("productId", productId) + put("placeId", placeId) + put("productionRuleId", productionRuleId) + } + val r = makeRequest("attachPlaceProductToProductionRule", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun removePlaceProductProductionRule(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("productId", productId) + put("placeId", placeId) + } + val r = makeRequest("removePlaceProductProductionRule", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProductionRuleFromProduct(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("productId", productId) + put("placeId", placeId) + } + val r = makeRequest("getProductionRuleFromProduct", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ProductRule::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProductKinds(): Deferred?>>> = CoroutineScope(IO).async { + val r = makeRequest("getProductKinds", null) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSuggestedImageFor(product: ProductImageSearch): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("product", gson.toJson(product)) + } + val r = makeRequest("getSuggestedImageFor", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun applySuggestedImageForProduct(imageId: String, productId: String, type: ApplySuggestedImageForProductType): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("imageId", imageId) + put("productId", productId) + put("type", type.name) + } + val r = makeRequest("applySuggestedImageForProduct", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProductsFromPlaceReportXls(placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getProductsFromPlaceReportXls", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaceProductsByType(placeId: String, productType: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("productType", productType) + } + val r = makeRequest("getPlaceProductsByType", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createPromotion(promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("promotion", gson.toJson(promotion)) + } + val r = makeRequest("createPromotion", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createPromotionForPlace(promotion: NewPromotionInfo, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("promotion", gson.toJson(promotion)) + put("placeId", placeId) + } + val r = makeRequest("createPromotionForPlace", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deletePromotion(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deletePromotion", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAvailablePromotions(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getAvailablePromotions", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun givePromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("promotionId", promotionId) + put("userId", userId) + } + val r = makeRequest("givePromotion", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun givePromotionToManyUsers(promotionId: String, cpfPhones: ArrayList): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("promotionId", promotionId) + put("cpfPhones", JSONArray().apply { + cpfPhones.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("givePromotionToManyUsers", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), MultipleUserPromotionResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPromotionUsers(promotionId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("promotionId", promotionId) + } + val r = makeRequest("getPromotionUsers", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun removeUserFromPromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("promotionId", promotionId) + put("userId", userId) + } + val r = makeRequest("removeUserFromPromotion", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun editPromotion(promotionId: String, promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("promotionId", promotionId) + put("promotion", gson.toJson(promotion)) + } + val r = makeRequest("editPromotion", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), PromotionInfo::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllRelationsFromEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getAllRelationsFromEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllRelationsFromPlace(placeId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + } + val r = makeRequest("getAllRelationsFromPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteRelation(id: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("id", id) + } + val r = makeRequest("deleteRelation", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createEventRelation(relation: Relation, eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("relation", gson.toJson(relation)) + put("eventId", eventId) + } + val r = makeRequest("createEventRelation", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun createPlaceRelation(relation: Relation, placeId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("relation", gson.toJson(relation)) + put("placeId", placeId) + } + val r = makeRequest("createPlaceRelation", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getPlaceEmployeeReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getPlaceEmployeeReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), EmployeeReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getFinanceBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getFinanceBiReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), FinanceBiReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getClientsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getClientsBiReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ClientByReport::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProductsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) + put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) + } + val r = makeRequest("getProductsBiReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun createReserve(eventId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("reserve", gson.toJson(reserve)) + } + val r = makeRequest("createReserve", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun deleteReserve(reserveId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("reserveId", reserveId) + } + val r = makeRequest("deleteReserve", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun updateReserve(reserveId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("reserveId", reserveId) + put("reserve", gson.toJson(reserve)) + } + val r = makeRequest("updateReserve", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getReserves(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getReserves", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getReserveDetail(reserveId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("reserveId", reserveId) + } + val r = makeRequest("getReserveDetail", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), ReserveDetail::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getReservesReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getReservesReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getReserveDiscountDetails(reserveId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("reserveId", reserveId) + } + val r = makeRequest("getReserveDiscountDetails", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("storageId", storageId) + } + val r = makeRequest("getProductsAtStorage", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEntrancesSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getEntrancesSoldAtEventInPeriod", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getProductsSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getProductsSoldAtEventInPeriod", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getUser(placeId: String, cpf: String?, phone: String?): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("cpf", cpf?.let { cpf }) + put("phone", phone?.let { phone }) + } + val r = makeRequest("getUser", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), User::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getUserAtEvent(eventId: String, filter: UserFilter): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("filter", gson.toJson(filter)) + } + val r = makeRequest("getUserAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), User::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getUserDetailsAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + } + val r = makeRequest("getUserDetailsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), UserDetails::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getUserDetailsAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("userId", userId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getUserDetailsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), UserDetails::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getUserRechargesInEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("userId", userId) + put("eventId", eventId) + } + val r = makeRequest("getUserRechargesInEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun giveRechargeToUsers(eventId: String, recharges: ArrayList): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("recharges", JSONArray().apply { + recharges.forEach { item -> put(gson.toJson(item)) } + }) + } + val r = makeRequest("giveRechargeToUsers", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getAllUsersAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getAllUsersAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getEventUserAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + put("userId", userId) + } + val r = makeRequest("getEventUserAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), EventUser::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getClientsAtPlaceWithFilter(placeId: String, filters: SearchFilters, offset: Int): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("filters", gson.toJson(filters)) + put("offset", offset) + } + val r = makeRequest("getClientsAtPlaceWithFilter", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getClientsAtPlaceWithFilterXls(placeId: String, filters: SearchFilters): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("filters", gson.toJson(filters)) + } + val r = makeRequest("getClientsAtPlaceWithFilterXls", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getUserByCpf(placeId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("cpf", cpf) + } + val r = makeRequest("getUserByCpf", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson(r.data?.getJSONObject("result")?.toString(), SearchResult::class.java) + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getUserDetailsAtEventsAndPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("userId", userId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getUserDetailsAtEventsAndPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getSuggestedImages(keyword: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("keyword", keyword) + } + val r = makeRequest("getSuggestedImages", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getZigTagBlockConfirmsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getZigTagBlockConfirmsAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getZigTagBlockConfirmsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getZigTagBlockConfirmsAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getZigTagSyncForcesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getZigTagSyncForcesAtEvent", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getZigTagSyncForcesAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("since", dateTimeFormat.format(since)) + put("until", dateTimeFormat.format(until)) + } + val r = makeRequest("getZigTagSyncForcesAtPlace", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getNotOpenedCashiers(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getNotOpenedCashiers", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getStockTransferReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getStockTransferReport", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getTransactionHistory(placeId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("placeId", placeId) + put("userId", userId) + } + val r = makeRequest("getTransactionHistory", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun getGuinnessResume(eventId: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getGuinnessResume", bodyArgs) + val responseData = if (r.data != null) { + r.data?.getInt("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun getGuinnessLog(eventId: String): Deferred?>>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("eventId", eventId) + } + val r = makeRequest("getGuinnessLog", bodyArgs) + val responseData = if (r.data != null) { + gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) + } else null + MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } + } + override fun ping(): Deferred>> = CoroutineScope(IO).async { + val r = makeRequest("ping", null) + val responseData = if (r.data != null) { + r.data?.getString("result") + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + override fun setPushToken(token: String): Deferred>> = CoroutineScope(IO).async { + val bodyArgs = JSONObject().apply { + put("token", token) + } + val r = makeRequest("setPushToken", bodyArgs) + val responseData = if (r.data != null) { + r.error == null + } else null + MutableLiveData>().apply { postValue(Response(r.error, responseData)) } + } + } + + fun randomBytesHex(len: Int): String { + val bytes = ByteArray(len) + Random().nextBytes(bytes) + return bytesToHex(bytes) + } + + private fun bytesToHex(bytes: ByteArray): String { + val hexChars = CharArray(bytes.size * 2) + for (j in bytes.indices) { + val v = bytes[j].toInt() and 0xFF + hexChars[j * 2] = hexArray[v ushr 4 ] + hexChars[j * 2 + 1] = hexArray[v and 0x0F] + } + return String(hexChars) + } + + @SuppressLint("HardwareIds") + @Throws(JSONException::class) + private fun device(): JSONObject = + JSONObject().apply { + put("type", "android") + put("fingerprint", "" + Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)) + put("platform", JSONObject().apply { + put("version", Build.VERSION.RELEASE) + put("sdkVersion", Build.VERSION.SDK_INT) + put("brand", Build.BRAND) + put("model", Build.MODEL) + }) + try { + put("version", context.packageManager.getPackageInfo(context.packageName, 0).versionName) + } catch (e: PackageManager.NameNotFoundException) { + put("version", "unknown") + } + + put("language", language()) + put("screen", JSONObject().apply { + val manager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager + val display = manager.defaultDisplay + val size = Point() + display.getSize(size) + put("width", size.x) + put("height", size.y) + }) + val pref = context.getSharedPreferences("api", Context.MODE_PRIVATE) + if (pref.contains("deviceId")) put("id", pref.getString("deviceId", null)) + } + + + private fun language(): String { + val loc = Locale.getDefault() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return loc.toLanguageTag() + } + + val sep = '-' + var language = loc.language + var region = loc.country + var variant = loc.variant + + if (language == "no" && region == "NO" && variant == "NY") { + language = "nn" + region = "NO" + variant = "" + } + + if (language.isEmpty() || !language.matches("\\[a-zA-Z]{2,8}".toRegex())) { + language = "und" + } else if (language == "iw") { + language = "he" + } else if (language == "in") { + language = "id" + } else if (language == "ji") { + language = "yi" + } + + if (!region.matches("\\[a-zA-Z]{2}|\\[0-9]{3}".toRegex())) { + region = "" + } + + if (!variant.matches("\\[a-zA-Z0-9]{5,8}|\\[0-9]\\[a-zA-Z0-9]{3}".toRegex())) { + variant = "" + } + + val bcp47Tag = StringBuilder(language) + if (!region.isEmpty()) { + bcp47Tag.append(sep).append(region) + } + if (!variant.isEmpty()) { + bcp47Tag.append(sep).append(variant) + } + + return bcp47Tag.toString() + } + + private suspend fun makeRequest(functionName: String, bodyArgs: JSONObject?, timeoutSeconds: Int = 15): InternalResponse = suspendCoroutine { continuation -> + try { + val body = JSONObject().apply { + put("id", randomBytesHex(8)) + put("device", device()) + put("name", functionName) + put("args", bodyArgs ?: JSONObject()) + put("staging", API.useStaging) + } + + val request = Request.Builder() + .url("https://$BASE_URL${if (useStaging) "-staging" else ""}/$functionName") + .post(body.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())) + .build() + client.newCall(request).enqueue(object: Callback { + override fun onFailure(call: Call, e: IOException) { + e.printStackTrace() + continuation.resume(InternalResponse(Error(ErrorType.Fatal, e?.message ?: "Chamada falhou sem mensagem de erro!"), null)) + } + + override fun onResponse(call: Call, response: okhttp3.Response) { + if (response.code == 502) { + continuation.resume(InternalResponse(Error(ErrorType.Fatal, "Erro Fatal (502) - Tente novamente"), null)) + return + } + + val responseBody = try { + val stringBody = response?.body?.string() + JSONObject(stringBody) + } catch (e: Exception) { + continuation.resume(InternalResponse(Error(ErrorType.Fatal, "502 - Tente novamente"), null)) + return + } + + val pref = context.getSharedPreferences("api", Context.MODE_PRIVATE) + pref.edit().putString("deviceId", responseBody.getString("deviceId")).apply() + + if (!responseBody.getBoolean("ok")) { + val jsonError = responseBody.getJSONObject("error") + //TODO Fetch correct error type + val error = Error(ErrorType.valueOf(jsonError.getString("type")), jsonError.getString("message")) + Log.e("API Error", jsonError.getString("type") + " - " + error.message) + continuation.resume(InternalResponse(error, null)) + } else { + continuation.resume(InternalResponse(null, responseBody)) + } + } + }) + } catch (e: JSONException) { + e.printStackTrace() + continuation.resume(InternalResponse(Error(ErrorType.Fatal, e.message ?: "Erro ao parsear json"), null)) + } + } + } \ No newline at end of file diff --git a/src/codegen_types/array.cr b/src/codegen_types/array.cr index 97528bd..f86f110 100644 --- a/src/codegen_types/array.cr +++ b/src/codegen_types/array.cr @@ -65,17 +65,6 @@ module AST def kt_decode(expr, desc) String.build do |io| io << "gson.fromJson>(#{expr}.getJSONArray(\"result\")?.toString(), object : TypeToken>() { }.type) \n" - # io << "ArrayList<#{base.kt_native_type}>().apply {\n" - # io << " for (i in 0 until #{expr}.length()) {\n" - # if base.is_a? AST::ArrayType - # io << " add(#{base.kt_native_type}.fromJsonArray(#{expr}.getJSONArray(i)))\n" - # elsif base.is_a? AST::StructType - # io << " add(#{base.kt_native_type}.fromJson(#{expr}.getJSONObject(i)))\n" - # else - # io << " add(#{base.kt_decode(expr, "i")})" - # end - # io << " }\n" - # io << "" end end diff --git a/src/codegen_types/hex.cr b/src/codegen_types/hex.cr index 71919ac..f92b6a1 100644 --- a/src/codegen_types/hex.cr +++ b/src/codegen_types/hex.cr @@ -39,19 +39,19 @@ module AST # KOTLIN def kt_decode(expr, desc) - raise "Not implemented" + "#{expr}.getString(#{desc})" end def kt_encode(expr, desc) - raise "Not implemented" + "#{expr}" end def kt_native_type - raise "Not implemented" + "String" end def kt_return_type_name - raise "Not implemented" + "hex" end # KOTLIN end diff --git a/src/main.cr b/src/main.cr index 6dd1a01..644e1c8 100644 --- a/src/main.cr +++ b/src/main.cr @@ -2,6 +2,7 @@ require "./syntax/parser" require "./semantic/ast_semantic" require "./target/java_android" require "./target/kt_android" +require "./target/kt_jetpack_android" require "./target/swift_ios" require "./target/typescript_nodeserver" require "./target/typescript_nodeclient" @@ -16,7 +17,7 @@ destination = "" target_name = "" sources = [] of String -OptionParser.parse! do |parser| +OptionParser.parse do |parser| parser.banner = "Usage: salute [arguments]" parser.on("-o NAME", "--output=NAME", "Specifies the output file") { |name| destination = name } parser.on("-t TARGET", "--target=TARGET", "Specifies the target platform") { |target| target_name = target } diff --git a/src/target/kt_jetpack_android.cr b/src/target/kt_jetpack_android.cr new file mode 100644 index 0000000..042dc9c --- /dev/null +++ b/src/target/kt_jetpack_android.cr @@ -0,0 +1,337 @@ +require "./target" +require "random/secure" + +class KtJetPackAndroidTarget < Target + def mangle(ident) + if %w[ + in out as as? break class continue do else false + for fun if in !in interface is !is null object + package return super this throw true try typealias + val var when while by catch constructor delegate + dynamic field file finally get import init param + property receiver set setparam in where actual abstract + annotation companion const crossinline data enum expect + external final infix inline inner internal lateinit noinline + open operator out override private protected public reified + sealed suspend tailrec vararg Double Float Long Int Short Byte + ].includes? ident + "_" + ident + else + ident + end + end + + def gen + @io << <<-END + +import android.util.Base64 +import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* +import java.util.concurrent.TimeUnit +import android.view.WindowManager +import android.content.pm.PackageManager +import android.os.Build +import org.json.JSONException +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Point +import android.os.Handler +import android.provider.Settings +import android.util.Log +import com.google.gson.Gson +import okhttp3.* +import java.io.IOException +import java.io.Serializable +import org.json.JSONArray +import com.google.gson.reflect.TypeToken +import android.os.Looper +import kotlinx.coroutines.* +import kotlinx.coroutines.Dispatchers.IO +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import kotlin.coroutines.resume +import kotlin.coroutines.suspendCoroutine +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.MediaType.Companion.toMediaTypeOrNull + +@ExperimentalCoroutinesApi +fun Deferred.result(callback: (error: Throwable?, response: T?) -> Unit) { + try { + this.invokeOnCompletion { cause -> + if (this.getCompletionExceptionOrNull() != null) + throw this.getCompletionExceptionOrNull()!! + + callback(cause, if (this.isCompleted) this.getCompleted() else null) + } + } catch (e: Throwable) { + callback(e, if (this.isCompleted) this.getCompleted() else null) + } +} + +@SuppressLint("SimpleDateFormat", "StaticFieldLeak") +object API { + + interface Calls {\n +END + @ast.operations.each do |op| + args = op.args.map { |arg| "#{mangle arg.name}: #{arg.type.kt_native_type}" } + returnType = if !op.return_type.is_a? AST::VoidPrimitiveType + "#{op.return_type.kt_native_type}?" + else + "Boolean?" + end + @io << ident(String.build do |io| + io << " fun #{mangle op.pretty_name}(#{args.join(", ")}): Deferred>> = CoroutineScope(IO).async { \n" + io << " MutableLiveData>().apply { \n " + io << " postValue(Response(Error(ErrorType.Fatal, \"Not Implemented\"), null)) \n" + io << " }\n" + io << " }\n" + end) + end + @io << <<-END + } + + lateinit var context: Context + private val gson = Gson() + private val dateTimeFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.US).apply { + setTimeZone(TimeZone.getTimeZone("GMT")) + } + private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) + fun init(appContext: Context, useStaging: Boolean) { + API.useStaging = useStaging + context = appContext + } + + var BASE_URL = #{@ast.options.url.inspect} + var useStaging = false + private val hexArray = "0123456789abcdef".toCharArray() + + var connectionPool = ConnectionPool(100, 45, TimeUnit.SECONDS) + var client = OkHttpClient.Builder() + .connectionPool(connectionPool) + .dispatcher(Dispatcher().apply { maxRequests = 200 ; maxRequestsPerHost = 200 }) + .connectTimeout(15, TimeUnit.SECONDS) + .build() + + class Error( + var type: ErrorType? = null, + var message: String? = null + ) + + private data class InternalResponse(val error: Error?, val data: JSONObject?) + + data class Response(val error: Error?, val data: T?)\n + +END + + @ast.struct_types.each do |t| + t.fields.each do |f| + f.name = mangle f.name + end + @io << ident(t.kt_definition) + @io << "\n\n" + end + + @ast.enum_types.each do |e| + @io << ident(e.kt_definition) + @io << "\n\n" + end + + @io << "var calls = object: Calls { \n" + @ast.operations.each do |op| + args = op.args.map { |arg| "#{mangle arg.name}: #{arg.type.kt_native_type}" } + returnType = if !op.return_type.is_a? AST::VoidPrimitiveType + "#{op.return_type.kt_native_type}?" + else + "Boolean?" + end + @io << ident(String.build do |io| + io << " override fun #{mangle op.pretty_name}(#{args.join(", ")}): Deferred>> = CoroutineScope(IO).async { \n" + puts = op.args.map { |arg| "put(\"#{arg.name}\", #{arg.type.kt_encode(mangle(arg.name), nil)})" }.join("\n") + bodyParameter = "null" + if op.args.size > 0 + bodyParameter = "bodyArgs" + io << " val #{bodyParameter} = JSONObject().apply {\n" + io << " #{puts}\n" + io << " }\n" + else + "" + end + io << " val r = makeRequest(\"#{mangle op.pretty_name}\", #{bodyParameter})\n" + io << " val responseData = if (r.data != null) {\n" + responseExpression = "" + if op.return_type.is_a? AST::TypeReference + responseExpression = " #{op.return_type.kt_decode("r.data", nil)}\n" + elsif op.return_type.is_a? AST::ArrayType + responseExpression = " #{op.return_type.kt_decode("r.data", nil)}\n" + elsif op.return_type.is_a? AST::OptionalType + responseExpression = " #{op.return_type.kt_decode("r.data", "\"result\"")}\n" + elsif op.return_type.is_a? AST::VoidPrimitiveType + responseExpression = " r.error == null\n" + else + responseExpression = " #{op.return_type.kt_decode("r.data", "\"result\"")}\n" + end + io << ident responseExpression + io << " } else null\n" + io << " MutableLiveData>().apply { postValue(Response(r.error, responseData)) }\n" + io << " }\n" + end) + end + + @io << <<-END + } + + fun randomBytesHex(len: Int): String { + val bytes = ByteArray(len) + Random().nextBytes(bytes) + return bytesToHex(bytes) + } + + private fun bytesToHex(bytes: ByteArray): String { + val hexChars = CharArray(bytes.size * 2) + for (j in bytes.indices) { + val v = bytes[j].toInt() and 0xFF + hexChars[j * 2] = hexArray[v ushr 4 ] + hexChars[j * 2 + 1] = hexArray[v and 0x0F] + } + return String(hexChars) + } + + @SuppressLint("HardwareIds") + @Throws(JSONException::class) + private fun device(): JSONObject = + JSONObject().apply { + put("type", "android") + put("fingerprint", "" + Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)) + put("platform", JSONObject().apply { + put("version", Build.VERSION.RELEASE) + put("sdkVersion", Build.VERSION.SDK_INT) + put("brand", Build.BRAND) + put("model", Build.MODEL) + }) + try { + put("version", context.packageManager.getPackageInfo(context.packageName, 0).versionName) + } catch (e: PackageManager.NameNotFoundException) { + put("version", "unknown") + } + + put("language", language()) + put("screen", JSONObject().apply { + val manager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager + val display = manager.defaultDisplay + val size = Point() + display.getSize(size) + put("width", size.x) + put("height", size.y) + }) + val pref = context.getSharedPreferences("api", Context.MODE_PRIVATE) + if (pref.contains("deviceId")) put("id", pref.getString("deviceId", null)) + } + + + private fun language(): String { + val loc = Locale.getDefault() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return loc.toLanguageTag() + } + + val sep = '-' + var language = loc.language + var region = loc.country + var variant = loc.variant + + if (language == "no" && region == "NO" && variant == "NY") { + language = "nn" + region = "NO" + variant = "" + } + + if (language.isEmpty() || !language.matches("\\\\[a-zA-Z]{2,8}".toRegex())) { + language = "und" + } else if (language == "iw") { + language = "he" + } else if (language == "in") { + language = "id" + } else if (language == "ji") { + language = "yi" + } + + if (!region.matches("\\\\[a-zA-Z]{2}|\\\\[0-9]{3}".toRegex())) { + region = "" + } + + if (!variant.matches("\\\\[a-zA-Z0-9]{5,8}|\\\\[0-9]\\\\[a-zA-Z0-9]{3}".toRegex())) { + variant = "" + } + + val bcp47Tag = StringBuilder(language) + if (!region.isEmpty()) { + bcp47Tag.append(sep).append(region) + } + if (!variant.isEmpty()) { + bcp47Tag.append(sep).append(variant) + } + + return bcp47Tag.toString() + } + + private suspend fun makeRequest(functionName: String, bodyArgs: JSONObject?, timeoutSeconds: Int = 15): InternalResponse = suspendCoroutine { continuation -> + try { + val body = JSONObject().apply { + put("id", randomBytesHex(8)) + put("device", device()) + put("name", functionName) + put("args", bodyArgs ?: JSONObject()) + put("staging", API.useStaging) + } + + val request = Request.Builder() + .url("https://$BASE_URL${if (useStaging) "-staging" else ""}/$functionName") + .post(body.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())) + .build() + client.newCall(request).enqueue(object: Callback { + override fun onFailure(call: Call, e: IOException) { + e.printStackTrace() + continuation.resume(InternalResponse(Error(ErrorType.Fatal, e.message ?: "Chamada falhou sem mensagem de erro!"), null)) + } + + override fun onResponse(call: Call, response: okhttp3.Response) { + if (response.code == 502) { + continuation.resume(InternalResponse(Error(ErrorType.Fatal, "Erro Fatal (502) - Tente novamente"), null)) + return + } + + val responseBody = try { + val stringBody = response.body?.string() ?: throw InvalidObjectException("") + JSONObject(stringBody) + } catch (e: Exception) { + continuation.resume(InternalResponse(Error(ErrorType.Fatal, "502 - Tente novamente"), null)) + return + } + + val pref = context.getSharedPreferences("api", Context.MODE_PRIVATE) + pref.edit().putString("deviceId", responseBody.getString("deviceId")).apply() + + if (!responseBody.getBoolean("ok")) { + val jsonError = responseBody.getJSONObject("error") + //TODO Fetch correct error type + val error = Error(ErrorType.valueOf(jsonError.getString("type")), jsonError.getString("message")) + Log.e("API Error", jsonError.getString("type") + " - " + error.message) + continuation.resume(InternalResponse(error, null)) + } else { + continuation.resume(InternalResponse(null, responseBody)) + } + } + }) + } catch (e: JSONException) { + e.printStackTrace() + continuation.resume(InternalResponse(Error(ErrorType.Fatal, e.message ?: "Erro ao parsear json"), null)) + } + } + } +END + end +end + +Target.register(KtJetPackAndroidTarget, target_name: "kt_jetpack_android") diff --git a/target-android-kt-jetpack/.gitignore b/target-android-kt-jetpack/.gitignore new file mode 100644 index 0000000..66388a9 --- /dev/null +++ b/target-android-kt-jetpack/.gitignore @@ -0,0 +1,63 @@ + +# Created by https://www.gitignore.io/api/android + +### Android ### +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/libraries + +# Keystore files +*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +### Android Patch ### +gen-external-apklibs + +# End of https://www.gitignore.io/api/android diff --git a/target-android-kt-jetpack/.idea/compiler.xml b/target-android-kt-jetpack/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/target-android-kt-jetpack/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/.idea/copyright/profiles_settings.xml b/target-android-kt-jetpack/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/target-android-kt-jetpack/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/.idea/misc.xml b/target-android-kt-jetpack/.idea/misc.xml new file mode 100644 index 0000000..ba7052b --- /dev/null +++ b/target-android-kt-jetpack/.idea/misc.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/.idea/modules.xml b/target-android-kt-jetpack/.idea/modules.xml new file mode 100644 index 0000000..3ebf7ad --- /dev/null +++ b/target-android-kt-jetpack/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/.idea/runConfigurations.xml b/target-android-kt-jetpack/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/target-android-kt-jetpack/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/.project b/target-android-kt-jetpack/.project new file mode 100644 index 0000000..0747141 --- /dev/null +++ b/target-android-kt-jetpack/.project @@ -0,0 +1,17 @@ + + + target-android + Project target-android created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/target-android-kt-jetpack/.settings/org.eclipse.buildship.core.prefs b/target-android-kt-jetpack/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..b888301 --- /dev/null +++ b/target-android-kt-jetpack/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +#Wed Dec 13 10:40:10 BRT 2017 +connection.project.dir= diff --git a/target-android-kt-jetpack/Dockerfile b/target-android-kt-jetpack/Dockerfile new file mode 100644 index 0000000..d76d321 --- /dev/null +++ b/target-android-kt-jetpack/Dockerfile @@ -0,0 +1,6 @@ +FROM registry.cubos.io/cubos/android-builder +WORKDIR /root +ADD . /root/ +RUN ./gradlew assembleDebug +ADD build_and_publish.sh / +RUN chmod +x /build_and_publish.sh \ No newline at end of file diff --git a/target-android-kt-jetpack/api/.classpath b/target-android-kt-jetpack/api/.classpath new file mode 100644 index 0000000..8d8d85f --- /dev/null +++ b/target-android-kt-jetpack/api/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/target-android-kt-jetpack/api/.project b/target-android-kt-jetpack/api/.project new file mode 100644 index 0000000..f90ee76 --- /dev/null +++ b/target-android-kt-jetpack/api/.project @@ -0,0 +1,23 @@ + + + api + Project api created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/target-android-kt-jetpack/api/.settings/org.eclipse.buildship.core.prefs b/target-android-kt-jetpack/api/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..963d2e5 --- /dev/null +++ b/target-android-kt-jetpack/api/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +#Wed Dec 13 10:40:10 BRT 2017 +connection.project.dir=.. diff --git a/target-android-kt-jetpack/api/build.gradle b/target-android-kt-jetpack/api/build.gradle new file mode 100644 index 0000000..b58d700 --- /dev/null +++ b/target-android-kt-jetpack/api/build.gradle @@ -0,0 +1,76 @@ +apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +android { + compileSdkVersion 29 + buildToolsVersion "29.0.1" + defaultConfig { + minSdkVersion 16 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + api 'com.squareup.okhttp3:okhttp:4.2.1' + api 'com.google.code.gson:gson:2.8.5' + api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2' + api 'androidx.appcompat:appcompat:1.1.0' + api 'androidx.core:core-ktx:1.1.0' +} +publishing { + repositories { + maven { +// url 'https://mymavenrepo.com/repo/4XBKk8BMCyMc24joS8Od/' + url 'https://maven.cubos.io/upload/' + credentials { + username "cubos" + password "4XBKk8BMCyMc24joS8Od" + } + } + } + publications { + maven(MavenPublication) { + artifacts { + groupId 'io.cubos.api' + artifactId 'sdkgen2' + version '1.0.10' + artifact 'build/outputs/aar/api-release.aar' + pom.withXml { + // Creating additional node for dependencies + def dependenciesNode = asNode().appendNode('dependencies') + // Defining configuration names from which dependencies will be taken (debugCompile or releaseCompile and compile) + def configurationNames = ["releaseCompile", 'compile'] + configurationNames.each { configurationName -> + configurations[configurationName].allDependencies.each { + if (it.group != null && it.name != null) { + def dependencyNode = dependenciesNode.appendNode('dependency') + dependencyNode.appendNode('groupId', it.group) + dependencyNode.appendNode('artifactId', it.name) + dependencyNode.appendNode('version', it.version) + // If there are any exclusions in dependency + if (it.excludeRules.size() > 0) { + def exclusionsNode = dependencyNode.appendNode('exclusions') + it.excludeRules.each { rule -> + def exclusionNode = exclusionsNode.appendNode('exclusion') + exclusionNode.appendNode('groupId', rule.group) + exclusionNode.appendNode('artifactId', rule.module) + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/target-android-kt-jetpack/api/proguard-rules.pro b/target-android-kt-jetpack/api/proguard-rules.pro new file mode 100644 index 0000000..f0b73f5 --- /dev/null +++ b/target-android-kt-jetpack/api/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /opt/android-sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/target-android-kt-jetpack/api/src/main/AndroidManifest.xml b/target-android-kt-jetpack/api/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e1a9dd7 --- /dev/null +++ b/target-android-kt-jetpack/api/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/target-android-kt-jetpack/api/src/main/res/values/strings.xml b/target-android-kt-jetpack/api/src/main/res/values/strings.xml new file mode 100644 index 0000000..94cfee7 --- /dev/null +++ b/target-android-kt-jetpack/api/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + sdkgen2 + diff --git a/target-android-kt-jetpack/build.gradle b/target-android-kt-jetpack/build.gradle new file mode 100644 index 0000000..d7db433 --- /dev/null +++ b/target-android-kt-jetpack/build.gradle @@ -0,0 +1,26 @@ +buildscript { + ext.kotlin_version = '1.3.50' + repositories { + google() + jcenter() + + } + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/target-android-kt-jetpack/build_and_publish.sh b/target-android-kt-jetpack/build_and_publish.sh new file mode 100644 index 0000000..b2e1fd5 --- /dev/null +++ b/target-android-kt-jetpack/build_and_publish.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +NAME=$2 +VERSION=1.0.$3 +LOCATION=/root + +rm -rf $LOCATION/api/src/main/java/io/cubos/api +mkdir -p $LOCATION/api/src/main/java/io/cubos/api/$NAME +cp $1 $LOCATION/tmp.kt +cd $LOCATION + +(echo "package io.cubos.api."$NAME";"; cat tmp.kt) > api/src/main/java/io/cubos/api/$NAME/API.kt + +CURRENT_NAME=$(cat api/src/main/res/values/strings.xml | grep app_name | sed -e 's/<[^>]*>//g' | xargs echo -n) +CURRENT_VERSION=$(cat api/build.gradle | grep "version " | sed 's/version//g' | xargs echo -n) +sed -i -e 's/'$CURRENT_NAME'/'$NAME'/g' api/src/main/java/io/cubos/api/$NAME/API.kt +sed -i -e 's/'$CURRENT_NAME'/'$NAME'/g' api/src/main/AndroidManifest.xml +sed -i -e 's/'$CURRENT_NAME'/'$NAME'/g' api/src/main/res/values/strings.xml +sed -i -e 's/'$CURRENT_NAME'/'$NAME'/g' api/build.gradle +sed -i -e 's/version '"'"$CURRENT_VERSION"'"'/version '"'"$VERSION"'"'/g' api/build.gradle + +./gradlew assembleRelease publish diff --git a/target-android-kt-jetpack/gradle.properties b/target-android-kt-jetpack/gradle.properties new file mode 100644 index 0000000..aac7c9b --- /dev/null +++ b/target-android-kt-jetpack/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true diff --git a/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.jar b/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659 GIT binary patch literal 53636 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ⅅ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 H-+%o-(+5aQ literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties b/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..fe4d616 --- /dev/null +++ b/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Apr 27 11:23:05 BRT 2019 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/target-android-kt-jetpack/gradlew b/target-android-kt-jetpack/gradlew new file mode 100755 index 0000000..9d82f78 --- /dev/null +++ b/target-android-kt-jetpack/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/target-android-kt-jetpack/gradlew.bat b/target-android-kt-jetpack/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/target-android-kt-jetpack/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/target-android-kt-jetpack/settings.gradle b/target-android-kt-jetpack/settings.gradle new file mode 100644 index 0000000..5f53697 --- /dev/null +++ b/target-android-kt-jetpack/settings.gradle @@ -0,0 +1 @@ +include ':api' From e9d17bd81b25405c15bc6887ab7ae933ebaa0880 Mon Sep 17 00:00:00 2001 From: Daniel Santiago Date: Fri, 13 Dec 2019 00:46:55 -0300 Subject: [PATCH 2/3] wip small adjustments --- src/target/kt_jetpack_android.cr | 10 ++++++---- target-android-kt-jetpack/api/build.gradle | 3 ++- target-android-kt-jetpack/build.gradle | 4 ++-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/target/kt_jetpack_android.cr b/src/target/kt_jetpack_android.cr index 042dc9c..dda7baf 100644 --- a/src/target/kt_jetpack_android.cr +++ b/src/target/kt_jetpack_android.cr @@ -36,7 +36,6 @@ import org.json.JSONException import android.annotation.SuppressLint import android.content.Context import android.graphics.Point -import android.os.Handler import android.provider.Settings import android.util.Log import com.google.gson.Gson @@ -45,7 +44,6 @@ import java.io.IOException import java.io.Serializable import org.json.JSONArray import com.google.gson.reflect.TypeToken -import android.os.Looper import kotlinx.coroutines.* import kotlinx.coroutines.Dispatchers.IO import androidx.lifecycle.LiveData @@ -54,6 +52,7 @@ import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.MediaType.Companion.toMediaTypeOrNull +import java.io.InvalidObjectException @ExperimentalCoroutinesApi fun Deferred.result(callback: (error: Throwable?, response: T?) -> Unit) { @@ -69,6 +68,8 @@ fun Deferred.result(callback: (error: Throwable?, response: T?) -> Unit) } } + +@Suppress("DeferredIsResult", "unused") @SuppressLint("SimpleDateFormat", "StaticFieldLeak") object API { @@ -107,11 +108,12 @@ END var useStaging = false private val hexArray = "0123456789abcdef".toCharArray() - var connectionPool = ConnectionPool(100, 45, TimeUnit.SECONDS) + var connectionPool = ConnectionPool(100, 60, TimeUnit.SECONDS) var client = OkHttpClient.Builder() .connectionPool(connectionPool) .dispatcher(Dispatcher().apply { maxRequests = 200 ; maxRequestsPerHost = 200 }) - .connectTimeout(15, TimeUnit.SECONDS) + .connectTimeout(60, TimeUnit.SECONDS) + .readTimeout(60, TimeUnit.SECONDS) .build() class Error( diff --git a/target-android-kt-jetpack/api/build.gradle b/target-android-kt-jetpack/api/build.gradle index b58d700..1888c33 100644 --- a/target-android-kt-jetpack/api/build.gradle +++ b/target-android-kt-jetpack/api/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 29 - buildToolsVersion "29.0.1" + buildToolsVersion "29.0.2" defaultConfig { minSdkVersion 16 targetSdkVersion 29 @@ -24,6 +24,7 @@ dependencies { api 'com.google.code.gson:gson:2.8.5' api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2' + api 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2' api 'androidx.appcompat:appcompat:1.1.0' api 'androidx.core:core-ktx:1.1.0' } diff --git a/target-android-kt-jetpack/build.gradle b/target-android-kt-jetpack/build.gradle index d7db433..835100e 100644 --- a/target-android-kt-jetpack/build.gradle +++ b/target-android-kt-jetpack/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.3.60' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:3.5.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties b/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties index fe4d616..9a90767 100644 --- a/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties +++ b/target-android-kt-jetpack/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip From 0c10ed303c2789b851ca4ae5344e77f71212d5fa Mon Sep 17 00:00:00 2001 From: Daniel Santiago Date: Tue, 17 Dec 2019 17:18:52 -0300 Subject: [PATCH 3/3] target android kotlin with Coroutines Flow --- API.kt | 15864 ---------------- src/codegen_types/struct.cr | 6 +- src/main | Bin 0 -> 2714968 bytes src/target/kt_jetpack_android.cr | 91 +- target-android-kt-jetpack/.gitignore | 152 +- .../.idea/codeStyles/Project.xml | 116 + target-android-kt-jetpack/.idea/modules.xml | 3 + target-android-kt-jetpack/api/build.gradle | 1 + target-android-kt-jetpack/build.gradle | 6 +- target-android-kt-jetpack/gradle.properties | 2 + target-android-kt-jetpack/sample/.gitignore | 1 + target-android-kt-jetpack/sample/build.gradle | 46 + .../sample/proguard-rules.pro | 21 + .../sample/settings.gradle | 1 + .../sample/ExampleInstrumentedTest.kt | 24 + .../sample/src/main/AndroidManifest.xml | 24 + .../targetAndroidKtJetpack/sample/App.kt | 9 + .../sample/MainActivity.kt | 14 + .../drawable-v24/ic_launcher_foreground.xml | 34 + .../res/drawable/ic_launcher_background.xml | 170 + .../src/main/res/layout/activity_main.xml | 18 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes .../sample/src/main/res/values/colors.xml | 6 + .../sample/src/main/res/values/strings.xml | 3 + .../sample/src/main/res/values/styles.xml | 11 + .../sample/ExampleUnitTest.kt | 17 + target-android-kt-jetpack/settings.gradle | 2 +- 38 files changed, 739 insertions(+), 15913 deletions(-) delete mode 100644 API.kt create mode 100644 src/main create mode 100644 target-android-kt-jetpack/.idea/codeStyles/Project.xml create mode 100644 target-android-kt-jetpack/sample/.gitignore create mode 100644 target-android-kt-jetpack/sample/build.gradle create mode 100644 target-android-kt-jetpack/sample/proguard-rules.pro create mode 100644 target-android-kt-jetpack/sample/settings.gradle create mode 100644 target-android-kt-jetpack/sample/src/androidTest/java/io/cubos/targetAndroidKtJetpack/sample/ExampleInstrumentedTest.kt create mode 100644 target-android-kt-jetpack/sample/src/main/AndroidManifest.xml create mode 100644 target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/App.kt create mode 100644 target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/MainActivity.kt create mode 100644 target-android-kt-jetpack/sample/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 target-android-kt-jetpack/sample/src/main/res/drawable/ic_launcher_background.xml create mode 100644 target-android-kt-jetpack/sample/src/main/res/layout/activity_main.xml create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 target-android-kt-jetpack/sample/src/main/res/values/colors.xml create mode 100644 target-android-kt-jetpack/sample/src/main/res/values/strings.xml create mode 100644 target-android-kt-jetpack/sample/src/main/res/values/styles.xml create mode 100644 target-android-kt-jetpack/sample/src/test/java/io/cubos/targetAndroidKtJetpack/sample/ExampleUnitTest.kt diff --git a/API.kt b/API.kt deleted file mode 100644 index 0e5f3f0..0000000 --- a/API.kt +++ /dev/null @@ -1,15864 +0,0 @@ - -import android.util.Base64 -import org.json.JSONObject -import java.text.SimpleDateFormat -import java.util.* -import java.util.concurrent.TimeUnit -import android.view.WindowManager -import android.content.pm.PackageManager -import android.os.Build -import org.json.JSONException -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Point -import android.os.Handler -import android.provider.Settings -import android.util.Log -import com.google.gson.Gson -import okhttp3.* -import java.io.IOException -import java.io.Serializable -import org.json.JSONArray -import com.google.gson.reflect.TypeToken -import android.os.Looper -import kotlinx.coroutines.* -import kotlinx.coroutines.Dispatchers.IO -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine -import okhttp3.RequestBody.Companion.toRequestBody -import okhttp3.MediaType.Companion.toMediaTypeOrNull - -@ExperimentalCoroutinesApi -fun Deferred.result(callback: (error: Throwable?, response: T?) -> Unit) { - try { - this.invokeOnCompletion { cause -> - if (this.getCompletionExceptionOrNull() != null) - throw this.getCompletionExceptionOrNull()!! - - callback(cause, if (this.isCompleted) this.getCompleted() else null) - } - } catch (e: Throwable) { - callback(e, if (this.isCompleted) this.getCompleted() else null) - } -} - -@SuppressLint("SimpleDateFormat", "StaticFieldLeak") -object API { - - interface Calls { - fun getAllPermissions(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllRoles(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteRole(slug: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createRole(name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateRole(slug: String, name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAlerts(placeId: String, skip: Int, limit: Int): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun markAlertAsRead(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAnnounces(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createAnnounce(announce: Announce, eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editAnnounce(announce: Announce): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeAnnounce(announceId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeAccount(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeAccounts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeAccount(placeId: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeAccount(placeId: String, id: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeAccount(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBill(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeBill(placeId: String, bill: BackofficeNewBill, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeBill(placeId: String, id: String, bill: BackofficeNewBill): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun payBackofficeBill(placeId: String, id: String, date: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeBillAttachment(placeId: String, id: String, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeBill(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun exportBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun parseBackofficeBillsToImport(placeId: String, _file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun importBackofficeBills(placeId: String, _file: ByteArray): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeBillPlanCategory(name: String, parentId: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillPlans(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillPlansTreeLeafs(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillPlansTreeLeafsByLevel(level: Int): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeBillPlanCategoryName(id: String, name: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeBillPlanCategoryParent(id: String, newParentId: String?): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeSuggestedBillPlan(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun exportBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun importBackofficeBillPlan(_file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillType(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillTypes(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeBillType(placeId: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeBillType(placeId: String, id: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeBillType(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCategory(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeCategory(placeId: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeCategory(placeId: String, id: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeCategory(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductsCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductsCmvAvg(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCurrentProductsCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductsSimpleCurrentCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductsSimpleCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCostCenter(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCostCenters(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeCostCenter(placeId: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeCostCenter(placeId: String, id: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeCostCenter(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun insertBackofficeFocusCompany(placeId: String, cnpj: String, token: String, lastInvoiceVersion: Int?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateBackofficeFocusCompany(placeId: String, id: String, token: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeFocusCompany(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeFocusCompanies(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeFocusCompany(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeFocusInvoices(placeId: String, focusCompanyId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeInventory(placeId: String, inventory: BackofficeNewInventory, shouldOverlapOldInventory: Boolean): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addBackofficeStorageToInventory(placeId: String, inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeInventoryProductsAtStorage(placeId: String, inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeInventoryProducts(placeId: String, inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateBackofficeInventoryProduct(placeId: String, inventoryId: String, authorId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun closeBackofficeInventory(placeId: String, authorId: String, inventoryId: String, alterUnitValue: Boolean): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun cancelBackofficeInventory(placeId: String, authorId: String, inventoryId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeImportedInvoices(placeId: String, since: Calendar?, until: Calendar?): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun importBackofficeInvoice(placeId: String, storageId: String?, xml: ByteArray): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeManualInvoice(placeId: String, manualInvoice: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeManualInvoiceDetails(placeId: String, invoiceId: String, invoiceInfo: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun invalidateBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductLastInvoiceDetails(placeId: String, associatedProductId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeInvoiceProducts(placeId: String, invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeInvoiceBill(placeId: String, invoiceId: String, createBill: Boolean, accountId: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String, skipped: Boolean, productId: String?, unitValue: Int?, unitMultiplier: Int): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeInvoiceSupplier(placeId: String, invoiceId: String, skipped: Boolean, supplierId: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun upsertBackofficeManualInvoiceProduct(placeId: String, invoiceId: String, products: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun finishBackofficeInvoiceImport(invoiceId: String, skipPendings: Boolean, productsBillPlanCategories: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun upsertBackofficeInvoiceDuplicates(placeId: String, invoiceId: String, accountId: String, duplicates: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeInvoiceDetailsBillPlanCategories(invoiceId: String, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun saveBackofficeDetailsBillPlanCategories(invoiceId: String, objBillPlanCategories: ArrayList, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeReceivedInvoices(placeId: String, focusCompanyId: String, versao: Int?): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeReceivedInvoice(placeId: String, focusCompanyId: String, accessKey: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeInvoiceXmlUrl(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun postBackofficeManifest(placeId: String, id: String, manifestType: BackofficeManifestType, reason: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeIncomeStatement(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeIncomeByCategory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillHistory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeExtract(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCashFlow(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeDescriptionReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeDayReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillTypeReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillCategoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCostCenterReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeCategoryHistoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillSupplierTrackerReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeResume(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeResumeInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeBillPlanCategoriesReport(billPlanCategoryIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeStorage(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeStorages(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeStorage(placeId: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeStorage(placeId: String, id: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeStorage(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductStorageHistory(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductStorageHistoryXls(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductsStorageHistory(placeId: String, storageId: String, productIds: ArrayList, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun sellBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar, shouldApplyProductionRule: Boolean): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun refundBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun cancelBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun lostBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun manualBackofficeAdjustProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun transferBackofficeProduct(placeId: String, productId: String, fromId: String, toId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun transferBackofficeProducts(placeId: String, fromId: String, toId: String, date: Calendar, products: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeProductAtStorage(placeId: String, storageId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeProductsAtStorage(placeId: String, storageId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun zeroBackofficeAllProductsAtStorage(placeId: String, storageId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun inputBackofficeProduct(placeId: String, input: BackofficeInput, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun inputBackofficeProducts(placeId: String, inputs: ArrayList, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeProductionRule(placeId: String, rule: BackofficeNewProductionRule): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeProductionRuleInputs(placeId: String, productionRuleId: String, inputs: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeProductionRule(placeId: String, ruleId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun applyBackofficeProductionRule(placeId: String, storageId: String, ruleId: String, inputs: ArrayList, outputs: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductionRules(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeProductsStatusAtStorageAndDate(placeId: String, productIds: ArrayList, storageId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeSupplier(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeSuppliers(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createBackofficeSupplier(placeId: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeSupplier(placeId: String, id: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeSupplier(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBackofficeTransfers(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun doBackofficeTransfer(placeId: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBackofficeTransfer(placeId: String, id: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBackofficeTransfer(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editBar(bar: Bar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteBar(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addBar(placeId: String, barName: String, storageId: String, internalIp: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBars(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun productsSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deliveredProductsByBarAtEvent(eventId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun productsSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun productsSoldAtOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deliveredProductsByBarAtPlace(since: Calendar, until: Calendar, placeId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSellerReports(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSellerReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getNotDeliveredProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getConsolidatedBarSellingReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSellerDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSellerDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSellerProductDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSellerProductDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun exportAllTransactionProductsXlsx(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSoldBaseProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSoldBaseProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCashierClosingDetails(eventId: String, cashierId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun bleedCashier(eventId: String, cashierId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateCashierClosing(eventId: String, cashierId: String, values: CashierClosingValues): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlainCategories(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCategories(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createCategory(category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editCategory(id: String, category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteCategory(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSellablesFromCategory(categoryId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun filterSellablesCategories(name: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCurrentCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTotalCmvAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTotalCmvAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addNewCombo(placeId: String, combo: NewPlaceCombo, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editCombo(comboId: String, combo: NewPlaceCombo): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editComboImage(comboId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteCombo(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCoupon(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCoupons(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createCoupon(coupon: NewCoupon): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteCoupon(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addDeviceToOrganization(smallId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getDevices(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeDeviceFromOrganization(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getDeviceStatusAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeDeviceFromEvent(deviceId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun logOutAndRemoveAllDevices(): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getDeviceEventStatus(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEmployees(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEmployee(employeeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addEmployee(employee: NewEmployee, password: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editEmployee(id: String, employee: NewEmployee): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editEmployeePassword(id: String, password: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editEmployeeImage(id: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editMultipleEmployees(employeeIds: ArrayList, edition: EditMultipleEmployees): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeMultipleEmployees(employeeIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeEmployee(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addZigTagToWaiter(zigCode: String, employeeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeZigTagFromWaiter(employeeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createMultipleEmployees(placeId: String, bar: String?, quantity: Int, role: String?, permissions: ArrayList, username: String, password: String, initial: Int, _final: Int): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createEntrance(placeId: String, entrance: Entrance, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteEntrance(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllEntrances(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editEntrance(placeId: String, entrance: Entrance): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editEntranceImage(entranceId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun entrancesSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun entrancesSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun entrancesSoldByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEntrancesSoldToUserAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEntrancesSoldToUserAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllEvents(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createEvent(details: EventDetails, image: ByteArray?, cover: ByteArray?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun openEvent(id: String, actualizingdatetime: Boolean): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun closeEvent(id: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteEvent(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEvent(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEvents(placeId: String, month: Int, year: Int): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun extract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun extractResume(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getExtractDayResumeInSections(placeId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRechargeExpireResume(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRechargeExpireExtract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun askForAnticipation(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun withdraw(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun askForAnticipationWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun withdrawWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getWithdrawsResume(placeId: String, from: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getWithdraws(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getExtractAdjusts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getConsolidatedExtractInSections(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun cashierDetailsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun clientsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun clientsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun clientAtPlace(userId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun clientTransactionsAtEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun resumeForOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun cashierDetailsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun debtorsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun debtorsInPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBonusReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBonusReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getMinimumConsumptionReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCashierRechargeDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCashierPostDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getClientDetails(clientId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editClient(clientId: String, name: String, phone: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBonusByProduct(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBonusByProductAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRechargeConsumptions(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun payBillAtEventWithMultiplePayments(userId: String, eventId: String, payments: ArrayList, reason: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun payBillAtPlaceInPeriodWithMultiplePayments(userId: String, placeId: String, payments: ArrayList, since: Calendar, until: Calendar, reason: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun payBillsAtEventWithMultiplePayments(userIds: ArrayList, eventId: String, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun payBillsAtPlaceInPeriodWithMultiplePayments(userIds: ArrayList, placeId: String, since: Calendar, until: Calendar, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRefundedRechargesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCardActivationReturnReportAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getResumeForEventInSections(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getResumeForPlaceInSections(placeId: String, from: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPromotionsUsedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPromotionsUsedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEntrancesSoldByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEntrancesSoldByEmployeeAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRefundedProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRefundedProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTipsRemovedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTipsRemovedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCardActivationReturnReportByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getDiscountsAtEventByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getDiscountsAtPlaceByEmployee(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTransactionTransfersByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getManualInvoices(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPostLimitChangesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPostLimitChanges(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun emitInnovaroGeneralInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getOpenedBillPayments(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getOpenedBillPaymentsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRappiDiscountsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRappiDiscountsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun setCouvertFiscalData(placeId: String, _data: ProductFiscalData): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCouvertFiscalData(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun searchFiscalProducts(query: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun isNcmValid(ncm: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInvoicePrintout(invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun issueInvoicesForUser(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun emitAllInvoicesInMonth(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun issueInvoicesForCnpj(eventId: String, userId: String, cnpj: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun issueInvoicesForCpf(eventId: String, userId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun issueInvoicesOfTransactions(eventId: String, transactionIds: ArrayList, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInvoices(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInvoicesFromUser(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInvoicesFromUserAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun hasPendingInvoices(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun sendInvoicesByEmail(invoiceIds: ArrayList, email: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun printInvoice(invoiceId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun hasPrinter(invoiceId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getFiscalProfiles(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getFiscalProductGroups(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteFiscalProfile(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteFiscalProductGroup(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getFiscalInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPercentOfSalesIssuedInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInvoice(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getZippedInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getNotEmmitedTransactionsFromEvent(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun issueManualInvoice(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun issueManualInvoiceForReserve(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?, reserveId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun emitAllInnovaroInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getNotEmittedProductsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getNotEmittedProducts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInvoicePrintData(invoiceId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createInventory(placeId: String, storageIds: ArrayList, newInventory: NewInventory): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun cancelInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addStorageToInventory(inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun closeInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInventoryProductsAtStorage(inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getInventoryProducts(inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateInventoryProduct(inventoryId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getLiveResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getNewPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTopSellingProducts(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSelledProducts(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTotalReceipt(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getRechargeTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getConsumptionTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTopClients(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getBarConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEntrancesConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun logIn(username: String, password: String, organizationUsername: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun logOut(): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCurrentEmployee(): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getCurrentOrganization(): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaceDetails(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaces(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editPlace(place: NewPlace, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaceFeatures(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun setZigPlaceFeatures(placeId: String, featureIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editPlacePassword(placeId: String, pass: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlacePassword(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun overridePlaceAccountId(placeId: String, accountId: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getOverridenPlaceAccount(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editPlaceEverestConfig(placeId: String, config: EverestConfig?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaceEverestConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllPlaces(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPosMachineTransactions(placeId: String, dates: ArrayList, page: Int, searchTerm: String?, itemsPerPage: Int?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getConsolidatedPosMachineTransactions(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updatePriceAtPlace(placeId: String, productId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateProportionalValueAtPlace(placeId: String, productId: String, proportionalValue: ProportionalValue?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun activateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deactivateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addProductToPlace(placeId: String, productId: String, fiscalData: PlaceProductFiscalData?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeProductFromPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProductsByPlace(place: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addNewProductToOrganization(product: NewProduct, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun addNewProduct(product: NewPlaceProduct, placeId: String, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editProduct(id: String, product: NewProduct): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editProducts(products: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editPlaceProduct(id: String, product: NewPlaceProduct, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editProductImage(id: String, image: EditProductImage): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteProduct(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteMultipleProducts(productIds: ArrayList, placeId: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createSupply(name: String, placeId: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSupplyProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllProductCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaceProduct(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaceProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllProducts(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProduct(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun inputProductAtStorage(placeId: String, input: InputProduct): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun attachPlaceProductToProductionRule(productId: String, placeId: String, productionRuleId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removePlaceProductProductionRule(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProductionRuleFromProduct(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProductKinds(): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSuggestedImageFor(product: ProductImageSearch): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun applySuggestedImageForProduct(imageId: String, productId: String, type: ApplySuggestedImageForProductType): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProductsFromPlaceReportXls(placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaceProductsByType(placeId: String, productType: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createPromotion(promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createPromotionForPlace(promotion: NewPromotionInfo, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deletePromotion(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAvailablePromotions(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun givePromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun givePromotionToManyUsers(promotionId: String, cpfPhones: ArrayList): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPromotionUsers(promotionId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun removeUserFromPromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun editPromotion(promotionId: String, promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllRelationsFromEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllRelationsFromPlace(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteRelation(id: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createEventRelation(relation: Relation, eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createPlaceRelation(relation: Relation, placeId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getPlaceEmployeeReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getFinanceBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getClientsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProductsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun createReserve(eventId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun deleteReserve(reserveId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun updateReserve(reserveId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getReserves(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getReserveDetail(reserveId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getReservesReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getReserveDiscountDetails(reserveId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEntrancesSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getProductsSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getUser(placeId: String, cpf: String?, phone: String?): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getUserAtEvent(eventId: String, filter: UserFilter): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getUserDetailsAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getUserDetailsAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getUserRechargesInEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun giveRechargeToUsers(eventId: String, recharges: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getAllUsersAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getEventUserAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getClientsAtPlaceWithFilter(placeId: String, filters: SearchFilters, offset: Int): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getClientsAtPlaceWithFilterXls(placeId: String, filters: SearchFilters): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getUserByCpf(placeId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getUserDetailsAtEventsAndPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getSuggestedImages(keyword: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getZigTagBlockConfirmsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getZigTagBlockConfirmsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getZigTagSyncForcesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getZigTagSyncForcesAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getNotOpenedCashiers(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getStockTransferReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getTransactionHistory(placeId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getGuinnessResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun getGuinnessLog(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - MutableLiveData?>>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun ping(): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - fun setPushToken(token: String): Deferred>> = CoroutineScope(IO).async { - MutableLiveData>().apply { - postValue(Response(Error(ErrorType.Fatal, "Not Implemented"), null)) - } - } - } - - lateinit var context: Context - private val gson = Gson() - private val dateTimeFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.US).apply { - setTimeZone(TimeZone.getTimeZone("GMT")) - } - private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) - fun init(appContext: Context, useStaging: Boolean) { - API.useStaging = useStaging - context = appContext - } - - var BASE_URL = "api.zigcore.com.br/enterprise" - var useStaging = false - private val hexArray = "0123456789abcdef".toCharArray() - - var connectionPool = ConnectionPool(100, 45, TimeUnit.SECONDS) - var client = OkHttpClient.Builder() - .connectionPool(connectionPool) - .dispatcher(Dispatcher().apply { maxRequests = 200 ; maxRequestsPerHost = 200 }) - .connectTimeout(15, TimeUnit.SECONDS) - .build() - - class Error( - var type: ErrorType? = null, - var message: String? = null - ) - - private data class InternalResponse(val error: Error?, val data: JSONObject?) - - data class Response(val error: Error?, val data: T?) - - data class MinimalPromotionInfo( - var id: String, - var name: String, - var description: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MinimalPromotionInfo { - return gson.fromJson(jsonToParse.toString(), MinimalPromotionInfo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Permission( - var name: String, - var slug: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Permission { - return gson.fromJson(jsonToParse.toString(), Permission::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ChildPermission( - var parent: String?, - var name: String, - var slug: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ChildPermission { - return gson.fromJson(jsonToParse.toString(), ChildPermission::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Role( - var permissions: ArrayList, - var name: String, - var slug: String, - var isBase: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Role { - return gson.fromJson(jsonToParse.toString(), Role::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SimplifiedRole( - var permissions: ArrayList, - var name: String, - var slug: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SimplifiedRole { - return gson.fromJson(jsonToParse.toString(), SimplifiedRole::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PostPaymentEvent( - var acquirerTransactions: ArrayList, - var createdAt: Calendar, - var createdBy: String?, - var id: String, - var eventId: String?, - var event: String?, - var place: String?, - var employee: String?, - var isDeleted: Boolean, - var payments: ArrayList, - var payers: ArrayList, - var postPaymentType: PostPaymentEventPostPaymentType - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PostPaymentEvent { - return gson.fromJson(jsonToParse.toString(), PostPaymentEvent::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PostPaymentEventPayments( - var method: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PostPaymentEventPayments { - return gson.fromJson(jsonToParse.toString(), PostPaymentEventPayments::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PostPaymentEventPayers( - var cpf: String, - var name: String, - var email: String?, - var phone: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PostPaymentEventPayers { - return gson.fromJson(jsonToParse.toString(), PostPaymentEventPayers::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class AcquirerTransaction( - var transactionId: String?, - var acquirer: String?, - var transactionUrl: String?, - var cardBrand: String?, - var cardHolderName: String?, - var cardHolderNumber: String?, - var authorizatedAmount: Int?, - var capturedAmount: Int?, - var isExpiredCreditCard: Boolean?, - var expirationDate: String?, - var paidAmount: Int?, - var transactionType: String?, - var transactionStatus: String?, - var type: Int?, - var amount: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): AcquirerTransaction { - return gson.fromJson(jsonToParse.toString(), AcquirerTransaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewMountableSection( - var title: String, - var min: Int, - var max: Int, - var pricing: NewMountableSectionPricing, - var items: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewMountableSection { - return gson.fromJson(jsonToParse.toString(), NewMountableSection::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewMountableSectionItems( - var productId: String, - var storageCount: Int, - var price: Int, - var maxCount: Int?, - var selectedCount: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewMountableSectionItems { - return gson.fromJson(jsonToParse.toString(), NewMountableSectionItems::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MountableSection( - var id: String, - var order: Int, - var title: String, - var min: Int, - var max: Int, - var pricing: NewMountableSectionPricing, - var items: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MountableSection { - return gson.fromJson(jsonToParse.toString(), MountableSection::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewMountableDescription( - var sections: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewMountableDescription { - return gson.fromJson(jsonToParse.toString(), NewMountableDescription::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MountableDescription( - var sections: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MountableDescription { - return gson.fromJson(jsonToParse.toString(), MountableDescription::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalPrinter( - var type: PrinterType?, - var ip: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalPrinter { - return gson.fromJson(jsonToParse.toString(), FiscalPrinter::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class DashboardAlert( - var id: String, - var date: Calendar, - var title: String, - var description: String, - var image: ImageUrl, - var hasRead: Boolean, - var type: DashboardAlertType - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): DashboardAlert { - return gson.fromJson(jsonToParse.toString(), DashboardAlert::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Announce( - var id: String?, - var begin: Calendar, - var end: Calendar, - var text: String, - var active: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Announce { - return gson.fromJson(jsonToParse.toString(), Announce::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewAccount( - var name: String, - var bankAccount: BackofficeBankAccount? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewAccount { - return gson.fromJson(jsonToParse.toString(), BackofficeNewAccount::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeAccount( - var id: String, - var name: String, - var bankAccount: BackofficeBankAccount? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeAccount { - return gson.fromJson(jsonToParse.toString(), BackofficeAccount::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeAttachment( - var fileName: String, - var _data: ByteArray - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeAttachment { - return gson.fromJson(jsonToParse.toString(), BackofficeAttachment::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBaseBill( - var description: String, - var performDate: Calendar, - var payDate: Calendar?, - var dueDate: Calendar, - var supplierId: String?, - var accountId: String, - var paymentMethod: BackofficeBillPaymentMethod?, - var observation: String?, - var metadata: String?, - var value: Int, - var interest: Int, - var fine: Int, - var discount: Int, - var reconciled: Boolean, - var status: BackofficeBaseBillStatus, - var duplicateId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBaseBill { - return gson.fromJson(jsonToParse.toString(), BackofficeBaseBill::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillBillPlanCategory( - var id: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillBillPlanCategory { - return gson.fromJson(jsonToParse.toString(), BackofficeBillBillPlanCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewBill( - var billType: BackofficePartialBillType?, - var costCenter: String?, - var billPlanCategories: ArrayList, - var description: String, - var performDate: Calendar, - var payDate: Calendar?, - var dueDate: Calendar, - var supplierId: String?, - var accountId: String, - var paymentMethod: BackofficeBillPaymentMethod?, - var observation: String?, - var metadata: String?, - var value: Int, - var interest: Int, - var fine: Int, - var discount: Int, - var reconciled: Boolean, - var status: BackofficeBaseBillStatus, - var duplicateId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewBill { - return gson.fromJson(jsonToParse.toString(), BackofficeNewBill::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBill( - var id: String, - var supplier: BackofficeSupplier?, - var account: BackofficeAccount?, - var billType: BackofficeBillType?, - var costCenter: BackofficeCostCenter?, - var attachment: String?, - var billPlanCategories: ArrayList, - var createdBySystem: Boolean, - var description: String, - var performDate: Calendar, - var payDate: Calendar?, - var dueDate: Calendar, - var supplierId: String?, - var accountId: String, - var paymentMethod: BackofficeBillPaymentMethod?, - var observation: String?, - var metadata: String?, - var value: Int, - var interest: Int, - var fine: Int, - var discount: Int, - var reconciled: Boolean, - var status: BackofficeBaseBillStatus, - var duplicateId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBill { - return gson.fromJson(jsonToParse.toString(), BackofficeBill::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillBillPlanCategories( - var id: String, - var name: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillBillPlanCategories { - return gson.fromJson(jsonToParse.toString(), BackofficeBillBillPlanCategories::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryBase( - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryBase { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryBase::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategory( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategory { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren( - var children: ArrayList, - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren( - var id: String, - var name: String, - var path: String, - var parentId: String?, - var hasBills: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoryChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildrenChildren::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewBillType( - var name: String, - var categoryId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewBillType { - return gson.fromJson(jsonToParse.toString(), BackofficeNewBillType::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillType( - var id: String, - var category: BackofficeCategory, - var name: String, - var categoryId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillType { - return gson.fromJson(jsonToParse.toString(), BackofficeBillType::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficePartialBillType( - var idOrName: String, - var category: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficePartialBillType { - return gson.fromJson(jsonToParse.toString(), BackofficePartialBillType::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewCategory( - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewCategory { - return gson.fromJson(jsonToParse.toString(), BackofficeNewCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCategory( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCategory { - return gson.fromJson(jsonToParse.toString(), BackofficeCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductCmv( - var soldCount: Int, - var inputs: ArrayList, - var productId: String, - var unitCostValue: Int?, - var realUnitCostValue: Int?, - var absolutePopularity: Float?, - var relativePopularity: Float? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductCmv { - return gson.fromJson(jsonToParse.toString(), BackofficeProductCmv::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductCmvInputs( - var productId: String, - var count: Int, - var unitCostValue: Int?, - var realUnitCostValue: Int?, - var isCompound: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductCmvInputs { - return gson.fromJson(jsonToParse.toString(), BackofficeProductCmvInputs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductSimpleCmv( - var productId: String, - var unitCostValue: Int?, - var realUnitCostValue: Int?, - var absolutePopularity: Float?, - var relativePopularity: Float? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductSimpleCmv { - return gson.fromJson(jsonToParse.toString(), BackofficeProductSimpleCmv::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewCostCenter( - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewCostCenter { - return gson.fromJson(jsonToParse.toString(), BackofficeNewCostCenter::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCostCenter( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCostCenter { - return gson.fromJson(jsonToParse.toString(), BackofficeCostCenter::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeFocusCompany( - var id: String, - var cnpj: String, - var token: String, - var lastInvoiceVersion: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeFocusCompany { - return gson.fromJson(jsonToParse.toString(), BackofficeFocusCompany::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeFocusInvoice( - var id: String, - var focusCompanyId: String, - var supplierName: String, - var supplierDocument: String, - var accessKey: String, - var totalValue: Int, - var issueDate: Calendar, - var situation: String, - var completed: Boolean, - var type: Int, - var version: Int, - var digestValue: String?, - var targetManifestion: BackofficeManifestType? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeFocusInvoice { - return gson.fromJson(jsonToParse.toString(), BackofficeFocusInvoice::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBaseInventory( - var date: Calendar, - var isTotal: Boolean, - var createdBy: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBaseInventory { - return gson.fromJson(jsonToParse.toString(), BackofficeBaseInventory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewInventory( - var storageIds: ArrayList, - var date: Calendar, - var isTotal: Boolean, - var createdBy: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewInventory { - return gson.fromJson(jsonToParse.toString(), BackofficeNewInventory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeInventory( - var id: String, - var status: BackofficeInventoryStatus, - var storages: ArrayList, - var date: Calendar, - var isTotal: Boolean, - var createdBy: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeInventory { - return gson.fromJson(jsonToParse.toString(), BackofficeInventory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeInventoryStorages( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeInventoryStorages { - return gson.fromJson(jsonToParse.toString(), BackofficeInventoryStorages::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeInventoryProduct( - var productId: String, - var storageId: String, - var inventoryCount: Int?, - var inventoryUnitValue: Int?, - var realCount: Int?, - var realUnitValue: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeInventoryProduct { - return gson.fromJson(jsonToParse.toString(), BackofficeInventoryProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeInvoiceDuplicate( - var id: String?, - var code: String?, - var dueDate: Calendar?, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeInvoiceDuplicate { - return gson.fromJson(jsonToParse.toString(), BackofficeInvoiceDuplicate::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoice( - var id: String, - var createdAt: Calendar, - var xml: String?, - var completed: Boolean, - var storageId: String?, - var bill: BackofficeImportedInvoiceBill, - var details: BackofficeImportedInvoiceDetails, - var supplier: BackofficeImportedInvoiceSupplier, - var products: ArrayList, - var duplicates: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoice { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoice::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceBill( - var accountId: String?, - var createBill: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceBill { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceBill::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceDetails( - var num: Int, - var serie: Int, - var operationType: String, - var accessKey: String?, - var date: Calendar, - var supplier: BackofficeImportedInvoiceDetailsSupplier, - var totalValue: Int, - var totalProductsValue: Int, - var taxs: BackofficeImportedInvoiceDetailsTaxs, - var insuranceValue: Int, - var discountValue: Int, - var otherExpensesValue: Int, - var shippingValue: Int, - var cfop: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetails { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceDetailsSupplier( - var name: String, - var cpfOrCnpj: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsSupplier { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsSupplier::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceDetailsTaxs( - var icmsBase: Int, - var icmsValue: Int, - var icmsstBase: Int, - var icmsstValue: Int, - var ipiValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsTaxs { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsTaxs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceSupplier( - var pending: Boolean, - var skipped: Boolean, - var associatedSupplier: BackofficeSupplier?, - var invoiceEntry: BackofficeImportedInvoiceSupplierInvoiceEntry? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceSupplier { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceSupplier::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceSupplierInvoiceEntry( - var cpfOrCnpj: String, - var name: String, - var legalName: String?, - var inscricaoEstadual: String?, - var address: BackofficeAddress? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceSupplierInvoiceEntry { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceSupplierInvoiceEntry::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewManualInvoice( - var storageId: String?, - var bill: BackofficeNewManualInvoiceBill, - var details: BackofficeNewManualInvoiceDetails, - var supplierId: String?, - var products: ArrayList, - var duplicates: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoice { - return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoice::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewManualInvoiceBill( - var accountId: String?, - var createBill: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoiceBill { - return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoiceBill::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewManualInvoiceDetails( - var num: Int, - var serie: Int, - var operationType: String, - var date: Calendar, - var taxs: BackofficeNewManualInvoiceDetailsTaxs, - var insuranceValue: Int, - var discountValue: Int, - var otherExpensesValue: Int, - var shippingValue: Int, - var cfop: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoiceDetails { - return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoiceDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewManualInvoiceDetailsTaxs( - var icmsBase: Int, - var icmsValue: Int, - var icmsstBase: Int, - var icmsstValue: Int, - var ipiValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewManualInvoiceDetailsTaxs { - return gson.fromJson(jsonToParse.toString(), BackofficeNewManualInvoiceDetailsTaxs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeManualInvoiceProduct( - var associatedProductId: String, - var count: Int, - var unitValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeManualInvoiceProduct { - return gson.fromJson(jsonToParse.toString(), BackofficeManualInvoiceProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceProduct( - var entryId: String, - var pending: Boolean, - var skipped: Boolean, - var associatedProduct: Product?, - var unitValue: Int, - var unitMultiplier: Int, - var invoiceEntry: BackofficeImportedInvoiceProductInvoiceEntry - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceProduct { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceProductInvoiceEntry( - var index: Int, - var code: String, - var description: String, - var commercialUnit: String, - var commercialQuantity: Int, - var unitValue: Int, - var EAN: String?, - var totalValue: Int, - var icmsStValue: Int?, - var icmsStAliquot: Int?, - var icmsStBase: Int?, - var ipiValue: Int?, - var ipiAliquot: Int?, - var ipiBase: Int?, - var shippingValue: Int?, - var otherExpensesValue: Int?, - var discountValue: Int?, - var insuranceValue: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceProductInvoiceEntry { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceProductInvoiceEntry::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeUpsertManualProduct( - var id: String?, - var code: String, - var associatedProductId: String, - var count: Int, - var unitValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeUpsertManualProduct { - return gson.fromJson(jsonToParse.toString(), BackofficeUpsertManualProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceDetailsObjBillPlanCategory( - var billPlanCategoryId: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsObjBillPlanCategory { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsObjBillPlanCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeImportedInvoiceDetailsBillPlanCategory( - var invoiceId: String, - var invoiceDetailsField: BackofficeImportedInvoiceDetailsField, - var billPlanCategoryId: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeImportedInvoiceDetailsBillPlanCategory { - return gson.fromJson(jsonToParse.toString(), BackofficeImportedInvoiceDetailsBillPlanCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductLastInvoiceDetails( - var isImported: Boolean, - var totalProductValue: Int, - var entryId: String, - var pending: Boolean, - var skipped: Boolean, - var associatedProduct: Product?, - var unitValue: Int, - var unitMultiplier: Int, - var invoiceEntry: BackofficeImportedInvoiceProductInvoiceEntry - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductLastInvoiceDetails { - return gson.fromJson(jsonToParse.toString(), BackofficeProductLastInvoiceDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeReceivedInvoiceHeader( - var id: String, - var supplierName: String, - var supplierDocument: String, - var accessKey: String, - var totalValue: Int, - var issueDate: Calendar, - var state: String, - var targetManifestion: String?, - var completeNfe: Boolean, - var kindNfe: String, - var version: Int, - var digestValue: String?, - var numCorrection: String?, - var cancelDate: Calendar?, - var cancelJustification: String?, - var isImported: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeReceivedInvoiceHeader { - return gson.fromJson(jsonToParse.toString(), BackofficeReceivedInvoiceHeader::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeResponseInvoiceManifest( - var statusSefaz: String, - var messageSefaz: String, - var status: String, - var protocol: String, - var typeManifest: String, - var reason: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeResponseInvoiceManifest { - return gson.fromJson(jsonToParse.toString(), BackofficeResponseInvoiceManifest::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeIncomeStatement( - var grossRevenue: Int, - var grossProfit: Int, - var netTotal: Int, - var taxTotal: Int, - var categories: ArrayList, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeIncomeStatement { - return gson.fromJson(jsonToParse.toString(), BackofficeIncomeStatement::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCategoryTotal( - var name: String, - var categoryId: String?, - var parcialProfit: Int, - var total: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCategoryTotal { - return gson.fromJson(jsonToParse.toString(), BackofficeCategoryTotal::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillHistory( - var historicByDay: ArrayList, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillHistory { - return gson.fromJson(jsonToParse.toString(), BackofficeBillHistory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillHistoryByDay( - var billDataHistory: ArrayList, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillHistoryByDay { - return gson.fromJson(jsonToParse.toString(), BackofficeBillHistoryByDay::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillDataHistory( - var billId: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillDataHistory { - return gson.fromJson(jsonToParse.toString(), BackofficeBillDataHistory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCategoryHistory( - var historicByDay: ArrayList, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCategoryHistory { - return gson.fromJson(jsonToParse.toString(), BackofficeCategoryHistory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCategoryHistoryByDay( - var categoryDataHistory: ArrayList, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCategoryHistoryByDay { - return gson.fromJson(jsonToParse.toString(), BackofficeCategoryHistoryByDay::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCategoryDataHistory( - var categoryName: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCategoryDataHistory { - return gson.fromJson(jsonToParse.toString(), BackofficeCategoryDataHistory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeExtract( - var previousBalance: Int, - var finalBalance: Int, - var periodBalance: Int, - var totalReceipts: Int, - var totalExpenses: Int, - var billExtractData: ArrayList, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeExtract { - return gson.fromJson(jsonToParse.toString(), BackofficeExtract::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillData( - var date: Calendar, - var description: String, - var categoryName: String, - var value: Int, - var balance: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillData { - return gson.fromJson(jsonToParse.toString(), BackofficeBillData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCashFlow( - var previousBalance: Int, - var finalBalance: Int, - var periodBalance: Int, - var totalReceipts: Int, - var totalExpenses: Int, - var receipts: ArrayList, - var expenses: ArrayList, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCashFlow { - return gson.fromJson(jsonToParse.toString(), BackofficeCashFlow::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeDescriptionReport( - var bills: ArrayList, - var total: Int, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeDescriptionReport { - return gson.fromJson(jsonToParse.toString(), BackofficeDescriptionReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillDescriptionData( - var description: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillDescriptionData { - return gson.fromJson(jsonToParse.toString(), BackofficeBillDescriptionData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeDayReport( - var bills: ArrayList, - var total: Int, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeDayReport { - return gson.fromJson(jsonToParse.toString(), BackofficeDayReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillDayData( - var date: Calendar, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillDayData { - return gson.fromJson(jsonToParse.toString(), BackofficeBillDayData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeIncomeByCategory( - var categoryName: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeIncomeByCategory { - return gson.fromJson(jsonToParse.toString(), BackofficeIncomeByCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCostCenterReport( - var costCenterBills: ArrayList, - var total: Int, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCostCenterReport { - return gson.fromJson(jsonToParse.toString(), BackofficeCostCenterReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeCostCenterBills( - var name: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeCostCenterBills { - return gson.fromJson(jsonToParse.toString(), BackofficeCostCenterBills::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillSupplierTrackerReport( - var billSupplierTrackerData: ArrayList, - var since: Calendar, - var until: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillSupplierTrackerReport { - return gson.fromJson(jsonToParse.toString(), BackofficeBillSupplierTrackerReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillSupplierTrackerData( - var supplierId: String?, - var supplierName: String, - var billDescription: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillSupplierTrackerData { - return gson.fromJson(jsonToParse.toString(), BackofficeBillSupplierTrackerData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeResume( - var billsDueToToday: ArrayList, - var accountBalances: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeResume { - return gson.fromJson(jsonToParse.toString(), BackofficeResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeResumeBillsDueToToday( - var id: String, - var value: Int, - var status: BackofficeResumeBillsDueToTodayStatus, - var description: String, - var account: BackofficeResumeBillsDueToTodayAccount - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeResumeBillsDueToToday { - return gson.fromJson(jsonToParse.toString(), BackofficeResumeBillsDueToToday::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeResumeBillsDueToTodayAccount( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeResumeBillsDueToTodayAccount { - return gson.fromJson(jsonToParse.toString(), BackofficeResumeBillsDueToTodayAccount::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeResumeAccountBalances( - var id: String, - var name: String, - var balanceValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeResumeAccountBalances { - return gson.fromJson(jsonToParse.toString(), BackofficeResumeAccountBalances::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficePeriodResume( - var toReceive: BackofficePeriodResumeToReceive, - var toPay: BackofficePeriodResumeToPay, - var balance: Int, - var growth: Float? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficePeriodResume { - return gson.fromJson(jsonToParse.toString(), BackofficePeriodResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficePeriodResumeToReceive( - var paid: Int, - var pending: Int, - var total: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficePeriodResumeToReceive { - return gson.fromJson(jsonToParse.toString(), BackofficePeriodResumeToReceive::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficePeriodResumeToPay( - var paid: Int, - var pending: Int, - var total: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficePeriodResumeToPay { - return gson.fromJson(jsonToParse.toString(), BackofficePeriodResumeToPay::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoriesReport( - var id: String, - var name: String, - var total: Int, - var bills: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoriesReport { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoriesReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBillPlanCategoriesReportBills( - var description: String, - var performDate: Calendar, - var dueDate: Calendar, - var payDate: Calendar?, - var value: Int, - var account: String?, - var supplier: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBillPlanCategoriesReportBills { - return gson.fromJson(jsonToParse.toString(), BackofficeBillPlanCategoriesReportBills::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewStorage( - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewStorage { - return gson.fromJson(jsonToParse.toString(), BackofficeNewStorage::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeStorage( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeStorage { - return gson.fromJson(jsonToParse.toString(), BackofficeStorage::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeStorageProduct( - var id: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeStorageProduct { - return gson.fromJson(jsonToParse.toString(), BackofficeStorageProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeStorageHistory( - var currentPage: Int?, - var initial: Int, - var totalTransfersItems: Int, - var transfers: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeStorageHistory { - return gson.fromJson(jsonToParse.toString(), BackofficeStorageHistory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeStorageHistoryTransfers( - var date: Calendar, - var type: BackofficeStorageTransferType, - var count: Int, - var employeeId: String, - var unitCostValue: Int?, - var referenceCode: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeStorageHistoryTransfers { - return gson.fromJson(jsonToParse.toString(), BackofficeStorageHistoryTransfers::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeStorageProductsHistory( - var productName: String?, - var productId: String, - var history: BackofficeStorageHistory - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeStorageProductsHistory { - return gson.fromJson(jsonToParse.toString(), BackofficeStorageProductsHistory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeDeleteProductsResult( - var success: ArrayList, - var error: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeDeleteProductsResult { - return gson.fromJson(jsonToParse.toString(), BackofficeDeleteProductsResult::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeDeleteProductsResultError( - var productId: String, - var reason: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeDeleteProductsResultError { - return gson.fromJson(jsonToParse.toString(), BackofficeDeleteProductsResultError::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeMultipleStorageTransferProduct( - var productId: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeMultipleStorageTransferProduct { - return gson.fromJson(jsonToParse.toString(), BackofficeMultipleStorageTransferProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeInput( - var productId: String, - var storageId: String, - var unitCostValue: Int?, - var obs: String?, - var count: Int, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeInput { - return gson.fromJson(jsonToParse.toString(), BackofficeInput::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeInputsResult( - var success: ArrayList, - var error: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeInputsResult { - return gson.fromJson(jsonToParse.toString(), BackofficeInputsResult::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeInputsResultError( - var input: BackofficeInput, - var reason: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeInputsResultError { - return gson.fromJson(jsonToParse.toString(), BackofficeInputsResultError::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewProductionRule( - var inputs: ArrayList, - var outputs: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewProductionRule { - return gson.fromJson(jsonToParse.toString(), BackofficeNewProductionRule::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewProductionRuleOutputs( - var productId: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewProductionRuleOutputs { - return gson.fromJson(jsonToParse.toString(), BackofficeNewProductionRuleOutputs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductionInput( - var productId: String, - var count: Int, - var loss: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductionInput { - return gson.fromJson(jsonToParse.toString(), BackofficeProductionInput::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductionOutput( - var productId: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductionOutput { - return gson.fromJson(jsonToParse.toString(), BackofficeProductionOutput::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductionRule( - var id: String, - var inputs: ArrayList, - var outputs: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductionRule { - return gson.fromJson(jsonToParse.toString(), BackofficeProductionRule::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductionRuleInputs( - var productId: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductionRuleInputs { - return gson.fromJson(jsonToParse.toString(), BackofficeProductionRuleInputs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductionRuleOutputs( - var productId: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductionRuleOutputs { - return gson.fromJson(jsonToParse.toString(), BackofficeProductionRuleOutputs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeProductStatusAtStorage( - var productId: String, - var storageId: String, - var count: Int, - var unitCostValue: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeProductStatusAtStorage { - return gson.fromJson(jsonToParse.toString(), BackofficeProductStatusAtStorage::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeAddress( - var street: String, - var number: String, - var complemento: String?, - var cep: String, - var state: String, - var city: String, - var neighborhood: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeAddress { - return gson.fromJson(jsonToParse.toString(), BackofficeAddress::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeBankAccount( - var bank: String, - var account: String, - var agency: String, - var cpfOrCnpj: String, - var ownerName: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeBankAccount { - return gson.fromJson(jsonToParse.toString(), BackofficeBankAccount::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewSupplier( - var name: String, - var legalName: String, - var inscricaoEstadual: String?, - var cpfOrCnpj: String?, - var address: BackofficeAddress?, - var bankAccount: BackofficeBankAccount? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewSupplier { - return gson.fromJson(jsonToParse.toString(), BackofficeNewSupplier::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeSupplier( - var id: String, - var name: String, - var legalName: String, - var inscricaoEstadual: String?, - var cpfOrCnpj: String?, - var address: BackofficeAddress?, - var bankAccount: BackofficeBankAccount? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeSupplier { - return gson.fromJson(jsonToParse.toString(), BackofficeSupplier::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeNewTransfer( - var date: Calendar, - var description: String, - var value: Int, - var paid: Boolean, - var sourceAccountId: String, - var destinationAccountId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeNewTransfer { - return gson.fromJson(jsonToParse.toString(), BackofficeNewTransfer::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BackofficeTransfer( - var id: String, - var date: Calendar, - var description: String, - var value: Int, - var paid: Boolean, - var sourceAccount: BackofficeAccount, - var destinationAccount: BackofficeAccount, - var sourceBill: BackofficeBill, - var destinationBill: BackofficeBill - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BackofficeTransfer { - return gson.fromJson(jsonToParse.toString(), BackofficeTransfer::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Bar( - var id: String?, - var name: String, - var image: ImageUrl?, - var storageId: String, - var storageName: String?, - var internalIp: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Bar { - return gson.fromJson(jsonToParse.toString(), Bar::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SellerReport( - var id: String, - var name: String, - var soldValue: Int, - var tip: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SellerReport { - return gson.fromJson(jsonToParse.toString(), SellerReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class WaiterDelivery( - var id: String, - var name: String, - var productsToDelivery: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): WaiterDelivery { - return gson.fromJson(jsonToParse.toString(), WaiterDelivery::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BarReport( - var id: String, - var name: String, - var quantity: Int, - var totalValue: Int, - var totalDiscount: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BarReport { - return gson.fromJson(jsonToParse.toString(), BarReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SellerTransaction( - var id: String, - var date: Calendar, - var clients: ArrayList, - var value: Int, - var tip: Int, - var refunded: Boolean, - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SellerTransaction { - return gson.fromJson(jsonToParse.toString(), SellerTransaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BaseProduct( - var id: String, - var name: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BaseProduct { - return gson.fromJson(jsonToParse.toString(), BaseProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierClosingValues( - var cashValue: Int, - var creditValue: Int, - var debitValue: Int, - var voucherValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierClosingValues { - return gson.fromJson(jsonToParse.toString(), CashierClosingValues::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierClosingDetails( - var bleedings: ArrayList, - var closing: CashierClosingValues - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierClosingDetails { - return gson.fromJson(jsonToParse.toString(), CashierClosingDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierClosingDetailsBleedings( - var id: String, - var author: String, - var date: Calendar, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierClosingDetailsBleedings { - return gson.fromJson(jsonToParse.toString(), CashierClosingDetailsBleedings::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BaseCategory( - var id: String, - var name: String, - var description: String?, - var priority: Int, - var image: ImageUrl?, - var parentId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BaseCategory { - return gson.fromJson(jsonToParse.toString(), BaseCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Category( - var subCategories: ArrayList, - var id: String, - var name: String, - var description: String?, - var priority: Int, - var image: ImageUrl?, - var parentId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Category { - return gson.fromJson(jsonToParse.toString(), Category::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CategorySubCategories( - var subCategories: ArrayList, - var id: String, - var name: String, - var description: String?, - var priority: Int, - var image: ImageUrl?, - var parentId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CategorySubCategories { - return gson.fromJson(jsonToParse.toString(), CategorySubCategories::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CategorySubCategoriesSubCategories( - var id: String, - var name: String, - var description: String?, - var priority: Int, - var image: ImageUrl?, - var parentId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CategorySubCategoriesSubCategories { - return gson.fromJson(jsonToParse.toString(), CategorySubCategoriesSubCategories::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewCategory( - var name: String, - var description: String?, - var priority: Int, - var parentId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewCategory { - return gson.fromJson(jsonToParse.toString(), NewCategory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SellableList( - var products: ArrayList, - var combos: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SellableList { - return gson.fromJson(jsonToParse.toString(), SellableList::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SellableListProducts( - var id: String, - var name: String, - var category: String, - var type: String, - var image: ImageUrl?, - var hasAlcohol: Boolean?, - var fiscalCode: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SellableListProducts { - return gson.fromJson(jsonToParse.toString(), SellableListProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SellableListCombos( - var id: String, - var name: String, - var description: String, - var category: String, - var image: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SellableListCombos { - return gson.fromJson(jsonToParse.toString(), SellableListCombos::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CostOfGoodsSold( - var id: String, - var name: String, - var supplies: ArrayList, - var resellingPrice: Int, - var productUnitCost: Int?, - var productRealCost: Int?, - var relativePopularity: Float?, - var absolutePopularity: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CostOfGoodsSold { - return gson.fromJson(jsonToParse.toString(), CostOfGoodsSold::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CostOfGoodsSoldSupplies( - var id: String, - var name: String, - var quantity: Int, - var unitCost: Int?, - var realCost: Int?, - var isCompound: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CostOfGoodsSoldSupplies { - return gson.fromJson(jsonToParse.toString(), CostOfGoodsSoldSupplies::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewCoupon( - var placeId: String, - var name: String, - var discountType: CouponDiscountType, - var bonusValue: Int?, - var promotionId: String?, - var type: CouponType, - var expiresAt: Calendar?, - var quantity: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewCoupon { - return gson.fromJson(jsonToParse.toString(), NewCoupon::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Coupon( - var id: String, - var valid: Boolean, - var usageCount: Int, - var clientsAverageTicket: Int?, - var qrCodeUrl: String, - var promotion: MinimalPromotionInfo?, - var placeId: String, - var name: String, - var discountType: CouponDiscountType, - var bonusValue: Int?, - var promotionId: String?, - var type: CouponType, - var expiresAt: Calendar?, - var quantity: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Coupon { - return gson.fromJson(jsonToParse.toString(), Coupon::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Device( - var code: String, - var id: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Device { - return gson.fromJson(jsonToParse.toString(), Device::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class DeviceStatus( - var id: String, - var smallId: String, - var employee: String, - var status: String?, - var updatedAt: Calendar?, - var removedFromEventAt: Calendar? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): DeviceStatus { - return gson.fromJson(jsonToParse.toString(), DeviceStatus::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class DeviceEventStatus( - var id: String, - var fingerprint: String, - var employeeName: String?, - var isOnline: Boolean, - var lastOfflineSync: Calendar, - var pdvVersion: String, - var hasFinishedActivity: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): DeviceEventStatus { - return gson.fromJson(jsonToParse.toString(), DeviceEventStatus::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Employee( - var id: String?, - var name: String, - var username: String, - var zigReadPermissionKey: String?, - var avatar: ImageUrl?, - var permissions: ArrayList, - var role: Role?, - var organization: Organization, - var places: ArrayList, - var bar: Bar?, - var zigTag: String?, - var deviceIds: ArrayList?, - var blacklistEntrances: ArrayList? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Employee { - return gson.fromJson(jsonToParse.toString(), Employee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewEmployee( - var name: String, - var username: String, - var zigReadPermissionKey: String?, - var permissions: ArrayList, - var role: Role?, - var places: ArrayList, - var bar: String?, - var blacklistEntrances: ArrayList? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewEmployee { - return gson.fromJson(jsonToParse.toString(), NewEmployee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EditMultipleEmployees( - var username: String?, - var initialUsernameNumber: Int?, - var name: String?, - var initialNameNumber: Int?, - var roleSlug: String?, - var barId: String?, - var placeIds: ArrayList? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EditMultipleEmployees { - return gson.fromJson(jsonToParse.toString(), EditMultipleEmployees::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MinimalEmployee( - var id: String, - var name: String, - var avatar: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MinimalEmployee { - return gson.fromJson(jsonToParse.toString(), MinimalEmployee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Entrance( - var id: String?, - var name: String, - var category: String, - var value: Int, - var image: ImageUrl?, - var minimumConsumptionValue: Int, - var active: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Entrance { - return gson.fromJson(jsonToParse.toString(), Entrance::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EntranceSold( - var id: String, - var name: String, - var image: ImageUrl?, - var count: Int, - var totalValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EntranceSold { - return gson.fromJson(jsonToParse.toString(), EntranceSold::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RelationTicket( - var names: String?, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RelationTicket { - return gson.fromJson(jsonToParse.toString(), RelationTicket::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TicketSold( - var id: String, - var name: String, - var averageValue: Int, - var perRelation: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TicketSold { - return gson.fromJson(jsonToParse.toString(), TicketSold::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Bilheteiro( - var id: String, - var name: String, - var tickets: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Bilheteiro { - return gson.fromJson(jsonToParse.toString(), Bilheteiro::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EntranceUser( - var id: String, - var name: String, - var cpf: String, - var date: Calendar, - var productName: String, - var category: String, - var count: Int, - var unitValue: Int, - var employeeName: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EntranceUser { - return gson.fromJson(jsonToParse.toString(), EntranceUser::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventList( - var totalClients: Int, - var averageTicket: Int, - var totalIncome: Int, - var futureEvents: Int, - var events: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventList { - return gson.fromJson(jsonToParse.toString(), EventList::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventListEvents( - var id: String, - var name: String, - var status: EventState, - var begin: Calendar, - var end: Calendar?, - var image: ImageUrl?, - var tags: ArrayList, - var averageTicket: Int?, - var income: Int?, - var totalPublic: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventListEvents { - return gson.fromJson(jsonToParse.toString(), EventListEvents::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class DayResume( - var date: Calendar, - var withdrew: Int, - var _in: Int, - var _out: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): DayResume { - return gson.fromJson(jsonToParse.toString(), DayResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ExtractResume( - var available: Int, - var availableInTwoDays: Int, - var toBeReleased: Int, - var availableInMoreThanOneMonth: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ExtractResume { - return gson.fromJson(jsonToParse.toString(), ExtractResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Fee( - var zigMachineCredit: Float, - var zigMachineDebit: Float, - var inHouse: Float, - var app: Float, - var rechargeRemainings: Float, - var bonus: Float, - var minimumConsumption: Float - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Fee { - return gson.fromJson(jsonToParse.toString(), Fee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RechargeAvailable( - var id: String, - var user: String, - var totalValue: Int, - var usedValue: Int, - var createdAt: Calendar, - var expiredAt: Calendar, - var fee: Float, - var availableValue: Int, - var withdrew: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RechargeAvailable { - return gson.fromJson(jsonToParse.toString(), RechargeAvailable::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RechargeExpireResume( - var toBeAvailable: Int, - var rechargesAvailable: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RechargeExpireResume { - return gson.fromJson(jsonToParse.toString(), RechargeExpireResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ExtractDayResumeSection( - var title: String, - var description: String?, - var tooltip: String?, - var date: Calendar?, - var values: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ExtractDayResumeSection { - return gson.fromJson(jsonToParse.toString(), ExtractDayResumeSection::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ExtractDayResumeSectionValues( - var modality: String, - var totalValue: Int, - var tax: Float?, - var payValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ExtractDayResumeSectionValues { - return gson.fromJson(jsonToParse.toString(), ExtractDayResumeSectionValues::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RechargeExpireDayResume( - var expired: Int, - var date: Calendar, - var toExpire: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RechargeExpireDayResume { - return gson.fromJson(jsonToParse.toString(), RechargeExpireDayResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class WithdrawBankAccount( - var bank: String, - var cpfOrCnpj: String, - var account: String, - var agency: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): WithdrawBankAccount { - return gson.fromJson(jsonToParse.toString(), WithdrawBankAccount::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Withdraw( - var id: String, - var type: WithdrawType, - var value: Int, - var anticipationFee: Float?, - var status: WithdrawStatus, - var date: Calendar, - var paymentMethod: String?, - var proRataFee: Float? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Withdraw { - return gson.fromJson(jsonToParse.toString(), Withdraw::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ExtractAdjust( - var id: String, - var value: Int, - var obs: String?, - var payDate: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ExtractAdjust { - return gson.fromJson(jsonToParse.toString(), ExtractAdjust::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ConsolidatedExtract( - var sections: ArrayList, - var availableValue: Int, - var withdrewValue: Int, - var anticipatedValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ConsolidatedExtract { - return gson.fromJson(jsonToParse.toString(), ConsolidatedExtract::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ConsolidatedExtractSection( - var title: String, - var description: String, - var values: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ConsolidatedExtractSection { - return gson.fromJson(jsonToParse.toString(), ConsolidatedExtractSection::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ConsolidatedExtractSectionValues( - var title: String, - var hideIfZero: Boolean, - var totalValueUnit: ConsolidatedExtractSectionValuesTotalValueUnit, - var totalValue: Int?, - var maxFee: Float?, - var minFee: Float?, - var payValue: Int, - var highlighted: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ConsolidatedExtractSectionValues { - return gson.fromJson(jsonToParse.toString(), ConsolidatedExtractSectionValues::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ZigMachineResume( - var debit: Int, - var credit: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ZigMachineResume { - return gson.fromJson(jsonToParse.toString(), ZigMachineResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class IncomeResume( - var products: Int, - var entrances: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): IncomeResume { - return gson.fromJson(jsonToParse.toString(), IncomeResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReceiptResume( - var cashReceipt: Int, - var debitReceipt: Int, - var creditReceipt: Int, - var voucherReceipt: Int, - var zigCreditReceipt: Int, - var zigDebitReceipt: Int, - var appReceipt: Int, - var dashboardReceipt: Int, - var anticipatedReceipt: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReceiptResume { - return gson.fromJson(jsonToParse.toString(), ReceiptResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MoneyReceived( - var cash: Int, - var debit: Int, - var credit: Int, - var zigDebit: Int, - var zigCredit: Int, - var postEvent: Int, - var voucher: Int, - var dashboard: Int, - var anticipated: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MoneyReceived { - return gson.fromJson(jsonToParse.toString(), MoneyReceived::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Cashier( - var id: String, - var name: String, - var rechargeMoneyReceived: MoneyReceived?, - var postPaidMoneyReceived: MoneyReceived?, - var bleedings: ArrayList, - var closedValues: CashierClosedValues?, - var cashZigTagDevolutions: Int, - var rechargeDevolutions: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Cashier { - return gson.fromJson(jsonToParse.toString(), Cashier::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierBleedings( - var id: String, - var author: String, - var date: Calendar, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierBleedings { - return gson.fromJson(jsonToParse.toString(), CashierBleedings::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierClosedValues( - var cash: Int, - var credit: Int, - var debit: Int, - var voucher: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierClosedValues { - return gson.fromJson(jsonToParse.toString(), CashierClosedValues::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Client( - var id: String, - var cpf: String, - var name: String, - var phone: String, - var zigCode: String?, - var appTransactionsValue: Int, - var housePostPaidTransactionsValue: Int, - var housePrePaidTransactionsValue: Int, - var bonusTransactionsValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Client { - return gson.fromJson(jsonToParse.toString(), Client::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserTransactionProduct( - var id: String, - var type: SellableThing, - var name: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserTransactionProduct { - return gson.fromJson(jsonToParse.toString(), UserTransactionProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Payments( - var bonus: Int, - var prePaid: Int, - var ppu: Int, - var postPaid: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Payments { - return gson.fromJson(jsonToParse.toString(), Payments::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TransactionBuyers( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TransactionBuyers { - return gson.fromJson(jsonToParse.toString(), TransactionBuyers::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserTransaction( - var id: String, - var products: ArrayList, - var seller: Seller, - var buyers: ArrayList, - var date: Calendar, - var refunded: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserTransaction { - return gson.fromJson(jsonToParse.toString(), UserTransaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Debtor( - var userId: String, - var userName: String, - var value: Int, - var paidValue: Int, - var phone: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Debtor { - return gson.fromJson(jsonToParse.toString(), Debtor::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserBonusReport( - var id: String, - var name: String, - var receivedValue: Int, - var spentValue: Int, - var givenBy: String, - var reason: String?, - var date: Calendar? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserBonusReport { - return gson.fromJson(jsonToParse.toString(), UserBonusReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RechargeDetails( - var id: String, - var totalValue: Int, - var usedValue: Int, - var isRefunded: Boolean, - var date: Calendar, - var user: String, - var method: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RechargeDetails { - return gson.fromJson(jsonToParse.toString(), RechargeDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Payment( - var method: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Payment { - return gson.fromJson(jsonToParse.toString(), Payment::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PostDetails( - var id: String, - var payments: ArrayList, - var payers: ArrayList, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PostDetails { - return gson.fromJson(jsonToParse.toString(), PostDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ClientDetails( - var id: String, - var name: String, - var email: String?, - var hasApp: Boolean, - var zigCode: String?, - var phone: String, - var cpf: String, - var avatar: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ClientDetails { - return gson.fromJson(jsonToParse.toString(), ClientDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RechargeConsumption( - var value: Int, - var user: String, - var method: RechargeConsumptionMethod?, - var author: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RechargeConsumption { - return gson.fromJson(jsonToParse.toString(), RechargeConsumption::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MultipleUserIdsResult( - var success: ArrayList, - var error: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MultipleUserIdsResult { - return gson.fromJson(jsonToParse.toString(), MultipleUserIdsResult::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MultipleUserIdsResultError( - var userId: String, - var reason: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MultipleUserIdsResultError { - return gson.fromJson(jsonToParse.toString(), MultipleUserIdsResultError::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BillPayment( - var method: PaymentMethod, - var value: Int, - var isBonus: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BillPayment { - return gson.fromJson(jsonToParse.toString(), BillPayment::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RefundedRecharge( - var id: String, - var totalValue: Int, - var usedValue: Int, - var date: Calendar, - var userName: String, - var authorName: String, - var refundedBy: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RefundedRecharge { - return gson.fromJson(jsonToParse.toString(), RefundedRecharge::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ActivationReturnReport( - var cashValue: Int, - var cashQuantity: Int, - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ActivationReturnReport { - return gson.fromJson(jsonToParse.toString(), ActivationReturnReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ActivationReturnReportProducts( - var id: String, - var count: Int, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ActivationReturnReportProducts { - return gson.fromJson(jsonToParse.toString(), ActivationReturnReportProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventResumeSection( - var title: String, - var description: String?, - var columns: ArrayList, - var values: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventResumeSection { - return gson.fromJson(jsonToParse.toString(), EventResumeSection::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventResumeSectionValues( - var name: String, - var tooltip: String?, - var values: ArrayList, - var highlighted: Boolean, - var hideIfZero: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventResumeSectionValues { - return gson.fromJson(jsonToParse.toString(), EventResumeSectionValues::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventResumeSectionValuesValues( - var value: Float?, - var unit: EventResumeSectionValuesValuesUnit - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventResumeSectionValuesValues { - return gson.fromJson(jsonToParse.toString(), EventResumeSectionValuesValues::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UsedPromotion( - var promotionId: String, - var promotionName: String, - var productId: String, - var productName: String, - var productCategory: String, - var totalDiscount: Int, - var uses: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UsedPromotion { - return gson.fromJson(jsonToParse.toString(), UsedPromotion::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SoldEntranceWithEmployee( - var employeeId: String, - var employeeName: String, - var entranceId: String, - var entranceName: String, - var totalValue: Int, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SoldEntranceWithEmployee { - return gson.fromJson(jsonToParse.toString(), SoldEntranceWithEmployee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RefundedProduct( - var id: String, - var refundedAt: Calendar, - var name: String, - var category: String, - var unitValue: Int, - var count: Int, - var refundedBy: String, - var refundObs: String, - var buyers: ArrayList, - var isCanceled: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RefundedProduct { - return gson.fromJson(jsonToParse.toString(), RefundedProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TipRemovedList( - var employee: MinimalEmployee, - var totalRemoved: Int, - var removals: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TipRemovedList { - return gson.fromJson(jsonToParse.toString(), TipRemovedList::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TipRemovedListRemovals( - var id: String, - var name: String, - var value: Int, - var reason: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TipRemovedListRemovals { - return gson.fromJson(jsonToParse.toString(), TipRemovedListRemovals::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CardReturnEmployee( - var id: String, - var name: String, - var cashReturn: CardReturnEmployeeCashReturn, - var productReturn: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CardReturnEmployee { - return gson.fromJson(jsonToParse.toString(), CardReturnEmployee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CardReturnEmployeeCashReturn( - var count: Int, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CardReturnEmployeeCashReturn { - return gson.fromJson(jsonToParse.toString(), CardReturnEmployeeCashReturn::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CardReturnEmployeeProductReturn( - var id: String, - var count: Int, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CardReturnEmployeeProductReturn { - return gson.fromJson(jsonToParse.toString(), CardReturnEmployeeProductReturn::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class DiscountEmployee( - var id: String, - var name: String, - var discounts: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): DiscountEmployee { - return gson.fromJson(jsonToParse.toString(), DiscountEmployee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class DiscountEmployeeDiscounts( - var date: Calendar, - var value: Int, - var users: ArrayList, - var products: ArrayList, - var reason: String?, - var percentual: Float? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): DiscountEmployeeDiscounts { - return gson.fromJson(jsonToParse.toString(), DiscountEmployeeDiscounts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TransferEmployee( - var id: String, - var name: String, - var transfers: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TransferEmployee { - return gson.fromJson(jsonToParse.toString(), TransferEmployee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TransferEmployeeTransfers( - var date: Calendar, - var fromUser: String, - var toUser: String, - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TransferEmployeeTransfers { - return gson.fromJson(jsonToParse.toString(), TransferEmployeeTransfers::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ManualInvoice( - var eventId: String, - var invoiceId: String, - var value: Int, - var paymentMethod: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ManualInvoice { - return gson.fromJson(jsonToParse.toString(), ManualInvoice::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PostLimitChange( - var userName: String, - var employeeId: String, - var employeeName: String, - var date: Calendar, - var limit: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PostLimitChange { - return gson.fromJson(jsonToParse.toString(), PostLimitChange::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class OpenedBillPayment( - var user: OpenedBillPaymentUser, - var employee: OpenedBillPaymentEmployee, - var openedEventsDates: ArrayList, - var paymentId: String, - var method: OpenedBillPaymentMethod, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): OpenedBillPayment { - return gson.fromJson(jsonToParse.toString(), OpenedBillPayment::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class OpenedBillPaymentUser( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): OpenedBillPaymentUser { - return gson.fromJson(jsonToParse.toString(), OpenedBillPaymentUser::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class OpenedBillPaymentEmployee( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): OpenedBillPaymentEmployee { - return gson.fromJson(jsonToParse.toString(), OpenedBillPaymentEmployee::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class RappiDiscount( - var id: String, - var products: ArrayList, - var value: Int, - var date: Calendar, - var employee: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): RappiDiscount { - return gson.fromJson(jsonToParse.toString(), RappiDiscount::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProduct( - var id: String, - var image: String?, - var name: String, - var ncm: String, - var ncms: ArrayList, - var slug: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProduct { - return gson.fromJson(jsonToParse.toString(), FiscalProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProductNcms( - var name: String, - var ncm: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProductNcms { - return gson.fromJson(jsonToParse.toString(), FiscalProductNcms::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PlaceProductFiscalData( - var ncm: String?, - var cest: String?, - var fiscalProfileId: String?, - var fiscalProductGroupId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PlaceProductFiscalData { - return gson.fromJson(jsonToParse.toString(), PlaceProductFiscalData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductFiscalData( - var codigo: String?, - var ncm: String?, - var cest: String?, - var fiscalProfileId: String?, - var fiscalProductGroupId: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductFiscalData { - return gson.fromJson(jsonToParse.toString(), ProductFiscalData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Invoice( - var id: String, - var mode: InvoiceMode, - var issuedAt: Calendar, - var isIssued: Boolean, - var isIssuing: Boolean, - var error: String?, - var users: ArrayList, - var pdfUrl: String?, - var imgUrl: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Invoice { - return gson.fromJson(jsonToParse.toString(), Invoice::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class InvoiceWithEvent( - var event: MinimalEvent, - var id: String, - var mode: InvoiceMode, - var issuedAt: Calendar, - var isIssued: Boolean, - var isIssuing: Boolean, - var error: String?, - var users: ArrayList, - var pdfUrl: String?, - var imgUrl: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): InvoiceWithEvent { - return gson.fromJson(jsonToParse.toString(), InvoiceWithEvent::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class IssueResult( - var issuedInvoices: ArrayList, - var errors: ArrayList, - var failedInvoiceCount: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): IssueResult { - return gson.fromJson(jsonToParse.toString(), IssueResult::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SimpleIssueResult( - var errors: ArrayList, - var failedInvoiceCount: Int, - var success: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SimpleIssueResult { - return gson.fromJson(jsonToParse.toString(), SimpleIssueResult::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfile( - var id: String, - var name: String, - var org: FiscalProfileOrg, - var contact: FiscalProfileContact, - var address: FiscalProfileAddress, - var nfce: FiscalProfileNfce?, - var sat: FiscalProfileSat?, - var fiscalMode: FiscalMode? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfile { - return gson.fromJson(jsonToParse.toString(), FiscalProfile::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileOrg( - var cnpj: String, - var razaoSocial: String, - var nomeFantasia: String, - var regimeTributario: RegimeTributario, - var inscricaoEstadual: String, - var inscricaoMunicipal: String?, - var codigoMunicipio: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileOrg { - return gson.fromJson(jsonToParse.toString(), FiscalProfileOrg::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileContact( - var email: String, - var telefone: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileContact { - return gson.fromJson(jsonToParse.toString(), FiscalProfileContact::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileAddress( - var logradouro: String, - var numero: String, - var complemento: String, - var bairro: String, - var cep: String, - var municipio: String, - var uf: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileAddress { - return gson.fromJson(jsonToParse.toString(), FiscalProfileAddress::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileNfce( - var cscNfceProducao: String, - var idNfceProducao: String, - var cscNfceHomologacao: String?, - var idNfceHomologacao: String?, - var certificado: ByteArray?, - var senhaCertificado: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileNfce { - return gson.fromJson(jsonToParse.toString(), FiscalProfileNfce::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileSat( - var numeroSerieSat: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileSat { - return gson.fromJson(jsonToParse.toString(), FiscalProfileSat::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileMock( - var id: String, - var name: String, - var org: FiscalProfileMockOrg, - var contact: FiscalProfileMockContact, - var address: FiscalProfileMockAddress, - var nfce: FiscalProfileMockNfce?, - var sat: FiscalProfileMockSat?, - var fiscalMode: FiscalMode? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileMock { - return gson.fromJson(jsonToParse.toString(), FiscalProfileMock::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileMockOrg( - var cnpj: String, - var razaoSocial: String, - var nomeFantasia: String, - var regimeTributario: RegimeTributario, - var inscricaoEstadual: String, - var inscricaoMunicipal: String?, - var codigoMunicipio: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileMockOrg { - return gson.fromJson(jsonToParse.toString(), FiscalProfileMockOrg::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileMockContact( - var email: String, - var telefone: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileMockContact { - return gson.fromJson(jsonToParse.toString(), FiscalProfileMockContact::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileMockAddress( - var logradouro: String, - var numero: String, - var complemento: String, - var bairro: String, - var cep: String, - var municipio: String, - var uf: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileMockAddress { - return gson.fromJson(jsonToParse.toString(), FiscalProfileMockAddress::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileMockNfce( - var cscNfceProducao: String, - var idNfceProducao: String, - var certificado: ByteArray?, - var senhaCertificado: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileMockNfce { - return gson.fromJson(jsonToParse.toString(), FiscalProfileMockNfce::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProfileMockSat( - var numeroSerieSat: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProfileMockSat { - return gson.fromJson(jsonToParse.toString(), FiscalProfileMockSat::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProductGroup( - var id: String, - var name: String, - var cfop: String?, - var icms: FiscalProductGroupIcms?, - var pis: FiscalProductGroupPis?, - var cofins: FiscalProductGroupCofins?, - var service: FiscalProductGroupService?, - var type: FiscalProductGroupType - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProductGroup { - return gson.fromJson(jsonToParse.toString(), FiscalProductGroup::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProductGroupIcms( - var origem: String?, - var csosn: String?, - var cst: String?, - var aliquota: Float?, - var baseCalculo: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProductGroupIcms { - return gson.fromJson(jsonToParse.toString(), FiscalProductGroupIcms::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProductGroupPis( - var cst: String?, - var baseCalculo: String?, - var aliquotaPerc: Float?, - var quantidadeVendida: String?, - var aliquotaReais: Float? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProductGroupPis { - return gson.fromJson(jsonToParse.toString(), FiscalProductGroupPis::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProductGroupCofins( - var cst: String?, - var baseCalculo: String?, - var aliquotaPerc: Float?, - var quantidadeVendida: String?, - var aliquotaReais: Float? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProductGroupCofins { - return gson.fromJson(jsonToParse.toString(), FiscalProductGroupCofins::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FiscalProductGroupService( - var aliquota: Float, - var tipoServico: String, - var codigoTributacaoMunicipio: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FiscalProductGroupService { - return gson.fromJson(jsonToParse.toString(), FiscalProductGroupService::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SalesIssuedInPeriod( - var sales: Int, - var invoices: Int, - var percent: Float - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SalesIssuedInPeriod { - return gson.fromJson(jsonToParse.toString(), SalesIssuedInPeriod::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NotEmmitedTransaction( - var id: String, - var products: ArrayList, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NotEmmitedTransaction { - return gson.fromJson(jsonToParse.toString(), NotEmmitedTransaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NotEmmitedTransactionProducts( - var id: String, - var name: String, - var unitValue: Int, - var count: Int, - var discountValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NotEmmitedTransactionProducts { - return gson.fromJson(jsonToParse.toString(), NotEmmitedTransactionProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ManualRequest( - var fiscalProfileId: String, - var paymentMethod: String?, - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ManualRequest { - return gson.fromJson(jsonToParse.toString(), ManualRequest::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ManualRequestProducts( - var ncm: String, - var cest: String?, - var fiscalProductGroupId: String, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ManualRequestProducts { - return gson.fromJson(jsonToParse.toString(), ManualRequestProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NotEmittedProductOrCombo( - var id: String, - var name: String, - var type: NotEmittedProductOrComboType, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NotEmittedProductOrCombo { - return gson.fromJson(jsonToParse.toString(), NotEmittedProductOrCombo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class InvoicePrintData( - var printData: ArrayList?, - var epsonPrintData: ArrayList? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): InvoicePrintData { - return gson.fromJson(jsonToParse.toString(), InvoicePrintData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewInventory( - var date: Calendar, - var isTotal: Boolean, - var createdBy: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewInventory { - return gson.fromJson(jsonToParse.toString(), NewInventory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Inventory( - var id: String, - var status: InventoryStatus, - var storages: ArrayList, - var date: Calendar, - var isTotal: Boolean, - var createdBy: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Inventory { - return gson.fromJson(jsonToParse.toString(), Inventory::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class InventoryStorages( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): InventoryStorages { - return gson.fromJson(jsonToParse.toString(), InventoryStorages::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewInventoryProduct( - var productId: String, - var storageId: String, - var inventoryCount: Int?, - var inventoryUnitValue: Int?, - var realCount: Int?, - var realUnitValue: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewInventoryProduct { - return gson.fromJson(jsonToParse.toString(), NewInventoryProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class InventoryProduct( - var productName: String, - var productCategory: String, - var productCategoryId: String, - var productId: String, - var storageId: String, - var inventoryCount: Int?, - var inventoryUnitValue: Int?, - var realCount: Int?, - var realUnitValue: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): InventoryProduct { - return gson.fromJson(jsonToParse.toString(), InventoryProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TopSelling( - var name: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TopSelling { - return gson.fromJson(jsonToParse.toString(), TopSelling::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TopSellingCashier( - var id: String, - var name: String, - var rechargeMoneyReceived: Int, - var postPaidMoneyReceived: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TopSellingCashier { - return gson.fromJson(jsonToParse.toString(), TopSellingCashier::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class LiveResume( - var womenInside: Int, - var menInside: Int, - var otherInside: Int, - var menOutside: Int, - var womenOutside: Int, - var otherOutside: Int, - var eventIncome: Int, - var productsSold: Int, - var top5SellingProductsByQuantity: ArrayList, - var top5SellingProductsByPrice: ArrayList, - var topSellingBar: TopSelling?, - var topSellingEmployee: TopSelling?, - var averageTicket: Int, - var top5Clients: ArrayList, - var topSellingCashier: TopSellingCashier?, - var topDeliveryBarman: TopSelling?, - var topSellingNonBarmanEmployee: TopSelling? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): LiveResume { - return gson.fromJson(jsonToParse.toString(), LiveResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Public( - var womenInside: Int, - var menInside: Int, - var otherInside: Int, - var menOutside: Int, - var womenOutside: Int, - var otherOutside: Int, - var ticketZero: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Public { - return gson.fromJson(jsonToParse.toString(), Public::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TopSellingProducts( - var top5SellingProductsByQuantity: ArrayList, - var top5SellingProductsByPrice: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TopSellingProducts { - return gson.fromJson(jsonToParse.toString(), TopSellingProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TotalReceipt( - var bar: Receipt, - var entrances: Receipt, - var rechargeConsumptions: Int, - var entranceConsumptions: Int, - var barConsumptions: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TotalReceipt { - return gson.fromJson(jsonToParse.toString(), TotalReceipt::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Receipt( - var cash: Int, - var credit: Int, - var debit: Int, - var postEvent: Int, - var voucher: Int, - var app: Int, - var opened: Int, - var dashboard: Int, - var anticipated: Int, - var rappi: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Receipt { - return gson.fromJson(jsonToParse.toString(), Receipt::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ConsumptionTimeline( - var start: Calendar, - var intervalInMinutes: Int, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ConsumptionTimeline { - return gson.fromJson(jsonToParse.toString(), ConsumptionTimeline::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ConsumptionResume( - var minimumConsumption: Int, - var bonus: Int, - var normal: Int, - var openedBils: Int, - var creditFromPreviousEvents: Int, - var paidInFutureEvents: Int, - var app: Int, - var productsSold: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ConsumptionResume { - return gson.fromJson(jsonToParse.toString(), ConsumptionResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SelledProduct( - var name: String, - var count: Int, - var totalValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SelledProduct { - return gson.fromJson(jsonToParse.toString(), SelledProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PublicDetail( - var consumption: Int, - var new: Int, - var old: Int, - var zero: Int, - var consumptionPercetage: Float, - var inside: Int, - var total: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PublicDetail { - return gson.fromJson(jsonToParse.toString(), PublicDetail::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewPublic( - var totalConsumption: Int?, - var totalPublic: Int?, - var male: PublicDetail, - var female: PublicDetail, - var other: PublicDetail - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewPublic { - return gson.fromJson(jsonToParse.toString(), NewPublic::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Organization( - var id: String, - var name: String, - var description: String?, - var username: String, - var icon: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Organization { - return gson.fromJson(jsonToParse.toString(), Organization::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BankAccount( - var bank: String, - var accountName: String, - var cnpj: String, - var type: String, - var agency: String, - var account: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BankAccount { - return gson.fromJson(jsonToParse.toString(), BankAccount::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PlaceContract( - var fee: Fee, - var createdAt: Calendar, - var account: BankAccount? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PlaceContract { - return gson.fromJson(jsonToParse.toString(), PlaceContract::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Couvert( - var value: Int, - var name: String, - var category: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Couvert { - return gson.fromJson(jsonToParse.toString(), Couvert::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Place( - var id: String?, - var name: String, - var image: ImageUrl?, - var postPaidLimit: Int?, - var maleCouvert: Couvert?, - var femaleCouvert: Couvert?, - var bars: ArrayList, - var tip: Float, - var zigTagProduct: PlaceProduct?, - var sellVisualizationFormat: PlaceSellVisualizationFormat, - var fiscalPrinters: ArrayList, - var localServerIp: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Place { - return gson.fromJson(jsonToParse.toString(), Place::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewPlace( - var id: String?, - var name: String, - var postPaidLimit: Int?, - var maleCouvert: Couvert?, - var femaleCouvert: Couvert?, - var bars: ArrayList, - var tip: Float, - var zigTagProductId: String?, - var sellVisualizationFormat: NewPlaceSellVisualizationFormat, - var localServerIp: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewPlace { - return gson.fromJson(jsonToParse.toString(), NewPlace::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PlaceDetails( - var place: Place, - var products: ArrayList, - var combos: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PlaceDetails { - return gson.fromJson(jsonToParse.toString(), PlaceDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PlaceFeature( - var id: String, - var name: String, - var isEditableByPlace: Boolean, - var isActive: Boolean, - var description: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PlaceFeature { - return gson.fromJson(jsonToParse.toString(), PlaceFeature::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EverestConfig( - var host: String, - var user: String, - var password: String, - var cnpj: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EverestConfig { - return gson.fromJson(jsonToParse.toString(), EverestConfig::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PosTransaction( - var brand: String?, - var value: Int, - var lastDigits: String?, - var date: Calendar, - var acquirerUid: String, - var method: PosTransactionMethodMethod - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PosTransaction { - return gson.fromJson(jsonToParse.toString(), PosTransaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PaginationPosTransaction( - var currentPage: Int, - var itemsPerPage: Int, - var totalItems: Int, - var _data: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PaginationPosTransaction { - return gson.fromJson(jsonToParse.toString(), PaginationPosTransaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PosMachineDayResume( - var soldValue: Int, - var date: Calendar, - var brand: String?, - var method: PosTransactionMethodMethod - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PosMachineDayResume { - return gson.fromJson(jsonToParse.toString(), PosMachineDayResume::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PosTransactionMethod( - var method: PosTransactionMethodMethod - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PosTransactionMethod { - return gson.fromJson(jsonToParse.toString(), PosTransactionMethod::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductBarEntry( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductBarEntry { - return gson.fromJson(jsonToParse.toString(), ProductBarEntry::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PlaceProduct( - var id: String?, - var name: String, - var category: String, - var categoryId: String, - var value: Int, - var image: ImageUrl?, - var bars: ArrayList, - var active: Boolean, - var hasAlcohol: Boolean?, - var fiscalData: PlaceProductFiscalData?, - var type: String, - var minimumConsumptionValue: Int?, - var hasProductionRule: Boolean, - var proportionalValue: ProportionalValue?, - var mountableDescription: MountableDescription?, - var fiscalCode: String?, - var kind: ProductKind - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PlaceProduct { - return gson.fromJson(jsonToParse.toString(), PlaceProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Product( - var id: String?, - var name: String, - var category: String, - var value: Int?, - var image: ImageUrl?, - var hasAlcohol: Boolean?, - var type: String, - var fiscalCode: String?, - var kind: ProductKind - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Product { - return gson.fromJson(jsonToParse.toString(), Product::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewProduct( - var name: String, - var category: String, - var hasAlcohol: Boolean, - var fiscalCode: String?, - var kindId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewProduct { - return gson.fromJson(jsonToParse.toString(), NewProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EditedProduct( - var id: String, - var name: String, - var category: String, - var hasAlcohol: Boolean, - var fiscalCode: String?, - var kindId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EditedProduct { - return gson.fromJson(jsonToParse.toString(), EditedProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EditedResults( - var success: ArrayList, - var error: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EditedResults { - return gson.fromJson(jsonToParse.toString(), EditedResults::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EditedResultsError( - var product: EditedProduct, - var reason: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EditedResultsError { - return gson.fromJson(jsonToParse.toString(), EditedResultsError::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProportionalValue( - var quantity: Int, - var value: Int, - var unit: ProportionalValueUnit - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProportionalValue { - return gson.fromJson(jsonToParse.toString(), ProportionalValue::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewPlaceProduct( - var name: String, - var category: String, - var hasAlcohol: Boolean, - var fiscalData: PlaceProductFiscalData?, - var value: Int?, - var proportionalValue: ProportionalValue?, - var mountableDescription: NewMountableDescription?, - var fiscalCode: String?, - var kindId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewPlaceProduct { - return gson.fromJson(jsonToParse.toString(), NewPlaceProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EditProductImage( - var imageId: String?, - var _data: ByteArray? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EditProductImage { - return gson.fromJson(jsonToParse.toString(), EditProductImage::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Supply( - var id: String, - var name: String, - var bars: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Supply { - return gson.fromJson(jsonToParse.toString(), Supply::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class OrganizationProduct( - var id: String, - var places: ArrayList, - var name: String, - var category: String, - var categoryId: String, - var hasAlcohol: Boolean?, - var type: String, - var image: ImageUrl?, - var fiscalCode: String?, - var kind: ProductKind - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): OrganizationProduct { - return gson.fromJson(jsonToParse.toString(), OrganizationProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class OrganizationProductPlaces( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): OrganizationProductPlaces { - return gson.fromJson(jsonToParse.toString(), OrganizationProductPlaces::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class InputProduct( - var productId: String, - var storageId: String, - var unitCostValue: Int?, - var obs: String?, - var count: Int, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): InputProduct { - return gson.fromJson(jsonToParse.toString(), InputProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductRule( - var id: String, - var inputs: ArrayList, - var outputs: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductRule { - return gson.fromJson(jsonToParse.toString(), ProductRule::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductRuleInputs( - var id: String, - var count: Int, - var loss: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductRuleInputs { - return gson.fromJson(jsonToParse.toString(), ProductRuleInputs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductRuleOutputs( - var id: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductRuleOutputs { - return gson.fromJson(jsonToParse.toString(), ProductRuleOutputs::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductKind( - var id: String, - var masterKind: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductKind { - return gson.fromJson(jsonToParse.toString(), ProductKind::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SuggestedImages( - var tags: ArrayList, - var id: String, - var url: String, - var weight: Float - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SuggestedImages { - return gson.fromJson(jsonToParse.toString(), SuggestedImages::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductImageSearch( - var name: String, - var category: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductImageSearch { - return gson.fromJson(jsonToParse.toString(), ProductImageSearch::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PromotionInfo( - var id: String, - var products: ArrayList?, - var name: String, - var description: String, - var productIds: ArrayList?, - var discount: Float, - var expiresIn: Int?, - var maxUses: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PromotionInfo { - return gson.fromJson(jsonToParse.toString(), PromotionInfo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewPromotionInfo( - var name: String, - var description: String, - var productIds: ArrayList?, - var discount: Float, - var expiresIn: Int?, - var maxUses: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewPromotionInfo { - return gson.fromJson(jsonToParse.toString(), NewPromotionInfo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MultipleUserPromotionResult( - var success: ArrayList, - var error: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MultipleUserPromotionResult { - return gson.fromJson(jsonToParse.toString(), MultipleUserPromotionResult::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MultipleUserPromotionResultError( - var cpfOrPhone: String, - var reason: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MultipleUserPromotionResultError { - return gson.fromJson(jsonToParse.toString(), MultipleUserPromotionResultError::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PromotionUser( - var id: String, - var name: String, - var cpf: String, - var uses: Int, - var promotionId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PromotionUser { - return gson.fromJson(jsonToParse.toString(), PromotionUser::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Promoter( - var id: String, - var name: String, - var image: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Promoter { - return gson.fromJson(jsonToParse.toString(), Promoter::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Relation( - var id: String?, - var user: User?, - var cpf: String?, - var email: String?, - var name: String?, - var zigCode: String?, - var phone: String?, - var description: String, - var promoter: Promoter?, - var employee: EmployeeBase?, - var couvertPercentage: Float?, - var entrances: ArrayList? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Relation { - return gson.fromJson(jsonToParse.toString(), Relation::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EmployeeReportItem( - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EmployeeReportItem { - return gson.fromJson(jsonToParse.toString(), EmployeeReportItem::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EmployeeReportItemWithTotal( - var total: Int, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EmployeeReportItemWithTotal { - return gson.fromJson(jsonToParse.toString(), EmployeeReportItemWithTotal::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EmployeeReport( - var totals: EmployeeReportTotals, - var employees: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EmployeeReport { - return gson.fromJson(jsonToParse.toString(), EmployeeReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EmployeeReportTotals( - var sells: Int, - var financialOperations: Int, - var tip: Int, - var refunds: Int, - var checkIns: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EmployeeReportTotals { - return gson.fromJson(jsonToParse.toString(), EmployeeReportTotals::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EmployeeReportEmployees( - var id: String, - var name: String, - var eventNames: ArrayList, - var role: String?, - var eventRoles: ArrayList, - var avatar: ImageUrl?, - var sells: EmployeeReportItemWithTotal, - var financialOperations: EmployeeReportItemWithTotal, - var financialOperationsClosedValue: Int, - var tipValue: Int, - var refunds: EmployeeReportItemWithTotal, - var sellRefunds: EmployeeReportItemWithTotal, - var checkIns: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EmployeeReportEmployees { - return gson.fromJson(jsonToParse.toString(), EmployeeReportEmployees::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FinanceBiReport( - var events: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FinanceBiReport { - return gson.fromJson(jsonToParse.toString(), FinanceBiReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FinanceBiReportEvents( - var id: String, - var date: Calendar, - var incomes: ArrayList, - var bonus: Int, - var ticketZero: Int, - var female: Int, - var male: Int, - var other: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FinanceBiReportEvents { - return gson.fromJson(jsonToParse.toString(), FinanceBiReportEvents::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class FinanceBiReportEventsIncomes( - var value: Int, - var method: FinanceBiMethod - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): FinanceBiReportEventsIncomes { - return gson.fromJson(jsonToParse.toString(), FinanceBiReportEventsIncomes::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ClientByReport( - var events: ArrayList, - var topIncomeClients: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ClientByReport { - return gson.fromJson(jsonToParse.toString(), ClientByReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ClientByReportEvents( - var id: String, - var date: Calendar, - var male: Int, - var female: Int, - var other: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ClientByReportEvents { - return gson.fromJson(jsonToParse.toString(), ClientByReportEvents::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ClientByReportTopIncomeClients( - var id: String, - var name: String, - var phone: String, - var cpf: String, - var income: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ClientByReportTopIncomeClients { - return gson.fromJson(jsonToParse.toString(), ClientByReportTopIncomeClients::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductBiReport( - var id: String, - var name: String, - var categoryId: String, - var categoryName: String, - var image: ImageUrl?, - var sellCount: Int, - var profit: Int, - var consumption: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductBiReport { - return gson.fromJson(jsonToParse.toString(), ProductBiReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewReserve( - var name: String, - var estimatedPeopleCount: Int, - var obs: String, - var date: Calendar, - var reserveValue: Int?, - var minimumConsumptionValue: Int, - var promotionIds: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewReserve { - return gson.fromJson(jsonToParse.toString(), NewReserve::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Reserve( - var id: String, - var name: String, - var estimatedPeopleCount: Int, - var realPeopleCount: Int, - var obs: String, - var date: Calendar, - var reserveValue: Int?, - var minimumConsumptionValue: Int, - var promotions: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Reserve { - return gson.fromJson(jsonToParse.toString(), Reserve::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReservePromotions( - var id: String, - var name: String, - var description: String?, - var discount: Float - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReservePromotions { - return gson.fromJson(jsonToParse.toString(), ReservePromotions::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReserveDiscountDetail( - var fiscalProductGroupId: String?, - var fiscalProductGroup: String?, - var value: Int, - var ncm: String?, - var cest: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReserveDiscountDetail { - return gson.fromJson(jsonToParse.toString(), ReserveDiscountDetail::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReserveDetail( - var discounts: ArrayList, - var users: ArrayList, - var invoices: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReserveDetail { - return gson.fromJson(jsonToParse.toString(), ReserveDetail::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReserveDetailUsers( - var id: String, - var name: String, - var addedAt: Calendar, - var isInside: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReserveDetailUsers { - return gson.fromJson(jsonToParse.toString(), ReserveDetailUsers::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReserveDetailInvoices( - var id: String, - var date: Calendar, - var imgUrl: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReserveDetailInvoices { - return gson.fromJson(jsonToParse.toString(), ReserveDetailInvoices::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReserveReportRow( - var id: String, - var name: String, - var estimatedPeopleCount: Int, - var realPeopleCount: Int, - var totalConsumed: Int, - var totalDiscount: Int, - var totalPaidOrRecharged: Int, - var minimumConsumptionGiven: Int, - var minimumConsumptionUsed: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReserveReportRow { - return gson.fromJson(jsonToParse.toString(), ReserveReportRow::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class StorageProduct( - var id: String, - var name: String, - var quantity: Int, - var category: String, - var categoryId: String, - var image: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): StorageProduct { - return gson.fromJson(jsonToParse.toString(), StorageProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class User( - var id: String, - var cpf: String, - var name: String, - var avatar: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): User { - return gson.fromJson(jsonToParse.toString(), User::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserFilter( - var type: UserFilterType, - var filter: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserFilter { - return gson.fromJson(jsonToParse.toString(), UserFilter::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MinimalEvent( - var id: String, - var name: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MinimalEvent { - return gson.fromJson(jsonToParse.toString(), MinimalEvent::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class MinimalEventDetails( - var id: String, - var name: String, - var beginAt: Calendar?, - var endAt: Calendar? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): MinimalEventDetails { - return gson.fromJson(jsonToParse.toString(), MinimalEventDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserDetails( - var recharges: ArrayList, - var transactions: ArrayList, - var postPayments: ArrayList, - var cpf: String, - var phone: String, - var email: String?, - var checkInTime: Calendar?, - var checkOutTime: Calendar? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserDetails { - return gson.fromJson(jsonToParse.toString(), UserDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserDetailsTransactions( - var id: String, - var userValue: Int, - var date: Calendar, - var isShared: Boolean, - var isRefunded: Boolean, - var refundedBy: String?, - var sellerName: String, - var event: MinimalEventDetails, - var tipValue: Int, - var consumptionWithCreditFromOtherEvents: Int, - var paidByApp: Boolean, - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserDetailsTransactions { - return gson.fromJson(jsonToParse.toString(), UserDetailsTransactions::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserDetailsTransactionsProducts( - var name: String, - var count: Int, - var value: Int, - var discountValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserDetailsTransactionsProducts { - return gson.fromJson(jsonToParse.toString(), UserDetailsTransactionsProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserRecharge( - var totalValue: Int, - var usedValue: Int, - var authorName: String, - var date: Calendar, - var isBonus: Boolean, - var method: UserRechargeMethod?, - var refunded: Boolean, - var expired: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserRecharge { - return gson.fromJson(jsonToParse.toString(), UserRecharge::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserRechargeWithEvent( - var event: MinimalEvent, - var totalValue: Int, - var usedValue: Int, - var authorName: String, - var date: Calendar, - var isBonus: Boolean, - var method: UserRechargeMethod?, - var refunded: Boolean, - var expired: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserRechargeWithEvent { - return gson.fromJson(jsonToParse.toString(), UserRechargeWithEvent::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewUserRecharge( - var type: NewUserRechargeType, - var reason: String?, - var value: Int, - var cpf: String, - var name: String?, - var email: String?, - var phone: String?, - var isForeign: Boolean?, - var gender: NewUserRechargeGender - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewUserRecharge { - return gson.fromJson(jsonToParse.toString(), NewUserRecharge::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class GiveRechargeError( - var cpf: String, - var err: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): GiveRechargeError { - return gson.fromJson(jsonToParse.toString(), GiveRechargeError::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventUser( - var id: String, - var hasApp: Boolean, - var checkInTime: Calendar, - var name: String, - var email: String?, - var gender: String?, - var phone: String, - var cpf: String, - var zigCode: String?, - var checkOutTime: Calendar? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventUser { - return gson.fromJson(jsonToParse.toString(), EventUser::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SearchFilters( - var gender: ArrayList, - var consumptionVolume: Int, - var presences: Int, - var presenceDays: ArrayList, - var productConsumption: ArrayList, - var notUsedRecharges: Int?, - var since: Calendar, - var until: Calendar, - var name: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SearchFilters { - return gson.fromJson(jsonToParse.toString(), SearchFilters::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SearchFiltersProductConsumption( - var id: String, - var amount: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SearchFiltersProductConsumption { - return gson.fromJson(jsonToParse.toString(), SearchFiltersProductConsumption::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class SearchResult( - var id: String, - var name: String, - var email: String?, - var birthdate: Calendar?, - var cpf: String, - var phone: String, - var hasApp: Boolean, - var consumption: Int, - var presences: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): SearchResult { - return gson.fromJson(jsonToParse.toString(), SearchResult::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserDetailsByEvents( - var event: MinimalEventDetails, - var recharges: ArrayList, - var transactions: ArrayList, - var postPayments: ArrayList, - var cpf: String, - var phone: String, - var email: String?, - var checkInTime: Calendar?, - var checkOutTime: Calendar? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserDetailsByEvents { - return gson.fromJson(jsonToParse.toString(), UserDetailsByEvents::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserDetailsByEventsTransactions( - var id: String, - var userValue: Int, - var date: Calendar, - var isShared: Boolean, - var isRefunded: Boolean, - var refundedBy: String?, - var sellerName: String, - var tipValue: Int, - var consumptionWithCreditFromOtherEvents: Int, - var paidByApp: Boolean, - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserDetailsByEventsTransactions { - return gson.fromJson(jsonToParse.toString(), UserDetailsByEventsTransactions::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserDetailsByEventsTransactionsProducts( - var name: String, - var count: Int, - var value: Int, - var discountValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserDetailsByEventsTransactionsProducts { - return gson.fromJson(jsonToParse.toString(), UserDetailsByEventsTransactionsProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ZigTagBlockConfirm( - var id: String, - var employee: MinimalEmployee, - var event: MinimalEvent, - var date: Calendar, - var user: User, - var zigTagCode: String, - var recharges: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ZigTagBlockConfirm { - return gson.fromJson(jsonToParse.toString(), ZigTagBlockConfirm::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ZigTagBlockConfirmRecharges( - var id: String, - var value: Int, - var date: Calendar, - var expirationDate: Calendar, - var paymentPrePaidType: PaymentPrePaidType? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ZigTagBlockConfirmRecharges { - return gson.fromJson(jsonToParse.toString(), ZigTagBlockConfirmRecharges::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ZigTagSyncForce( - var id: String, - var employee: MinimalEmployee, - var event: MinimalEvent, - var date: Calendar, - var user: User, - var reason: String, - var balance: Int, - var zigTagCode: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ZigTagSyncForce { - return gson.fromJson(jsonToParse.toString(), ZigTagSyncForce::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ImageUrl( - var url: String, - var sha256: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ImageUrl { - return gson.fromJson(jsonToParse.toString(), ImageUrl::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Event( - var id: String, - var name: String, - var description: String?, - var place: Place?, - var status: EventState, - var begin: Calendar, - var end: Calendar?, - var cover: ImageUrl?, - var image: ImageUrl?, - var attractions: ArrayList? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Event { - return gson.fromJson(jsonToParse.toString(), Event::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BaseCombo( - var name: String, - var value: Int, - var description: String?, - var category: String, - var active: Boolean, - var fiscalData: ProductFiscalData? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BaseCombo { - return gson.fromJson(jsonToParse.toString(), BaseCombo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewPlaceCombo( - var kindId: String, - var products: ArrayList, - var name: String, - var value: Int, - var description: String?, - var category: String, - var active: Boolean, - var fiscalData: ProductFiscalData? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewPlaceCombo { - return gson.fromJson(jsonToParse.toString(), NewPlaceCombo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class NewPlaceComboProducts( - var id: String, - var count: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): NewPlaceComboProducts { - return gson.fromJson(jsonToParse.toString(), NewPlaceComboProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PlaceCombo( - var id: String, - var kind: ProductKind, - var products: ArrayList, - var image: ImageUrl?, - var name: String, - var value: Int, - var description: String?, - var category: String, - var active: Boolean, - var fiscalData: ProductFiscalData? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PlaceCombo { - return gson.fromJson(jsonToParse.toString(), PlaceCombo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class PlaceComboProducts( - var id: String, - var count: Int, - var name: String, - var image: ImageUrl?, - var category: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): PlaceComboProducts { - return gson.fromJson(jsonToParse.toString(), PlaceComboProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventDetails( - var placeId: String, - var begin: Calendar, - var end: Calendar?, - var name: String, - var description: String?, - var attractions: ArrayList? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventDetails { - return gson.fromJson(jsonToParse.toString(), EventDetails::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class OpenedReports( - var type: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): OpenedReports { - return gson.fromJson(jsonToParse.toString(), OpenedReports::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EmployeeBase( - var id: String?, - var name: String, - var username: String, - var zigReadPermissionKey: String?, - var avatar: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EmployeeBase { - return gson.fromJson(jsonToParse.toString(), EmployeeBase::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Seller( - var id: String, - var name: String, - var avatar: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Seller { - return gson.fromJson(jsonToParse.toString(), Seller::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TransactionProduct( - var id: String, - var name: String, - var category: String, - var value: Int, - var count: Int, - var image: ImageUrl? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TransactionProduct { - return gson.fromJson(jsonToParse.toString(), TransactionProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TransactionComboProduct( - var id: String, - var name: String, - var count: Int, - var originalValue: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TransactionComboProduct { - return gson.fromJson(jsonToParse.toString(), TransactionComboProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TransactionCombo( - var id: String, - var products: ArrayList, - var value: Int, - var name: String, - var category: String, - var count: Int, - var description: String? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TransactionCombo { - return gson.fromJson(jsonToParse.toString(), TransactionCombo::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Transaction( - var id: String, - var date: Calendar, - var products: ArrayList, - var combos: ArrayList, - var place: String, - var event: String, - var seller: Seller, - var buyers: ArrayList, - var paid: Boolean, - var refunded: Boolean, - var refundedBy: String?, - var refundedObs: String?, - var value: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Transaction { - return gson.fromJson(jsonToParse.toString(), Transaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductSold( - var id: String, - var name: String, - var category: String, - var image: ImageUrl?, - var count: Int, - var type: SellableThing, - var totalValue: Int, - var totalDiscount: Int, - var mountableProducts: ArrayList, - var productUnitCost: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductSold { - return gson.fromJson(jsonToParse.toString(), ProductSold::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductSoldMountableProducts( - var id: String, - var name: String, - var count: Int, - var section: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductSoldMountableProducts { - return gson.fromJson(jsonToParse.toString(), ProductSoldMountableProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class StockProduct( - var id: String, - var name: String, - var quantity: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): StockProduct { - return gson.fromJson(jsonToParse.toString(), StockProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class Transfer( - var value: Int, - var date: Calendar, - var paid: Boolean, - var reason: TransferReason - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): Transfer { - return gson.fromJson(jsonToParse.toString(), Transfer::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ProductTransfer( - var employee: EmployeeBase, - var count: Int, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ProductTransfer { - return gson.fromJson(jsonToParse.toString(), ProductTransfer::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class ReportProduct( - var id: String, - var name: String, - var value: Int, - var image: ImageUrl?, - var transfers: ArrayList?, - var finalCount: Int?, - var lostCount: Int?, - var deliveredCount: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): ReportProduct { - return gson.fromJson(jsonToParse.toString(), ReportProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class StockReportData( - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): StockReportData { - return gson.fromJson(jsonToParse.toString(), StockReportData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BarReportData( - var products: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BarReportData { - return gson.fromJson(jsonToParse.toString(), BarReportData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierTransfer( - var value: Int, - var employee: EmployeeBase, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierTransfer { - return gson.fromJson(jsonToParse.toString(), CashierTransfer::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierReportDataInput( - var finalInputCredit: Int, - var finalInputDebit: Int, - var finalInputCash: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierReportDataInput { - return gson.fromJson(jsonToParse.toString(), CashierReportDataInput::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CashierReportData( - var finalInputCredit: Int?, - var finalInputDebit: Int?, - var finalInputCash: Int?, - var transfers: ArrayList, - var salesCredit: Int?, - var salesDebit: Int?, - var salesCash: Int? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CashierReportData { - return gson.fromJson(jsonToParse.toString(), CashierReportData::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class EventReport( - var id: String, - var type: ReportType, - var closed: Boolean, - var employee: Employee?, - var cashierData: CashierReportData?, - var barData: BarReportData?, - var stockData: StockReportData?, - var bar: Bar? - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): EventReport { - return gson.fromJson(jsonToParse.toString(), EventReport::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class StockTransfer( - var employeeBar: String, - var stocker: String, - var product: String, - var quantity: Int, - var date: Calendar, - var bar: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): StockTransfer { - return gson.fromJson(jsonToParse.toString(), StockTransfer::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BillProducts( - var category: String, - var name: String, - var value: Int, - var quantity: Int - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BillProducts { - return gson.fromJson(jsonToParse.toString(), BillProducts::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BillTransaction( - var id: String, - var date: Calendar, - var products: ArrayList, - var seller: String, - var refunded: Boolean, - var value: Int, - var tip: Int, - var totalValue: Int, - var paid: Boolean - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BillTransaction { - return gson.fromJson(jsonToParse.toString(), BillTransaction::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class UserBill( - var id: String, - var name: String, - var transactions: ArrayList - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): UserBill { - return gson.fromJson(jsonToParse.toString(), UserBill::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class CpfOrPhone( - var type: CpfOrPhoneType, - var value: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): CpfOrPhone { - return gson.fromJson(jsonToParse.toString(), CpfOrPhone::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TimelineProduct( - var name: String, - var id: String, - var count: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TimelineProduct { - return gson.fromJson(jsonToParse.toString(), TimelineProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class TimelineEvent( - var id: String, - var type: TimelineEventType, - var value: Int, - var products: ArrayList?, - var shared: Boolean?, - var paid: Boolean?, - var refunded: Boolean?, - var usedValue: Int?, - var expired: Boolean?, - var rechargeType: String?, - var date: Calendar - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): TimelineEvent { - return gson.fromJson(jsonToParse.toString(), TimelineEvent::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class BonusProduct( - var bonusValue: Int, - var name: String, - var id: String, - var category: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): BonusProduct { - return gson.fromJson(jsonToParse.toString(), BonusProduct::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class GuinnessLog( - var employee: String, - var name: String?, - var cpf: String?, - var uid: String, - var date: Calendar, - var type: GuinnessLogType - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): GuinnessLog { - return gson.fromJson(jsonToParse.toString(), GuinnessLog::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - data class GetBackofficeConfig( - var zigAccountId: String, - var placeAccountId: String, - var zigSupplierId: String - ): Serializable { - - companion object { - fun fromJson(jsonToParse : JSONObject): GetBackofficeConfig { - return gson.fromJson(jsonToParse.toString(), GetBackofficeConfig::class.java) - } - - fun fromJsonArray(jsonArrayToParse : JSONArray): ArrayList { - return ArrayList(gson.fromJson(jsonArrayToParse.toString(), Array::class.java).toList()) - } - } - fun toJson(): JSONObject { - return JSONObject(gson.toJson(this)) }} - - enum class CouponType { - DiscountCoupon, - GiftCard - } - - enum class CouponDiscountType { - Bonus, - Promotion - } - - enum class PostPaymentEventPostPaymentType { - App, - Place - } - - enum class NewMountableSectionPricing { - sum, - average, - higher - } - - enum class PrinterType { - EPSON, - BEMATECH - } - - enum class PaymentPrePaidType { - MinimumConsumption, - Bonus, - FromEvent, - FromOtherEvent, - FromApp, - FakeRecharge - } - - enum class DashboardAlertType { - ExtractPriority, - Normal - } - - enum class BackofficeBillPaymentMethod { - App, - Money, - Check, - Boleto, - CreditCard, - BankTransfer, - Promissory, - DebitCard, - AutomaticDebit - } - - enum class BackofficeBaseBillStatus { - Paid, - Pending - } - - enum class BackofficeBillStatusFilter { - Any, - ToPay, - ToReceive - } - - enum class BackofficeBillDateFilter { - ByDue, - ByPerform - } - - enum class BackofficeInventoryStatus { - Opened, - Closed, - Canceled - } - - enum class BackofficeImportedInvoiceDetailsField { - insuranceValue, - discountValue, - otherExpensesValue, - shippingValue - } - - enum class BackofficeManifestType { - ciencia, - confirmacao, - desconhecimento, - naoRealizada - } - - enum class BackofficeResumeBillsDueToTodayStatus { - Paid, - Pending - } - - enum class BackofficeStorageTransferType { - input, - transferOut, - transferIn, - lost, - sell, - refund, - manual, - productionOut, - productionIn, - invoice, - inventory - } - - enum class WithdrawStatus { - Pending, - Paid, - Refused, - Processing - } - - enum class WithdrawType { - Anticipation, - Withdraw - } - - enum class ConsolidatedExtractSectionValuesTotalValueUnit { - unit, - money - } - - enum class RechargeConsumptionMethod { - debit, - credit, - cash, - voucher, - dashboard, - anticipated - } - - enum class PaymentMethod { - CreditCard, - DebitCard, - Cash, - PostEvent, - ZigPosCredit, - ZigPosDebit, - Voucher - } - - enum class EventResumeSectionValuesValuesUnit { - money, - un, - percentage - } - - enum class OpenedBillPaymentMethod { - CreditCard, - DebitCard, - Cash, - PostEvent, - ZigPosCredit, - ZigPosDebit, - Voucher, - Bonus - } - - enum class RegimeTributario { - SimplesNacional, - SimplesNacionalExcesso, - RegimeNormal - } - - enum class FiscalMode { - nfce, - sat - } - - enum class InvoiceMode { - sat, - nfse, - nfce - } - - enum class FiscalProductGroupType { - invoice, - service - } - - enum class NotEmittedProductOrComboType { - combo, - product - } - - enum class InventoryStatus { - Opened, - Closed, - Canceled - } - - enum class PlaceSellVisualizationFormat { - Grid, - List - } - - enum class NewPlaceSellVisualizationFormat { - Grid, - List - } - - enum class PosTransactionMethodMethod { - Credit, - Debit - } - - enum class ProportionalValueUnit { - gramas, - ml - } - - enum class FinanceBiMethod { - Credit, - Debit, - Cash, - PostEvent, - ZigCredit, - ZigDebit, - Voucher, - Anticipated, - Dashboard, - App - } - - enum class UserFilterType { - cpf, - phone, - zigcode, - id - } - - enum class UserRechargeMethod { - CreditCard, - DebitCard, - Cash, - App, - ZigPosCredit, - ZigPosDebit, - Voucher, - Dashboard, - Anticipated - } - - enum class NewUserRechargeType { - minimumConsumption, - normal - } - - enum class NewUserRechargeGender { - Male, - Female, - Other - } - - enum class EventState { - Created, - Finished, - Running, - Canceled - } - - enum class SellableThing { - Product, - Combo - } - - enum class TransferReason { - PPUTransaction, - PostTransactionOnline, - PostTransactionInPlace, - RechargeInPlace, - RechargeInApp, - PreTransaction, - PreTransactionWithPlaceCredit, - PreTransactionWithPlaceCreditFromOtherEvent, - BonusTransaction, - RefundedTransaction, - PaidPostPaidTransactionsInPlace - } - - enum class ReportType { - Waiter, - Stock, - GeneralEmployee, - Cashier, - Bar - } - - enum class CpfOrPhoneType { - cpf, - phone - } - - enum class TimelineEventType { - Recharge, - Transaction, - PostPayment - } - - enum class GuinnessLogType { - checkin, - checkout - } - - enum class ErrorType { - BackofficeError, - NotLoggedIn, - LacksPermission, - InvalidArgument, - WrongLogin, - DoesntExist, - LacksFeature, - Fatal, - Connection, - Serialization - } - - enum class ApplySuggestedImageForProductType { - product, - combo - } - -var calls = object: Calls { - override fun getAllPermissions(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getAllPermissions", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllRoles(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getAllRoles", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteRole(slug: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("slug", slug) - } - val r = makeRequest("deleteRole", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createRole(name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("name", name) - put("permissions", JSONArray().apply { - permissions.forEach { item -> put(item) } - }) - } - val r = makeRequest("createRole", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Role::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateRole(slug: String, name: String, permissions: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("slug", slug) - put("name", name) - put("permissions", JSONArray().apply { - permissions.forEach { item -> put(item) } - }) - } - val r = makeRequest("updateRole", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Role::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAlerts(placeId: String, skip: Int, limit: Int): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("skip", skip) - put("limit", limit) - } - val r = makeRequest("getAlerts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun markAlertAsRead(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("markAlertAsRead", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAnnounces(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getAnnounces", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createAnnounce(announce: Announce, eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("announce", gson.toJson(announce)) - put("eventId", eventId) - } - val r = makeRequest("createAnnounce", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editAnnounce(announce: Announce): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("announce", gson.toJson(announce)) - } - val r = makeRequest("editAnnounce", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeAnnounce(announceId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("announceId", announceId) - } - val r = makeRequest("removeAnnounce", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeConfig", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), GetBackofficeConfig::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeAccount(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeAccount", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeAccount::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeAccounts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeAccounts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeAccount(placeId: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("account", gson.toJson(account)) - } - val r = makeRequest("createBackofficeAccount", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeAccount::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeAccount(placeId: String, id: String, account: BackofficeNewAccount): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("account", gson.toJson(account)) - } - val r = makeRequest("editBackofficeAccount", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeAccount(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeAccount", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBill(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeBill", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBill::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeBills", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeBill(placeId: String, bill: BackofficeNewBill, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("bill", gson.toJson(bill)) - put("attachment", attachment?.let { gson.toJson(attachment) }) - } - val r = makeRequest("createBackofficeBill", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBill::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeBill(placeId: String, id: String, bill: BackofficeNewBill): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("bill", gson.toJson(bill)) - } - val r = makeRequest("editBackofficeBill", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun payBackofficeBill(placeId: String, id: String, date: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("date", dateTimeFormat.format(date)) - } - val r = makeRequest("payBackofficeBill", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeBillAttachment(placeId: String, id: String, attachment: BackofficeAttachment?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("attachment", attachment?.let { gson.toJson(attachment) }) - } - val r = makeRequest("editBackofficeBillAttachment", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeBill(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeBill", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun exportBackofficeBills(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("exportBackofficeBills", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun parseBackofficeBillsToImport(placeId: String, _file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("file", Base64.encodeToString(_file, Base64.DEFAULT)) - } - val r = makeRequest("parseBackofficeBillsToImport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun importBackofficeBills(placeId: String, _file: ByteArray): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("file", Base64.encodeToString(_file, Base64.DEFAULT)) - } - val r = makeRequest("importBackofficeBills", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeBillPlanCategory(name: String, parentId: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("name", name) - put("parentId", parentId?.let { parentId }) - } - val r = makeRequest("createBackofficeBillPlanCategory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillPlanCategoryBase::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteBackofficeBillPlanCategory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillPlanCategory(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("getBackofficeBillPlanCategory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillPlanCategoryBase::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillPlans(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getBackofficeBillPlans", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillPlansTreeLeafs(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getBackofficeBillPlansTreeLeafs", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillPlansTreeLeafsByLevel(level: Int): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("level", level) - } - val r = makeRequest("getBackofficeBillPlansTreeLeafsByLevel", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeBillPlanCategoryName(id: String, name: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("name", name) - } - val r = makeRequest("editBackofficeBillPlanCategoryName", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillPlanCategoryBase::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeBillPlanCategoryParent(id: String, newParentId: String?): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("newParentId", newParentId?.let { newParentId }) - } - val r = makeRequest("editBackofficeBillPlanCategoryParent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeSuggestedBillPlan(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("createBackofficeSuggestedBillPlan", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun exportBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { - val r = makeRequest("exportBackofficeBillPlan", null) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun importBackofficeBillPlan(_file: ByteArray): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("file", Base64.encodeToString(_file, Base64.DEFAULT)) - } - val r = makeRequest("importBackofficeBillPlan", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeBillPlan(): Deferred>> = CoroutineScope(IO).async { - val r = makeRequest("deleteBackofficeBillPlan", null) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillType(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeBillType", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillType::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillTypes(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeBillTypes", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeBillType(placeId: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("billType", gson.toJson(billType)) - } - val r = makeRequest("createBackofficeBillType", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillType::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeBillType(placeId: String, id: String, billType: BackofficeNewBillType): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("billType", gson.toJson(billType)) - } - val r = makeRequest("editBackofficeBillType", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeBillType(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeBillType", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCategory(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeCategory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCategory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeCategories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeCategory(placeId: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("category", gson.toJson(category)) - } - val r = makeRequest("createBackofficeCategory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCategory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeCategory(placeId: String, id: String, category: BackofficeNewCategory): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("category", gson.toJson(category)) - } - val r = makeRequest("editBackofficeCategory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeCategory(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeCategory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductsCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("shouldUseLastInvoice", shouldUseLastInvoice) - } - val r = makeRequest("getBackofficeProductsCmv", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductsCmvAvg(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("shouldUseLastInvoice", shouldUseLastInvoice) - } - val r = makeRequest("getBackofficeProductsCmvAvg", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCurrentProductsCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("shouldUseLastInvoice", shouldUseLastInvoice) - } - val r = makeRequest("getBackofficeCurrentProductsCmv", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductsSimpleCurrentCmv(placeId: String, productIds: ArrayList, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("shouldUseLastInvoice", shouldUseLastInvoice) - } - val r = makeRequest("getBackofficeProductsSimpleCurrentCmv", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductsSimpleCmv(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar, shouldUseLastInvoice: Boolean): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("shouldUseLastInvoice", shouldUseLastInvoice) - } - val r = makeRequest("getBackofficeProductsSimpleCmv", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCostCenter(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeCostCenter", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCostCenter::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCostCenters(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeCostCenters", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeCostCenter(placeId: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("costCenter", gson.toJson(costCenter)) - } - val r = makeRequest("createBackofficeCostCenter", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCostCenter::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeCostCenter(placeId: String, id: String, costCenter: BackofficeNewCostCenter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("costCenter", gson.toJson(costCenter)) - } - val r = makeRequest("editBackofficeCostCenter", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeCostCenter(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeCostCenter", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun insertBackofficeFocusCompany(placeId: String, cnpj: String, token: String, lastInvoiceVersion: Int?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("cnpj", cnpj) - put("token", token) - put("lastInvoiceVersion", lastInvoiceVersion?.let { lastInvoiceVersion }) - } - val r = makeRequest("insertBackofficeFocusCompany", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeFocusCompany::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateBackofficeFocusCompany(placeId: String, id: String, token: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("token", token) - } - val r = makeRequest("updateBackofficeFocusCompany", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeFocusCompany::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeFocusCompany(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeFocusCompany", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeFocusCompanies(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeFocusCompanies", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeFocusCompany(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeFocusCompany", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeFocusCompany::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeFocusInvoices(placeId: String, focusCompanyId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("focusCompanyId", focusCompanyId) - } - val r = makeRequest("getBackofficeFocusInvoices", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeInventory(placeId: String, inventory: BackofficeNewInventory, shouldOverlapOldInventory: Boolean): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("inventory", gson.toJson(inventory)) - put("shouldOverlapOldInventory", shouldOverlapOldInventory) - } - val r = makeRequest("createBackofficeInventory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeInventory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getBackofficeInventories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeOpenedInventories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun addBackofficeStorageToInventory(placeId: String, inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("inventoryId", inventoryId) - put("storageIds", JSONArray().apply { - storageIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("addBackofficeStorageToInventory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeInventory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeInventoryProductsAtStorage(placeId: String, inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("inventoryId", inventoryId) - put("storageId", storageId) - } - val r = makeRequest("getBackofficeInventoryProductsAtStorage", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeInventoryProducts(placeId: String, inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("inventoryId", inventoryId) - } - val r = makeRequest("getBackofficeInventoryProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateBackofficeInventoryProduct(placeId: String, inventoryId: String, authorId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("inventoryId", inventoryId) - put("authorId", authorId) - put("products", JSONArray().apply { - products.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("updateBackofficeInventoryProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun closeBackofficeInventory(placeId: String, authorId: String, inventoryId: String, alterUnitValue: Boolean): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("authorId", authorId) - put("inventoryId", inventoryId) - put("alterUnitValue", alterUnitValue) - } - val r = makeRequest("closeBackofficeInventory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun cancelBackofficeInventory(placeId: String, authorId: String, inventoryId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("authorId", authorId) - put("inventoryId", inventoryId) - } - val r = makeRequest("cancelBackofficeInventory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeImportedInvoices(placeId: String, since: Calendar?, until: Calendar?): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", since?.let { dateTimeFormat.format(since) }) - put("until", until?.let { dateTimeFormat.format(until) }) - } - val r = makeRequest("getBackofficeImportedInvoices", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun importBackofficeInvoice(placeId: String, storageId: String?, xml: ByteArray): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId?.let { storageId }) - put("xml", Base64.encodeToString(xml, Base64.DEFAULT)) - } - val r = makeRequest("importBackofficeInvoice", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeImportedInvoice::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeManualInvoice(placeId: String, manualInvoice: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("manualInvoice", gson.toJson(manualInvoice)) - } - val r = makeRequest("createBackofficeManualInvoice", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeImportedInvoice::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeManualInvoiceDetails(placeId: String, invoiceId: String, invoiceInfo: BackofficeNewManualInvoice): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - put("invoiceInfo", gson.toJson(invoiceInfo)) - } - val r = makeRequest("editBackofficeManualInvoiceDetails", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun invalidateBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - put("entryId", entryId) - } - val r = makeRequest("invalidateBackofficeInvoiceProduct", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductLastInvoiceDetails(placeId: String, associatedProductId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("associatedProductId", associatedProductId) - } - val r = makeRequest("getBackofficeProductLastInvoiceDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeProductLastInvoiceDetails::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeInvoiceProducts(placeId: String, invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - } - val r = makeRequest("getBackofficeInvoiceProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeInvoiceBill(placeId: String, invoiceId: String, createBill: Boolean, accountId: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - put("createBill", createBill) - put("accountId", accountId?.let { accountId }) - } - val r = makeRequest("editBackofficeInvoiceBill", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeInvoiceProduct(placeId: String, invoiceId: String, entryId: String, skipped: Boolean, productId: String?, unitValue: Int?, unitMultiplier: Int): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - put("entryId", entryId) - put("skipped", skipped) - put("productId", productId?.let { productId }) - put("unitValue", unitValue?.let { unitValue }) - put("unitMultiplier", unitMultiplier) - } - val r = makeRequest("editBackofficeInvoiceProduct", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeInvoiceSupplier(placeId: String, invoiceId: String, skipped: Boolean, supplierId: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - put("skipped", skipped) - put("supplierId", supplierId?.let { supplierId }) - } - val r = makeRequest("editBackofficeInvoiceSupplier", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun upsertBackofficeManualInvoiceProduct(placeId: String, invoiceId: String, products: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - put("products", JSONArray().apply { - products.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("upsertBackofficeManualInvoiceProduct", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun finishBackofficeInvoiceImport(invoiceId: String, skipPendings: Boolean, productsBillPlanCategories: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceId", invoiceId) - put("skipPendings", skipPendings) - put("productsBillPlanCategories", JSONArray().apply { - productsBillPlanCategories.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("finishBackofficeInvoiceImport", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun upsertBackofficeInvoiceDuplicates(placeId: String, invoiceId: String, accountId: String, duplicates: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("invoiceId", invoiceId) - put("accountId", accountId) - put("duplicates", JSONArray().apply { - duplicates.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("upsertBackofficeInvoiceDuplicates", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeInvoiceDetailsBillPlanCategories(invoiceId: String, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceId", invoiceId) - put("invoiceDetailsField", invoiceDetailsField.name) - } - val r = makeRequest("getBackofficeInvoiceDetailsBillPlanCategories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun saveBackofficeDetailsBillPlanCategories(invoiceId: String, objBillPlanCategories: ArrayList, invoiceDetailsField: BackofficeImportedInvoiceDetailsField): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceId", invoiceId) - put("objBillPlanCategories", JSONArray().apply { - objBillPlanCategories.forEach { item -> put(gson.toJson(item)) } - }) - put("invoiceDetailsField", invoiceDetailsField.name) - } - val r = makeRequest("saveBackofficeDetailsBillPlanCategories", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeReceivedInvoices(placeId: String, focusCompanyId: String, versao: Int?): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("focusCompanyId", focusCompanyId) - put("versao", versao?.let { versao }) - } - val r = makeRequest("getBackofficeReceivedInvoices", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeReceivedInvoice(placeId: String, focusCompanyId: String, accessKey: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("focusCompanyId", focusCompanyId) - put("accessKey", accessKey) - } - val r = makeRequest("getBackofficeReceivedInvoice", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeReceivedInvoiceHeader::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeInvoiceXmlUrl(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("getBackofficeInvoiceXmlUrl", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun postBackofficeManifest(placeId: String, id: String, manifestType: BackofficeManifestType, reason: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("manifestType", manifestType.name) - put("reason", reason?.let { reason }) - } - val r = makeRequest("postBackofficeManifest", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeResponseInvoiceManifest::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeIncomeStatement(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeIncomeStatement", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeIncomeStatement::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeIncomeByCategory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeIncomeByCategory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillHistory(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeBillHistory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillHistory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeExtract(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeExtract", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeExtract::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCashFlow(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeCashFlow", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCashFlow::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeDescriptionReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeDescriptionReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDescriptionReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeDayReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeDayReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDayReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillTypeReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeBillTypeReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDescriptionReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillCategoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeBillCategoryReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDescriptionReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCostCenterReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeCostCenterReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCostCenterReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeCategoryHistoryReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeCategoryHistoryReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeCategoryHistory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillSupplierTrackerReport(placeId: String, since: Calendar, until: Calendar, statusFilter: BackofficeBillStatusFilter, dateFilter: BackofficeBillDateFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("statusFilter", statusFilter.name) - put("dateFilter", dateFilter.name) - } - val r = makeRequest("getBackofficeBillSupplierTrackerReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeBillSupplierTrackerReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeResume(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeResume", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeResumeInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getBackofficeResumeInPeriod", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficePeriodResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeBillPlanCategoriesReport(billPlanCategoryIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("billPlanCategoryIds", JSONArray().apply { - billPlanCategoryIds.forEach { item -> put(item) } - }) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getBackofficeBillPlanCategoriesReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeStorage(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeStorage", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeStorage::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeStorages(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeStorages", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeStorage(placeId: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storage", gson.toJson(storage)) - } - val r = makeRequest("createBackofficeStorage", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeStorage::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeStorage(placeId: String, id: String, storage: BackofficeNewStorage): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("storage", gson.toJson(storage)) - } - val r = makeRequest("editBackofficeStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeStorage(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - } - val r = makeRequest("getBackofficeProductsAtStorage", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductStorageHistory(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("page", page?.let { page }) - put("itemPerPage", itemPerPage?.let { itemPerPage }) - } - val r = makeRequest("getBackofficeProductStorageHistory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeStorageHistory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductStorageHistoryXls(placeId: String, storageId: String, productId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getBackofficeProductStorageHistoryXls", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductsStorageHistory(placeId: String, storageId: String, productIds: ArrayList, since: Calendar, until: Calendar, page: Int?, itemPerPage: Int?): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("page", page?.let { page }) - put("itemPerPage", itemPerPage?.let { itemPerPage }) - } - val r = makeRequest("getBackofficeProductsStorageHistory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun sellBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar, shouldApplyProductionRule: Boolean): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - put("count", count) - put("date", dateTimeFormat.format(date)) - put("shouldApplyProductionRule", shouldApplyProductionRule) - } - val r = makeRequest("sellBackofficeProductAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun refundBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - put("count", count) - put("date", dateTimeFormat.format(date)) - } - val r = makeRequest("refundBackofficeSellProductAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun cancelBackofficeSellProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - put("count", count) - put("date", dateTimeFormat.format(date)) - } - val r = makeRequest("cancelBackofficeSellProductAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun lostBackofficeProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - put("count", count) - put("date", dateTimeFormat.format(date)) - } - val r = makeRequest("lostBackofficeProductAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun manualBackofficeAdjustProductAtStorage(placeId: String, storageId: String, productId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - put("count", count) - put("date", dateTimeFormat.format(date)) - } - val r = makeRequest("manualBackofficeAdjustProductAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun transferBackofficeProduct(placeId: String, productId: String, fromId: String, toId: String, count: Int, date: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - put("fromId", fromId) - put("toId", toId) - put("count", count) - put("date", dateTimeFormat.format(date)) - } - val r = makeRequest("transferBackofficeProduct", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun transferBackofficeProducts(placeId: String, fromId: String, toId: String, date: Calendar, products: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("fromId", fromId) - put("toId", toId) - put("date", dateTimeFormat.format(date)) - put("products", JSONArray().apply { - products.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("transferBackofficeProducts", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeProductAtStorage(placeId: String, storageId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productId", productId) - } - val r = makeRequest("deleteBackofficeProductAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeProductsAtStorage(placeId: String, storageId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("deleteBackofficeProductsAtStorage", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeDeleteProductsResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun zeroBackofficeAllProductsAtStorage(placeId: String, storageId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - } - val r = makeRequest("zeroBackofficeAllProductsAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun inputBackofficeProduct(placeId: String, input: BackofficeInput, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("input", gson.toJson(input)) - put("transferType", transferType?.let { transferType.name }) - put("referenceCode", referenceCode?.let { referenceCode }) - } - val r = makeRequest("inputBackofficeProduct", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun inputBackofficeProducts(placeId: String, inputs: ArrayList, transferType: BackofficeStorageTransferType?, referenceCode: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("inputs", JSONArray().apply { - inputs.forEach { item -> put(gson.toJson(item)) } - }) - put("transferType", transferType?.let { transferType.name }) - put("referenceCode", referenceCode?.let { referenceCode }) - } - val r = makeRequest("inputBackofficeProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeInputsResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeProductionRule(placeId: String, rule: BackofficeNewProductionRule): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("rule", gson.toJson(rule)) - } - val r = makeRequest("createBackofficeProductionRule", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeProductionRuleInputs(placeId: String, productionRuleId: String, inputs: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productionRuleId", productionRuleId) - put("inputs", JSONArray().apply { - inputs.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("editBackofficeProductionRuleInputs", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeProductionRule(placeId: String, ruleId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("ruleId", ruleId) - } - val r = makeRequest("deleteBackofficeProductionRule", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun applyBackofficeProductionRule(placeId: String, storageId: String, ruleId: String, inputs: ArrayList, outputs: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - put("ruleId", ruleId) - put("inputs", JSONArray().apply { - inputs.forEach { item -> put(gson.toJson(item)) } - }) - put("outputs", JSONArray().apply { - outputs.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("applyBackofficeProductionRule", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductionRules(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeProductionRules", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeProductsStatusAtStorageAndDate(placeId: String, productIds: ArrayList, storageId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("storageId", storageId) - put("date", dateTimeFormat.format(date)) - } - val r = makeRequest("getBackofficeProductsStatusAtStorageAndDate", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeSupplier(id: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("placeId", placeId) - } - val r = makeRequest("getBackofficeSupplier", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeSupplier::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeSuppliers(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBackofficeSuppliers", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createBackofficeSupplier(placeId: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("supplier", gson.toJson(supplier)) - } - val r = makeRequest("createBackofficeSupplier", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeSupplier::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeSupplier(placeId: String, id: String, supplier: BackofficeNewSupplier): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("supplier", gson.toJson(supplier)) - } - val r = makeRequest("editBackofficeSupplier", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeSupplier(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeSupplier", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBackofficeTransfers(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getBackofficeTransfers", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun doBackofficeTransfer(placeId: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("transfer", gson.toJson(transfer)) - } - val r = makeRequest("doBackofficeTransfer", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeTransfer::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBackofficeTransfer(placeId: String, id: String, transfer: BackofficeNewTransfer): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - put("transfer", gson.toJson(transfer)) - } - val r = makeRequest("editBackofficeTransfer", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeTransfer::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBackofficeTransfer(placeId: String, id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("id", id) - } - val r = makeRequest("deleteBackofficeTransfer", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editBar(bar: Bar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("bar", gson.toJson(bar)) - } - val r = makeRequest("editBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteBar(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addBar(placeId: String, barName: String, storageId: String, internalIp: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("barName", barName) - put("storageId", storageId) - put("internalIp", internalIp?.let { internalIp }) - } - val r = makeRequest("addBar", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBars(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getBars", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun activateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("barId", barId) - put("productId", productId) - } - val r = makeRequest("activateProductAtBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivateProductAtBar(placeId: String, barId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("barId", barId) - put("productId", productId) - } - val r = makeRequest("deactivateProductAtBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun activateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("barId", barId) - } - val r = makeRequest("activateAllProductsAtBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivateAllProductsAtBar(placeId: String, barId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("barId", barId) - } - val r = makeRequest("deactivateAllProductsAtBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun activateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("barId", barId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("activateProductsAtBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivateProductsAtBar(placeId: String, barId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("barId", barId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("deactivateProductsAtBar", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun productsSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("productsSoldAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun deliveredProductsByBarAtEvent(eventId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("barId", barId) - } - val r = makeRequest("deliveredProductsByBarAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun productsSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("placeId", placeId) - } - val r = makeRequest("productsSoldAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun productsSoldAtOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("organizationId", organizationId) - } - val r = makeRequest("productsSoldAtOrganization", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun deliveredProductsByBarAtPlace(since: Calendar, until: Calendar, placeId: String, barId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("placeId", placeId) - put("barId", barId) - } - val r = makeRequest("deliveredProductsByBarAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSellerReports(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getSellerReports", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSellerReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getSellerReportForPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getNotDeliveredProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getNotDeliveredProductsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getConsolidatedBarSellingReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getConsolidatedBarSellingReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSellerDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("sellerId", sellerId) - } - val r = makeRequest("getSellerDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSellerDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("sellerId", sellerId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getSellerDetailsPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSellerProductDetails(eventId: String, sellerId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("sellerId", sellerId) - } - val r = makeRequest("getSellerProductDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSellerProductDetailsPlace(placeId: String, sellerId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("sellerId", sellerId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getSellerProductDetailsPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun exportAllTransactionProductsXlsx(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("exportAllTransactionProductsXlsx", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSoldBaseProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getSoldBaseProductsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSoldBaseProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getSoldBaseProductsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCashierClosingDetails(eventId: String, cashierId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("cashierId", cashierId) - } - val r = makeRequest("getCashierClosingDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), CashierClosingDetails::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun bleedCashier(eventId: String, cashierId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("cashierId", cashierId) - put("value", value) - } - val r = makeRequest("bleedCashier", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateCashierClosing(eventId: String, cashierId: String, values: CashierClosingValues): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("cashierId", cashierId) - put("values", gson.toJson(values)) - } - val r = makeRequest("updateCashierClosing", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlainCategories(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getPlainCategories", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCategories(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getCategories", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createCategory(category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("category", gson.toJson(category)) - put("data", _data?.let { Base64.encodeToString(_data, Base64.DEFAULT) }) - } - val r = makeRequest("createCategory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Category::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editCategory(id: String, category: NewCategory, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("category", gson.toJson(category)) - put("data", _data?.let { Base64.encodeToString(_data, Base64.DEFAULT) }) - } - val r = makeRequest("editCategory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteCategory(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteCategory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSellablesFromCategory(categoryId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("categoryId", categoryId) - } - val r = makeRequest("getSellablesFromCategory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), SellableList::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun filterSellablesCategories(name: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("name", name) - } - val r = makeRequest("filterSellablesCategories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getCostOfGoodsSoldByProductList", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCurrentCostOfGoodsSoldByProductList(placeId: String, productIds: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("getCurrentCostOfGoodsSoldByProductList", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTotalCmvAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getTotalCmvAtEvent", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getInt("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTotalCmvAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getTotalCmvAtPlace", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getInt("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addNewCombo(placeId: String, combo: NewPlaceCombo, _data: ByteArray?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("combo", gson.toJson(combo)) - put("data", _data?.let { Base64.encodeToString(_data, Base64.DEFAULT) }) - } - val r = makeRequest("addNewCombo", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editCombo(comboId: String, combo: NewPlaceCombo): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("comboId", comboId) - put("combo", gson.toJson(combo)) - } - val r = makeRequest("editCombo", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editComboImage(comboId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("comboId", comboId) - put("data", Base64.encodeToString(_data, Base64.DEFAULT)) - } - val r = makeRequest("editComboImage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteCombo(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteCombo", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCoupon(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("getCoupon", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Coupon::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCoupons(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getCoupons", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createCoupon(coupon: NewCoupon): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("coupon", gson.toJson(coupon)) - } - val r = makeRequest("createCoupon", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Coupon::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteCoupon(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteCoupon", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addDeviceToOrganization(smallId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("smallId", smallId) - } - val r = makeRequest("addDeviceToOrganization", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Device::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getDevices(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getDevices", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeDeviceFromOrganization(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("removeDeviceFromOrganization", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getDeviceStatusAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getDeviceStatusAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeDeviceFromEvent(deviceId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("deviceId", deviceId) - } - val r = makeRequest("removeDeviceFromEvent", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun logOutAndRemoveAllDevices(): Deferred>> = CoroutineScope(IO).async { - val r = makeRequest("logOutAndRemoveAllDevices", null) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getDeviceEventStatus(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getDeviceEventStatus", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEmployees(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getEmployees", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEmployee(employeeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("employeeId", employeeId) - } - val r = makeRequest("getEmployee", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Employee::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addEmployee(employee: NewEmployee, password: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("employee", gson.toJson(employee)) - put("password", password) - put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) - } - val r = makeRequest("addEmployee", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editEmployee(id: String, employee: NewEmployee): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("employee", gson.toJson(employee)) - } - val r = makeRequest("editEmployee", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editEmployeePassword(id: String, password: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("password", password) - } - val r = makeRequest("editEmployeePassword", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editEmployeeImage(id: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("data", Base64.encodeToString(_data, Base64.DEFAULT)) - } - val r = makeRequest("editEmployeeImage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editMultipleEmployees(employeeIds: ArrayList, edition: EditMultipleEmployees): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("employeeIds", JSONArray().apply { - employeeIds.forEach { item -> put(item) } - }) - put("edition", gson.toJson(edition)) - } - val r = makeRequest("editMultipleEmployees", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeMultipleEmployees(employeeIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("employeeIds", JSONArray().apply { - employeeIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("removeMultipleEmployees", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeEmployee(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("removeEmployee", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addZigTagToWaiter(zigCode: String, employeeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("zigCode", zigCode) - put("employeeId", employeeId) - } - val r = makeRequest("addZigTagToWaiter", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeZigTagFromWaiter(employeeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("employeeId", employeeId) - } - val r = makeRequest("removeZigTagFromWaiter", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createMultipleEmployees(placeId: String, bar: String?, quantity: Int, role: String?, permissions: ArrayList, username: String, password: String, initial: Int, _final: Int): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("bar", bar?.let { bar }) - put("quantity", quantity) - put("role", role?.let { role }) - put("permissions", JSONArray().apply { - permissions.forEach { item -> put(item) } - }) - put("username", username) - put("password", password) - put("initial", initial) - put("final", _final) - } - val r = makeRequest("createMultipleEmployees", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createEntrance(placeId: String, entrance: Entrance, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("entrance", gson.toJson(entrance)) - put("data", Base64.encodeToString(_data, Base64.DEFAULT)) - } - val r = makeRequest("createEntrance", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteEntrance(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteEntrance", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllEntrances(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getAllEntrances", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun editEntrance(placeId: String, entrance: Entrance): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("entrance", gson.toJson(entrance)) - } - val r = makeRequest("editEntrance", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editEntranceImage(entranceId: String, _data: ByteArray): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("entranceId", entranceId) - put("data", Base64.encodeToString(_data, Base64.DEFAULT)) - } - val r = makeRequest("editEntranceImage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun entrancesSoldAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("placeId", placeId) - } - val r = makeRequest("entrancesSoldAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun entrancesSoldAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("entrancesSoldAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun entrancesSoldByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("entrancesSoldByEmployee", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEntrancesSoldToUserAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getEntrancesSoldToUserAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEntrancesSoldToUserAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getEntrancesSoldToUserAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllEvents(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("placeId", placeId) - } - val r = makeRequest("getAllEvents", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createEvent(details: EventDetails, image: ByteArray?, cover: ByteArray?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("details", gson.toJson(details)) - put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) - put("cover", cover?.let { Base64.encodeToString(cover, Base64.DEFAULT) }) - } - val r = makeRequest("createEvent", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun openEvent(id: String, actualizingdatetime: Boolean): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("actualizingdatetime", actualizingdatetime) - } - val r = makeRequest("openEvent", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun closeEvent(id: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("closeEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteEvent(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteEvent", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEvent(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("getEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Event::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEvents(placeId: String, month: Int, year: Int): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("month", month) - put("year", year) - } - val r = makeRequest("getEvents", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), EventList::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun extract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("extract", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun extractResume(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("extractResume", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ExtractResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getExtractDayResumeInSections(placeId: String, date: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("date", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)) - } - val r = makeRequest("getExtractDayResumeInSections", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRechargeExpireResume(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getRechargeExpireResume", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), RechargeExpireResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRechargeExpireExtract(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getRechargeExpireExtract", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun askForAnticipation(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("value", value) - } - val r = makeRequest("askForAnticipation", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun withdraw(placeId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("value", value) - } - val r = makeRequest("withdraw", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun askForAnticipationWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("value", value) - put("obs", obs?.let { obs }) - put("otherBankAccount", otherBankAccount?.let { gson.toJson(otherBankAccount) }) - } - val r = makeRequest("askForAnticipationWithObservation", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun withdrawWithObservation(placeId: String, value: Int, obs: String?, otherBankAccount: WithdrawBankAccount?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("value", value) - put("obs", obs?.let { obs }) - put("otherBankAccount", otherBankAccount?.let { gson.toJson(otherBankAccount) }) - } - val r = makeRequest("withdrawWithObservation", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getWithdrawsResume(placeId: String, from: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("from", dateTimeFormat.format(from)) - } - val r = makeRequest("getWithdrawsResume", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getWithdraws(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getWithdraws", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getExtractAdjusts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getExtractAdjusts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getConsolidatedExtractInSections(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getConsolidatedExtractInSections", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ConsolidatedExtract::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun cashierDetailsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("cashierDetailsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun clientsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("clientsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun clientsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("placeId", placeId) - } - val r = makeRequest("clientsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun clientAtPlace(userId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("userId", userId) - put("placeId", placeId) - } - val r = makeRequest("clientAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Client::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun clientTransactionsAtEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("userId", userId) - put("eventId", eventId) - } - val r = makeRequest("clientTransactionsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun resumeForOrganization(since: Calendar, until: Calendar, organizationId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("organizationId", organizationId) - } - val r = makeRequest("resumeForOrganization", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ReceiptResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun cashierDetailsAtPlace(since: Calendar, until: Calendar, placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - put("placeId", placeId) - } - val r = makeRequest("cashierDetailsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun debtorsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("debtorsInEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun debtorsInPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("debtorsInPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBonusReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getBonusReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBonusReportForPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getBonusReportForPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getMinimumConsumptionReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getMinimumConsumptionReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCashierRechargeDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("cashierId", cashierId) - } - val r = makeRequest("getCashierRechargeDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCashierPostDetails(eventId: String, cashierId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("cashierId", cashierId) - } - val r = makeRequest("getCashierPostDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getClientDetails(clientId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("clientId", clientId) - } - val r = makeRequest("getClientDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ClientDetails::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editClient(clientId: String, name: String, phone: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("clientId", clientId) - put("name", name) - put("phone", phone) - } - val r = makeRequest("editClient", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBonusByProduct(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getBonusByProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBonusByProductAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getBonusByProductAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRechargeConsumptions(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getRechargeConsumptions", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun payBillAtEventWithMultiplePayments(userId: String, eventId: String, payments: ArrayList, reason: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("userId", userId) - put("eventId", eventId) - put("payments", JSONArray().apply { - payments.forEach { item -> put(gson.toJson(item)) } - }) - put("reason", reason?.let { reason }) - } - val r = makeRequest("payBillAtEventWithMultiplePayments", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun payBillAtPlaceInPeriodWithMultiplePayments(userId: String, placeId: String, payments: ArrayList, since: Calendar, until: Calendar, reason: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("userId", userId) - put("placeId", placeId) - put("payments", JSONArray().apply { - payments.forEach { item -> put(gson.toJson(item)) } - }) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - put("reason", reason?.let { reason }) - } - val r = makeRequest("payBillAtPlaceInPeriodWithMultiplePayments", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun payBillsAtEventWithMultiplePayments(userIds: ArrayList, eventId: String, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("userIds", JSONArray().apply { - userIds.forEach { item -> put(item) } - }) - put("eventId", eventId) - put("method", method.name) - put("isBonus", isBonus) - } - val r = makeRequest("payBillsAtEventWithMultiplePayments", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), MultipleUserIdsResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun payBillsAtPlaceInPeriodWithMultiplePayments(userIds: ArrayList, placeId: String, since: Calendar, until: Calendar, method: PaymentMethod, isBonus: Boolean): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("userIds", JSONArray().apply { - userIds.forEach { item -> put(item) } - }) - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - put("method", method.name) - put("isBonus", isBonus) - } - val r = makeRequest("payBillsAtPlaceInPeriodWithMultiplePayments", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), MultipleUserIdsResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRefundedRechargesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getRefundedRechargesAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCardActivationReturnReportAtEvent(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getCardActivationReturnReportAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ActivationReturnReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getResumeForEventInSections(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getResumeForEventInSections", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getResumeForPlaceInSections(placeId: String, from: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("from", dateTimeFormat.format(from)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getResumeForPlaceInSections", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPromotionsUsedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getPromotionsUsedAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPromotionsUsedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getPromotionsUsedAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEntrancesSoldByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getEntrancesSoldByEmployeeAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEntrancesSoldByEmployeeAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getEntrancesSoldByEmployeeAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRefundedProductsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getRefundedProductsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRefundedProductsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getRefundedProductsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTipsRemovedAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getTipsRemovedAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTipsRemovedAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getTipsRemovedAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCardActivationReturnReportByEmployeeAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getCardActivationReturnReportByEmployeeAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getDiscountsAtEventByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getDiscountsAtEventByEmployee", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getDiscountsAtPlaceByEmployee(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getDiscountsAtPlaceByEmployee", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTransactionTransfersByEmployee(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getTransactionTransfersByEmployee", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getManualInvoices(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getManualInvoices", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPostLimitChangesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getPostLimitChangesAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPostLimitChanges(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getPostLimitChanges", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun emitInnovaroGeneralInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("emitInnovaroGeneralInvoices", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getOpenedBillPayments(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getOpenedBillPayments", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getOpenedBillPaymentsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getOpenedBillPaymentsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRappiDiscountsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getRappiDiscountsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRappiDiscountsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getRappiDiscountsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun setCouvertFiscalData(placeId: String, _data: ProductFiscalData): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("data", gson.toJson(_data)) - } - val r = makeRequest("setCouvertFiscalData", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCouvertFiscalData(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getCouvertFiscalData", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ProductFiscalData::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun searchFiscalProducts(query: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("query", query) - } - val r = makeRequest("searchFiscalProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun isNcmValid(ncm: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("ncm", ncm) - } - val r = makeRequest("isNcmValid", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getBoolean("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInvoicePrintout(invoiceId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceId", invoiceId) - } - val r = makeRequest("getInvoicePrintout", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun issueInvoicesForUser(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - } - val r = makeRequest("issueInvoicesForUser", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun emitAllInvoicesInMonth(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("emitAllInvoicesInMonth", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), SimpleIssueResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun issueInvoicesForCnpj(eventId: String, userId: String, cnpj: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - put("cnpj", cnpj) - } - val r = makeRequest("issueInvoicesForCnpj", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun issueInvoicesForCpf(eventId: String, userId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - put("cpf", cpf) - } - val r = makeRequest("issueInvoicesForCpf", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun issueInvoicesOfTransactions(eventId: String, transactionIds: ArrayList, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("transactionIds", JSONArray().apply { - transactionIds.forEach { item -> put(item) } - }) - put("cpf", cpf?.let { cpf }) - put("cnpj", cnpj?.let { cnpj }) - } - val r = makeRequest("issueInvoicesOfTransactions", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInvoices(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getInvoices", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInvoicesFromUser(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - } - val r = makeRequest("getInvoicesFromUser", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInvoicesFromUserAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("userId", userId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getInvoicesFromUserAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun hasPendingInvoices(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - } - val r = makeRequest("hasPendingInvoices", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getBoolean("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun sendInvoicesByEmail(invoiceIds: ArrayList, email: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceIds", JSONArray().apply { - invoiceIds.forEach { item -> put(item) } - }) - put("email", email?.let { email }) - } - val r = makeRequest("sendInvoicesByEmail", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun printInvoice(invoiceId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceId", invoiceId) - } - val r = makeRequest("printInvoice", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun hasPrinter(invoiceId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceId", invoiceId) - } - val r = makeRequest("hasPrinter", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getBoolean("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getFiscalProfiles(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getFiscalProfiles", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getFiscalProductGroups(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getFiscalProductGroups", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("fiscalProfile", gson.toJson(fiscalProfile)) - } - val r = makeRequest("createFiscalProfile", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProfile::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateFiscalProfile(fiscalProfile: FiscalProfile): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("fiscalProfile", gson.toJson(fiscalProfile)) - } - val r = makeRequest("updateFiscalProfile", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProfile::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteFiscalProfile(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteFiscalProfile", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("fiscalProductGroup", gson.toJson(fiscalProductGroup)) - } - val r = makeRequest("createFiscalProductGroup", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProductGroup::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateFiscalProductGroup(fiscalProductGroup: FiscalProductGroup): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("fiscalProductGroup", gson.toJson(fiscalProductGroup)) - } - val r = makeRequest("updateFiscalProductGroup", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), FiscalProductGroup::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteFiscalProductGroup(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteFiscalProductGroup", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getFiscalInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("fiscalProfileId", fiscalProfileId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getFiscalInvoices", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPercentOfSalesIssuedInPeriod(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getPercentOfSalesIssuedInPeriod", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), SalesIssuedInPeriod::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInvoice(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("getInvoice", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Invoice::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getZippedInvoices(placeId: String, fiscalProfileId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("fiscalProfileId", fiscalProfileId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getZippedInvoices", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getNotEmmitedTransactionsFromEvent(eventId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - } - val r = makeRequest("getNotEmmitedTransactionsFromEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun issueManualInvoice(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("manualRequest", gson.toJson(manualRequest)) - put("cpf", cpf?.let { cpf }) - put("cnpj", cnpj?.let { cnpj }) - } - val r = makeRequest("issueManualInvoice", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun issueManualInvoiceForReserve(eventId: String, manualRequest: ManualRequest, cpf: String?, cnpj: String?, reserveId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("manualRequest", gson.toJson(manualRequest)) - put("cpf", cpf?.let { cpf }) - put("cnpj", cnpj?.let { cnpj }) - put("reserveId", reserveId) - } - val r = makeRequest("issueManualInvoiceForReserve", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), IssueResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun emitAllInnovaroInvoices(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("emitAllInnovaroInvoices", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getNotEmittedProductsInEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getNotEmittedProductsInEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getNotEmittedProducts(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getNotEmittedProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInvoicePrintData(invoiceId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("invoiceId", invoiceId) - } - val r = makeRequest("getInvoicePrintData", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), InvoicePrintData::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createInventory(placeId: String, storageIds: ArrayList, newInventory: NewInventory): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageIds", JSONArray().apply { - storageIds.forEach { item -> put(item) } - }) - put("newInventory", gson.toJson(newInventory)) - } - val r = makeRequest("createInventory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Inventory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun cancelInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("inventoryId", inventoryId) - } - val r = makeRequest("cancelInventory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addStorageToInventory(inventoryId: String, storageIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("inventoryId", inventoryId) - put("storageIds", JSONArray().apply { - storageIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("addStorageToInventory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Inventory::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInventories(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getInventories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getOpenedInventories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getOpenedInventories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun closeInventory(inventoryId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("inventoryId", inventoryId) - } - val r = makeRequest("closeInventory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInventoryProductsAtStorage(inventoryId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("inventoryId", inventoryId) - put("storageId", storageId) - } - val r = makeRequest("getInventoryProductsAtStorage", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getInventoryProducts(inventoryId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("inventoryId", inventoryId) - } - val r = makeRequest("getInventoryProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateInventoryProduct(inventoryId: String, products: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("inventoryId", inventoryId) - put("products", JSONArray().apply { - products.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("updateInventoryProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getLiveResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getLiveResume", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), LiveResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getPublic", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Public::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getNewPublic(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getNewPublic", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), NewPublic::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTopSellingProducts(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getTopSellingProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), TopSellingProducts::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSelledProducts(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getSelledProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTotalReceipt(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getTotalReceipt", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), TotalReceipt::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getRechargeTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getRechargeTimeline", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getConsumptionTimeline(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getConsumptionTimeline", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTopClients(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getTopClients", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getBarConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getBarConsumptionResume", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ConsumptionResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEntrancesConsumptionResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getEntrancesConsumptionResume", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ConsumptionResume::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun logIn(username: String, password: String, organizationUsername: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("username", username) - put("password", password) - put("organizationUsername", organizationUsername) - } - val r = makeRequest("logIn", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Employee::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun logOut(): Deferred>> = CoroutineScope(IO).async { - val r = makeRequest("logOut", null) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCurrentEmployee(): Deferred>> = CoroutineScope(IO).async { - val r = makeRequest("getCurrentEmployee", null) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Employee::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getCurrentOrganization(): Deferred>> = CoroutineScope(IO).async { - val r = makeRequest("getCurrentOrganization", null) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Organization::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaceDetails(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getPlaceDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceContract::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaces(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getPlaces", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceDetails::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editPlace(place: NewPlace, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("place", gson.toJson(place)) - put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) - } - val r = makeRequest("editPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Place::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaceFeatures(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getPlaceFeatures", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun activePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("featureId", featureId) - } - val r = makeRequest("activePlaceFeature", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivePlaceFeature(placeId: String, featureId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("featureId", featureId) - } - val r = makeRequest("deactivePlaceFeature", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun setZigPlaceFeatures(placeId: String, featureIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("featureIds", JSONArray().apply { - featureIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("setZigPlaceFeatures", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editPlacePassword(placeId: String, pass: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("pass", pass?.let { pass }) - } - val r = makeRequest("editPlacePassword", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlacePassword(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getPlacePassword", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun overridePlaceAccountId(placeId: String, accountId: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("accountId", accountId?.let { accountId }) - } - val r = makeRequest("overridePlaceAccountId", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getOverridenPlaceAccount(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getOverridenPlaceAccount", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), BackofficeAccount::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editPlaceEverestConfig(placeId: String, config: EverestConfig?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("config", config?.let { gson.toJson(config) }) - } - val r = makeRequest("editPlaceEverestConfig", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaceEverestConfig(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getPlaceEverestConfig", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), EverestConfig::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllPlaces(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getAllPlaces", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPosMachineTransactions(placeId: String, dates: ArrayList, page: Int, searchTerm: String?, itemsPerPage: Int?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("dates", JSONArray().apply { - dates.forEach { item -> put(SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item)) } - }) - put("page", page) - put("searchTerm", searchTerm?.let { searchTerm }) - put("itemsPerPage", itemsPerPage?.let { itemsPerPage }) - } - val r = makeRequest("getPosMachineTransactions", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), PaginationPosTransaction::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getConsolidatedPosMachineTransactions(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getConsolidatedPosMachineTransactions", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun activateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - } - val r = makeRequest("activateProductInPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivateProductInPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - } - val r = makeRequest("deactivateProductInPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updatePriceAtPlace(placeId: String, productId: String, value: Int): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - put("value", value) - } - val r = makeRequest("updatePriceAtPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateProportionalValueAtPlace(placeId: String, productId: String, proportionalValue: ProportionalValue?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - put("proportionalValue", proportionalValue?.let { gson.toJson(proportionalValue) }) - } - val r = makeRequest("updateProportionalValueAtPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun activateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("activateAllProductsInPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivateAllProductsInPlace(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("deactivateAllProductsInPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun activateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("activateProductsInPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivateProductsInPlace(placeId: String, productIds: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - } - val r = makeRequest("deactivateProductsInPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun activateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("categoryId", categoryId) - } - val r = makeRequest("activateAllProductsInPlaceFromCategory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deactivateAllProductsInPlaceFromCategory(placeId: String, categoryId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("categoryId", categoryId) - } - val r = makeRequest("deactivateAllProductsInPlaceFromCategory", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addProductToPlace(placeId: String, productId: String, fiscalData: PlaceProductFiscalData?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - put("fiscalData", fiscalData?.let { gson.toJson(fiscalData) }) - } - val r = makeRequest("addProductToPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeProductFromPlace(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - } - val r = makeRequest("removeProductFromPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProductsByPlace(place: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("place", place) - } - val r = makeRequest("getProductsByPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun addNewProductToOrganization(product: NewProduct, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("product", gson.toJson(product)) - put("image", image?.let { gson.toJson(image) }) - } - val r = makeRequest("addNewProductToOrganization", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Product::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun addNewProduct(product: NewPlaceProduct, placeId: String, image: EditProductImage?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("product", gson.toJson(product)) - put("placeId", placeId) - put("image", image?.let { gson.toJson(image) }) - } - val r = makeRequest("addNewProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceProduct::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editProduct(id: String, product: NewProduct): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("product", gson.toJson(product)) - } - val r = makeRequest("editProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), Product::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editProducts(products: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("products", JSONArray().apply { - products.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("editProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), EditedResults::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editPlaceProduct(id: String, product: NewPlaceProduct, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("product", gson.toJson(product)) - put("placeId", placeId) - } - val r = makeRequest("editPlaceProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceProduct::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editProductImage(id: String, image: EditProductImage): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - put("image", gson.toJson(image)) - } - val r = makeRequest("editProductImage", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteProduct(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteProduct", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteMultipleProducts(productIds: ArrayList, placeId: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("productIds", JSONArray().apply { - productIds.forEach { item -> put(item) } - }) - put("placeId", placeId?.let { placeId }) - } - val r = makeRequest("deleteMultipleProducts", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createSupply(name: String, placeId: String, image: ByteArray?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("name", name) - put("placeId", placeId) - put("image", image?.let { Base64.encodeToString(image, Base64.DEFAULT) }) - } - val r = makeRequest("createSupply", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSupplyProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getSupplyProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllProductCategories(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getAllProductCategories", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaceProduct(placeId: String, productId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productId", productId) - } - val r = makeRequest("getPlaceProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), PlaceProduct::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaceProducts(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getPlaceProducts", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllProducts(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getAllProducts", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProduct(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("getProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), OrganizationProduct::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun inputProductAtStorage(placeId: String, input: InputProduct): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("input", gson.toJson(input)) - } - val r = makeRequest("inputProductAtStorage", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun attachPlaceProductToProductionRule(productId: String, placeId: String, productionRuleId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("productId", productId) - put("placeId", placeId) - put("productionRuleId", productionRuleId) - } - val r = makeRequest("attachPlaceProductToProductionRule", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun removePlaceProductProductionRule(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("productId", productId) - put("placeId", placeId) - } - val r = makeRequest("removePlaceProductProductionRule", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProductionRuleFromProduct(productId: String, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("productId", productId) - put("placeId", placeId) - } - val r = makeRequest("getProductionRuleFromProduct", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ProductRule::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProductKinds(): Deferred?>>> = CoroutineScope(IO).async { - val r = makeRequest("getProductKinds", null) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSuggestedImageFor(product: ProductImageSearch): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("product", gson.toJson(product)) - } - val r = makeRequest("getSuggestedImageFor", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun applySuggestedImageForProduct(imageId: String, productId: String, type: ApplySuggestedImageForProductType): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("imageId", imageId) - put("productId", productId) - put("type", type.name) - } - val r = makeRequest("applySuggestedImageForProduct", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProductsFromPlaceReportXls(placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getProductsFromPlaceReportXls", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaceProductsByType(placeId: String, productType: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("productType", productType) - } - val r = makeRequest("getPlaceProductsByType", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createPromotion(promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("promotion", gson.toJson(promotion)) - } - val r = makeRequest("createPromotion", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createPromotionForPlace(promotion: NewPromotionInfo, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("promotion", gson.toJson(promotion)) - put("placeId", placeId) - } - val r = makeRequest("createPromotionForPlace", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deletePromotion(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deletePromotion", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAvailablePromotions(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getAvailablePromotions", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun givePromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("promotionId", promotionId) - put("userId", userId) - } - val r = makeRequest("givePromotion", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun givePromotionToManyUsers(promotionId: String, cpfPhones: ArrayList): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("promotionId", promotionId) - put("cpfPhones", JSONArray().apply { - cpfPhones.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("givePromotionToManyUsers", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), MultipleUserPromotionResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPromotionUsers(promotionId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("promotionId", promotionId) - } - val r = makeRequest("getPromotionUsers", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun removeUserFromPromotion(promotionId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("promotionId", promotionId) - put("userId", userId) - } - val r = makeRequest("removeUserFromPromotion", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun editPromotion(promotionId: String, promotion: NewPromotionInfo): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("promotionId", promotionId) - put("promotion", gson.toJson(promotion)) - } - val r = makeRequest("editPromotion", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), PromotionInfo::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllRelationsFromEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getAllRelationsFromEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllRelationsFromPlace(placeId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - } - val r = makeRequest("getAllRelationsFromPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteRelation(id: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("id", id) - } - val r = makeRequest("deleteRelation", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createEventRelation(relation: Relation, eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("relation", gson.toJson(relation)) - put("eventId", eventId) - } - val r = makeRequest("createEventRelation", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun createPlaceRelation(relation: Relation, placeId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("relation", gson.toJson(relation)) - put("placeId", placeId) - } - val r = makeRequest("createPlaceRelation", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getPlaceEmployeeReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getPlaceEmployeeReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), EmployeeReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getFinanceBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getFinanceBiReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), FinanceBiReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getClientsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getClientsBiReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ClientByReport::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProductsBiReport(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(since)) - put("until", SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(until)) - } - val r = makeRequest("getProductsBiReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun createReserve(eventId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("reserve", gson.toJson(reserve)) - } - val r = makeRequest("createReserve", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun deleteReserve(reserveId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("reserveId", reserveId) - } - val r = makeRequest("deleteReserve", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun updateReserve(reserveId: String, reserve: NewReserve): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("reserveId", reserveId) - put("reserve", gson.toJson(reserve)) - } - val r = makeRequest("updateReserve", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getReserves(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getReserves", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getReserveDetail(reserveId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("reserveId", reserveId) - } - val r = makeRequest("getReserveDetail", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), ReserveDetail::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getReservesReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getReservesReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getReserveDiscountDetails(reserveId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("reserveId", reserveId) - } - val r = makeRequest("getReserveDiscountDetails", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProductsAtStorage(placeId: String, storageId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("storageId", storageId) - } - val r = makeRequest("getProductsAtStorage", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEntrancesSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getEntrancesSoldAtEventInPeriod", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getProductsSoldAtEventInPeriod(eventId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getProductsSoldAtEventInPeriod", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getUser(placeId: String, cpf: String?, phone: String?): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("cpf", cpf?.let { cpf }) - put("phone", phone?.let { phone }) - } - val r = makeRequest("getUser", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), User::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getUserAtEvent(eventId: String, filter: UserFilter): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("filter", gson.toJson(filter)) - } - val r = makeRequest("getUserAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), User::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getUserDetailsAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - } - val r = makeRequest("getUserDetailsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), UserDetails::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getUserDetailsAtPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("userId", userId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getUserDetailsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), UserDetails::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getUserRechargesInEvent(userId: String, eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("userId", userId) - put("eventId", eventId) - } - val r = makeRequest("getUserRechargesInEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun giveRechargeToUsers(eventId: String, recharges: ArrayList): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("recharges", JSONArray().apply { - recharges.forEach { item -> put(gson.toJson(item)) } - }) - } - val r = makeRequest("giveRechargeToUsers", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getAllUsersAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getAllUsersAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getEventUserAtEvent(eventId: String, userId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - put("userId", userId) - } - val r = makeRequest("getEventUserAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), EventUser::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getClientsAtPlaceWithFilter(placeId: String, filters: SearchFilters, offset: Int): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("filters", gson.toJson(filters)) - put("offset", offset) - } - val r = makeRequest("getClientsAtPlaceWithFilter", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getClientsAtPlaceWithFilterXls(placeId: String, filters: SearchFilters): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("filters", gson.toJson(filters)) - } - val r = makeRequest("getClientsAtPlaceWithFilterXls", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getUserByCpf(placeId: String, cpf: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("cpf", cpf) - } - val r = makeRequest("getUserByCpf", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson(r.data?.getJSONObject("result")?.toString(), SearchResult::class.java) - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getUserDetailsAtEventsAndPlace(placeId: String, userId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("userId", userId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getUserDetailsAtEventsAndPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getSuggestedImages(keyword: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("keyword", keyword) - } - val r = makeRequest("getSuggestedImages", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getZigTagBlockConfirmsAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getZigTagBlockConfirmsAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getZigTagBlockConfirmsAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getZigTagBlockConfirmsAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getZigTagSyncForcesAtEvent(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getZigTagSyncForcesAtEvent", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getZigTagSyncForcesAtPlace(placeId: String, since: Calendar, until: Calendar): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("since", dateTimeFormat.format(since)) - put("until", dateTimeFormat.format(until)) - } - val r = makeRequest("getZigTagSyncForcesAtPlace", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getNotOpenedCashiers(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getNotOpenedCashiers", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getStockTransferReport(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getStockTransferReport", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getTransactionHistory(placeId: String, userId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("placeId", placeId) - put("userId", userId) - } - val r = makeRequest("getTransactionHistory", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun getGuinnessResume(eventId: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getGuinnessResume", bodyArgs) - val responseData = if (r.data != null) { - r.data?.getInt("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun getGuinnessLog(eventId: String): Deferred?>>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("eventId", eventId) - } - val r = makeRequest("getGuinnessLog", bodyArgs) - val responseData = if (r.data != null) { - gson.fromJson>(r.data?.getJSONArray("result")?.toString(), object : TypeToken>() { }.type) - } else null - MutableLiveData?>>().apply { postValue(Response(r.error, responseData)) } - } - override fun ping(): Deferred>> = CoroutineScope(IO).async { - val r = makeRequest("ping", null) - val responseData = if (r.data != null) { - r.data?.getString("result") - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - override fun setPushToken(token: String): Deferred>> = CoroutineScope(IO).async { - val bodyArgs = JSONObject().apply { - put("token", token) - } - val r = makeRequest("setPushToken", bodyArgs) - val responseData = if (r.data != null) { - r.error == null - } else null - MutableLiveData>().apply { postValue(Response(r.error, responseData)) } - } - } - - fun randomBytesHex(len: Int): String { - val bytes = ByteArray(len) - Random().nextBytes(bytes) - return bytesToHex(bytes) - } - - private fun bytesToHex(bytes: ByteArray): String { - val hexChars = CharArray(bytes.size * 2) - for (j in bytes.indices) { - val v = bytes[j].toInt() and 0xFF - hexChars[j * 2] = hexArray[v ushr 4 ] - hexChars[j * 2 + 1] = hexArray[v and 0x0F] - } - return String(hexChars) - } - - @SuppressLint("HardwareIds") - @Throws(JSONException::class) - private fun device(): JSONObject = - JSONObject().apply { - put("type", "android") - put("fingerprint", "" + Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)) - put("platform", JSONObject().apply { - put("version", Build.VERSION.RELEASE) - put("sdkVersion", Build.VERSION.SDK_INT) - put("brand", Build.BRAND) - put("model", Build.MODEL) - }) - try { - put("version", context.packageManager.getPackageInfo(context.packageName, 0).versionName) - } catch (e: PackageManager.NameNotFoundException) { - put("version", "unknown") - } - - put("language", language()) - put("screen", JSONObject().apply { - val manager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager - val display = manager.defaultDisplay - val size = Point() - display.getSize(size) - put("width", size.x) - put("height", size.y) - }) - val pref = context.getSharedPreferences("api", Context.MODE_PRIVATE) - if (pref.contains("deviceId")) put("id", pref.getString("deviceId", null)) - } - - - private fun language(): String { - val loc = Locale.getDefault() - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - return loc.toLanguageTag() - } - - val sep = '-' - var language = loc.language - var region = loc.country - var variant = loc.variant - - if (language == "no" && region == "NO" && variant == "NY") { - language = "nn" - region = "NO" - variant = "" - } - - if (language.isEmpty() || !language.matches("\\[a-zA-Z]{2,8}".toRegex())) { - language = "und" - } else if (language == "iw") { - language = "he" - } else if (language == "in") { - language = "id" - } else if (language == "ji") { - language = "yi" - } - - if (!region.matches("\\[a-zA-Z]{2}|\\[0-9]{3}".toRegex())) { - region = "" - } - - if (!variant.matches("\\[a-zA-Z0-9]{5,8}|\\[0-9]\\[a-zA-Z0-9]{3}".toRegex())) { - variant = "" - } - - val bcp47Tag = StringBuilder(language) - if (!region.isEmpty()) { - bcp47Tag.append(sep).append(region) - } - if (!variant.isEmpty()) { - bcp47Tag.append(sep).append(variant) - } - - return bcp47Tag.toString() - } - - private suspend fun makeRequest(functionName: String, bodyArgs: JSONObject?, timeoutSeconds: Int = 15): InternalResponse = suspendCoroutine { continuation -> - try { - val body = JSONObject().apply { - put("id", randomBytesHex(8)) - put("device", device()) - put("name", functionName) - put("args", bodyArgs ?: JSONObject()) - put("staging", API.useStaging) - } - - val request = Request.Builder() - .url("https://$BASE_URL${if (useStaging) "-staging" else ""}/$functionName") - .post(body.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())) - .build() - client.newCall(request).enqueue(object: Callback { - override fun onFailure(call: Call, e: IOException) { - e.printStackTrace() - continuation.resume(InternalResponse(Error(ErrorType.Fatal, e?.message ?: "Chamada falhou sem mensagem de erro!"), null)) - } - - override fun onResponse(call: Call, response: okhttp3.Response) { - if (response.code == 502) { - continuation.resume(InternalResponse(Error(ErrorType.Fatal, "Erro Fatal (502) - Tente novamente"), null)) - return - } - - val responseBody = try { - val stringBody = response?.body?.string() - JSONObject(stringBody) - } catch (e: Exception) { - continuation.resume(InternalResponse(Error(ErrorType.Fatal, "502 - Tente novamente"), null)) - return - } - - val pref = context.getSharedPreferences("api", Context.MODE_PRIVATE) - pref.edit().putString("deviceId", responseBody.getString("deviceId")).apply() - - if (!responseBody.getBoolean("ok")) { - val jsonError = responseBody.getJSONObject("error") - //TODO Fetch correct error type - val error = Error(ErrorType.valueOf(jsonError.getString("type")), jsonError.getString("message")) - Log.e("API Error", jsonError.getString("type") + " - " + error.message) - continuation.resume(InternalResponse(error, null)) - } else { - continuation.resume(InternalResponse(null, responseBody)) - } - } - }) - } catch (e: JSONException) { - e.printStackTrace() - continuation.resume(InternalResponse(Error(ErrorType.Fatal, e.message ?: "Erro ao parsear json"), null)) - } - } - } \ No newline at end of file diff --git a/src/codegen_types/struct.cr b/src/codegen_types/struct.cr index a7f2629..5937662 100644 --- a/src/codegen_types/struct.cr +++ b/src/codegen_types/struct.cr @@ -99,7 +99,7 @@ module AST io << "#{suffix} \n" index += 1 end - io << "): Serializable {\n\n" + io << "): Serializable {\n" io << " companion object {\n" io << " fun fromJson(jsonToParse : JSONObject): #{kt_native_type} {\n" io << " return gson.fromJson(jsonToParse.toString(), #{name}::class.java)\n" @@ -112,8 +112,8 @@ module AST toJsonExpr = "this@#{name}" io << " fun toJson(): JSONObject {\n" - io << " return JSONObject(gson.toJson(this))" - io << " }" + io << " return JSONObject(gson.toJson(this))\n" + io << " }\n" io << "}" end end diff --git a/src/main b/src/main new file mode 100644 index 0000000000000000000000000000000000000000..34a6d117d6317d6123e3cef89a1e6da6a6ae8442 GIT binary patch literal 2714968 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 z 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%0Am3cZ6GSgPqyy3V9w7e+r%< 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≥XV3zlR=e}7b>FXi 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

GT+G1KRLh%CC$43jI%(|!ru}uN#@BKM5 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

    L&fA94D!@!3>w_!ME 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 literal 0 HcmV?d00001 diff --git a/src/target/kt_jetpack_android.cr b/src/target/kt_jetpack_android.cr index dda7baf..8432a64 100644 --- a/src/target/kt_jetpack_android.cr +++ b/src/target/kt_jetpack_android.cr @@ -46,29 +46,17 @@ import org.json.JSONArray import com.google.gson.reflect.TypeToken import kotlinx.coroutines.* import kotlinx.coroutines.Dispatchers.IO -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.MediaType.Companion.toMediaTypeOrNull import java.io.InvalidObjectException +import kotlin.concurrent.timerTask +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.Flow @ExperimentalCoroutinesApi -fun Deferred.result(callback: (error: Throwable?, response: T?) -> Unit) { - try { - this.invokeOnCompletion { cause -> - if (this.getCompletionExceptionOrNull() != null) - throw this.getCompletionExceptionOrNull()!! - - callback(cause, if (this.isCompleted) this.getCompleted() else null) - } - } catch (e: Throwable) { - callback(e, if (this.isCompleted) this.getCompleted() else null) - } -} - - @Suppress("DeferredIsResult", "unused") @SuppressLint("SimpleDateFormat", "StaticFieldLeak") object API { @@ -83,11 +71,9 @@ END "Boolean?" end @io << ident(String.build do |io| - io << " fun #{mangle op.pretty_name}(#{args.join(", ")}): Deferred>> = CoroutineScope(IO).async { \n" - io << " MutableLiveData>().apply { \n " - io << " postValue(Response(Error(ErrorType.Fatal, \"Not Implemented\"), null)) \n" - io << " }\n" - io << " }\n" + io << " fun #{mangle op.pretty_name}(#{args.join(", ")}): Flow> = flow> { \n" + io << " emit(Response(Error(ErrorType.Fatal, \"Not Implemented\"), null)) \n" + io << " }.flowOn(IO)\n" end) end @io << <<-END @@ -96,24 +82,34 @@ END lateinit var context: Context private val gson = Gson() private val dateTimeFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.US).apply { - setTimeZone(TimeZone.getTimeZone("GMT")) + timeZone = TimeZone.getTimeZone("GMT") } private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) - fun init(appContext: Context, useStaging: Boolean) { + private var isForcedBaseUrl = false + var DEFAULT_TIMEOUT_SECONDS = 15 + private var BASE_URL = #{@ast.options.url.inspect} + var useStaging = false + private val hexArray = "0123456789abcdef".toCharArray() + + fun init(appContext: Context, useStaging: Boolean, baseUrl: String? = null, timeoutSeconds: Int? = null) { API.useStaging = useStaging context = appContext + if (timeoutSeconds != null) + DEFAULT_TIMEOUT_SECONDS = timeoutSeconds + + if (baseUrl != null) { + BASE_URL = baseUrl + isForcedBaseUrl = true + } } - var BASE_URL = #{@ast.options.url.inspect} - var useStaging = false - private val hexArray = "0123456789abcdef".toCharArray() - - var connectionPool = ConnectionPool(100, 60, TimeUnit.SECONDS) + var connectionPool = ConnectionPool(100, 80, TimeUnit.SECONDS) var client = OkHttpClient.Builder() .connectionPool(connectionPool) .dispatcher(Dispatcher().apply { maxRequests = 200 ; maxRequestsPerHost = 200 }) - .connectTimeout(60, TimeUnit.SECONDS) - .readTimeout(60, TimeUnit.SECONDS) + .connectTimeout(80, TimeUnit.SECONDS) + .readTimeout(80, TimeUnit.SECONDS) + .retryOnConnectionFailure(false) .build() class Error( @@ -149,13 +145,14 @@ END "Boolean?" end @io << ident(String.build do |io| - io << " override fun #{mangle op.pretty_name}(#{args.join(", ")}): Deferred>> = CoroutineScope(IO).async { \n" + io << " override fun #{mangle op.pretty_name}(#{args.join(", ")}): Flow> = flow> { \n" puts = op.args.map { |arg| "put(\"#{arg.name}\", #{arg.type.kt_encode(mangle(arg.name), nil)})" }.join("\n") bodyParameter = "null" if op.args.size > 0 bodyParameter = "bodyArgs" io << " val #{bodyParameter} = JSONObject().apply {\n" - io << " #{puts}\n" + io << ident ident ident puts + io << "\n" io << " }\n" else "" @@ -176,8 +173,9 @@ END end io << ident responseExpression io << " } else null\n" - io << " MutableLiveData>().apply { postValue(Response(r.error, responseData)) }\n" - io << " }\n" + io << " emit(Response(r.error, responseData))\n" + io << " }.flowOn(IO)\n" + io << "\n" end) end @@ -278,7 +276,7 @@ END return bcp47Tag.toString() } - private suspend fun makeRequest(functionName: String, bodyArgs: JSONObject?, timeoutSeconds: Int = 15): InternalResponse = suspendCoroutine { continuation -> + private suspend fun makeRequest(functionName: String, bodyArgs: JSONObject?, timeoutSeconds: Int = DEFAULT_TIMEOUT_SECONDS): InternalResponse = suspendCoroutine { continuation -> try { val body = JSONObject().apply { put("id", randomBytesHex(8)) @@ -289,16 +287,26 @@ END } val request = Request.Builder() - .url("https://$BASE_URL${if (useStaging) "-staging" else ""}/$functionName") + .url( + if (isForcedBaseUrl) + "$BASE_URL/$functionName" + else + "https://$BASE_URL${if (useStaging) "-staging" else ""}/$functionName" + ) .post(body.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())) .build() - client.newCall(request).enqueue(object: Callback { + + val httpTimer = Timer() + val call = client.newCall(request) + call.enqueue(object: Callback { override fun onFailure(call: Call, e: IOException) { + httpTimer.cancel() e.printStackTrace() continuation.resume(InternalResponse(Error(ErrorType.Fatal, e.message ?: "Chamada falhou sem mensagem de erro!"), null)) } override fun onResponse(call: Call, response: okhttp3.Response) { + httpTimer.cancel() if (response.code == 502) { continuation.resume(InternalResponse(Error(ErrorType.Fatal, "Erro Fatal (502) - Tente novamente"), null)) return @@ -326,6 +334,15 @@ END } } }) + + httpTimer.schedule( + timerTask { + call.cancel() + val error = Error(ErrorType.Connection, "Timeout") + continuation.resume(InternalResponse(error, null)) + }, + timeoutSeconds * 1000L + ) } catch (e: JSONException) { e.printStackTrace() continuation.resume(InternalResponse(Error(ErrorType.Fatal, e.message ?: "Erro ao parsear json"), null)) diff --git a/target-android-kt-jetpack/.gitignore b/target-android-kt-jetpack/.gitignore index 66388a9..2f226b6 100644 --- a/target-android-kt-jetpack/.gitignore +++ b/target-android-kt-jetpack/.gitignore @@ -1,10 +1,12 @@ -# Created by https://www.gitignore.io/api/android +# Created by https://www.gitignore.io/api/android,androidstudio +# Edit at https://www.gitignore.io/?templates=android,androidstudio ### Android ### # Built application files *.apk *.ap_ +*.aab # Files for the ART/Dalvik VM *.dex @@ -16,6 +18,7 @@ bin/ gen/ out/ +release/ # Gradle files .gradle/ @@ -36,28 +39,167 @@ proguard/ # Android Studio captures folder captures/ -# Intellij +# IntelliJ *.iml .idea/workspace.xml .idea/tasks.xml .idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries .idea/libraries +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml # Keystore files -*.jks +# Uncomment the following lines if you do not want to check your keystore files in. +#*.jks +#*.keystore # External native build folder generated in Android Studio 2.2 and later .externalNativeBuild # Google Services (e.g. APIs or Firebase) -google-services.json +# google-services.json # Freeline freeline.py freeline/ freeline_project_description.json +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Version control +vcs.xml + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ + ### Android Patch ### gen-external-apklibs +output.json + +# Replacement of .externalNativeBuild directories introduced +# with Android Studio 3.5. +.cxx/ + +### AndroidStudio ### +# Covers files to be ignored for android development using Android Studio. + +# Built application files + +# Files for the ART/Dalvik VM + +# Java class files + +# Generated files + +# Gradle files +.gradle + +# Signing files +.signing/ + +# Local configuration file (sdk path, etc) + +# Proguard folder generated by Eclipse + +# Log Files + +# Android Studio +/*/build/ +/*/local.properties +/*/out +/*/*/build +/*/*/production +*.ipr +*~ +*.swp + +# Android Patch + +# External native build folder generated in Android Studio 2.2 and later -# End of https://www.gitignore.io/api/android +# NDK +obj/ + +# IntelliJ IDEA +*.iws +/out/ + +# User-specific configurations +.idea/caches/ +.idea/libraries/ +.idea/shelf/ +.idea/.name +.idea/compiler.xml +.idea/copyright/profiles_settings.xml +.idea/encodings.xml +.idea/misc.xml +.idea/scopes/scope_settings.xml +.idea/vcs.xml +.idea/jsLibraryMappings.xml +.idea/datasources.xml +.idea/dataSources.ids +.idea/sqlDataSources.xml +.idea/dynamic.xml +.idea/uiDesigner.xml + +# OS-specific files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Legacy Eclipse project files +.classpath +.project +.cproject +.settings/ + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.war +*.ear + +# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml) +hs_err_pid* + +## Plugin-specific files: + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Mongo Explorer plugin +.idea/mongoSettings.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### AndroidStudio Patch ### + +!/gradle/wrapper/gradle-wrapper.jar + +# End of https://www.gitignore.io/api/android,androidstudio \ No newline at end of file diff --git a/target-android-kt-jetpack/.idea/codeStyles/Project.xml b/target-android-kt-jetpack/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..3279b6b --- /dev/null +++ b/target-android-kt-jetpack/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +

    + + + + xmlns:android + + ^$ + + + +
    +
    + + + + xmlns:.* + + ^$ + + + BY_NAME + +
    +
    + + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
    +
    + + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
    +
    + + + + name + + ^$ + + + +
    +
    + + + + style + + ^$ + + + +
    +
    + + + + .* + + ^$ + + + BY_NAME + +
    +
    + + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
    +
    + + + + .* + + .* + + + BY_NAME + +
    + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/.idea/modules.xml b/target-android-kt-jetpack/.idea/modules.xml index 3ebf7ad..455866f 100644 --- a/target-android-kt-jetpack/.idea/modules.xml +++ b/target-android-kt-jetpack/.idea/modules.xml @@ -3,7 +3,10 @@ + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/api/build.gradle b/target-android-kt-jetpack/api/build.gradle index 1888c33..b92a44d 100644 --- a/target-android-kt-jetpack/api/build.gradle +++ b/target-android-kt-jetpack/api/build.gradle @@ -25,6 +25,7 @@ dependencies { api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2' api 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2' + api "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-rc03" api 'androidx.appcompat:appcompat:1.1.0' api 'androidx.core:core-ktx:1.1.0' } diff --git a/target-android-kt-jetpack/build.gradle b/target-android-kt-jetpack/build.gradle index 835100e..95dc464 100644 --- a/target-android-kt-jetpack/build.gradle +++ b/target-android-kt-jetpack/build.gradle @@ -3,7 +3,7 @@ buildscript { repositories { google() jcenter() - + } dependencies { classpath 'com.android.tools.build:gradle:3.5.3' @@ -17,10 +17,10 @@ allprojects { repositories { google() jcenter() - + } } task clean(type: Delete) { delete rootProject.buildDir -} \ No newline at end of file +} diff --git a/target-android-kt-jetpack/gradle.properties b/target-android-kt-jetpack/gradle.properties index aac7c9b..9e6fce1 100644 --- a/target-android-kt-jetpack/gradle.properties +++ b/target-android-kt-jetpack/gradle.properties @@ -9,6 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. diff --git a/target-android-kt-jetpack/sample/.gitignore b/target-android-kt-jetpack/sample/.gitignore new file mode 100644 index 0000000..3543521 --- /dev/null +++ b/target-android-kt-jetpack/sample/.gitignore @@ -0,0 +1 @@ +/build diff --git a/target-android-kt-jetpack/sample/build.gradle b/target-android-kt-jetpack/sample/build.gradle new file mode 100644 index 0000000..e71f7e6 --- /dev/null +++ b/target-android-kt-jetpack/sample/build.gradle @@ -0,0 +1,46 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + + defaultConfig { + applicationId "io.cubos.targetAndroidKtJetpack.sample" + minSdkVersion 16 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +sourceSets { + all { + languageSettings { + useExperimentalAnnotation('kotlin.Experimental') + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.core:core-ktx:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation project(':api') + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' +} + + diff --git a/target-android-kt-jetpack/sample/proguard-rules.pro b/target-android-kt-jetpack/sample/proguard-rules.pro new file mode 100644 index 0000000..6e7ffa9 --- /dev/null +++ b/target-android-kt-jetpack/sample/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/target-android-kt-jetpack/sample/settings.gradle b/target-android-kt-jetpack/sample/settings.gradle new file mode 100644 index 0000000..b6c56b6 --- /dev/null +++ b/target-android-kt-jetpack/sample/settings.gradle @@ -0,0 +1 @@ +include ':api' \ No newline at end of file diff --git a/target-android-kt-jetpack/sample/src/androidTest/java/io/cubos/targetAndroidKtJetpack/sample/ExampleInstrumentedTest.kt b/target-android-kt-jetpack/sample/src/androidTest/java/io/cubos/targetAndroidKtJetpack/sample/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..3f42a36 --- /dev/null +++ b/target-android-kt-jetpack/sample/src/androidTest/java/io/cubos/targetAndroidKtJetpack/sample/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package io.cubos.targetAndroidKtJetpack.sample + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("io.cubos.targetAndroidKtJetpack.sample", appContext.packageName) + } +} diff --git a/target-android-kt-jetpack/sample/src/main/AndroidManifest.xml b/target-android-kt-jetpack/sample/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c6b26fc --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/App.kt b/target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/App.kt new file mode 100644 index 0000000..a90e1ee --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/App.kt @@ -0,0 +1,9 @@ +package io.cubos.targetAndroidKtJetpack.sample + +import android.app.Application + +class App: Application() { + override fun onCreate() { + super.onCreate() + } +} \ No newline at end of file diff --git a/target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/MainActivity.kt b/target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/MainActivity.kt new file mode 100644 index 0000000..6ce3778 --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/java/io/cubos/targetAndroidKtJetpack/sample/MainActivity.kt @@ -0,0 +1,14 @@ +package io.cubos.targetAndroidKtJetpack.sample + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.MainScope + +class MainActivity : AppCompatActivity(), CoroutineScope by MainScope() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + } +} diff --git a/target-android-kt-jetpack/sample/src/main/res/drawable-v24/ic_launcher_foreground.xml b/target-android-kt-jetpack/sample/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..971add5 --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/target-android-kt-jetpack/sample/src/main/res/drawable/ic_launcher_background.xml b/target-android-kt-jetpack/sample/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..eed7a42 --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target-android-kt-jetpack/sample/src/main/res/layout/activity_main.xml b/target-android-kt-jetpack/sample/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..ca0c0de --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..a26f6fb --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..a26f6fb --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-hdpi/ic_launcher.png b/target-android-kt-jetpack/sample/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..898f3ed59ac9f3248734a00e5902736c9367d455 GIT binary patch literal 2963 zcmV;E3vBd>P)a+K}1d8+^p? z!e{m!F(8(%L-Or7x3OYORF&;mRAm8a^;km%J=s!AdNyc=+ezQqUM;oHYO18U%`T}O zHf$ra^L^sklEoIeAKmbOvX~v2@Y|vHs<^3JwwH?D$4l*XnPNs zMOqozmbkT?^lZ?$DjQ9%E0x+GsV=1PwZ&39Y}iI-$Fb3d%nsk+qrN@cV=OmQMEdF% z)iHMl(4Yu=cIkixWXtwMIV=>BvDSrHg8?)+vLJKozy*}$iE>&gGGonlG0cJhG&DRv ztzkg-AO(q)B7~G^EwE#tK@nqmJ}!(Bqtf z=eN{I?X#P!Xx=uL)D9cAk=b!~&@H~6S)=a?R4fDdP{-5E5X_!5&FwFJ^7&W2WS z;CnxBCOsSU^v-%(vad;MPukr;&+ciI+F`>sGCPiqHe`1A1|N0p^<|#<+iECwOG@y7 zBF$;;0YAhxtqK7O0SW;M0SW;ckbsQ#9QTYyC*g`2j%bA%1Zh^g9=9l*Cy!I^{_p2$PP2>j_D2AybM$NwY}iJ(ZH9O3 zlM8g4+dw;}V{dlY2EM^Z-Q(AmcmO|Ub1&3EFTS>iuHC#rcNo$wkB3@5c#lSunxsQ) zaA7tLFV3Oxk}X2`9qVL6?4fcq?f>Yk0E0IEcm0~^P5ovLLV$&D9ibbZTOt4ivg_<= zu^#q8tYJktl(egXwj4c3u6N&}S3mj_9pv5y{gQvL;&nM}TeNE{4K3O%_QAdpCAswa z`Ev>!oQREY9uPqL)g(QPVc1U`Q3An`+x_7g8edZ^0zdcpXNv7^!ZsgV{ugB){w+5&3-Wlp}yI7?tN)6*ST)-XSL4g8_rtDVlw+a zE+K|#(tV!KfQE22d-}7B(mLkHukIp4?na@q?%@4Kb%u!@F-ww?o?tn_Ohb zPi3Do`yL?Y$rDPYtEV;|250yzpS^rZT*TflAZ&YqC;by2Ul7NTZHKmC)9NA6Vv+>C%^1XhNlp5*!7zxTTKfHTPhe?@XbH=VzWEuCcmX z@L_&qCB;=(Xi;-D&DvT)kGOiMQ0&YQTezdH&j4D;U@#9&WiZClJThS7w)OHH^fIT| z+jn{&5bhMbynmM$P<0U*%ksp0WUy)=J!n9~WJ&YNn$e3{jMFOW6n~uqMHg+M3FY|#>(q)ZF;RS(xqTh>S1Ez_jfFig z#ivbPnZ26mv{5wdB5SFYrUNM5D?g-OsiZZK?hPof9gqf&7m!5-C=d>yOsw<)(t*G@h5zIY2saaEx|99pU%^#gvdI(Qqf>)zFjf zN}5zm9~oT`PmH~EF012{9eT8?4piYolF(86uiGy`^r#V4yu7SA-c zjm})#d$(Kx2|Yn~i19Fr<)Gs+1XaUIJs~G>kg>3 zkQ$CqUj*cb1ORzHKmZ`Ab2^0!}Qkq&-DC(S~W*1GV zw9}L-zX}y4ZLblxEO1qhqE9Q-IY{NmR+w+RDpB;$@R(PRjCP|D$yJ+BvI$!mIbb<+GQ3MGKxUdIY{N`DOv%} zWA){tEw8M2f!r&ugC6C5AMVXM=w7ej#c_{G;Obab=fD={ut@71RLCd*b?Y1+R_HMR zqYNuWxFqU^Yq9YB)SmxVgNKR;UMH207l5qNItP~xUO*YTsayf1g`)yAJoRV6f2$Fh z|A1cNgyW)@1ZJ!8eBC7gN$MOgAgg|zqX4pYgkw{E4wcr09u#3tt$JW@xgr2dT0piE zfSguooznr3CR>T88cu6RII0io!Z)mN2S3C%toVr+P`0PTJ>8yo4OoHX161h;q+jRY zs$2o2lgirxY2o-j$>c;3w)BT<1fb;PVV(V`cL*zHj5+On;kX@;0)6rF-I?1)gyZtM6}?#ji{u+_Jz`IW9a=87nIA3aK2~3iFMS zzYP&fCXLEibCzR_6R~#sKN@)HB>);Za`ud*QCaKG8jEwqgoknK7rwW`Cq?RYYE5r+ zh-YUqJ082>*;EG`_lhV^vHEM7d+5Y#e$d^rC*jx{U%h3B^nU%7N|*y`o4g{@w;KP-89>&W#h zTBB2vTk*S|My+4jYTPKdk6yR3b?nAfcd`FeC@gttYuGBEl9wuf8`rOD9VP6`bhNxR znvXql-3ssVUSXfvcf^2L5R-^4E-s=g|M$Wm!?BMl!51d{AS*7Ggjwh^YsbK?6jgCA5T=(9$oK{{z$fCe9x5IJ^J=002ov JPDHLkV1g@XpTGbB literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-hdpi/ic_launcher_round.png b/target-android-kt-jetpack/sample/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..dffca3601eba7bf5f409bdd520820e2eb5122c75 GIT binary patch literal 4905 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 lV%Z2*hu);6rydA(}wUDXPCF_W1vnaRBK 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 literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/target-android-kt-jetpack/sample/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..14ed0af35023e4f1901cf03487b6c524257b8483 GIT binary patch literal 6895 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 literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png b/target-android-kt-jetpack/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b0907cac3bfd8fbfdc46e1108247f0a1055387ec GIT binary patch literal 6387 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 literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/target-android-kt-jetpack/sample/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ae03154975f397f8ed1b84f2d4bf9783ecfa26 GIT binary patch literal 10413 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 XdJ+W}DiIkV00000NkvXXu0mjfKBlg6 literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/target-android-kt-jetpack/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2c18de9e66108411737e910f5c1972476f03ddbf GIT binary patch literal 9128 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 I20H400LcNok^lez literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/target-android-kt-jetpack/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..beed3cdd2c32af5114a7dc70b9ef5b698eb8797e GIT binary patch literal 15132 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 literal 0 HcmV?d00001 diff --git a/target-android-kt-jetpack/sample/src/main/res/values/colors.xml b/target-android-kt-jetpack/sample/src/main/res/values/colors.xml new file mode 100644 index 0000000..6b3f6ab --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #008577 + #00574B + #D81B60 + diff --git a/target-android-kt-jetpack/sample/src/main/res/values/strings.xml b/target-android-kt-jetpack/sample/src/main/res/values/strings.xml new file mode 100644 index 0000000..1ef4c45 --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Sample + diff --git a/target-android-kt-jetpack/sample/src/main/res/values/styles.xml b/target-android-kt-jetpack/sample/src/main/res/values/styles.xml new file mode 100644 index 0000000..6f19b47 --- /dev/null +++ b/target-android-kt-jetpack/sample/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/target-android-kt-jetpack/sample/src/test/java/io/cubos/targetAndroidKtJetpack/sample/ExampleUnitTest.kt b/target-android-kt-jetpack/sample/src/test/java/io/cubos/targetAndroidKtJetpack/sample/ExampleUnitTest.kt new file mode 100644 index 0000000..ddcf499 --- /dev/null +++ b/target-android-kt-jetpack/sample/src/test/java/io/cubos/targetAndroidKtJetpack/sample/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package io.cubos.targetAndroidKtJetpack.sample + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} diff --git a/target-android-kt-jetpack/settings.gradle b/target-android-kt-jetpack/settings.gradle index 5f53697..a72d940 100644 --- a/target-android-kt-jetpack/settings.gradle +++ b/target-android-kt-jetpack/settings.gradle @@ -1 +1 @@ -include ':api' +include ':api', ':sample'

JJ{plpwLKMG)`=E=og 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 z zkf&Y9g$nVyl#3Md(T_0>`zho&mvV+embi4v&rR-P8yDsDmh3xw&Mkh-lPrH;mD#ROz=_^?w zB`##|XzBZ7E@YEJF5Vxbyiy_CU7QaUQs%b)l0wQ|$ioV0=laas6>^m;)c_$_AALc- zFwu{5))05yj>XNKWr0v>-nU~V`P6EPQl!B8;AIGBBb$=~#9(t2NF<_Km#2Qv$pJT%n=GmDsg1vAUR%m5~T ztfmQO1~Ib)^LPg{9hls-ZGtIl#tgx1?_j1yii|Z%ETgM{WHzn6m|DV*(gt%$JjHZ4 zlgrwfnJEavzU6uts!ViL>bsNY9uVRYH9az4es?AM$12~Mh0W-cpr|v0&Nh&l4#f5* z`=7DHnjJ|ygJEmB(O0CS(MUT0+nbkeaM0RBfB`rZomCT8;aesF$Yo>`e(&W!+Rv1= z|C{{`U8i{e-F`A0%>Qmb9UaX7Za|LXL{&)LX?9lx0_Va^7^S|5AItP>X zlX9Wh&t?IM{oH<06Z`o(&$XXNoV-dk%?@_da_)bzpTDu4{n!1i?R<>iNm5ft*S8V- zGuy`gzj!Bx4y?aX)n<`nSkdSG)EwK<-W$Ed*&o0Ssu z5;244Q@|&dd+p82Ya5HHFOf40f4oas*C93}iq*JQ!DFCGUeJ~S%_=_aC%`BHIySQ$qLXZ4~u;S$yc1y;&CulM{x>>bBy9Fi{}|O9K~Ud z*6dG`zPF91)6&K1OPtk;^T(HQeQ)LBWD)08#rc`qipsgQi<3bdTXD9;*Aykr;FmOkH_)4I0?l0y_xiVO*~GTi*pcP&DV;vG9D-H z_n!6;=S{`=EFLHB_nr)KLW)xxj}!NMPn(Eywc;#`$H5*!R9}p5OtIp89FK#Yl_<_C z;&fG<_v3Nme(z}oaSkO)-xtN>VEZddr;0e=D$ZN+IO#6VV&c53IIqRy#QomW8^pO+ zabAkYIo74KkT};X&hzm&aliMpfH*$Ic_tnw?)RP^CQdiSc`_cS3ksaEJdZeuigRB) zPTcQ3%_YwF2_m0a@i-^AbY>H0iQ-I&$H|D|a4X?qMVK6q(A7nlWTq>^qMbD;sby$Co~QK5J5A>p1(Ib zSO0&GlW_dmnQ;HdIO&Y~Xa$XvZu)zc*2d8O$2h4Oqa)7z5+_AN4#rEe^wIUBhE1}5 zT*i3?_!*JY%!TKQF@7Z=iCEY9sRDmyRM0_(t z_64#3D4*}hF-62T*Ws}M)&y(gSHv=7@Byphhq=6z%~a?qV4&z}VEm*73TdG7iSkME zjH_$-Tyn9PJ}#xf=y2XVgET@Nd{L>bH&0TIXd;2NP*50(61@*o{rn1P(9Y6S83u&uZ~ejygXIJO>W!A{1lT^MlXW3prCEces$=3VF_@b1Wg~ z-V{gIpN-QUc=nq7{y}L&d#dZn)OBA-hyN(uhXoBk^@GoFJs;3lF-&OF3_%<6ZP>ihvdLUx>%%(E<(NKz(Q!VJg?oxPQu2Qn4I$+T7&OEXfnUw|!7LuQ*HPdFd;|$S z@vkRc&DfS|6QiVVt?8q6K6dIHuaDE~)U3QsNR+afn;a5Rx)y;R2N<=rPxh#-MP*MU zUTH|hVunnS60PXfV)ERfqc+GZ4UZ|Ly$i7kfhBGxH~7qje)*a0eD-iYyYdsXDJ#-G zAN3%8YN7EJhXNqLM&%%EWiu>M!~Dal6!+o{l1j!=QlizFo76+Bbv?vE(L?HH7xJ@0 z8eGUag>?Bm=AV`+B+rGsp^$r{U0rFOR7j`VSgpGh(#@@P6CvPL{14113v8N^3mZGx z;@v8L7E%_)O6GW%On-&+b|GCAGSr256*9wx96E>kN}caQA_`gVLcUeV8W&QhkObH5 zzN?T^T*$u^GRB46tB`A4$gK)FsMgAjrRx=PrHeCKA%k2I`V_Kkc}%FME2Pw|)s2ui zp=MC12`@Aj>K;07AhD1_-E+1GqlZi82ZaoAAzu&@M>w5?UwFPT;fEZ;EF|HFluU+8 zrcxnSeiG}$RE6xUi9yCIq?KFiJVN3cPh;afn>2o`(>M#+__0c6pR2wUg~ZLr2MQY# zP9fpd&o%B<^-jkJIE1TNDU|w$OZat#q_`YEp^(8YB-o^>1U7YLlcp|onqndQaG{bp z)g@D;kbD=?Pa!wEkPL;y;=ProtwQQtoWBaB69Zin+@X*OE@Xp3?sXxx3VF(fyrYml z?%01uA&&f+I%QV^v18t{u8Sr#@_;T~dj>>4ys_)eTx@ae4_4w;AfhqYyvULqv0jKC*a zT&E+o#2qUaD0kPokOGA)aUrKD#OwB{vqB#HIM%0D3W*!v2M4M2qciZsV8N_i(Adap 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%0DJt|Gs!8G9_>c}i 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