package jp.co.y_net.amm.page;

import jp.co.y_net.amm.common.AppUtils;
import jp.co.y_net.amm.common.CalcHash;
import jp.co.y_net.amm.common.ResourceReader;
import jp.co.y_net.amm.dao.Pwtckt;
import jp.co.y_net.amm.dao.Usr;
import jp.co.y_net.amm.service.PasswordTicketManager;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.spring.injection.annot.SpringBean;

public class PasswordInfoPanel extends Panel {
    private static final long serialVersionUID = 1L;
    
    @SpringBean(name="passwordTicketManager")
    protected PasswordTicketManager passwordTicketManager;
    
    
    public PasswordInfoPanel(String id, Usr usr, boolean isSystemAdmin) {
        this(id, usr, isSystemAdmin, false);
    }
    public PasswordInfoPanel(String id, final Usr usr, boolean isSystemAdmin, boolean 有効期限を超過している場合も表示する) {
        super(id);
        
        /*
         * 運営管理者でなければパネルごと非表示
         */
        if(isSystemAdmin == false) {
            this.setVisible(false);
            return;
        }
        
        /* 対象ユーザが指定sれていなければパネルごと非表示 */
        if(usr == null) {
            this.setVisible(false);
            return;
        }
        
        
        
        Pwtckt pwtckt = passwordTicketManager.getユーザに紐づくチケット(usr.getUsrid());
        
        String パスワード登録用のURL = "";
        if(pwtckt != null) {
            パスワード登録用のURL = ResourceReader.getStringQuick("urlroot") + "entrypassword?value=" + pwtckt.getTicket();
        }
        
        String 有効期限 = "yyyy/MM/dd HH:mm:ss";
        if(pwtckt != null) {
            有効期限 = AppUtils.toStrYyyyMMdd_HHmmss(pwtckt.getTicketdate());
        }
        
        Long now = AppUtils.createNowLong();
        boolean is有効期限を超過している = false;
        if(pwtckt != null) {
            is有効期限を超過している = pwtckt.getTicketdate() < now; // 現在日付より過去のとき
        }
        
        
        
        /* パスワード登録用URLの発行状況の領域 */
        WebMarkupContainer pwtcktInfo = new WebMarkupContainer("pwtcktInfo");
        add(pwtcktInfo);
        
        if(有効期限を超過している場合も表示する) {
            pwtcktInfo.setVisible(pwtckt != null);
            
        } else {
            pwtcktInfo.setVisible(pwtckt != null && is有効期限を超過している == false);
        }
        
        
        /* URL */
        Label url = new Label("url", パスワード登録用のURL);
        pwtcktInfo.add(url);
        
        /* パスワードの有効期限 */
        Label pwtcktLabel = new Label("pwtckt", 有効期限);
        pwtcktInfo.add(pwtcktLabel);
        
        /* 「期限が切れています。」 */
        Label msg = new Label("msg", "有効期限が切れています。");
        msg.setVisible(is有効期限を超過している);
        pwtcktInfo.add(msg);
        
        
        /*
         * 管理者のDefaultパスワードチェック
         */
        Label adminInfo = new Label("adminInfo", "この管理者のパスワードは初期値のままです。"){
            @Override
            public boolean isVisible() {
                if(usr.getKind() == Usr.KIND_運営管理者) {
                    String defaultPasshash = "";
                    defaultPasshash = CalcHash.passowrdHash(Usr.管理者初期パスワード, usr.getLoginid()); // 初期パスワード
                    if(usr.getPwhash().equals(defaultPasshash)) {
                        return true;
                    } else {
                        return false;
                    }
                } else {
                    return false;
                }
            }
        };
        add(adminInfo);
    }


    

}
