package sikd.sikd5.ctrl.template;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.naming.Context;

import sikd.sikd5.security.LoginMB;
import sikd.sikd5.sikd5bean.tabel.Pemda;
import sikd.sikd5.sikd5bean.tabel.TahunAnggaran;
import sikd.sikd5.sikd5bean.util.ServerUtil;
import sikd.sikd5.sikd5bean.util.SikdSessionUtil;
import sikd.sikd5.sikd5ejb.session.SettingsSessionBeanRemote;
import sikd.sikd5.sikd5ejb.session.UploadFileSessionBeanRemote;
import sikd.sikd5.sikd5ejb.session.login.LoginSessionBeanRemote;

/**
 * @author : agus
 * @tanggal : Jan 11, 2019
 */

@Named
@SessionScoped
public class TahunPemdaFilter implements Serializable {
	String idComboYear = "cbYear";
	TahunAnggaran selectedYear = new TahunAnggaran();
	TahunAnggaran yearNull = new TahunAnggaran();
	boolean editMode = false;
	List<TahunAnggaran> tahuns;
	String updateYear = "cbPemda";
	String idPanelYear = "pnTahun";
	boolean viewYear = true;

	String idComboPemda = "cbPemda";
	Pemda selectedPemda = new Pemda();
	Pemda pemdaNull = new Pemda();
	List<Pemda> pemdas = new ArrayList<Pemda>();
	String updatePemda = "panelrinci";
	String idPanelPemda = "pnPemda";
	boolean viewPemda = true;

	String updateRefresh = "panelrinci";

	@Inject 
//	@ManagedProperty(value = "#{loginMB}")
	LoginMB loginMB;
	SettingsSessionBeanRemote settingsSes;
	LoginSessionBeanRemote sessionLogin;
	String blueSubTitle = "";

	@PostConstruct
	public void init() throws Exception {
		Context ctxOffice = ServerUtil.getOfficeContextV3();
		SettingsSessionBeanRemote settingsSes = (SettingsSessionBeanRemote) ctxOffice
				.lookup(SikdSessionUtil.SETTINGS_SESSION);
		sessionLogin = (LoginSessionBeanRemote) ctxOffice
				.lookup(SikdSessionUtil.LOGIN_SESSION);
		tahuns = settingsSes.getTahuns();
	}

	public void onYearChange() {
		try {
			pemdas.clear();
//			System.out.println("loginmb");
//			System.out.println(loginMB);
//			System.out.println("selectedYear");
//			System.out.println(selectedYear);
			List<Pemda> pemdaTh = loginMB.getPemdaByTahuns(selectedYear.getTahun());
			List<Pemda> pemdaWil = new ArrayList<Pemda>();
			if (loginMB.getTuserAccount().getWilayah() != null) {
				if (loginMB.getTuserAccount().getWilayah().getPemdas() != null) {
					pemdaWil = loginMB.getTuserAccount().getWilayah().getPemdas();
				}
			}
			if (loginMB.getTuserAccount().getPemda() != null) {
				boolean ketemu = false;
				for (Pemda pemda : pemdaWil) {
					if (pemda.getKodeSatker().equals(loginMB.getTuserAccount().getPemda().getKodeSatker())) {
						ketemu = true;
						break;
					}
				}
				if (!ketemu) {
					pemdaWil.add(loginMB.getTuserAccount().getPemda());
				}
			}
			for (Pemda pemdaW : pemdaWil) {
				for (Pemda pemdaT : pemdaTh) {
					if (pemdaW.getKodeSatker().equals(pemdaT.getKodeSatker())) {
						pemdas.add(pemdaW);
						break;
					}
				}
			}
		} catch (

		Exception e) {
			e.printStackTrace();
		}
	}

	public void onPemdaChange() {
		if (selectedYear != null && selectedYear.getTahun() > 0) {
			blueSubTitle = "TAHUN ANGGARAN " + selectedYear.getTahun();
		}
	}

	public void onRefresh() {
//		onPemdaChange();
	}

	public TahunAnggaran getSelectedYear() {
		return selectedYear;
	}

	public void setSelectedYear(TahunAnggaran selectedYear) {
		this.selectedYear = selectedYear;
	}

	public TahunAnggaran getYearNull() {
		return yearNull;
	}

	public void setYearNull(TahunAnggaran yearNull) {
		this.yearNull = yearNull;
	}

	public boolean isEditMode() {
		return editMode;
	}

	public void setEditMode(boolean editMode) {
		this.editMode = editMode;
	}

	public List<TahunAnggaran> getTahuns() {
		return tahuns;
	}

	public void setTahuns(List<TahunAnggaran> tahuns) {
		this.tahuns = tahuns;
	}

	public String getUpdateYear() {
		return updateYear;
	}

	public void setUpdateYear(String updateYear) {
		this.updateYear = updateYear;
	}

	public boolean isViewYear() {
		return viewYear;
	}

	public void setViewYear(boolean viewYear) {
		this.viewYear = viewYear;
	}

	public Pemda getSelectedPemda() {
		return selectedPemda;
	}

	public void setSelectedPemda(Pemda selectedPemda) {
		this.selectedPemda = selectedPemda;
	}

	public Pemda getPemdaNull() {
		return pemdaNull;
	}

	public void setPemdaNull(Pemda pemdaNull) {
		this.pemdaNull = pemdaNull;
	}

	public List<Pemda> getPemdas() {
		return pemdas;
	}

	public void setPemdas(List<Pemda> pemdas) {
		this.pemdas = pemdas;
	}

	public String getUpdatePemda() {
		return updatePemda;
	}

	public void setUpdatePemda(String updatePemda) {
		this.updatePemda = updatePemda;
	}

	public boolean isViewPemda() {
		return viewPemda;
	}

	public void setViewPemda(boolean viewPemda) {
		this.viewPemda = viewPemda;
	}

	public LoginMB getLoginMB() {
		return loginMB;
	}

	public void setLoginMB(LoginMB loginMB) {
		this.loginMB = loginMB;
	}

	public SettingsSessionBeanRemote getSettingsSes() {
		return settingsSes;
	}

	public void setSettingsSes(SettingsSessionBeanRemote settingsSes) {
		this.settingsSes = settingsSes;
	}

	public LoginSessionBeanRemote getSessionLogin() {
		return sessionLogin;
	}

	public void setSessionLogin(LoginSessionBeanRemote sessionLogin) {
		this.sessionLogin = sessionLogin;
	}

	public String getIdComboYear() {
		return idComboYear;
	}

	public String getIdPanelYear() {
		return idPanelYear;
	}

	public String getIdComboPemda() {
		return idComboPemda;
	}

	public String getIdPanelPemda() {
		return idPanelPemda;
	}

	public String getBlueSubTitle() {
		return blueSubTitle;
	}

	public String getUpdateRefresh() {
		return updateRefresh;
	}

}
