Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.59 KB | None | 0 0
  1. package bookmakerSystem;
  2.  
  3. import static spark.Spark.get;
  4. import static spark.Spark.port;
  5. import static spark.Spark.post;
  6. import static spark.Spark.staticFileLocation;
  7.  
  8. import java.sql.Timestamp;
  9. import java.time.LocalDateTime;
  10. import java.util.ArrayList;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13.  
  14. import bookmakerSystem.DAO.MatchDAO;
  15. import bookmakerSystem.DAO.UserDAO;
  16. import bookmakerSystem.DAO.TheWinnerOfAMatchBetDAO;
  17. import bookmakerSystem.model.Coupon;
  18. import bookmakerSystem.model.Match;
  19. import bookmakerSystem.model.TheWinnerOfAMatchBet;
  20. import bookmakerSystem.model.User;
  21. import spark.ModelAndView;
  22. import spark.template.velocity.VelocityTemplateEngine;
  23.  
  24. public class Main
  25. {
  26.  
  27.     public static void main(String[] args)
  28.     {
  29.         DatabaseConnector.connectWithBase();
  30.        
  31.         port(8012);
  32.         staticFileLocation("/public");
  33.        
  34.         String layout = "templates/layout.vtl";
  35.        
  36.         get("/", (request, response) ->
  37.         {
  38.             System.out.println("xxxxxxxx");
  39.             Map<String, Object> model = new HashMap<String, Object>();
  40.             model.put("user", request.session().attribute("user"));
  41.  
  42.             Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  43.             LocalDateTime date=LocalDateTime.now();
  44.             Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  45.            
  46.             ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  47.             ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  48.            
  49.             if(request.session().attribute("user") != null)
  50.             {
  51.                 Coupon coupon;
  52.            
  53.  
  54.                     coupon = request.session().attribute("coupon");
  55.                     if(request.queryParams("bet") != null)
  56.                     {
  57.                         coupon.addBets(new TheWinnerOfAMatchBetDAO().getWinnerOfTheMatchBet(
  58.                                 Integer.parseInt(request.queryParams("bet"))));
  59.                     }
  60.                     request.session().attribute("coupon", coupon);
  61.        
  62.                 if(request.queryParams("delete") != null || request.queryParams("acceptCoupon") != null)
  63.                     request.session().attribute("coupon", new Coupon());
  64.                
  65.                 //if(request.queryParams("acceptCoupon") != null)
  66.                    
  67.                
  68.                 model.put("coupon", request.session().attribute("coupon"));
  69.             }
  70.             model.put("todayMatches", todayMatches);
  71.             model.put("tomorrowMatches", tomorrowMatches);
  72.             model.put("template", "templates/index.vtl");
  73.             return new ModelAndView(model, layout);
  74.  
  75.         }, new VelocityTemplateEngine());
  76.        
  77.        
  78.         post("/", (request, response) ->
  79.         {
  80.             Map<String, Object> model = new HashMap<String, Object>();
  81.             Map<String, String> errors = new HashMap<String, String>();
  82.            
  83.             model.put("user", request.session().attribute("user"));
  84.  
  85.             Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  86.             LocalDateTime date=LocalDateTime.now();
  87.             Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  88.            
  89.             ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  90.             ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  91.            
  92.             model.putAll(errors);
  93.             model.put("coupon", request.session().attribute("coupon"));
  94.             model.put("todayMatches", todayMatches);
  95.             model.put("tomorrowMatches", tomorrowMatches);
  96.            
  97.             if(((Coupon) request.session().attribute("coupon")).getBets().isEmpty())
  98.                 errors.put("betsError", "Nie dodales zadnego zakladu");
  99.            
  100.             else if(((User) request.session().attribute("user")).getAccountBalance() -
  101.                     Double.parseDouble(request.queryParams("bid")) < 0)
  102.                 errors.put("bidError", "Nie masz wystarczajaco duzo pieniedzy");
  103.  
  104.             if(errors.isEmpty())
  105.             {
  106.                 Coupon coupon = request.session().attribute("coupon");
  107.                 coupon.setBid(Double.parseDouble(request.queryParams("bid")));
  108.             coupon.setPossibleWin(coupon.getBid());
  109.             for(TheWinnerOfAMatchBet temp: coupon.getBets())
  110.                 coupon.setPossibleWin(coupon.getPossibleWin()*temp.getCourse());
  111.            
  112.             coupon.setPossibleWin(Math.round(coupon.getPossibleWin()*100)/100);
  113.            
  114.                 model.put("template", "templates/sendedCoupon.vtl");
  115.             }
  116.             else
  117.             {              
  118.                 model.put("template", "templates/index.vtl");
  119.             }
  120.            
  121.             return new ModelAndView(model, layout);
  122.         }, new VelocityTemplateEngine());
  123.        
  124.        
  125.         get("/register", (request, response) ->
  126.         {
  127.             Map<String, Object> model = new HashMap<String, Object>();
  128.            
  129.             model.put("template", "templates/register.vtl");
  130.             return new ModelAndView(model, layout);
  131.         }, new VelocityTemplateEngine());
  132.  
  133.         post("/register", (request, response) ->
  134.         {
  135.             Map<String, Object> model = new HashMap<String, Object>();
  136.             Map<String, String> errors = new HashMap<String, String>();
  137.             UserDAO userDAO = new UserDAO();
  138.            
  139.             String login = request.queryParams("login");
  140.             String password = request.queryParams("password");
  141.             String repeatedPassword = request.queryParams("password2");
  142.             String email = request.queryParams("email");
  143.             String name = request.queryParams("name");
  144.             String surname = request.queryParams("surname");
  145.            
  146.             //System.out.println(login);
  147.            
  148.             if(login!=null)
  149.             {
  150.                
  151.                 if(login.length()<4)
  152.                     errors.put("loginError", "Podany login jest za krotki - musi zawierac przynajmniej 4 znaki");
  153.                 else if(new UserDAO().getByLogin(login) != null)
  154.                     errors.put("loginError", "Podany login jest zajety");
  155.                 else if(!login.matches("[a-zA-Z0-9]{4,}"))
  156.                     errors.put("loginError", "Login moze sie skadac z wielkich i malych liter oraz z cyfr od 0-9");
  157.                 if(password.length()<6)
  158.                     errors.put("passwordError", "Podane haslo jest za krotkie - musi zawierac przynajmniej 6 znakow");
  159.                 else if(!password.matches("[a-zA-Z0-9]{6,}"))
  160.                     errors.put("passwordError", "Haslo moze sie skadac z wielkich i malych liter oraz z cyfr od 0-9");
  161.                 if(!password.equals(repeatedPassword))
  162.                     errors.put("repeatedPasswordError", "Podane hasla sie nie zgadzaja");
  163.                
  164.                 if(new UserDAO().getByLogin(email) != null)
  165.                     errors.put("emailError", "Uzytkownik o podanym adresie e-mail juz istnieje");
  166.                
  167.                 else if(!email.matches("[a-zA-Z0-9_\\-]+@[a-zA-Z]+\\.[a-zA-Z]+"))
  168.                     errors.put("emailError", "Podany adres e-mail jest niepoprawny");
  169.                
  170.                 if (errors.isEmpty())
  171.                    
  172.                 {
  173.                     Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  174.                     LocalDateTime date=LocalDateTime.now();
  175.                     Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  176.                    
  177.                     ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  178.                     ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  179.                    
  180.                     userDAO.addUser(login, password, email, name, surname);
  181.                     User loggedUser = userDAO.getByLogin(login);
  182.                     request.session().attribute("user", loggedUser);
  183.                    
  184.                     model.put("todayMatches", todayMatches);
  185.                     model.put("tomorrowMatches", tomorrowMatches);
  186.                     model.put("user", request.session().attribute("user"));
  187.                     model.put("name", name);
  188.                     model.put("template", "templates/index.vtl");
  189.                 }
  190.                 else
  191.                 {
  192.                     model.putAll(errors);
  193.                     model.put("template", "templates/register.vtl");
  194.                 }
  195.             }
  196.             else
  197.             {
  198.                 model.putAll(errors);
  199.                 model.put("template", "templates/register.vtl");
  200.             }
  201.  
  202.             return new ModelAndView(model, layout);
  203.         }, new VelocityTemplateEngine());
  204.        
  205.        
  206.  
  207.  
  208.         post("/login", (request, response) ->
  209.         {
  210.             Map<String, Object> model = new HashMap<String, Object>();
  211.            
  212.            
  213.             Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  214.             LocalDateTime date=LocalDateTime.now();
  215.             Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  216.            
  217.             ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  218.             ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  219.  
  220.             String login = request.queryParams("login");
  221.             String password = request.queryParams("password");
  222.             User loggedUser = new UserDAO().getByLogin(login);
  223.            
  224.             if (loggedUser == null || !loggedUser.getPassword().equals(password))
  225.             {
  226.                 model.put("todayMatches", todayMatches);
  227.                 model.put("tomorrowMatches", tomorrowMatches);
  228.                 model.put("loginError", "Login lub haslo niepoprawne");
  229.                 model.put("template", "templates/index.vtl");
  230.                
  231.                
  232.             }
  233.             else
  234.             {
  235.                 Coupon coupon = new Coupon();
  236.                 model.put("coupon", request.session().attribute("coupon"));
  237.                 model.put("todayMatches", todayMatches);
  238.                 model.put("tomorrowMatches", tomorrowMatches);
  239.                 //request.session().attribute("user", loggedUser.getLogin());
  240.                 request.session().attribute("user", loggedUser);
  241.                 coupon.setUserId(((User) request.session().attribute("user")).getId());
  242.                 request.session().attribute("coupon", coupon);
  243.                 model.put("user", request.session().attribute("user"));
  244.                 model.put("template", "templates/index.vtl");
  245.             }
  246.  
  247.             return new ModelAndView(model, layout);
  248.         }, new VelocityTemplateEngine());
  249.  
  250.         get("/logout", (request, response) ->
  251.         {
  252.             Map<String, Object> model = new HashMap<String, Object>();
  253.             request.session().removeAttribute("coupon");
  254.             request.session().removeAttribute("user");
  255.             model.put("user", request.session().attribute("user"));
  256.            
  257.            
  258.             Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  259.             LocalDateTime date=LocalDateTime.now();
  260.             Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  261.            
  262.             ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  263.             ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  264.            
  265.             model.put("todayMatches", todayMatches);
  266.             model.put("tomorrowMatches", tomorrowMatches);
  267.             model.put("template", "templates/index.vtl");
  268.             return new ModelAndView(model, layout);
  269.         }, new VelocityTemplateEngine());
  270.        
  271.         get("/moneyManagement", (request, response) ->
  272.         {
  273.             Map<String, Object> model = new HashMap<String, Object>();
  274.             model.put("user", request.session().attribute("user"));
  275.            
  276.             Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  277.             LocalDateTime date=LocalDateTime.now();
  278.             Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  279.            
  280.             ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  281.             ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  282.            
  283.             model.put("todayMatches", todayMatches);
  284.             model.put("tomorrowMatches", tomorrowMatches);
  285.             model.put("template", "templates/moneyManagement.vtl");
  286.             return new ModelAndView(model, layout);
  287.         }, new VelocityTemplateEngine());
  288.        
  289.         post("/moneyManagement", (request, response)->
  290.         {
  291.             Map<String, Object> model = new HashMap<String, Object>();
  292.            
  293.             User loggedUser=request.session().attribute("user");
  294.             UserDAO userOperations=new UserDAO();
  295.            
  296.             model.put("user", request.session().attribute("user"));
  297.            
  298.             String contribute=request.queryParams("contribute");
  299.             String getMoney=request.queryParams("getMoney");
  300.             String getAllMoney=request.queryParams("getAllMoney");
  301.             System.out.println(getAllMoney);
  302.            
  303.             if(contribute!=null)
  304.             {
  305.                 int amountToAdd=Integer.parseInt(contribute);
  306.                 double accountBalance=loggedUser.getAccountBalance()+amountToAdd;
  307.                 loggedUser.setAccountBalance(accountBalance);
  308.                 userOperations.setAccountBalance(loggedUser.getId(), accountBalance);
  309.             }
  310.            
  311.             if(getMoney!=null)
  312.             {
  313.                 int amountToSubstract=Integer.parseInt(getMoney);
  314.                 double accountBalance=loggedUser.getAccountBalance();
  315.                 if(accountBalance>=amountToSubstract)
  316.                     {
  317.                         accountBalance-=amountToSubstract;
  318.                         accountBalance*=100;
  319.                         accountBalance=Math.round(accountBalance);
  320.                         accountBalance/=100;
  321.                         loggedUser.setAccountBalance(accountBalance);
  322.                         userOperations.setAccountBalance(loggedUser.getId(), accountBalance);
  323.                     }
  324.                 else
  325.                 {
  326.                     model.put("getMoneyError","Nie masz wystarczajacych srodkow na koncie!");
  327.                 }
  328.             }
  329.            
  330.             if(getAllMoney!=null)
  331.             {
  332.                 double accountBalance=loggedUser.getAccountBalance();
  333.                 if(accountBalance==0)
  334.                 {
  335.                     model.put("getAllMoneyError", "Nie posiadasz zadnych srodkow na koncie");
  336.                 }
  337.                 else
  338.                 {
  339.                     loggedUser.setAccountBalance(0);
  340.                     userOperations.setAccountBalance(loggedUser.getId(), 0);
  341.                 }
  342.                
  343.             }
  344.            
  345.             Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  346.             LocalDateTime date=LocalDateTime.now();
  347.             Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  348.            
  349.             ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  350.             ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  351.            
  352.             model.put("todayMatches", todayMatches);
  353.             model.put("tomorrowMatches", tomorrowMatches);
  354.             model.put("template", "templates/moneyManagement.vtl");
  355.             return new ModelAndView(model, layout);
  356.         }, new VelocityTemplateEngine());
  357.        
  358.         get("/userDataManagement", (request, response) ->
  359.         {
  360.             Map<String, Object> model = new HashMap<String, Object>();
  361.             User loggedUser=request.session().attribute("user");
  362.             model.put("user", loggedUser);
  363.            
  364.             String change=request.queryParams("changeData");
  365.             model.put("changeData", null);
  366.            
  367.             if(change!=null)
  368.             {
  369.                 if(change.equals("changePassword"))
  370.                 {
  371.                     model.put("changeData", "changePassword");
  372.                     model.put("template", "templates/userDataManagement.vtl");
  373.                 }
  374.                 else if(change.equals("deleteAccount"))
  375.                 {
  376.                     model.put("changeData", "deleteAccount");
  377.                     model.put("template", "templates/userDataManagement.vtl");
  378.                 }
  379.                 else if(change.equals("deleteAccountDefinitively"))
  380.                 {
  381.                     UserDAO userOperations=new UserDAO();
  382.                     userOperations.deleteUser(loggedUser.getId());
  383.                     request.session().removeAttribute("user");
  384.                     model.put("user", request.session().attribute("user"));
  385.                     model.put("template", "templates/index.vtl");
  386.                 }  
  387.             }
  388.             else
  389.             {
  390.                 model.put("template", "templates/userDataManagement.vtl");
  391.             }
  392.            
  393.            
  394.            
  395.             return new ModelAndView(model, layout);
  396.         }, new VelocityTemplateEngine());
  397.        
  398.         post("/userDataManagement", (request, response) ->
  399.         {
  400.             Map<String, Object> model = new HashMap<String, Object>();
  401.             Map<String, String> errors = new HashMap<String, String>();
  402.             User loggedUser=request.session().attribute("user");
  403.             String change=request.queryParams("changeData");
  404.            
  405.            
  406.             model.put("user", loggedUser);
  407.            
  408.             String newPassword=request.queryParams("newPassword");
  409.             String newPasswordRepeated=request.queryParams("newPasswordRepeated");
  410.            
  411.            
  412.             if(newPassword.length()<6)
  413.                 errors.put("passwordError", "Podane haslo jest za krotkie - musi zawierac przynajmniej 6 znakow");
  414.             else if(!newPassword.matches("[a-zA-Z0-9]{6,}"))
  415.                 errors.put("passwordError", "Haslo moze sie skladac z wielkich i malych liter oraz z cyfr od 0-9");
  416.             if(!newPassword.equals(newPasswordRepeated))
  417.                 errors.put("repeatedPasswordError", "Podane hasla sie nie zgadzaja");
  418.            
  419.            
  420.             if(errors.isEmpty())
  421.             {
  422.                 UserDAO userOperations=new UserDAO();
  423.                 userOperations.setPassword(loggedUser.getId(), newPassword);
  424.                 model.put("changeData", "changePasswordSuccess");
  425.                 model.put("template", "templates/userDataManagement.vtl");
  426.             }
  427.             else
  428.             {
  429.                 model.putAll(errors);
  430.                 model.put("changeData", "changePassword");
  431.                 model.put("template", "templates/userDataManagement.vtl");
  432.                
  433.             }
  434.            
  435.            
  436.             return new ModelAndView(model, layout);
  437.         }, new VelocityTemplateEngine());
  438.        
  439.        
  440.        
  441.         get("/terms", (request, response) ->
  442.         {
  443.             Map<String, Object> model = new HashMap<String, Object>();
  444.             model.put("user", request.session().attribute("user"));
  445.            
  446.            
  447.             model.put("template", "templates/terms.vtl");
  448.             return new ModelAndView(model, layout);
  449.         }, new VelocityTemplateEngine());
  450.        
  451.        
  452.         get("/contact", (request, response) ->
  453.         {
  454.             Map<String, Object> model = new HashMap<String, Object>();
  455.             model.put("user", request.session().attribute("user"));
  456.            
  457.            
  458.             model.put("template", "templates/contact.vtl");
  459.             return new ModelAndView(model, layout);
  460.         }, new VelocityTemplateEngine());
  461.        
  462.         get("/couponManagement", (request, response) ->
  463.         {
  464.             Map<String, Object> model = new HashMap<String, Object>();
  465.             Map<String, String> errors=new HashMap<String,String>();
  466.            
  467.             model.put("user", request.session().attribute("user"));
  468.            
  469.             //Coupon
  470.            
  471.             //System.out.println();
  472.            
  473.             /*if(((Coupon) request.session().attribute("coupon")).getBets().isEmpty())
  474.                 errors.put("betsError", "Nie dodales zadnego zakladu");*/
  475.            
  476.            
  477.             model.put("template", "templates/couponManagement.vtl");
  478.             return new ModelAndView(model, layout);
  479.         }, new VelocityTemplateEngine());
  480.        
  481.        
  482.         /*get("/sendedCoupon", (request, response) ->
  483.         {
  484.             System.out.println(request.queryParams("bid"));
  485.             Map<String, Object> model = new HashMap<String, Object>();
  486.             model.put("user", request.session().attribute("user"));
  487.            
  488.             Timestamp todayDate = new Timestamp(System.currentTimeMillis());
  489.             LocalDateTime date=LocalDateTime.now();
  490.             Timestamp tomorrowDate=Timestamp.valueOf(date.plusDays(1));
  491.            
  492.             ArrayList<Match> todayMatches = new MatchDAO().getMatches(todayDate);
  493.             ArrayList<Match> tomorrowMatches = new MatchDAO().getMatches(tomorrowDate);
  494.            
  495.             if(request.queryParams("delete") != null)
  496.                 request.session().attribute("coupon", new Coupon());
  497.            
  498.             Coupon coupon = request.session().attribute("coupon");
  499.             coupon.setBid(Double.parseDouble(request.queryParams("bid")));
  500.             coupon.setPossibleWin(coupon.getBid());
  501.             for(TheWinnerOfAMatchBet temp: coupon.getBets())
  502.                 coupon.setPossibleWin(coupon.getPossibleWin()*temp.getCourse());
  503.            
  504.             coupon.setPossibleWin(Math.round(coupon.getPossibleWin()*100)/100);
  505.            
  506.             model.put("coupon", request.session().attribute("coupon"));
  507.             model.put("todayMatches", todayMatches);
  508.             model.put("tomorrowMatches", tomorrowMatches);
  509.             model.put("template", "templates/sendedCoupon.vtl");
  510.             return new ModelAndView(model, layout);
  511.         }, new VelocityTemplateEngine());*/
  512.     }
  513. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement