Java tutorial
/* * The MIT License * * Copyright 2015 Ryan. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package dao; import entity.*; import gui.SellingMain; import main.resources.HibernateUtil; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.Projections; import java.util.Arrays; import java.util.List; /** * * @author Ryan */ public class Transaction { private final Logger logger = Logger.getLogger(Transaction.class); Session session; Tickets tks; public static GameTemplateDAO gtDAO; public static GameTemplates gt; public static Tickets tk; public static TicketDAO tkDAO; public static Customers cust; public static Transaction tx; public static Users usr; public static UserDAO usrDAO; public static SaleSessions ss; public static SaleSessDAO ssDAO; public static Locations loc; public static CustomerDAO custDAO; public TillTapeDAO ttDAO; private double grossSales, grossPrizes, net, bank; public static java.sql.Timestamp getCurrentTimeStamp() { java.util.Date today = new java.util.Date(); return new java.sql.Timestamp(today.getTime()); } public Tickets getTicketBin(int bin) { TicketDAO tDAO = new TicketDAO(); Tickets tk = new Tickets(); tk = tDAO.getTByBin(bin); return tk; } public void Sale(Tickets tk, int amount, int value) { //Update tickets table with, add till tape, update sale session, //add sales to customer TicketDAO tDAO = new TicketDAO(); System.out.println(tk.toString()); int gross = tk.getActualGross(); gross = gross + amount; int unsold = tk.getUnsoldAmt(); unsold = unsold - value; int unsoldTickets = tk.getUnsoldTickets(); unsoldTickets = unsoldTickets - amount; tk.setActualGross(gross); tk.setUnsoldAmt(unsold); tk.setUnsoldTickets(unsoldTickets); tDAO.updateTickets(tk); } public void Prize(Tickets tk, int prize) { //Need method to subtract prize TicketDAO tDAO = new TicketDAO(); int prizes = tk.getActualPrizes(); prizes = prizes + prize; tk.setActualPrizes(prizes); tDAO.updateTickets(tk); } public int getInvoice() { session = getSession(); Criteria criteria = session.createCriteria(TillTape.class).setProjection(Projections.max("invoice")); Integer maxInvoice = (Integer) criteria.uniqueResult(); int invoice = maxInvoice + 1; return invoice; } public Session getSession() { try { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); } catch (HibernateException he) { he.printStackTrace(); } return session; } public void updateTicket(Tickets tk, int amount, int prizeIn, int value) { int gross = tk.getActualGross(); int prize = tk.getActualPrizes(); int net = tk.getActualNet(); int unsold = tk.getUnsoldTickets(); int unsoldValue = tk.getUnsoldAmt(); gross = gross + amount; prize = prize + prizeIn; net = gross - prize; unsold = unsold - amount; unsoldValue = unsoldValue - value; tk.setActualGross(gross); tk.setActualPrizes(prize); tk.setActualNet(net); tk.setUnsoldAmt(unsoldValue); tk.setUnsoldTickets(unsold); TicketDAO tkDAO = new TicketDAO(); tkDAO.updateTickets(tk); } public void tillTape(Users us, Customers cust, Locations loc, int bin, int sale, int prize, int invoice) { //serial, name, time, sale_amount, prize_amount, users_user_id, customers_cust_id, locations_loc_id, invoice, sale closed, void TillTape tt = new TillTape(); TillTapeId ttid = new TillTapeId(); TillTapeDAO ttDAO = new TillTapeDAO(); Users usr = new Users(); Tickets tk = new Tickets(); TicketDAO tkDAO = new TicketDAO(); tk = tkDAO.getTByBin(bin); //Get ticket by bin tt.setSerial(tk.getId().getSerial()); tt.setName(tk.getId().getGameTemplatesPartNum()); //TODO: change to game name instead of part num tt.setSaleAmount(sale); tt.setPrizeAmount(prize); ttid.setCustomersCustId(cust.getCustId()); ttid.setLocationsLocId(loc.getLocId()); ttid.setUsersUserId(us.getUserId()); tt.setId(ttid); tt.setTime(getCurrentTimeStamp()); tt.setCustomers(cust); tt.setLocations(loc); tt.setInvoice(invoice); tt.setVoid_(false); ttDAO.addTrans(tt); } public boolean findPrizeAmt(Tickets tk, Integer prizeAmt) { //TODO: needs to detect if the the prizeAmt is valid, if so subtract one from the ticket int amount; GameTemplates gt = new GameTemplates(); GameTemplateDAO gtDAO = new GameTemplateDAO(); TicketDAO ttDAO = new TicketDAO(); //Load the gametemplate based on the part number gt = gtDAO.getGTById(tk.getId().getGameTemplatesPartNum()); //TODO:need to add the last sale List<Integer> gameTemps = Arrays.asList(gt.getPrizeAmt1(), gt.getPrizeAmt2(), gt.getPrizeAmt3(), gt.getPrizeAmt4(), gt.getPrizeAmt5(), gt.getPrizeAmt6(), gt.getPrizeAmt7(), gt.getPrizeAmt8(), gt.getPrizeAmt9(), gt.getPrizeAmt10(), gt.getPrizeAmt11(), gt.getPrizeAmt12(), gt.getPrizeAmt13(), gt.getPrizeAmt14(), gt.getPrizeAmt15()); for (int i = 0; i < gameTemps.size(); i++) { int num = gameTemps.get(i); if (num == 0) { return false; } if (prizeAmt == num) { if (i == 0) { amount = tk.getPrizeRem1(); tk.setPrizeRem1(amount--); break; } else if (i == 1) { amount = tk.getPrizeRem2(); tk.setPrizeRem2(amount--); break; } else if (i == 2) { amount = tk.getPrizeRem3(); tk.setPrizeRem3(amount--); break; } else if (i == 3) { amount = tk.getPrizeRem4(); tk.setPrizeRem4(amount--); break; } else if (i == 4) { amount = tk.getPrizeRem5(); tk.setPrizeRem5(amount--); break; } else if (i == 5) { amount = tk.getPrizeRem6(); tk.setPrizeRem6(amount--); break; } else if (i == 6) { amount = tk.getPrizeRem7(); tk.setPrizeRem7(amount--); break; } else if (i == 7) { amount = tk.getPrizeRem8(); tk.setPrizeRem8(amount--); break; } else if (i == 8) { amount = tk.getPrizeRem9(); tk.setPrizeRem9(amount--); break; } else if (i == 9) { amount = tk.getPrizeRem10(); tk.setPrizeRem10(amount--); break; } else if (i == 10) { amount = tk.getPrizeRem11(); tk.setPrizeRem12(amount--); break; } else if (i == 11) { amount = tk.getPrizeRem12(); tk.setPrizeRem12(amount--); break; } else if (i == 12) { amount = tk.getPrizeRem13(); tk.setPrizeRem13(amount--); break; } else if (i == 13) { amount = tk.getPrizeRem14(); tk.setPrizeRem14(amount--); break; } else if (i == 14) { amount = tk.getPrizeRem15(); tk.setPrizeRem15(amount--); break; } else { return false; } } } //Update the ticket ttDAO.addTickets(tk); return true; } public boolean closeTransaction(List<TxObject> lst) { ss = new SaleSessions(); ssDAO = new SaleSessDAO(); tks = new Tickets(); final int len = lst.size(); for (int i = 0; i < len; i++) { if (lst.get(i).getType() == 1) { //sale tks = getTicketBin(lst.get(i).getBin()); Sale(tks, (int) lst.get(i).getValue(), (int) lst.get(i).getValue()); tillTape(SellingMain.usr, SellingMain.cust, SellingMain.loc, lst.get(i).getBin(), (int) lst.get(i).getValue(), 0, SellingMain.invoice); ss = ssDAO.getSSById(String.valueOf(SellingMain.sessionNum)); grossSales = ss.getGrossSales() + lst.get(i).getValue(); grossPrizes = ss.getGrossPrizes(); bank = ss.getCurrentbank(); net = ss.getGrossNet(); ss.setGrossSales(grossSales); ss.setCurrentbank(bank + lst.get(i).getValue()); ss.setGrossNet(grossSales - grossPrizes); ssDAO.addSession(ss); } else if (lst.get(i).getType() == 2) { //prize tks = getTicketBin(lst.get(i).getBin()); Prize(tks, (int) lst.get(i).getValue()); tillTape(SellingMain.usr, SellingMain.cust, SellingMain.loc, lst.get(i).getBin(), 0, (int) lst.get(i).getValue(), SellingMain.invoice); ss = ssDAO.getSSById(String.valueOf(SellingMain.sessionNum)); grossSales = ss.getGrossSales(); grossPrizes = ss.getGrossPrizes() + lst.get(i).getValue(); net = ss.getGrossNet(); bank = ss.getCurrentbank(); ss.setGrossPrizes(grossPrizes); ss.setCurrentbank(bank - lst.get(i).getValue()); ss.setGrossNet(grossSales - grossPrizes); ssDAO.addSession(ss); } } logger.info("Processed " + (len) + " transaction(s) successfully."); return true; } }