controllers.WniosekController.java Source code

Java tutorial

Introduction

Here is the source code for controllers.WniosekController.java

Source

    /*
     * 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 controllers;

    import hibernate.connection.factory.ConnectionFactory;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.Serializable;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import javax.faces.context.FacesContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import klasy_pomocnicze.NawigacjaZatwierdzanieWnioskow;
    import models.Przedmiot_zamowienia;
    import models.Przedmiot_zamowienia_item;
    import models.Users;
    import models.Uwagi;
    import models.Wniosek;
    import org.hibernate.Criteria;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import static org.hibernate.annotations.common.util.impl.LoggerFactory.logger;
    import org.hibernate.criterion.Restrictions;
    import static org.hibernate.internal.CoreLogging.logger;
    import static org.hibernate.internal.CoreLogging.logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.messaging.Message;
    import org.springframework.messaging.support.MessageBuilder;
    import org.springframework.security.core.Authentication;
    import org.springframework.security.core.context.SecurityContextHolder;
    import org.springframework.security.core.userdetails.User;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
    import org.springframework.statemachine.StateMachine;
    import org.springframework.statemachine.state.State;
    import org.springframework.web.context.support.SpringBeanAutowiringSupport;
    import stany.wniosku.Event;
    import stany.wniosku.MaszynaStanow;
    import stany.wniosku.Stan;

    /**
     *
     * @author Mateusz
     */

    public class WniosekController implements Serializable/*,WniosekStateChangeListener*/ {

        private long serialVersionUID = 1L;
        private Wniosek wniosek = new Wniosek();
        private Wniosek wniosekView = new Wniosek();
        private Przedmiot_zamowienia przedmiot_zamowienia = new Przedmiot_zamowienia();
        private List<Wniosek> wnioski;
        private Uwagi uwaga = new Uwagi();
        private List<Uwagi> uwagi;
        private List<Przedmiot_zamowienia_item> listaPrzedmiotowZamowienia;

        public Przedmiot_zamowienia getPrzedmiot_zamowienia() {
            return przedmiot_zamowienia;
        }

        public void setPrzedmiot_zamowienia(Przedmiot_zamowienia pz) {
            this.przedmiot_zamowienia = pz;
        }

        public List<Przedmiot_zamowienia_item> getListaPrzedmiotowZamowienia() {
            return listaPrzedmiotowZamowienia;
        }

        public void setListaPrzedmiotowZamowienia(List<Przedmiot_zamowienia_item> lista) {
            this.listaPrzedmiotowZamowienia = lista;
        }

        public List<Uwagi> getUwagi() {
            return uwagi;
        }

        public void setUwagi(List<Uwagi> uwagi) {
            this.uwagi = uwagi;
        }

        public Uwagi getUwaga() {
            return uwaga;
        }

        public void setUwaga(Uwagi uwaga) {
            this.uwaga = uwaga;
        }

        public Wniosek getWniosekView() {
            return wniosekView;
        }

        public void setWniosekView(Wniosek wniosekView) {
            this.wniosekView = wniosekView;
        }

        public List<Wniosek> getWnioski() {
            return wnioski;
        }

        public void setWnioski(List<Wniosek> wnioski) {
            this.wnioski = wnioski;
        }

        public WniosekController() {
        }

        public Wniosek getWniosek() {
            return wniosek;
        }

        public void setWniosek(Wniosek wniosek) {
            this.wniosek = wniosek;
        }

    public void Dodaj(int opcja) throws FileNotFoundException
    {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance()
                         .getExternalContext().getRequest();
        
        Session session = ConnectionFactory.getSessionFactory().openSession();
        
        Transaction tx = session.beginTransaction();
        
        String login_zalogowanego = UserController.getUserName();
        
        Criteria cr = session.createCriteria(Users.class);
        cr.add(Restrictions.ilike("login", login_zalogowanego));
        List<Users> result = cr.list();
        
        //ustawianie id osoby skadajcej wniosek
        wniosek.setOsoba_wnioskodawcaID(result.get(0).getUser_id());
        
        //ustawienie akt daty
        wniosek.setData_wnioskodawcy(new Date());
        
        //ustawianie osoby szacujcej jako wnioskodawc
        wniosek.setOsoba_szacujacaID(result.get(0).getUser_id());
        wniosek.setData_osoby_szacujacej(new Date());
        
        
        //ustawianie stanu na wypeniony
        switch (opcja) {
            case 1:
                wniosek.setStan(MaszynaStanow.getNextState(null, Event.przekaDziaNauk));
                break;
            case 2:
                wniosek.setStan(MaszynaStanow.getNextState(null, Event.przekaKBRPIM));
                break;
            case 3:
                wniosek.setStan(MaszynaStanow.getNextState(null, Event.przekaKwestorowi));
                break;
        }
        
        session.save(wniosek);
        
        
        //przypisywanie przedmiotw zamwienia z tabelki
        
        Przedmiot_zamowienia przedmiotZamowienia = new Przedmiot_zamowienia();
        przedmiotZamowienia.setWniosek_ID(wniosek.getWniosek_ID());
        przedmiotZamowienia.setData_osoby_dokonujacej_opisu(new Date());
        przedmiotZamowienia.setOsoba_dokonujaca_opisu_ID(result.get(0).getUser_id());
        
        session.save(przedmiotZamowienia);
        
        String ilosc = request.getParameter("iloscPrzedmiotowZamowienia");
        int iloscPozcjiWTabeli = Integer.valueOf(ilosc);
        
        for(int i=1; i<=iloscPozcjiWTabeli; i++)
        {
            Przedmiot_zamowienia_item pzi = new Przedmiot_zamowienia_item();
            pzi.setNazwa_opis_przedmiotu_zam(request.getParameter("nazwa"+i));
            pzi.setJednostka_miary(request.getParameter("jednostka"+i));
            pzi.setIlosc(Integer.parseInt(request.getParameter("ilosc"+i)));
            pzi.setKwota_przeznaczona_na_real(Double.parseDouble(request.getParameter("kwota"+i)));
            pzi.setPozycja_w_planie_zam_jedn(Integer.parseInt(request.getParameter("pozycja"+i)));
            pzi.setPrzedmiot_zamowienia_ID(przedmiotZamowienia.getPrzedmiot_zamowienia_id());
            
            session.save(pzi);
            
        }
        
        //System.out.println(wniosek.getWniosek_ID());
        
        
        session.flush();
        tx.commit();
        session.close();
        
        
        
        wniosek = new Wniosek();
    }

        public List<Wniosek> mojeWnioski() {

            Session session = ConnectionFactory.getSessionFactory().openSession();
            String login_zalogowanego = UserController.getUserName();
            Criteria cr = session.createCriteria(Users.class);
            cr.add(Restrictions.ilike("login", login_zalogowanego));
            List<Users> result = cr.list();
            String query = "FROM Wniosek WHERE Osoba_wnioskodawcaID=" + result.get(0).getUser_id()
                    + "OR Kierownik_dzialu_naukID=" + result.get(0).getUser_id() + "OR Kierownik_BRPM_BWM_ID="
                    + result.get(0).getUser_id() + "OR Kwestor_ID=" + result.get(0).getUser_id() + "OR Szef_pionuID="
                    + result.get(0).getUser_id() + "OR Osoba_przyjmujaca_wniosek_ID=" + result.get(0).getUser_id()
                    + "OR Kierownik_dzialu_zam_pub_ID=" + result.get(0).getUser_id() + "OR Pelnomocnik_rektora_ID="
                    + result.get(0).getUser_id();

            wnioski = session.createQuery(query).list();
            session.close();

            return wnioski;

        }

        public String zobacz(Wniosek w) {
            Session session = ConnectionFactory.getSessionFactory().openSession();

            String login_zalogowanego = UserController.getUserName();
            Criteria cr = session.createCriteria(Users.class);
            cr.add(Restrictions.ilike("login", login_zalogowanego));
            List<Users> result = cr.list();

            String query1 = "FROM Przedmiot_zamowienia WHERE Wniosek_ID=" + w.getWniosek_ID();
            String query = "FROM Przedmiot_zamowienia_item WHERE Przedmiot_zamowienia_ID IN (SELECT Przedmiot_zamowienia_id FROM Przedmiot_zamowienia WHERE Wniosek_ID="
                    + w.getWniosek_ID() + ")";
            listaPrzedmiotowZamowienia = session.createQuery(query).list();
            przedmiot_zamowienia = (Przedmiot_zamowienia) session.createQuery(query1).list().get(0);

            NawigacjaZatwierdzanieWnioskow nawigacja = new NawigacjaZatwierdzanieWnioskow();

            session.close();
            this.wniosekView = w;
            return nawigacja.getNawigacjaFromRole(result.get(0).getRola());
        }

        public String wnioskiDoAkceptacji() {
            Session session = ConnectionFactory.getSessionFactory().openSession();

            String login_zalogowanego = UserController.getUserName();
            Criteria cr = session.createCriteria(Users.class);
            cr.add(Restrictions.ilike("login", login_zalogowanego));
            List<Users> result = cr.list();

            MaszynaStanow ms = new MaszynaStanow();
            String stan = ms.getStanFromRole(result.get(0).getRola());
            System.out.println(stan);
            if (stan != null)
                wnioski = session.createQuery("FROM Wniosek WHERE Stan='" + stan + "'").list(); //jak stan===null to znaczy e to jest jaki wnioskodawca czy jakas osoba ktora nie moze akceptowac wnioskow
            else {
                wnioski = null;
                return "brakWnioskowDoAkceptacji";
            }

            session.close();

            if (wnioski.isEmpty())
                return "brakWnioskowDoAkceptacji";
            return "wnioskiDoAkceptacji";
        }

        public List<Uwagi> uwagiDoWniosku() {
            UwagiController u = new UwagiController();
            return u.UwagiDoWniosku(wniosekView.getWniosek_ID());
        }

        public String Podglad(Wniosek w) {
            Session session = ConnectionFactory.getSessionFactory().openSession();

            String query1 = "FROM Przedmiot_zamowienia WHERE Wniosek_ID=" + w.getWniosek_ID();
            String query = "FROM Przedmiot_zamowienia_item WHERE Przedmiot_zamowienia_ID IN (SELECT Przedmiot_zamowienia_id FROM Przedmiot_zamowienia WHERE Wniosek_ID="
                    + w.getWniosek_ID() + ")";
            listaPrzedmiotowZamowienia = session.createQuery(query).list();
            przedmiot_zamowienia = (Przedmiot_zamowienia) session.createQuery(query1).list().get(0);
            session.close();

            this.wniosekView = w;
            return "podgladWniosku";
        }

        public void delete(Wniosek w) {
            Session session = ConnectionFactory.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            session.delete(w);
            tx.commit();
            session.close();
        }

        public String edit(Wniosek w) {
            this.wniosekView = w;
            return "edytujWniosek";
        }

        public String edit() {
            Session session = ConnectionFactory.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            session.update(wniosekView);
            tx.commit();
            session.close();
            wniosek = new Wniosek();
            return "mojeWnioski";
        }

        public String Zatwierdz(String from) {
            HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext()
                    .getRequest();

            Session session = ConnectionFactory.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            String login_zalogowanego = UserController.getUserName();

            Criteria cr = session.createCriteria(Users.class);
            cr.add(Restrictions.ilike("login", login_zalogowanego));
            List<Users> result = cr.list();

            if (from.equals("zobaczWniosekKwestor")) {
                wniosekView.setStan(MaszynaStanow.getNextState(wniosekView.getStan(), null));
                wniosekView.setKontrasygnata_data(new Date());
                wniosekView.setKwestor_ID(result.get(0).getUser_id());
            } else if (from.equals("zobaczWniosekDzialNauk")) {
                wniosekView.setStan(MaszynaStanow.getNextState(wniosekView.getStan(), null));
                wniosekView.setPotwierdzenie_pokrycia_fin_ze_srodkow_data(new Date());
                wniosekView.setKierownik_dzialu_naukID(result.get(0).getUser_id());

            } else if (from.equals("zobaczWniosekKBRIPM")) {
                wniosekView.setStan(MaszynaStanow.getNextState(wniosekView.getStan(), null));
                wniosekView.setPotwierdzenie_zgodnosci_budzet_data(new Date());
                wniosekView.setKierownik_BRPM_BWM_ID(result.get(0).getUser_id());

            } else if (from.equals("zobaczWniosekSzefPionu")) {
                wniosekView.setStan(MaszynaStanow.getNextState(wniosekView.getStan(), null));
                wniosekView.setSzef_pionuID(result.get(0).getUser_id());

            } else if (from.equals("zobaczWniosekDZP")) {
                wniosekView.setStan(MaszynaStanow.getNextState(wniosekView.getStan(), null));
                wniosekView.setData_zlozenia_w_dziale_zam_pub(new Date());
                wniosekView.setOsoba_przyjmujaca_wniosek_ID(result.get(0).getUser_id());

                przedmiot_zamowienia.setOsoba_opiniujaca_tryb_udzielania_zam_ID(result.get(0).getUser_id());
                session.update(przedmiot_zamowienia);

                int i = 1;
                for (Przedmiot_zamowienia_item pzi : listaPrzedmiotowZamowienia) {
                    pzi.setOpinia_dot_trybu_udzielania_zam(request.getParameter("opinia" + i));
                    session.update(pzi);
                    i++;
                }

            } else if (from.equals("zobaczWniosekPelnomocnikRektora")) {
                wniosekView.setStan(MaszynaStanow.getNextState(wniosekView.getStan(), null));
                wniosekView.setPelnomocnik_rektora_ID(result.get(0).getUser_id());
                przedmiot_zamowienia.setPelnomocnik_rektora_ID(result.get(0).getUser_id());
                session.update(przedmiot_zamowienia);

            }

            session.update(wniosekView);
            session.flush();
            tx.commit();
            session.close();

            return "wnioskiDoAkceptacji";

            //        if(!uwaga.getTresc().equals(""))
            //        {
            //            Session session = ConnectionFactory.getSessionFactory().openSession();
            //            Transaction tx = session.beginTransaction();
            //            uwaga.setWniosek_id(wniosekView.getWniosek_ID());
            //            String login_zalogowanego = UserController.getUserName();
            //            Criteria cr = session.createCriteria(Users.class);
            //            cr.add(Restrictions.ilike("login", login_zalogowanego));
            //            List<Users> result = cr.list();
            //            uwaga.setUser_id(result.get(0).getUser_id());
            //            session.save(uwaga);
            //            tx.commit();
            //            session.close();
            //        }
            //        uwaga = new Uwagi();

        }

    public String Odrzuc(String from)
    {
        Session session = ConnectionFactory.getSessionFactory().openSession();
        Transaction tx = session.beginTransaction();
        
        wniosekView.setStan(MaszynaStanow.getNextState(wniosekView.getStan(), Event.odrzu));
        
        session.update(wniosekView);
        session.flush();
        tx.commit();
        session.close();
        
        
        
        
//        if(!uwaga.getTresc().equals(""))
//        {
//            Session session = ConnectionFactory.getSessionFactory().openSession();
//            Transaction tx = session.beginTransaction();
//            uwaga.setWniosek_id(wniosekView.getWniosek_ID());
//            String login_zalogowanego = UserController.getUserName();
//            Criteria cr = session.createCriteria(Users.class);
//            cr.add(Restrictions.ilike("login", login_zalogowanego));
//            List<Users> result = cr.list();
//            uwaga.setUser_id(result.get(0).getUser_id());
//            session.save(uwaga);
//            tx.commit();
//            session.close();
//        }
//        uwaga = new Uwagi();
//        return "wnioskiDoAkceptacji";


        return "wnioskiDoAkceptacji";
    }

        public String getImieNazwiskoByUserID(int id) {
            String imieNazwisko = "";
            Session session = ConnectionFactory.getSessionFactory().openSession();

            String query = "FROM Users WHERE user_id=" + id;
            try {
                Users user = (Users) session.createQuery(query).list().get(0);
                imieNazwisko = user.getImie() + " " + user.getNazwisko();
            } catch (Exception e) {

            }

            return imieNazwisko;

        }

    }