package dolgozó2;
/**
 * @author Fenyvesi Tibor
 */
public class Dolgozó2 {
    // osztály-inicializáló blokk
    static {
        System.out.println("Osztály-inicializálás!");
    }

    // példány-inicializáló blokk
    {
        System.out.println("Példány-inicializálás! (" + létszám +")");
    }

    private static int minimálbér = 73500;
    private static int létszám;

    String név;
    int születési_év;
    String munkakör;
    int fizetés;
    boolean adójóváírás;

    // osztálymetódus
    static int min_bér_emelés(int százalék) {
        return (int)minimálbér * százalék / 100;
    }

    // lekérdező metódusok
    public String  getNév()          { return név; }
    public int     getSzületési_év() { return születési_év; }
    public String  getMunkakör()     { return munkakör; }
    public int     getFizetés()      { return fizetés; }
    public boolean isAdójóváírás()   { return adójóváírás; }

    // beállító metódusok
    public void setNév(String név)                  { this.név = név; }
    public void setSzületési_év(int születési_év)   { this.születési_év = születési_év; }
    public void setMunkakör(String munkakör)        { this.munkakör = munkakör; }
    public void setFizetés (int fizetés)            { this.fizetés = fizetés; }
    public void setAdójóváírás(boolean adójóváírás) { this.adójóváírás = adójóváírás; }

    public Dolgozó2() {
    }

    public Dolgozó2(String név, int születési_év, String munkakör, int fizetés, boolean adójóváírás) {
        this.név = név;
        this.születési_év = születési_év;
        this.munkakör = munkakör;
        this.fizetés = fizetés;
        this.adójóváírás = adójóváírás;
        létszám++;
    }

    public Dolgozó2(String név, int születési_év, String munkakör) {
//        this.név = név;
//        this.születési_év = születési_év;
//        this.munkakör = munkakör;
//        fizetés = minimálbér;
//        adójóváírás = true;
//        létszám++;
        // tömörebb megoldás
        this(név, születési_év, munkakör, minimálbér, true);
    }

    @Override
    public String toString() {
        return "Név:          " + név + System.getProperty("line.separator") +
               "Születési év: " + születési_év + System.getProperty("line.separator") +
               "Munkakör:     " + munkakör + System.getProperty("line.separator") +
               "Fizetés:      " + fizetés + " Ft" + System.getProperty("line.separator") +
               "Adójóváírás:  " + (adójóváírás ? "jár" : "nem jár");
    }

    private void FizEmel() {
        fizetés += 10000; }

    private void FizEmel(int százalék) {
        fizetés += (int)(fizetés * százalék / 100); }

    private void FizEmel2() {
        fizetés += (int)(minimálbér / 10); }

    private void FizEmel2(int összeg) {
        fizetés += összeg; }

    private int nettó(int fizetés) {
        return (int)this.fizetés * 55 / 100;
    }

    public static void main(String[] args) {
        // 11.6.3. feladat
        Dolgozó2 d1 = new Dolgozó2("Kovács Péter",   1966, "igazgató", 500000, false);
        Dolgozó2 d2 = new Dolgozó2("Nagy Árpád",     1954, "portás",   100000, true);
        Dolgozó2 d3 = new Dolgozó2("Kiss P. Eszter", 1980, "főelőadó", 250000, false);

        System.out.println(d1);
        System.out.println(); // üres sor a tagoláshoz
        System.out.println(d2);
        System.out.println(); // üres sor a tagoláshoz
        System.out.println(d3);

        // 11.6.4. feladat
        Dolgozó2 d4 = new Dolgozó2("Soós Elemér", 1990, "gyakornok");
        System.out.println(d4);

        // 12.8.1. feladat
        System.out.println("A dolgozók száma: " + létszám + " fő");

        // 12.8.2. feladat
        d1.FizEmel();       // 1. típusú
        d2.FizEmel(15);     // 2. típusú
        d3.FizEmel2();      // 3. típusú
        d4.FizEmel2(5000);  // 4. típusú

        System.out.println(d1.név + ": " + d1.fizetés + " Ft");
        System.out.println(d2.név + ": " + d2.fizetés + " Ft");
        System.out.println(d3.név + ": " + d3.fizetés + " Ft");
        System.out.println(d4.név + ": " + d4.fizetés + " Ft");
        System.out.println(); // üres sor a tagoláshoz

        int átlagfizetés = 0;
        átlagfizetés += d1.fizetés;
        átlagfizetés += d2.fizetés;
        átlagfizetés += d3.fizetés;
        átlagfizetés += d4.fizetés;

        átlagfizetés = (int)átlagfizetés/létszám;
        System.out.println("Átlagfizetés: " + átlagfizetés + " Ft");
        System.out.println();

        // 12.8.3. feladat
        Dolgozó2 d5 = new Dolgozó2();
        System.out.println(d5);
        System.out.println();

        d5.név = "Molnár Attila";
        d5.születési_év = 1985;
        d5.munkakör = d4.munkakör;
        d5.fizetés = d4.fizetés;
        d5.adójóváírás = d4.adójóváírás;
        System.out.println(d5);
        System.out.println();

        System.out.println(d5.név + " nettó fizetése: "
                + d5.nettó(d5.fizetés) + " Ft");
        System.out.println();
        
        // 12.8.4. feladat
        System.out.println("Az eddigi minimálbér: " + minimálbér + " Ft");
        minimálbér += min_bér_emelés(10);
        System.out.println("Az új minimálbér: " + minimálbér + " Ft");
    }
}
