Created
June 5, 2020 06:56
-
-
Save photizzo/57bdcbf4f2caf248b21bc5ad588a72cd to your computer and use it in GitHub Desktop.
Visitor implementatin logic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.entraid.remote.implementation | |
import android.content.Context | |
import android.util.Log | |
import bolts.Continuation | |
import bolts.Task | |
import com.entraid.data.repository.visitors.VisitorRemote | |
import com.entraid.models.EluziniParseDbConstants | |
import com.entraid.models.GetHostResponseRequestModel | |
import com.entraid.models.welcome.* | |
import com.entraid.remote.* | |
import com.entraid.remote.model.NewMessage | |
import com.entraid.remote.service.EluziniApiService | |
import com.google.firebase.database.FirebaseDatabase | |
import com.parse.* | |
import io.reactivex.Observable | |
import io.reactivex.ObservableEmitter | |
import io.reactivex.ObservableOnSubscribe | |
import java.io.File | |
import java.util.* | |
import java.util.concurrent.TimeUnit | |
import javax.inject.Inject | |
class VisitorRemoteImplementation @Inject constructor( | |
private val eluziniApiService: EluziniApiService, | |
private val context: Context | |
) : VisitorRemote { | |
override fun getHosts(getHostsRequest: GetHostsRequest): Observable<HostsResponse> { | |
return Observable.create { emitter -> | |
val query = ParseUser.getQuery() | |
query.whereEqualTo("domain", getHostsRequest.domain) // find adults | |
query.findInBackground(object : FindCallback<ParseUser> { | |
override fun done(objects: List<ParseUser>, e: ParseException?) { | |
if (e == null) { | |
// The query was successful. | |
val hosts = objects.map { | |
val fullName = it.getString("name") | |
val objectId = it.objectId | |
val parseUser = it | |
Hosts(fullName ?: "", objectId, 0, parseUser) | |
} | |
emitter.onNext(HostsResponse(hosts)) | |
} else { | |
// Something went wrong. | |
emitter.onError(Throwable(e.localizedMessage)) | |
} | |
} | |
}) | |
} | |
} | |
override fun generateVisitorId(): Observable<String> { | |
return Observable.timer(3000, TimeUnit.MILLISECONDS) | |
.map { | |
UUID.randomUUID().toString() | |
} | |
} | |
override fun visitorCheckIn(submitVisitorCheckInRequest: VisitorCheckInRequest): Observable<VisitorCheckInResponse> { | |
var savedParsedObject: ParseObject? = null | |
var currentUser: ParseUser? = null | |
val observable: Observable<VisitorCheckInResponse> = Observable.create { emitter -> | |
//write the image file first | |
var parseObjectVisitors: ParseObject? = null | |
var parseObjectConversations: ParseObject? = null | |
val userIds = listOf( | |
submitVisitorCheckInRequest.selectedHost?.objectId, | |
(submitVisitorCheckInRequest.currentUserParse as ParseUser).objectId | |
) | |
val userQuery = ParseUser.getQuery() | |
userQuery.include(EluziniParseDbConstants.User.location) | |
userQuery.whereEqualTo(EluziniParseDbConstants.User.objectId, ParseUser.getCurrentUser().objectId) | |
val task = userQuery.firstInBackground | |
task.continueWithTask(Continuation<ParseUser, Task<ParseUser>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
null | |
} else { | |
currentUser = task.result | |
// submitVisitorCheckInRequest.imageUrl = parseImageFile.url | |
return@Continuation /*if (parseSignedNDAFile != null) parseSignedNDAFile.saveInBackground() else*/ task | |
} | |
}) | |
.continueWithTask(Continuation<ParseUser, Task<Void>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
null | |
} else { | |
val parseObject = ParseObject(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME) | |
val visitedUser = submitVisitorCheckInRequest.visitedUserParse as ParseUser | |
val visitedUserLocation = currentUser?.getParseObject(EluziniParseDbConstants.User.location) | |
Log.e("TAG", "visited user location id ${visitedUserLocation?.objectId} current user ${currentUser?.has(EluziniParseDbConstants.User.location)}") | |
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER, visitedUser) | |
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_DATA_SENDER, (submitVisitorCheckInRequest.currentUserParse as ParseUser).objectId) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL, | |
submitVisitorCheckInRequest.imageUrl | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA, | |
submitVisitorCheckInRequest.signedNDAFile | |
) | |
parseObject.put(EluziniParseDbConstants.Visitor.VISITED_DOMAIN, submitVisitorCheckInRequest.domain) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME, | |
submitVisitorCheckInRequest.fullName | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME, | |
submitVisitorCheckInRequest.organisation | |
) | |
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_EMAIL, submitVisitorCheckInRequest.email) | |
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_PHONE, submitVisitorCheckInRequest.phone) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_PURPOSE, | |
submitVisitorCheckInRequest.purposeOfVisit | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_ADDRESS, | |
submitVisitorCheckInRequest.address | |
) | |
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN, true) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_PURPOSE_DESC, | |
submitVisitorCheckInRequest.purposeOfVisit | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES, | |
submitVisitorCheckInRequest.items | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_SN_NUMBER_OF_ITEMS, | |
submitVisitorCheckInRequest.itemsSerials | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_ITEMS_QUANTITY, | |
submitVisitorCheckInRequest.itemQuantities | |
) | |
if(visitedUserLocation != null){ | |
parseObject.put( | |
EluziniParseDbConstants.Visitor.VISITOR_LOCATION, | |
visitedUserLocation | |
) | |
} | |
parseObjectVisitors = parseObject | |
savedParsedObject = parseObject | |
println("saving visitor check-in object started") | |
return@Continuation parseObject.saveInBackground() | |
} | |
}) | |
.continueWithTask(Continuation<Void, Task<List<ParseObject>>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
null | |
} else { | |
println("saving visitor check-in object successful") | |
val parseQuery = | |
ParseQuery<ParseObject>(EluziniParseDbConstants.Conversation.CONVERSATIONS_TABLE_NAME) | |
parseQuery.whereContainsAll(EluziniParseDbConstants.Conversation.CONVERSATIONS_USERS, userIds) | |
return@Continuation parseQuery.findInBackground() | |
} | |
}) | |
.continueWithTask(Continuation<List<ParseObject>, Task<Void>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
null | |
} else { | |
var parseObject: ParseObject? = null | |
println("query result returned ") | |
if (task.result.isEmpty()) { | |
//no conversation between hosts and visitor create the conversation | |
parseObject = ParseObject(EluziniParseDbConstants.Conversation.CONVERSATIONS_TABLE_NAME) | |
parseObject.put(EluziniParseDbConstants.Conversation.CONVERSATIONS_USERS, userIds) | |
parseObject.put( | |
EluziniParseDbConstants.Conversation.CONVERSATIONS_USER1, | |
submitVisitorCheckInRequest.currentUserParse as ParseUser | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Conversation.CONVERSATIONS_USER2, | |
submitVisitorCheckInRequest.visitedUserParse as ParseUser | |
) | |
} else { | |
parseObject = task.result.get(0) | |
} | |
parseObject.put( | |
EluziniParseDbConstants.Conversation.CONVERSATIONS_LAST_MESSAGE, | |
"You have a visitor. Please check your notifications to confirm the visitor. " | |
) | |
parseObject.put( | |
EluziniParseDbConstants.Conversation.CONVERSATIONS_MESSAGE_SENDER_ID, | |
(submitVisitorCheckInRequest.currentUserParse as ParseUser).getObjectId() | |
) | |
parseObject.put(EluziniParseDbConstants.Conversation.CONVERSATIONS_MESSAGE_LAST_MESSAGE, Date()) | |
parseObjectConversations = parseObject | |
return@Continuation parseObject.saveInBackground() | |
} | |
}) | |
.continueWithTask(Continuation<Void, Task<Void>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
null | |
} else { | |
val parseObject = ParseObject(EluziniParseDbConstants.ConversationMesages.MESSAGE_TABLE_NAME) | |
parseObject.put( | |
EluziniParseDbConstants.ConversationMesages.MESSAGE_VISITOR, | |
parseObjectVisitors as Any | |
) | |
parseObject.put( | |
EluziniParseDbConstants.ConversationMesages.MESSAGE_CONVERSATION, | |
parseObjectConversations as Any | |
) | |
parseObject.put( | |
EluziniParseDbConstants.ConversationMesages.MESSAGE_TABLE_MESSAGE, | |
"You have a visitor. Please check your notifications to confirm the visitor. " | |
) | |
parseObject.put( | |
EluziniParseDbConstants.ConversationMesages.MESSAGE_RECIEVER_ID, | |
(submitVisitorCheckInRequest.visitedUserParse as ParseUser).getObjectId() | |
) | |
parseObject.put( | |
EluziniParseDbConstants.ConversationMesages.MESSAGE_SENDER, | |
ParseUser.getCurrentUser() | |
) | |
parseObject.put(EluziniParseDbConstants.ConversationMesages.MESSAGE_TYPE, "visitor") | |
println("conversation is about to be saved. ") | |
return@Continuation parseObject.saveInBackground() | |
} | |
}) | |
.continueWithTask(Continuation<Void, Task<Void>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
null | |
} else { | |
val tableName = savedParsedObject!!.className | |
val parseObjectId = savedParsedObject!!.objectId | |
val visitorCheckInResponse = VisitorCheckInResponse(id = 200) | |
val dateAndTime = "${getDate()} ${getTime()}" | |
val userId = ParseUser.getCurrentUser().objectId | |
val message = | |
"${submitVisitorCheckInRequest.fullName} is here to see you. ${if (submitVisitorCheckInRequest.purposeOfVisit.isNotEmpty()) "\nPurpose of visit: ${submitVisitorCheckInRequest.purposeOfVisit}" else ""}" | |
val receiverId = (submitVisitorCheckInRequest.visitedUserParse as ParseUser).objectId | |
val newMessage = NewMessage(message, dateAndTime, userId, tableName, parseObjectId) | |
val reference = FirebaseDatabase.getInstance().reference | |
reference.child(EluziniParseDb.FCM_MESSAGES_KEY) | |
.child(receiverId) | |
.push().setValue(newMessage) | |
emitter.onNext(visitorCheckInResponse) | |
return@Continuation null | |
} | |
}) | |
} | |
return observable.doOnNext { | |
println("on next called") | |
} | |
} | |
override fun visitorCheckOut(visitorCheckOutRequest: VisitorCheckOutRequest): Observable<VisitorCheckOutResponse> { | |
var fullName = "" | |
var savedParseObject: ParseObject? = null | |
return Observable.create { emitter -> | |
val visitorParseQuery = ParseQuery<ParseObject>(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME) | |
visitorParseQuery.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) | |
visitorParseQuery.orderByDescending(EluziniParseDbConstants.Visitor.VISITOR_UPDATED_AT) | |
visitorParseQuery.getInBackground(visitorCheckOutRequest.visitorId) | |
.continueWithTask { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
null | |
} else { | |
val parseObject = task.result | |
fullName = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: "" | |
val isCheckedIn = parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN) | |
if (!isCheckedIn) { | |
emitter.onError(Throwable("Visitor checked out already")) | |
return@continueWithTask null | |
} | |
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN, false) | |
savedParseObject = parseObject | |
parseObject.saveInBackground() | |
} | |
}.continueWithTask(Continuation<Void, Task<Void>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
} else { | |
val tableName = savedParseObject!!.className | |
val parseObjectId = savedParseObject!!.objectId | |
val dateAndTime = "${getDate()} ${getTime()}" | |
val userId = ParseUser.getCurrentUser().objectId | |
val message = "${fullName} has checked out" | |
val receiverId = savedParseObject!!.getParseObject(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)?.objectId?:"" | |
val newMessage = NewMessage(message, dateAndTime, userId, tableName, parseObjectId) | |
Log.e("TAG", "visitor check out details recevierId: $receiverId \n message: $newMessage ") | |
val reference = FirebaseDatabase.getInstance().reference | |
reference.child(EluziniParseDb.FCM_MESSAGES_KEY) | |
.child(receiverId) | |
.push().setValue(newMessage) | |
emitter.onNext(VisitorCheckOutResponse(true)) | |
} | |
null | |
}) | |
} | |
} | |
override fun findVisitorById(id: String): Observable<VisitorModel> { | |
return Observable.create { emitter -> | |
val query = ParseQuery.getQuery<ParseObject>(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME) | |
query.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) | |
query.getInBackground(id).continueWithTask(Continuation<ParseObject, Task<Void>> { task -> | |
if (task.isFaulted) { | |
task.error.printStackTrace() | |
emitter.onError(task.error) | |
} else { | |
val parseObject = task.result | |
val visitorId = parseObject.objectId | |
val date = parseObject.createdAt.time.getFormattedDate(context) | |
val fullName = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: "" | |
val organisation = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME) ?: "" | |
val address = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ADDRESS) ?: "" | |
val phone = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PHONE) ?: "" | |
val email = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_EMAIL) ?: "" | |
val purposeOfVisit = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PURPOSE) ?: "" | |
val items = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val itemsSerials = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val itemQuantities = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val signedNDAFile = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA) ?: "" | |
val imageUrl = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL) ?: "" | |
val domain = parseObject.getString(EluziniParseDbConstants.Visitor.VISITED_DOMAIN) ?: "" | |
var visitedUserParse: Any? = null | |
val isDeclined = parseObject.get(EluziniParseDbConstants.Visitor.VISITOR_IS_DECLINED) | |
val dateString = parseObject.createdAt.toString().getDate() | |
val timeString = parseObject.createdAt.toString().getTime() | |
val isChekedIn = parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN) | |
if (parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) != null && parseObject.getParseUser( | |
EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER | |
)!!.isDataAvailable | |
) { | |
visitedUserParse = | |
parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) | |
} | |
val visitorModel = VisitorModel( | |
parseObject, | |
visitorId, | |
date, | |
fullName, | |
organisation, | |
address, | |
phone, | |
email, | |
purposeOfVisit, | |
items, | |
itemsSerials, | |
itemQuantities, | |
signedNDAFile, | |
imageUrl, | |
domain, | |
visitedUserParse, | |
isDeclined, | |
dateString, | |
timeString, | |
isChekedIn | |
) | |
emitter.onNext(visitorModel) | |
} | |
null | |
}) | |
} | |
} | |
override fun getAllVisitors(getAllVisitorsModelRequest: GetAllVisitorsModelRequest): Observable<List<VisitorModel>> { | |
val observable = Observable.create(object : ObservableOnSubscribe<List<VisitorModel>> { | |
override fun subscribe(emitter: ObservableEmitter<List<VisitorModel>>) { | |
val visitorListQuery = ParseQuery<ParseObject>(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME) | |
visitorListQuery.whereEqualTo("domain", getAllVisitorsModelRequest.domain) | |
visitorListQuery.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) | |
visitorListQuery.orderByDescending("createdAt") | |
visitorListQuery.findInBackground { objects, e -> | |
if (e == null) { | |
val visitorModels = objects.map { | |
val parseObject = it | |
val visitorId = parseObject.objectId | |
val date = parseObject.createdAt.time.getFormattedDate(context) | |
val fullName = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: "" | |
val organisation = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME) ?: "" | |
val address = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ADDRESS) ?: "" | |
val phone = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PHONE) ?: "" | |
val email = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_EMAIL) ?: "" | |
val purposeOfVisit = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PURPOSE) ?: "" | |
val items = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val itemsSerials = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val itemQuantities = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val signedNDAFile = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA) ?: "" | |
val imageUrl = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL) ?: "" | |
val domain = parseObject.getString(EluziniParseDbConstants.Visitor.VISITED_DOMAIN) ?: "" | |
var visitedUserParse: Any? = null | |
val isDeclined = parseObject.get(EluziniParseDbConstants.Visitor.VISITOR_IS_DECLINED) | |
val isChekedIn = | |
parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN) | |
val dateString = parseObject.createdAt.toString().getDate() | |
val timeString = parseObject.createdAt.toString().getTime() | |
if (parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) != null && parseObject.getParseUser( | |
EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER | |
)!!.isDataAvailable | |
) { | |
visitedUserParse = | |
parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) | |
} | |
val visitorModel = VisitorModel( | |
parseObject, | |
visitorId, | |
date.toString(), | |
fullName, | |
organisation, | |
address, | |
phone, | |
email, | |
purposeOfVisit, | |
items, | |
itemsSerials, | |
itemQuantities, | |
signedNDAFile, | |
imageUrl, | |
domain, | |
visitedUserParse, | |
isDeclined, | |
dateString, | |
timeString, | |
isChekedIn | |
) | |
visitorModel | |
} | |
emitter.onNext(visitorModels) | |
} else { | |
emitter.onError(Throwable(e.localizedMessage)) | |
} | |
} | |
} | |
})/*.map { | |
val visitorModelTwo = it | |
if (visitorModelOne == null) { | |
//first time | |
visitorModelOne = visitorModelTwo | |
(visitorModelOne) | |
} else { | |
//check if anything has changed | |
if (visitorModelOne!!.size != visitorModelTwo.size) { | |
visitorModelOne = visitorModelTwo | |
(visitorModelOne) | |
} else { | |
val hasChanged = | |
visitorModelOne!!.mapIndexed { index: Int, visitorNotificationModel: VisitorModel -> | |
(visitorNotificationModel.isDeclined != visitorModelTwo[index].isDeclined) | |
} | |
if (hasChanged.contains(true)) { | |
visitorModelOne = visitorModelTwo | |
(visitorModelOne) | |
} else { | |
Observable.error<Throwable>(Throwable("1")) | |
} | |
} | |
visitorModelOne | |
} | |
}*/ | |
// return Observable.interval(5, TimeUnit.SECONDS) | |
// .flatMap { observable } | |
return observable.map { | |
it | |
} | |
} | |
override fun getHostResponseToVisitorCheckIn(getHostResponseRequestModel: GetHostResponseRequestModel): Observable<VisitorModel> { | |
return Observable.create {emitter -> | |
val visitorListQuery = ParseQuery<ParseObject>(getHostResponseRequestModel.tableName) | |
visitorListQuery.whereEqualTo("objectId", getHostResponseRequestModel.objectId) | |
visitorListQuery.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) | |
visitorListQuery.orderByDescending("createdAt") | |
visitorListQuery.firstInBackground | |
.continueWithTask(Continuation <ParseObject, Task<Void>>{task -> | |
if(task.isFaulted){ | |
emitter.onError(task.error) | |
return@Continuation null | |
}else { | |
val parseObject = task.result | |
val visitorId = parseObject.objectId | |
val date = parseObject.createdAt.time.getFormattedDate(context) | |
val fullName = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: "" | |
val organisation = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME) ?: "" | |
val address = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ADDRESS) ?: "" | |
val phone = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PHONE) ?: "" | |
val email = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_EMAIL) ?: "" | |
val purposeOfVisit = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PURPOSE) ?: "" | |
val items = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val itemsSerials = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val itemQuantities = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: "" | |
val signedNDAFile = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA) ?: "" | |
val imageUrl = | |
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL) ?: "" | |
val domain = parseObject.getString(EluziniParseDbConstants.Visitor.VISITED_DOMAIN) ?: "" | |
var visitedUserParse: Any? = null | |
val isDeclined = parseObject.get(EluziniParseDbConstants.Visitor.VISITOR_IS_DECLINED) | |
val isChekedIn = | |
parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN) | |
val dateString = parseObject.createdAt.toString().getDate() | |
val timeString = parseObject.createdAt.toString().getTime() | |
if (parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) != null && parseObject.getParseUser( | |
EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER | |
)!!.isDataAvailable | |
) { | |
visitedUserParse = | |
parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) | |
} | |
val visitorModel = VisitorModel( | |
parseObject, | |
visitorId, | |
date.toString(), | |
fullName, | |
organisation, | |
address, | |
phone, | |
email, | |
purposeOfVisit, | |
items, | |
itemsSerials, | |
itemQuantities, | |
signedNDAFile, | |
imageUrl, | |
domain, | |
visitedUserParse, | |
isDeclined, | |
dateString, | |
timeString, | |
isChekedIn | |
) | |
emitter.onNext(visitorModel) | |
return@Continuation null | |
} | |
}) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment