##### Coverage Report - jp.co.y_net.amm.page.OrgEntryDetailPage

Classes in this File | Line Coverage | Branch Coverage | Complexity

OrgEntryDetailPage

0% | 0/91

0% | 0/22

0.0;0

OrgEntryDetailPage$1

0% | 0/7

0% | 0/4

0.0;0

OrgEntryDetailPage$2

0% | 0/5

0% | 0/2

0.0;0

OrgEntryDetailPage$3

0% | 0/5

0% | 0/2

0.0;0

OrgEntryDetailPage$4

0% | 0/2

N/A | N/A

0.0;0

OrgEntryDetailPage$5

0% | 0/37

0% | 0/14

0.0;0

OrgEntryDetailPage$6

0% | 0/24

0% | 0/10

0.0;0

OrgEntryDetailPage$7

0% | 0/3

N/A | N/A

0.0;0

OrgEntryDetailPage$8

0% | 0/22

0% | 0/4

0.0;0

1

0

     package jp.co.y_net.amm.page;

2

3

     import java.util.List;

4

5

     import jp.co.y_net.amm.AppSession;

6

     import jp.co.y_net.amm.AppSession.LoginUser;

7

     import jp.co.y_net.amm.common.AppLogger;

8

     import jp.co.y_net.amm.common.AppSendMail;

9

     import jp.co.y_net.amm.common.AppSendMail.MailSetting;

10

     import jp.co.y_net.amm.common.AppStringUtils;

11

     import jp.co.y_net.amm.common.AppUtils;

12

     import jp.co.y_net.amm.common.ResourceReader;

13

     import jp.co.y_net.amm.dao.AppDef;

14

     import jp.co.y_net.amm.dao.Org;

15

     import jp.co.y_net.amm.dao.Usr;

16

17

     import org.apache.wicket.ajax.AjaxRequestTarget;

18

     import org.apache.wicket.markup.html.WebMarkupContainer;

19

     import org.apache.wicket.markup.html.basic.Label;

20

     import org.apache.wicket.markup.html.form.Button;

21

     import org.apache.wicket.markup.html.form.Form;

22

     import org.apache.wicket.markup.html.form.TextArea;

23

     import org.apache.wicket.markup.html.panel.FeedbackPanel;

24

     import org.apache.wicket.model.Model;

25

     import org.apache.wicket.model.PropertyModel;

26

     import org.apache.wicket.request.mapper.parameter.PageParameters;

27

