/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sikd.ikonsol.ctrl;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import sikd.ikonsol.ejb.session.AkunEliminasiEjbHome;
import sikd.ikonsol.ejb.session.HeaderResiprokalEjbHome;
import sikd.ikonsol.ejb.session.JenisBasEjbHome;
import sikd.ikonsol.ejb.session.JenisLaporanEjbHome;
import sikd.ikonsol.ejb.session.JenisTransferEjbHome;
import sikd.ikonsol.ejb.session.KategoriPemdaEjbHome;
import sikd.ikonsol.ejb.session.PeriodeEjbHome;
import sikd.ikonsol.ejb.session.RefPemdaEjbHome;
import sikd.ikonsol.model.AkunEliminasi;
import sikd.ikonsol.model.HeaderResiprokal;
import sikd.ikonsol.model.JenisBas;
import sikd.ikonsol.model.JenisLaporan;
import sikd.ikonsol.model.JenisTransfer;
import sikd.ikonsol.model.KategoriPemda;
import sikd.ikonsol.model.Periode;
import sikd.ikonsol.model.ReferensiPemda;
import sikd.ikonsol.model.ReferensiWilayah;

/**
 *
 * @author Imam Bhoim
 */
@ViewScoped
@Named(value = "akunEliminasiBeanCtrl")
public class AkunEliminasiBeanCtrl implements Serializable {

    AkunEliminasi akel;
    AkunEliminasi obj;

    private List<AkunEliminasi> list, listkode;
    private List<ReferensiPemda> listProv;
    private List<ReferensiWilayah> listDataWilayah;

    private List<JenisBas> listjbas;
    private List<JenisLaporan> listjlaporan;
    private List<Periode> listperiode;

    private List<AkunEliminasi> listNasional;
    private List<AkunEliminasi> listWilayah;
    private List<AkunEliminasi> listProvinsi;

    private List<KategoriPemda> listkatpemda;

    private List<JenisTransfer> listjtransfer;

    private int idbas = 0;
    private int tahun;
    private int idjnslaporan;
    private String kdPeriode;
    private String kdPemda;
    private String kdWilayah;

    private String kdp;

    HeaderResiprokal hd;
    JenisBas jb;
    ReferensiPemda rp;
    JenisLaporan jl;

    @EJB
    AkunEliminasiEjbHome akeliminasiEjbHome;

    @EJB
    JenisBasEjbHome jenisBasEjbHome;

    @EJB
    JenisLaporanEjbHome jenisLaporanEjbHome;

    @EJB
    PeriodeEjbHome periodeBasEjbHome;

    @EJB
    RefPemdaEjbHome pemdaEjbHome;

    @EJB
    KategoriPemdaEjbHome katPemdaEjbHome;

    @EJB
    HeaderResiprokalEjbHome headerResiprokalEjbHome;

    @EJB
    JenisTransferEjbHome jenisTransferEjbHome;

    @PostConstruct
    public void init() {

        list = akeliminasiEjbHome.findAllByTahunBasJenisLap(tahun, idbas, idjnslaporan, kdPeriode);

        listjbas = jenisBasEjbHome.findAllAktif();

        listjlaporan = jenisLaporanEjbHome.findAll();

        listperiode = periodeBasEjbHome.findAllAktif();

        listjtransfer = jenisTransferEjbHome.findAll();

        try {
            listNasional = akeliminasiEjbHome.findByListNasional(kdPeriode, idbas, idjnslaporan, tahun);

        } catch (Exception e) {
            System.out.println(e);
        }

        try {
            listProvinsi = akeliminasiEjbHome.findByListProv(kdPeriode, idbas, idjnslaporan, tahun, kdPemda);

        } catch (Exception e) {
            System.out.print(e);
        }

        try {
            listWilayah = akeliminasiEjbHome.findByListWilayah(kdPeriode, idbas, idjnslaporan, tahun, kdWilayah);

        } catch (Exception e) {
            System.out.print(e);
        }

        listProv = pemdaEjbHome.findAllProvinsi("__.00");

        listDataWilayah = pemdaEjbHome.findAllWilayah();

    }

    public void add() {

        //  jbas = jbasEjbHome.createNew();
                akel = akeliminasiEjbHome.createNew();
    }

