55import jp .co .esm .miffy .entity .Asf4Member ;
66import jp .co .esm .miffy .repository .Asf4MemberRepository ;
77import lombok .RequiredArgsConstructor ;
8+ import org .springframework .scheduling .annotation .Scheduled ;
89import org .springframework .stereotype .Service ;
910
1011import java .util .List ;
1516@ RequiredArgsConstructor
1617public class HookService {
1718 public final Asf4MemberRepository asf4MemberRepository ;
19+ // private final HookComponent hookComponent;
20+
21+ private String notificationCleanerIsUnknown ; // 前回の掃除当番が行方不明の場合のエラーメッセージ(毎回リセット)
1822
1923 /**
2024 * テーブルのデータ一覧を返す。
@@ -36,28 +40,40 @@ private Asf4Member getLastCleaner() {
3640 }
3741
3842 /**
39- * 今日の掃除当番の人を特定する。
40- *
41- * @return 掃除当番をOptionalオブジェクトで返す。
43+ * 今日の掃除当番に交代する。
4244 */
43- private Asf4Member getCleaner () throws NoSuchElementException {
45+ @ Scheduled (cron = "0 0 9 * * 1-5" , zone = "Asia/Tokyo" )
46+ public void setNextCleaner () throws NoSuchElementException {
4447 Asf4Member lastCleaner = getLastCleaner ();
45- int cleanerId = lastCleaner .getId ();
46- Optional <Asf4Member > cleanerOptional = asf4MemberRepository .findTopBySkipFalseAndIdGreaterThanOrderByIdAsc (cleanerId );
47- if (cleanerOptional .isEmpty ()) {
48- cleanerOptional = asf4MemberRepository .findTopBySkipFalseOrderByIdAsc ();
49- }
5048 Asf4Member cleaner ;
51- if (cleanerOptional .isPresent ()) {
52- cleaner = cleanerOptional .get ();
53- cleaner .setCleaner (true );
54- asf4MemberRepository .saveAndFlush (cleaner );
55- lastCleaner .setCleaner (false );
56- asf4MemberRepository .saveAndFlush (lastCleaner );
57- } else {
58- cleaner = null ;
49+ try {
50+ int cleanerId = lastCleaner .getId ();
51+ Optional <Asf4Member > cleanerOptional = asf4MemberRepository .findTopBySkipFalseAndIdGreaterThanOrderByIdAsc (cleanerId );
52+ if (cleanerOptional .isEmpty ()) {
53+ cleanerOptional = asf4MemberRepository .findTopBySkipFalseOrderByIdAsc ();
54+ }
55+ if (cleanerOptional .isPresent ()) {
56+ cleaner = cleanerOptional .get ();
57+ cleaner .setCleaner (true );
58+ asf4MemberRepository .saveAndFlush (cleaner );
59+ lastCleaner .setCleaner (false );
60+ asf4MemberRepository .saveAndFlush (lastCleaner );
61+ }
62+ } catch (NoSuchElementException e ) {
63+ notificationCleanerIsUnknown = makeErrorMessage (e );
64+ // hookComponent.postToHook(); // ここで通知したい
65+ System .out .println (notificationCleanerIsUnknown ); // 通知の代わりの出力
66+ notificationCleanerIsUnknown = null ;
5967 }
60- return cleaner ;
68+ }
69+
70+ String makeErrorMessage (NoSuchElementException e ) {
71+ e .printStackTrace ();
72+ StringBuilder errorMessage = new StringBuilder ();
73+ errorMessage .append ("all " );
74+ errorMessage .append (e .getMessage ());
75+ errorMessage .append ("前回掃除した人は誰?(・x・)" );
76+ return errorMessage .toString ();
6177 }
6278
6379 /**
@@ -121,28 +137,15 @@ public String makeRequest(AJD date) {
121137 if (isHoliday (date )) {
122138 return null ;
123139 }
124- String mainMessage = makeMainMessage ();
125- // Asf4Member cleaner;
126- // try {
127- // cleaner = getCleaner();
128- // if (cleaner != null) {
129- // postIdobataId = cleaner.getIdobataId();
130- // mainMessage = "今日の掃除当番です";
131- // } else {
132- // postIdobataId = "here";
133- // mainMessage = "今日は誰もオフィスにいないみたい(・x・)";
134- // }
135- // } catch (NoSuchElementException e) {
136- // e.printStackTrace();
137- // postIdobataId = "all ";
138- // errorMessage = e.getMessage();
139- // mainMessage = "前回掃除した人は誰?(・x・)";
140- // }
141140 StringBuilder request = new StringBuilder ();
142141 request .append ("{" );
143142 request .append ("\" source\" :\" " );
144143 request .append ("@" );
145- request .append (mainMessage );
144+ if (notificationCleanerIsUnknown == null ) {
145+ request .append (makeMainMessage ());
146+ } else {
147+ request .append (notificationCleanerIsUnknown );
148+ }
146149 request .append ("\" " );
147150 request .append ("}" );
148151 return request .toString ();
0 commit comments