28

     public class OrgEntryDetailPage extends CommonFrameA {

29

             private static final long serialVersionUID = 1L;

30

31

32

         /*

33

          * 画面入力値

34

          */

35

             public String noteValue;

36

             /*

37

              * 画面の状態

38

              */

39

0

             private boolean completeA = false;

40

0

             private boolean completeR = false;

41

0

             private boolean complete = false;

42

43

             /**

44

              * ログインチェック定義

45

              * @see jp.co.y_net.amm.page.AppPage#validateLogin()

46

              */

47

             @Override

48

             public boolean validateLogin() {

49

0

                 if(AppSession.get().isLogin()) {

50

0

                     if(AppSession.get().getLoginUser().getKind().equals(Usr.KIND_運営管理者)) {

51

0

                         return true;

52

                     }

53

                 }

54

0

                 return false;

55

             }

56

57

0

         public OrgEntryDetailPage(final PageParameters pageParams) {

58

59

             /* 共通戻るリンクの設置 */

60

0

             createCommonBackLinks();

61

62

             /* 画面固有の戻るボタンの設置 */

63

0

             createBackLink(OrgEntryListPage.class, "申請一覧");

64

65

             /* フィードバックパネルの設置 */

66

0

             createFeedbackPanel();

67

68

0

             final Form<Void> form  = new Form<Void>("form");

69

0

             form.setOutputMarkupId(true);

70

0

             add(form);

71

72

73

             /* 初期表示エラーチェック ----------------------------------------------------------------------------------- */

74

0

             form.setVisible(false); // Formはエラーチェックが完了するまで非表示とする。

75

76

0

             final LoginUser loginUser  = AppSession.get().getLoginUser();

77

0

             if(loginUser == null) {

78

0

                 error("ログイン情報が取得できません。");

79

0

                 return; // ----------中断

80

             }

81

0

             final Integer loginUserId = loginUser.getUsrid();

82

83

0

             String orgid = pageParams.get("orgid").toString();

84

0

             validItemNum(orgid, "パラメータorgid", 1, Integer.MAX_VALUE);

85

0

             if(hasInputError()) return; // ----------エラーがあれば中止

86

87

0

             Integer iOrgid = Integer.parseInt(orgid);

88

89

0

             Org cond = new Org();

90

0

             cond.setOrgid(iOrgid);

91

0

             List<Org> orgs = orgDao.get(cond);

92

0

             if(orgs.size() != 1) {

93

0

                 error("パラメータorgidが不正です。");

94

             }

95

96

0

             if(hasInputError()) return; // ----------エラーがあれば中止

97

98

0

             form.setVisible(true);

99

             /* Form内の設定 ----------------------------------------------------------------------------------------------*/

100

101

0

             final Org org = orgs.get(0);

102

103

             /* 状態に応じて初期表示を変更 */

104

0

             if(org.getStatus().equals(Org.STATUS_承認済み)) {

105

0

                 error("すでに承認されています。");

106

0

                 complete = true;

107

             }

108

0

             if(org.getStatus().equals(Org.STATUS_本登録済み)) {

109

0

                 error("すでに登録が完了しています。");

110

0

                 complete = true;

111

             }

112

0

             if(org.getStatus().equals(Org.STATUS_拒否済み)) {

113

0

                 error("すでに拒否されています。");

114

0

                 complete = true;

115

             }

116

117

118

             /* 完了メッセージ */

119

0

             Model<String> resultMessageModel = new Model<String>() {

120

                 @Override

121

                 public String getObject() {

122

0

                     if(completeA) {

123

0

                         return "承認しました。連絡先メールアドレスへ申請内容承認メールを送りました。";

124

                     }

125

0

                     if(completeR) {

126

0

                         return "拒否しました。連絡先メールアドレスへ申請内容拒否メールを送りました。";

127

                     }

128

0

                     return "";

129

                 }

130

             };

131

0

             final Label resutlMessage = new Label("resutlMessage", resultMessageModel);

132

0

             form.add(resutlMessage);

133

134

             /* 出力コンポーネントの設定 ----------------------------------------------------------------------------------*/

135

0

             form.add(new Label("kind", Model.of(org.getKind_Disp())));

136

0

             Label name = new Label("name", Model.of(org.getName())){

137

                 @Override

138

                 public boolean isVisible() {

139

0

                     if(org.isPersonalOrg()) { // 個人の場合は非表示

140

0

                         return false;

141

                     }

142

0

                     return true;

143

                 }

144

             };

145

0

             form.add(name);

146

0

             form.add(new Label("adminname", Model.of(org.getAdminname())));

147

0

             form.add(new Label("adminnamekana", Model.of(org.getAdminnamekana())));

148

0

             form.add(new Label("postnum", Model.of(org.getPostnum_Disp())));

149

0

             form.add(new Label("address", Model.of(org.getAddress())));

150

0

             form.add(new Label("telnum", Model.of(org.getTelnum())));

151

0

             form.add(new Label("mail", Model.of(org.getMail())));

152

153

0

             noteValue = org.getNote();

154

0

             TextArea<String> note = new TextArea<String>("note", new PropertyModel<String>(this, "noteValue"));

155

0

             form.add(note);

156

157

158

0

             Label thAdminname = new Label("thAdminname", new Model<String>(){

159

                 @Override

160

                 public String getObject() {

161

0

                     if(org.isPersonalOrg() == false) {

162

0

                         return "担当者";

163

                     }

164

0

                     return "氏名";

165

                 }

166

             }){

167

             };

168

0

             form.add(thAdminname);

169

170

0

             final Button btnSubmitA = new ConfirmAjaxButton("btnSubmitA"){

171

                 @Override

172

                 String getConfirmMessage() {

173

0

                     return "承認します";

174

                 }

175

                 @Override

176

                 boolean executeBefore() {

177

                     /* 入力値変換 */

178

                     // なし

179

180

                     /* 入力値チェック */

181

                     // なし

182

183

                     /*

184

                      *  この時点でもう一度メールアドレスのチェックが必要。

185

                      *  （申請中に別の申請が通過してユーザが作成されている可能性を考慮）

186

                      */

187

0

                     if(mailAddressCheck.existWithoutOrg(org.getAddress())) {

188

0

                         error("このメールアドレスは既に使用されています。");

189

                     }

190

191

0

                     if(hasInputError()) return false; // ここまででエラーチェック

192

193

0

                     return true;

194

                 }

195

                 @Override

196

                 void executeAfter(AjaxRequestTarget target) {

197

                     /* データアクセス 新規申請承認 */

198

199

0

                     org.setStatus(Org.STATUS_承認済み);

200

0

                     org.setApprovaldate(AppUtils.createNowLong());

201

0

                     orgDao.update(org, loginUserId); // 【更新実施】

202

203

0

                     Usr usr = new Usr();

204

0

                     usr.setLoginid(org.getMail());

205

0

                     usr.setName(org.getAdminname());

206

0

                     usr.setKind(Usr.KIND_機関管理者);

207

0

                     usr.setOrgid(org.getOrgid());

208

0

                     usr.setOrgrole(Usr.ROLE_管理者);

209

0

                     usr.setStoplogin(AppDef.FLASE);

210

0

                     usr.setStatus(Usr.STATUS_仮登録); // 仮登録

211

0

                     usr.setLoginerrorcount(0);

212

0

                     usrDao.add(usr, loginUserId); // 【更新実施】

213

214

                     /* 共通機能：パスワード登録チケット発行 からチケットを取得する（申請者のユーザIDをキーとする）*/

215

0

                     String random = passwordTicketManager.execute新規パスワード発行(usr.getUsrid());

216

217

                     /* 申請内容承認メール */

218

0

                     MailSetting setting = new MailSetting();

219

0

                     setting.setTemplate(ResourceReader.getText("message/mail.org.approval"));

220

0

                     setting.setMailTo(org.getMail());

221

0

                     setting.replace("機関名称", org.getName());

222

0

                     setting.replace("申請者氏名", org.getAdminname());

223

0

                     String 本登録URL = ResourceReader.getStringQuick("urlroot") + "entrypassword?value=" + random;

224

0

                     setting.replace("本登録URL", 本登録URL);

225

0

                     boolean sendmailrsult = AppSendMail.send(setting);

226

0

                     if(sendmailrsult == false) {

227

0

                         error("メールの送信に失敗しました。");

228

                     }

229

230

                     /* テスト自動化対応 */

231

0

                     if (AppLogger.isDebug()) {

232

                         //info("メールに記載したURL【" + 本登録URL + "】");

233

0

                         addDebugUrl(本登録URL);

234

                     }

235

236

237

                     /* 完了状態へ移行 */

238

0

                     completeA = true;

239

240

                     /* コンポーネント更新 */

241

0

                     target.add(form);

242

0

                 }

243

                 @Override

244

                 public boolean isVisible() {

245

                     /* 完了後の状態ならボタンを表示しない */

246

0

                     return completeA == false && completeR == false && complete== false;

247

                 }

248

             };

249

0

             form.add(btnSubmitA);

250

251

0

             final Button btnSubmitR = new ConfirmAjaxButton("btnSubmitR"){

252

                 @Override

253

                 String getConfirmMessage() {

254

0

                     return "拒否します";

255

                 }

256

                 @Override

257

                 boolean executeBefore() {

258

                     /* 入力値変換 */

259

0

                     noteValue = AppStringUtils.trim(noteValue);

260

261

                     /* 入力値チェック */

262

0

                     validItem(noteValue, "拒否理由", 1, 5000);

263

264

0

                     if(hasInputError()) return false; // ここまででエラーチェック

265

266

0

                     return true;

267

                 }

268

                 @Override

269

                 void executeAfter(AjaxRequestTarget target) {

270

                     /* データアクセス 新規機関申請拒否 */

271

0

                     org.setStatus(Org.STATUS_拒否済み);

272

0

                     org.setRejectdate(AppUtils.createNowLong());

273

0

                     org.setNote(noteValue);

274

0

                     orgDao.update(org, loginUserId); // 【更新実施】

275

276

277

                     /* 申請内容拒否メール */

278

0

                     MailSetting setting = new MailSetting();

279

0

                     setting.setTemplate(ResourceReader.getText("message/mail.org.reject"));

280

0

                     setting.setMailTo(org.getMail());

281

0

                     setting.replace("機関名称", org.getName());

282

0

                     setting.replace("申請者氏名", org.getAdminname());

283

0

                     setting.replace("否認理由", noteValue);

284

0

                     boolean sendmailrsult = AppSendMail.send(setting);

285

0

                     if(sendmailrsult == false) {

286

0

                         error("メールの送信に失敗しました。");

287

                     }

288

289

                     /* 完了状態へ移行 */

290

0

                     completeR = true;

291

292

                     /* コンポーネント更新 */

293

0

                     target.add(form);

294

0

                 }

295

                 @Override

296

                 public boolean isVisible() {

297

                     /* 完了後の状態ならボタンを表示しない */

298

0

                     return completeA == false && completeR == false && complete== false;

299

                 }

300

             };

301

0

             form.add(btnSubmitR);

302

303

             /*

304

              * 承認済みのときに表示される領域

305

              */

306

0

             WebMarkupContainer cntStatus1 = new WebMarkupContainer("cntStatus1") {

307

                 @Override

308

                 public boolean isVisible() {

309

0

                     return org.getStatus().equals(Org.STATUS_承認済み);

310

                 }

311

             };

312

0

             cntStatus1.setOutputMarkupId(true);

313

0

             cntStatus1.setOutputMarkupPlaceholderTag(true);

314

0

             form.add(cntStatus1);

315

316

317

318

     //        /* パスワードの有効期限 */

319

     //        Label pwtcktLabel = new Label("pwtckt", new Model<String>(){

320

     //            @Override

321

     //            public String getObject() {

322

     //                /* 仮登録されている代表者 */

323

     //                final Usr usrPreAdmin = 仮登録されている代表者(org);

324

     //                String ticket = "xxx";

325

     //                Pwtckt pwtckt = passwordTicketManager.get有効なチケット(usrPreAdmin.getUsrid());

326

     //                if(pwtckt != null) {

327

     //                    if(pwtckt.getTicketdate() != null) {

328

     //                        ticket = "パスワード受付の有効期限は "

329

     //                                + AppUtils.toStrYyyyMMdd_HHmmss(pwtckt.getTicketdate())

330

     //                                + " です。";

331

     //                    } else {

332

     //                        ticket = "パスワード受付の有効期限が取得できません。";

333

     //                    }

334

     //                } else {

335

     //                    ticket = "パスワード受付の有効期限が取得できません。";

336

     //                }

337

     //                return ticket;

338

     //            }

339

     //        });

340

     //        pwtcktLabel.setOutputMarkupPlaceholderTag(true);

341

     //        cntStatus1.add(pwtcktLabel);

342

343

             /* 承認メールを再送する ボタン */

344

0

             final Button btnSubmitStatus1 = new ConfirmAjaxButton("btnSubmitStatus1"){

345

                 @Override

346

                 String getConfirmMessage() {

347

0

                     return "承認メールを再送します。";

348

                 }

349

                 @Override

350

                 boolean executeBefore() {

351

                     /* 入力値変換 */

352

                     // なし

353

                     /* 入力値チェック */

354

                     // なし

355

0

                     return true;

356

                 }

357

                 @Override

358

                 void executeAfter(AjaxRequestTarget target) {

359

360

                     /* 共通機能：パスワード登録チケット発行 からチケットを取得する（申請者のユーザIDをキーとする）*/

361

0

                     final Usr usrPreAdmin = 組織の代表者(org);

362

0

                     String random = passwordTicketManager.execute新規パスワード発行(usrPreAdmin.getUsrid());

363

364

                     /* 申請内容承認メール */

365

0

                     MailSetting setting = new MailSetting();

366

0

                     setting.setTemplate(ResourceReader.getText("message/mail.org.approval"));

367

0

                     setting.setMailTo(org.getMail());

368

0

                     setting.replace("機関名称", org.getName());

369

0

                     setting.replace("申請者氏名", org.getAdminname());

370

0

                     String 本登録URL = ResourceReader.getStringQuick("urlroot") + "entrypassword?value=" + random;

371

0

                     setting.replace("本登録URL", 本登録URL);

372

0

                     boolean sendmailrsult = AppSendMail.send(setting);

373

0

                     if(sendmailrsult == false) {

374

0

                         error("メールの送信に失敗しました。");

375

                     }

376

377

                     /* テスト自動化対応 */

378

0

                     if (AppLogger.isDebug()) {

379

0

                         addDebugUrl(本登録URL);

380

                     }

381

382

                     /* メッセージ表示 */

383

0

                     info("パスワード受付の有効期限を更新して、メールを再送しました。");

384

385

                     /* コンポーネント更新 */

386

0

                     target.add(form);

387

388

0

                 }

389

                 @Override

390

                 public boolean isVisible() {

391

0

                     return org.getStatus().equals(Org.STATUS_承認済み);

392

                 }

393

             };

394

0

             btnSubmitStatus1.setOutputMarkupPlaceholderTag(true);

395

0

             cntStatus1.add(btnSubmitStatus1);

396

397

0

             FeedbackPanel fb = new FeedbackPanel("feedback");

398

0

             fb.setOutputMarkupPlaceholderTag(true);

399

0

             cntStatus1.add(fb);

400

401

402

             /* パスワード情報 */

403

0

             PasswordInfoPanel passwordInfoPanel = new PasswordInfoPanel("PasswordInfoPanel",

404

0

                     組織の代表者(org),

405

0

                     isSystemAdmin(),

406

0

                     true);

407

0

             form.add(passwordInfoPanel);

408

409

410

0

         }

411

0

         private Usr 組織の代表者(final Org org) {

412

0

             Usr usrPreAdminCnd = new Usr();

413

0

             if(Org.KIND_運営管理 == org.getKind()) { // 運営管理を考慮

414

0

                 usrPreAdminCnd.setKind(Usr.KIND_運営管理者);

415

0

             } else {

416

0

                 usrPreAdminCnd.setKind(Usr.KIND_機関管理者);

417

             }

418

0

             usrPreAdminCnd.setOrgid(org.getOrgid());

419

0

             usrPreAdminCnd.setOrgrole(Usr.ROLE_管理者);

420

0

             List<Usr> usrs = usrDao.get(usrPreAdminCnd);

421

0

             if(usrs.isEmpty()) {

422

                 //throw new RuntimeException("承認済み組織からユーザ情報が取得できませんでした。");

423

0

                 return null; // 「未処理」を考慮

424

             }

425

0

             final Usr usrPreAdmin = usrs.get(0);

426

0

             return usrPreAdmin;

427

         }

428

     }