package gui;
import hibernateSwingApi.hibernate.HibernateManager;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import pojos.BankaPOSBilgileri;
import pojos.BankaPOSVadeBilgileri;
import pojos.OdemeBilgileri;
import pojos.UrunSatis;
import pojos.YapilanSatis;
import pojos.YapilanSatisPOSBilgileri;
import pojos.YapilanSatisPOSVadeBilgileri;
import service.AutoClosingMessageDialog;
import service.PSAUtil;
public class PSAKrediKartiOdeme extends JFrame {
private static final long serialVersionUID = 1L;
private static PSAKrediKartiOdeme instance;
private int maxLength;
private int initx;
private int inity;
private int buttonCount;
private int loopTime;
private int panelWidth;
private int panelHeight;
private JLabel jLabelBankaSeciniz;
private JPanel jPanelPosBilgileri;
private YapilanSatis satisBilgi;
private List<UrunSatis> urunListesi = new LinkedList<>();
private List<UrunSatis> satilanUrunListesi = new LinkedList<>();
private UrunSatis urunSatis;
private OdemeBilgileri odemeBilgisi;
List<BankaPOSBilgileri> posBilgileri;
public static PSAKrediKartiOdeme getInstance(YapilanSatis satis,
List<UrunSatis> urunSatisListesi) {
instance = new PSAKrediKartiOdeme(satis, urunSatisListesi);
return instance;
}
public PSAKrediKartiOdeme(YapilanSatis satis,
List<UrunSatis> urunSatisListesi) {
urunListesi = urunSatisListesi;
satisBilgi = satis;
initialize();
}
private void initialize() {
setTitle("PSA MERKEZ KREDİ KARTI");
setResizable(false);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setIconImage(PSAUtil.getImageIconViaRelativePath("picture/psaIcon.png")
.getImage());
setSize(480, 150);
locateFrameToMiddle();
getContentPane().setLayout(null);
jLabelBankaSeciniz = new JLabel("BANKA SEÇİNİZ");
jLabelBankaSeciniz.setFont(new Font("Tahoma", Font.BOLD, 14));
jLabelBankaSeciniz.setHorizontalAlignment(SwingConstants.CENTER);
jLabelBankaSeciniz.setBounds(10, 11, 454, 14);
getContentPane().add(jLabelBankaSeciniz);
jPanelPosBilgileri = new JPanel();
jPanelPosBilgileri.setBounds(10, 36, 454, 77);
jPanelPosBilgileri.setBorder(new LineBorder(new Color(0, 0, 0), 2));
jPanelPosBilgileri.setBackground(UIManager.getColor("Button.shadow"));
jPanelPosBilgileri.setLayout(null);
getContentPane().add(jPanelPosBilgileri);
initListeners();
initPosButtons();
}
@SuppressWarnings("unchecked")
private void initPosButtons() {
posBilgileri = (List<BankaPOSBilgileri>) HibernateManager.getInstance()
.get(BankaPOSBilgileri.class, false);
bankaPanelDoldur(posBilgileri, null, true);
}
@SuppressWarnings("unchecked")
private void bankaPanelDoldur(List<?> pojoData, BankaPOSBilgileri pb,
boolean isBanka) {
setSize(480, 150);
jPanelPosBilgileri.removeAll();
maxLength = 3;
initx = 5;
inity = 5;
buttonCount = 0;
loopTime = 0;
if (isBanka == true) {
for (int i = 0; i < posBilgileri.size(); i++) {
if (buttonCount % maxLength == 0) {
loopTime++;
if (loopTime == 1) {
initx = 5;
} else {
initx = 5;
inity += 67;
}
butonEkle(posBilgileri.get(i).getBankaAd(), true, pb, null,
isBanka);
buttonCount++;
} else {
initx += 148;
butonEkle(posBilgileri.get(i).getBankaAd(), true, pb, null,
isBanka);
buttonCount++;
}
}
if (loopTime == 1) {
panelHeight = 80;
panelWidth = buttonCount * 148 + 15;
} else {
panelHeight = loopTime * 67 + 13;
panelWidth = maxLength * 148 + 15;
}
jPanelPosBilgileri.setBounds(5, 40, panelWidth, panelHeight);
} else {
butonEkle("TEK ÇEKİM", false, pb, null, isBanka);
buttonCount++;
List<BankaPOSVadeBilgileri> posBilgileri = (List<BankaPOSVadeBilgileri>) pojoData;
for (int i = 0; i < posBilgileri.size(); i++) {
if (buttonCount % maxLength == 0) {
loopTime++;
initx = 5;
inity += 67;
String vadeSayisi = String.valueOf(posBilgileri.get(i)
.getVadeSayisi() + " AY");
butonEkle(vadeSayisi, false, pb, posBilgileri.get(i),
isBanka);
buttonCount++;
} else {
initx += 148;
String vadeSayisi = String.valueOf(posBilgileri.get(i)
.getVadeSayisi() + " AY");
butonEkle(vadeSayisi, false, pb, posBilgileri.get(i),
isBanka);
buttonCount++;
}
}
if (loopTime == 0) {
panelHeight = 80;
} else {
panelHeight = loopTime * 67 + 80;
}
panelWidth = maxLength * 148 + 15;
geriButtonEkle();
jPanelPosBilgileri.setBounds(5, 40, panelWidth, panelHeight + 60);
}
if (jLabelBankaSeciniz.getHeight() + jPanelPosBilgileri.getHeight()
+ 40 >= getHeight()) {
setSize(getWidth(), jLabelBankaSeciniz.getHeight()
+ jPanelPosBilgileri.getHeight() + 60);
}
}
private void geriButtonEkle() {
JButton jButtonGeri = new JButton("GERİ");
jButtonGeri.setBounds(152, panelHeight, 120, 50);
jButtonGeri.setIcon(PSAUtil
.getImageIconViaRelativePath("picture/geriButonu.png"));
jPanelPosBilgileri.add(jButtonGeri);
jButtonGeri.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
initPosButtons();
jLabelBankaSeciniz.setText("BANKA SEÇİNİZ");
}
});
}
private void butonEkle(final String buttonText,
final boolean isBankaButton, final BankaPOSBilgileri pb,
final BankaPOSVadeBilgileri pvb, boolean isBanka) {
JButton jButtonBanka = new JButton(buttonText);
jButtonBanka.setBounds(initx, inity, 148, 67);
jButtonBanka.setToolTipText(buttonText);
if (isBanka == true) {
jButtonBanka.setIcon(PSAUtil
.getImageIconViaRelativePath("picture/bankaEkle.png"));
} else {
jButtonBanka.setIcon(PSAUtil
.getImageIconViaRelativePath("picture/vade.png"));
}
jButtonBanka.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (isBankaButton == true) {
bankaButtonClicked(buttonText);
} else {
vadeButtonClicked(pb, pvb);
}
}
});
jPanelPosBilgileri.add(jButtonBanka);
}
protected void vadeButtonClicked(BankaPOSBilgileri pb,
BankaPOSVadeBilgileri pvb) {
YapilanSatisPOSVadeBilgileri yspvb = null;
YapilanSatisPOSBilgileri yspb;
if (pvb != null) {
yspvb = new YapilanSatisPOSVadeBilgileri(pvb);
HibernateManager.getInstance().save(yspvb);
yspb = new YapilanSatisPOSBilgileri(pb, yspvb);
HibernateManager.getInstance().save(yspb);
} else {
yspb = new YapilanSatisPOSBilgileri(pb, yspvb);
HibernateManager.getInstance().save(yspb);
}
odemeBilgisi = new OdemeBilgileri();
odemeBilgisi.setSystemName(HibernateManager.getInstance()
.getSystemName());
odemeBilgisi.setKrediKartTutar(satisBilgi.getTutar());
odemeBilgisi.setPosBilgisiId(yspb.getId());
if (pvb != null) {
odemeBilgisi.setPosVadeBilgisiId(yspvb.getId());
}
boolean check1 = HibernateManager.getInstance().save(satisBilgi);
if (check1) {
for (int i = 0; i < urunListesi.size(); i++) {
urunSatis = urunListesi.get(i);
urunSatis.setSatisId(satisBilgi.getId());
urunSatis.setTarih(satisBilgi.getTarih());
urunSatis.setYapilanSatis(true);
satilanUrunListesi.add(urunSatis);
HibernateManager.getInstance().save(urunSatis);
}
satisBilgi.setOdemeBilgisi(odemeBilgisi);
satisBilgi.setSatisListesi(satilanUrunListesi);
boolean check = HibernateManager.getInstance().update(satisBilgi);
if (check) {
if (check) {
AutoClosingMessageDialog
.showAutoClosingMessageDialog(
"Kredi kartı satış işlemi başarı ile tamamlanmıştır.",
2);
PSAAnaEkran.getDefaultValue();
anaEkranSetEnable();
}
}
}
}
@SuppressWarnings("unchecked")
protected void bankaButtonClicked(String bankaAd) {
BankaPOSBilgileri ps = (BankaPOSBilgileri) HibernateManager
.getInstance().getObjectWithUniqueColumn(
BankaPOSBilgileri.class, "bankaAd", bankaAd, false);
jPanelPosBilgileri.removeAll();
jLabelBankaSeciniz.setText(bankaAd + " İÇİN ÖDEME ŞEKLİ SEÇİNİZ");
List<BankaPOSVadeBilgileri> posVadeBilgileri = (List<BankaPOSVadeBilgileri>) HibernateManager
.getInstance().getEntitysList(ps, "bankaPosVadeBilgileri");
bankaPanelDoldur(posVadeBilgileri, ps, false);
}
protected void anaEkranSetEnable() {
PSAAnaEkran.getInstance(null).setEnabled(true);
instance.dispose();
}
private void initListeners() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
anaEkranSetEnable();
}
});
}
private void locateFrameToMiddle() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = this.getSize().width;
int h = this.getSize().height;
int x = (dim.width - w) / 2;
int y = (dim.height - h) / 2;
setLocation(x, y);
}
}