package jp.co.y_net.amm.api;

import java.util.List;

import jp.co.y_net.amm.dao.AppDef;
import jp.co.y_net.amm.dao.Org;
import jp.co.y_net.amm.dao.OrgDao;
import jp.co.y_net.amm.dao.Usr;
import jp.co.y_net.amm.dao.UsrDao;

import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;

public class ApiDatainitialize extends ApiPage {
    
    @SpringBean(name="usrDao")
    protected UsrDao usrDao;
    
    @SpringBean(name="orgDao")
    protected OrgDao orgDao;
    
    public ApiDatainitialize(PageParameters pageParams) {
        
         /* 主処理 */
        Result result = new Result();
        
        String msg = "";
        
        /* 初期管理者（スーパーユーザー）、初期組織（「運営管理」）のデータがなければ作成する。 */
        Org cndOrg = new Org();
        cndOrg.setKind(Org.KIND_運営管理);
        List<Org> listOrg = orgDao.get(cndOrg);
        Org org運営管理;
        if(listOrg.isEmpty()) {
            /* 組織「運営管理」が登録されていない */
            org運営管理 = new Org();
            org運営管理.setKind(Org.KIND_運営管理);
            org運営管理.setName("運営管理");
            org運営管理.setStatus(Org.STATUS_本登録済み);
            
            orgDao.add(org運営管理, AppDef.USERID_NONE); // データ登録
            
            msg += "組織「運営管理」を登録しました。";
            
        } else {
            org運営管理 = listOrg.get(0);
            
            msg += "組織「運営管理」は登録済みです。";
        }
        
        Usr cndUsr = new Usr();
        cndUsr.setKind(Usr.KIND_運営管理者);
        List<Usr> listUsr = usrDao.get(cndUsr);
        if(listUsr.isEmpty()) {
            Usr usr運営管理者 = Usr.create運営管理者代表(org運営管理);
            usrDao.add(usr運営管理者, AppDef.USERID_NONE); // データ登録
            
            msg += "運営管理者を登録しました。";
        } else {
            msg += "運営管理者は登録済みです。";
        }
        
        result.rmsg = msg;
            
        /* JSONのレスポンスを設定 */
        setResponse(result);
    }
    /**
     * 処理結果
     */
    public static class Result extends ApiResult{

    }
}
