package com.app.hxqh.maxuser;

import psdi.app.signature.FldSigSiteID;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.mbo.MboValue;
import psdi.mbo.MboValueAdapter;
import psdi.server.MXServer;
import psdi.util.MXApplicationException;
import psdi.util.MXException;

import java.rmi.RemoteException;
import java.util.Date;

/**
 * 缺省信息-选择地点
 * edit 2024-5-20
 */
public class FldSigSite extends FldSigSiteID {

    public FldSigSite(MboValue mbv) throws MXException {
        super(mbv);
    }

    @Override
    public MboSetRemote getList() throws MXException, RemoteException {
        MboSetRemote set = super.getList();
        MboRemote mbo=getMboValue().getMbo();
        String siteid=mbo.getString("DEFSITE");
        String userid=mbo.getString("USERID");
        MboSetRemote personSet = MXServer.getMXServer().getMboSet("PERSON", MXServer.getMXServer().getSystemUserInfo());
        personSet.setWhere(" PERSONID='"+userid+"'");
        personSet.reset();
        MboRemote personMbo=personSet.getMbo(0);
        String qxdj=personMbo.getString("UDAUTGRADE");//权限等级
        //用户可自行更改缺省地点，导致应用默认地点错误。该字段需要进行权限控制，数据权限为level 3及level 4的不能更改为其他工厂
        if("Level 3".equalsIgnoreCase(qxdj) || "Level 4".equalsIgnoreCase(qxdj)){
            set.setWhere(" SITEID='"+siteid+"' ");
        }else{
            set.setWhere(" 1=1 ");
        }
        set.reset();
        return set;
    }

    public void action() throws MXException, RemoteException {
        super.action();
        MboRemote mbo=getMboValue().getMbo();
        String siteid=mbo.getString("DEFSITE");
        String userid=mbo.getString("USERID");
        MboSetRemote personSet = MXServer.getMXServer().getMboSet("PERSON", MXServer.getMXServer().getSystemUserInfo());
        personSet.setWhere(" PERSONID='"+userid+"'");
        personSet.reset();
        MboRemote personMbo=personSet.getMbo(0);
        if(null!=personMbo){
            personMbo.setValue("LOCATIONSITE", siteid,11L);
            String timezone="";
            if(!"MAXADMIN".equalsIgnoreCase(userid)){
                if("GF03".equalsIgnoreCase(siteid) || "GF08".equalsIgnoreCase(siteid)
                        || "GF02".equalsIgnoreCase(siteid) || "GF51".equalsIgnoreCase(siteid)
                        || "GH01".equalsIgnoreCase(siteid) || "SN51".equalsIgnoreCase(siteid)){
                    timezone="Universal";
                }else if("TF01".equalsIgnoreCase(siteid) || "TF51".equalsIgnoreCase(siteid)
                        || "KF61".equalsIgnoreCase(siteid) || "KF51".equalsIgnoreCase(siteid)
                        || "TZ01".equalsIgnoreCase(siteid)){
                    timezone="Africa/Nairobi";
                }
                personMbo.setValue("TIMEZONE", timezone, 2L);
            }
            personMbo.getThisMboSet().save();
        }

    }
}
