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.

81 lines
2.7 KiB

package com.community.pocket.ui.main.ui.visitor.appointment;
import android.text.Editable;
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.ui.main.ui.share.SearchViewModel;
import com.community.pocket.util.Valid;
import com.community.pocket.util.ValidUtil;
import java.util.List;
import java.util.Map;
/**
* 管理访客UI数据
*/
class VisitorViewModel extends ViewModel implements SearchViewModel {
//访客预约表单校验信息
private MutableLiveData<VisitorFormState> visitorFormState = new MutableLiveData<>();
//访客预约请求结果
private MutableLiveData<VisitorResponse> visitorResponse = new MutableLiveData<>();
//检索预约人
private MutableLiveData<VisitorResponse<Map<String, List<String>>>> searchPeopleReq = new MutableLiveData<>();
//访客请求
private VisitorRequest visitorRequest;
VisitorViewModel(VisitorRequest visitorRequest) {
this.visitorRequest = visitorRequest;
}
MutableLiveData<VisitorFormState> getVisitorFormState() {
return visitorFormState;
}
MutableLiveData<VisitorResponse> getVisitorResponse() {
return visitorResponse;
}
MutableLiveData<VisitorResponse<Map<String, List<String>>>> getSearchPeopleReq() {
return searchPeopleReq;
}
//访客预约
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));
}
}
//检索预约人
private void searchPeople(String name) {
VisitorResponse<Map<String, List<String>>> result = visitorRequest.searchPeople(name);
searchPeopleReq.setValue(result);
}
//校验访客预约表单
void appointmentDataChanged(Editable appointment, Editable notes) {
if (!ValidUtil.usernamevalid(appointment.toString())) {
visitorFormState.setValue(new VisitorFormState(R.string.invalid_username, null));
} else if (!ValidUtil.notesValid(notes.toString())) {
visitorFormState.setValue(new VisitorFormState(null, R.string.invalid_notes));
} else {
visitorFormState.setValue(new VisitorFormState(true));
}
}
@Override
public void search(String content) {
searchPeople(content);
}
}