You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.9 KiB
88 lines
2.9 KiB
package com.community.pocket.ui.main.ui.visitor;
|
|
|
|
import androidx.lifecycle.MutableLiveData;
|
|
import androidx.lifecycle.ViewModel;
|
|
|
|
import com.community.pocket.R;
|
|
import com.community.pocket.data.main.visitor.VisitorRequest;
|
|
import com.community.pocket.util.Valid;
|
|
import com.community.pocket.util.ValidUtil;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 管理访客UI数据
|
|
*/
|
|
class VisitorViewModel extends ViewModel {
|
|
|
|
//访客预约表单校验信息
|
|
private MutableLiveData<VisitorFormState> visitorFormState = new MutableLiveData<>();
|
|
|
|
//访客预约请求结果
|
|
private MutableLiveData<VisitorResponse> visitorResponse = new MutableLiveData<>();
|
|
|
|
//检索预约人
|
|
private MutableLiveData<VisitorResponse<List<String>>> searchPeopleReq = new MutableLiveData<>();
|
|
|
|
//检索预约人可预约时间
|
|
private MutableLiveData<VisitorResponse<List<String>>> searchTimeReq = new MutableLiveData<>();
|
|
|
|
//访客请求
|
|
private VisitorRequest visitorRequest;
|
|
|
|
VisitorViewModel(VisitorRequest visitorRequest) {
|
|
this.visitorRequest = visitorRequest;
|
|
}
|
|
|
|
MutableLiveData<VisitorFormState> getVisitorFormState() {
|
|
return visitorFormState;
|
|
}
|
|
|
|
MutableLiveData<VisitorResponse> getVisitorResponse() {
|
|
return visitorResponse;
|
|
}
|
|
|
|
MutableLiveData<VisitorResponse<List<String>>> getSearchPeopleReq() {
|
|
return searchPeopleReq;
|
|
}
|
|
|
|
MutableLiveData<VisitorResponse<List<String>>> getSearchTimeReq() {
|
|
return searchTimeReq;
|
|
}
|
|
|
|
//访客预约
|
|
void appointment(String appointment, String chooseTime, String notes) {
|
|
Valid valid = visitorRequest.appointment(appointment, chooseTime, notes);
|
|
if (valid == Valid.ok) {
|
|
visitorResponse.setValue(new VisitorResponse().setSuccess(R.string.visitor_appointment_ok));
|
|
} else {
|
|
visitorResponse.setValue(new VisitorResponse().setError(R.string.visitor_appointment_fail));
|
|
}
|
|
}
|
|
|
|
//检索预约人
|
|
void searchPeople(String name) {
|
|
VisitorResponse<List<String>> result = visitorRequest.searchPeople(name);
|
|
searchPeopleReq.setValue(result);
|
|
}
|
|
|
|
//检索预约人时间
|
|
void searchTime(String name) {
|
|
VisitorResponse<List<String>> result = visitorRequest.searchTime(name);
|
|
searchTimeReq.setValue(result);
|
|
}
|
|
|
|
|
|
//校验访客预约表单
|
|
void appointmentDataChanged(String appointment, String chooseTime, String notes) {
|
|
if (!ValidUtil.usernamevalid(appointment)) {
|
|
visitorFormState.setValue(new VisitorFormState(R.string.invalid_username, null, null));
|
|
} else if (!ValidUtil.timeValid(chooseTime)) {
|
|
visitorFormState.setValue(new VisitorFormState(null, R.string.invalid_time, null));
|
|
} else if (!ValidUtil.notesValid(notes)) {
|
|
visitorFormState.setValue(new VisitorFormState(null, null, R.string.notes));
|
|
} else {
|
|
visitorFormState.setValue(new VisitorFormState(true));
|
|
}
|
|
}
|
|
}
|
|
|