    public String saveProses() {

        // simpan
        akeliminasiEjbHome.saveProses(akel);

        list = akeliminasiEjbHome.selectCompare();

        //this.list = service.findAll();
        return "index?faces-redirect=true";
    }

    public void reload() {

        list = akeliminasiEjbHome.findAllByTahunBasJenisLap(tahun, idbas, idjnslaporan, kdPeriode);

    }

    public void reloadLaporanProv() {

        try {
            listProvinsi = akeliminasiEjbHome.findByListProv(kdPeriode, idbas, idjnslaporan, tahun, kdPemda);
        } catch (Exception r) {
            r.printStackTrace();
        }

    }

    public void reloadLaporanWilayah() {

        try {
            listWilayah = akeliminasiEjbHome.findByListWilayah(kdPeriode, idbas, idjnslaporan, tahun, kdWilayah);
        } catch (Exception r) {
            r.printStackTrace();
        }

    }

    public void reloadLaporan() {

        try {
            listNasional = akeliminasiEjbHome.findByListNasional(kdPeriode, idbas, idjnslaporan, tahun);
        } catch (Exception c) {
            System.out.println("lnlistNasional.siec()" + listNasional.size());
        }

        this.getSumNilai();
        this.getSumEliminasi();
    }

    public String refNama1(int kode1, int bast) {
        String name = akeliminasiEjbHome.selectRefAkun1("1", 1).getNamaakun();
        return name;
    }

    public String refNama2(int kode1, int kode2, int bast) {
        String name = akeliminasiEjbHome.selectRefAkun2(String.valueOf(kode1), String.valueOf(kode2), bast).getNamaakun();
        return name;
    }

    public String refNama3(int kode1, int kode2, int kode3, int bast) {
        String name = akeliminasiEjbHome.selectRefAkun3(String.valueOf(kode1), String.valueOf(kode2), String.valueOf(kode3), bast).getNamaakun();
        return name;
    }

    public String getSumNilai() {

        double total = 0;
        listNasional = akeliminasiEjbHome.findByListNasional(kdPeriode, idbas, idjnslaporan, tahun);

        for (AkunEliminasi obj : list) {

            total += obj.getNilai();

        }

        return new DecimalFormat("###,###.###").format(total);

    }

    public String getSumEliminasi() {

        double total = 0;
        listNasional = akeliminasiEjbHome.findByListNasional(kdPeriode, idbas, idjnslaporan, tahun);

        for (AkunEliminasi obj : list) {

            total += obj.getNilaieliminasi();

            System.out.println("ttl " + total);
        }
        return new DecimalFormat("###,###.###").format(total);
    }

    public void listkode(String kode, int id) {

             listkode = akeliminasiEjbHome.findByKodeProvinsi(kode, id);

        jb = jenisBasEjbHome.findByID(idbas);
        hd = headerResiprokalEjbHome.findByID(id);
        
        rp = pemdaEjbHome.findByKodeId(kode);
        

        jl = jenisLaporanEjbHome.findByID(idjnslaporan);

        kdp = kode;

    }

    public ArrayList<Integer> listTahun() {

        ArrayList<Integer> numbers = new ArrayList<Integer>();
        for (int years = 2015; years <= Calendar.getInstance().get(Calendar.YEAR); years++) {
            numbers.add(years);
        }
        return (numbers);
    }

    public AkunEliminasi getAkel() {
        return akel;
    }

    public void setAkel(AkunEliminasi akel) {
        this.akel = akel;
    }

    public AkunEliminasi getObj() {
        return obj;
    }

    public void setObj(AkunEliminasi obj) {
        this.obj = obj;
    }

    public List<AkunEliminasi> getList() {
        return list;
    }

    public void setList(List<AkunEliminasi> list) {
        this.list = list;
    }

    public List<JenisBas> getListjbas() {
        return listjbas;
    }

    public void setListjbas(List<JenisBas> listjbas) {
        this.listjbas = listjbas;
    }

    public List<JenisLaporan> getListjlaporan() {
        return listjlaporan;
    }

    public void setListjlaporan(List<JenisLaporan> listjlaporan) {
        this.listjlaporan = listjlaporan;
    }

    public int getIdbas() {
        return idbas;
    }

    public void setIdbas(int idbas) {
        this.idbas = idbas;
    }

