1 package io.extact.rms.client.console.ui.admin;
2
3 import static io.extact.rms.client.console.ui.ClientConstants.*;
4 import static io.extact.rms.client.console.ui.textio.TextIoUtils.*;
5
6 import lombok.RequiredArgsConstructor;
7
8 import io.extact.rms.client.api.RentalReservationClientApi;
9 import io.extact.rms.client.api.dto.RentalItemClientDto;
10 import io.extact.rms.client.api.dto.UserAccountClientDto;
11 import io.extact.rms.client.api.exception.BusinessFlowClientException;
12 import io.extact.rms.client.console.ui.ClientConstants;
13 import io.extact.rms.client.console.ui.TransitionMap.RmsScreen;
14 import io.extact.rms.client.console.ui.TransitionMap.Transition;
15 import io.extact.rms.client.console.ui.textio.RmsStringInputReader.PatternMessage;
16 import io.extact.rms.client.console.ui.textio.TextIoUtils;
17
18 @RequiredArgsConstructor
19 public class EntryRentalItemScreen implements RmsScreen {
20
21 private final RentalReservationClientApi clientApi;
22
23 @Override
24 public Transition play(UserAccountClientDto loginUser, boolean printHeader) {
25
26 if (printHeader) {
27 printScreenHeader(loginUser, "レンタル品登録画面");
28 }
29
30
31 println(ENTRY_RENTAL_ITEM_INFORMATION);
32
33
34 var serialNo = newStringInputReader()
35 .withMinLength(1)
36 .withMaxLength(15)
37 .withPattern(PatternMessage.SERIAL_NO)
38 .read("シリアル番号");
39 if (TextIoUtils.isBreak(serialNo)) {
40 return Transition.ADMIN_MAIN;
41 }
42
43
44 var itemName = newStringInputReader()
45 .withMaxLength(15)
46 .withDefaultValue("")
47 .read("品名(空白可)");
48
49 blankLine();
50
51
52 try {
53 var addItem = RentalItemClientDto.ofTransient(serialNo, itemName);
54 var newItem = clientApi.addRentalItem(addItem);
55 printResultInformation(newItem);
56 return Transition.ADMIN_MAIN;
57
58 } catch (BusinessFlowClientException e) {
59 printServerError(e);
60 return play(loginUser, false);
61
62 }
63 }
64
65 private void printResultInformation(RentalItemClientDto newItem) {
66 println("***** レンタル品登録結果 *****");
67 printf(ClientConstants.RENATL_ITEM_FORMAT.format(newItem));
68 blankLine();
69 waitPressEnter();
70 }
71 }