EntryUserScreen.java
package io.extact.rms.client.console.ui.admin;
import static io.extact.rms.client.console.ui.ClientConstants.*;
import static io.extact.rms.client.console.ui.textio.TextIoUtils.*;
import lombok.RequiredArgsConstructor;
import io.extact.rms.client.api.RentalReservationClientApi;
import io.extact.rms.client.api.dto.UserAccountClientDto;
import io.extact.rms.client.api.dto.UserAccountClientDto.ClientUserType;
import io.extact.rms.client.api.exception.BusinessFlowClientException;
import io.extact.rms.client.console.ui.TransitionMap.RmsScreen;
import io.extact.rms.client.console.ui.TransitionMap.Transition;
import io.extact.rms.client.console.ui.textio.RmsStringInputReader.PatternMessage;
import io.extact.rms.client.console.ui.textio.TextIoUtils;
@RequiredArgsConstructor
public class EntryUserScreen implements RmsScreen {
private final RentalReservationClientApi clientApi;
@Override
public Transition play(UserAccountClientDto loginUser, boolean printHeader) {
if (printHeader) {
printScreenHeader(loginUser, "ユーザ登録画面");
}
// 入力インフォメーションの表示
println(ENTRY_USER_INFORMATION);
// ログインIDの入力
var loginId = newStringInputReader()
.withMinLength(5)
.withMaxLength(15)
.withExcludeCheckString(SCREEN_BREAK_KEY)
.read("ログインID");
if (TextIoUtils.isBreak(loginId)) {
return Transition.ADMIN_MAIN;
}
// パスワードの入力
var password = newStringInputReader()
.withMinLength(5)
.withMaxLength(15)
.read("パスワード");
// ユーザ名の入力
var userName = newStringInputReader()
.withMinLength(1)
.read("ユーザ名");
// 電話番号の入力
var phoneNumber = newStringInputReader()
.withMaxLength(14)
.withPattern(PatternMessage.PHONE_NUMBER)
.withDefaultValue("")
.read("電話番号(省略可)");
// 連絡先の入力
var contact = newStringInputReader()
.withMaxLength(15)
.withDefaultValue("")
.read("連絡先(省略可)");
// 連絡先の入力
var userType = newEnumInputReader(ClientUserType.class)
.withDefaultValue(ClientUserType.MEMBER)
.read("権限");
// ユーザ登録の実行
try {
var addUserAccount = UserAccountClientDto.ofTransient(loginId, password, userName, phoneNumber, contact, userType);
var newUserAccount = clientApi.addUserAccount(addUserAccount);
printResultInformation(newUserAccount);
return Transition.ADMIN_MAIN;
} catch (BusinessFlowClientException e) {
printServerError(e);
return play(loginUser, false); // start over!!
}
}
private void printResultInformation(UserAccountClientDto newUserAccount) {
blankLine();
println("***** ユーザ登録結果 *****");
println("ユーザ番号:" + newUserAccount.getId());
println("ログインID:" + newUserAccount.getLoginId());
println("パスワード:" + newUserAccount.getPassword());
println("ユーザ名:" + newUserAccount.getUserName());
println("電話番号:" + newUserAccount.getPhoneNumber());
println("連絡先:" + newUserAccount.getContact());
println("権限:" + newUserAccount.getUserType().name());
blankLine();
waitPressEnter();
}
}