    public int getTahun() {
        return tahun;
    }

    public void setTahun(int tahun) {
        this.tahun = tahun;
    }

    public int getIdjnslaporan() {
        return idjnslaporan;
    }

    public void setIdjnslaporan(int idjnslaporan) {
        this.idjnslaporan = idjnslaporan;
    }

    public AkunEliminasiEjbHome getAkeliminasiEjbHome() {
        return akeliminasiEjbHome;
    }

    public void setAkeliminasiEjbHome(AkunEliminasiEjbHome akeliminasiEjbHome) {
        this.akeliminasiEjbHome = akeliminasiEjbHome;
    }

    public JenisBasEjbHome getJenisBasEjbHome() {
        return jenisBasEjbHome;
    }

    public void setJenisBasEjbHome(JenisBasEjbHome jenisBasEjbHome) {
        this.jenisBasEjbHome = jenisBasEjbHome;
    }

    public JenisLaporanEjbHome getJenisLaporanEjbHome() {
        return jenisLaporanEjbHome;
    }

    public void setJenisLaporanEjbHome(JenisLaporanEjbHome jenisLaporanEjbHome) {
        this.jenisLaporanEjbHome = jenisLaporanEjbHome;
    }

    public List<AkunEliminasi> getListkode() {
        return listkode;
    }

    public void setListkode(List<AkunEliminasi> listkode) {
        this.listkode = listkode;
    }

    public List<Periode> getListperiode() {
        return listperiode;
    }

    public void setListperiode(List<Periode> listperiode) {
        this.listperiode = listperiode;
    }

    public List<AkunEliminasi> getListNasional() {
        return listNasional;
    }

    public void setListNasional(List<AkunEliminasi> listProv) {
        this.listNasional = listNasional;
    }

    public List<AkunEliminasi> getListWilayah() {
        return listWilayah;
    }

    public void setListWilayah(List<AkunEliminasi> listWilayah) {
        this.listWilayah = listWilayah;
    }

    public List<AkunEliminasi> getListProvinsi() {
        return listProvinsi;
    }

    public void setListProvinsi(List<AkunEliminasi> listProvinsi) {
        this.listProvinsi = listProvinsi;
    }

    public String getKdPeriode() {
        return kdPeriode;
    }

    public void setKdPeriode(String kdPeriode) {
        this.kdPeriode = kdPeriode;
    }

    public List<ReferensiPemda> getListProv() {
        return listProv;
    }

    public void setListProv(List<ReferensiPemda> listProv) {
        this.listProv = listProv;
    }

    public String getKdPemda() {
        return kdPemda;
    }

    public void setKdPemda(String kdPemda) {
        this.kdPemda = kdPemda;
    }

    public List<ReferensiWilayah> getListDataWilayah() {
        return listDataWilayah;
    }

    public void setListDataWilayah(List<ReferensiWilayah> listDataWilayah) {
        this.listDataWilayah = listDataWilayah;
    }

    public String getKdWilayah() {
        return kdWilayah;
    }

    public void setKdWilayah(String kdWilayah) {
        this.kdWilayah = kdWilayah;
    }

    public List<KategoriPemda> getListkatpemda() {
        return listkatpemda;
    }

    public void setListkatpemda(List<KategoriPemda> listkatpemda) {
        this.listkatpemda = listkatpemda;
    }

    public List<JenisTransfer> getListjtransfer() {
        return listjtransfer;
    }

    public void setListjtransfer(List<JenisTransfer> listjtransfer) {
        this.listjtransfer = listjtransfer;
    }

    public String getKdp() {
        return kdp;
    }

    public void setKdp(String kdp) {
        this.kdp = kdp;
    }

    public HeaderResiprokal getHd() {
        return hd;
    }

    public void setHd(HeaderResiprokal hd) {
        this.hd = hd;
    }

    public JenisBas getJb() {
        return jb;
    }

    public void setJb(JenisBas jb) {
        this.jb = jb;
    }

    public ReferensiPemda getRp() {
        return rp;
    }

    public void setRp(ReferensiPemda rp) {
        this.rp = rp;
    }

    public JenisLaporan getJl() {
        return jl;
    }

    public void setJl(JenisLaporan jl) {
        this.jl = jl;
    }

    
}
