package cz.cvut.fel.restauracefel.server.service.controllers; import cz.cvut.fel.restauracefel.hibernate.User; import cz.cvut.fel.restauracefel.hibernate.UserRole; import java.util.Iterator; import java.util.List; /** * * @author Jarda * @author Tomas Hnizdil */ public class UserController { private static final String DEFAULT_PASSWD = "1234"; protected static UserController instance = null; protected User user = null; private UserController() { } public static UserController getInstance() { if (instance == null) { instance = new UserController(); } return instance; } //vytvari zaznam o novem uzivateli public boolean createUser(String name, String surname, String pid, String username, String passwd) { if (!isExistedByPID(pid) && !isExistedByUsername(username)) { user = new User(); user.setFirstName(name); user.setLastName(surname); user.setPersonalIdentificationNumber(pid); user.setUsername(username); user.setPassword(passwd); user.create(); return true; } else { return false; } } // vytvari zaznam o novem zakaznikovi s predplacenym kreditem public boolean createUser(String name, String surname, String username) { if (!isExistedByUsername(username)) { user = new User(); user.setFirstName(name); user.setLastName(surname); user.setUsername(username); user.setCredit(0); user.create(); return true; } else { return false; } } //kontroluje zda existuje uzivatel s danym username public boolean isExistedByUsername(String username) { if (User.findByUsername(username) == null) { return false; } else { return true; } } //kontroluje zda existuje uzivatel s danym PID public boolean isExistedByPID(String pid) { if (User.findByPID(pid) == null) { return false; } else { return true; } } public boolean isValidUser(String username, String passwd){ user = User.findByUsername(username); if (user == null){ return false; } if (user.getPassword().equals(passwd)){ return true; } return false; } //vraci uzivatele s danym PID public User getUserByPID(String pid) { return User.findByPID(pid); } //vraci uzivatele s danym username public User getUserByUsername(String userName) { return User.findByUsername(userName); } //vraci uzivatele s danym Id public User getUserById(int id) { return User.findById(id); } //vraci vsechny uzivatele ve forme Listu public List getAllUsers() { return User.findAll(); } //maze uzivatele s danym Id public boolean deleteUser(int userId) { user = User.findById(userId); if (user == null){ return false; } List<UserRole> urrList = UserRole.findByUser(user.getUserId()); if (urrList != null && !urrList.isEmpty()){ Iterator itUrr = urrList.iterator(); while (itUrr.hasNext()) { UserRole urr = (UserRole) itUrr.next(); //urr.delete(); urr.setIsDeleted(1); } } //user.delete(); user.setIsDeleted(1); return true; } //v podobe pole typu String navraci prijmeni vsech uzivatelu public String[] getUserNames() { List list = User.findAll(); if (list == null || list.isEmpty()) return null; String array[] = new String[list.size()]; Iterator it = list.iterator(); int i = 0; while (it.hasNext()) { array[i] = ((User) it.next()).getLastName(); i++; } return array; } public String[] getUserUsernames(){ List list = User.findAll(); if (list == null || list.isEmpty()) return null; String array[] = new String[list.size()]; Iterator it = list.iterator(); int i = 0; while (it.hasNext()) { array[i] = ((User) it.next()).getUsername(); i++; } return array; } //v podobe dvojrozmerneho pole typu Object navraci udaje o vsech uzivatelych public Object[][] getUsers() { List<User> list = User.findAll(); if (list == null || list.isEmpty()) return null; Object array[][] = new Object[list.size()][8]; int i = 0; Iterator it = list.iterator(); while (it.hasNext()) { User u = (User) it.next(); array[i][0] = u.getUserId(); array[i][1] = u.getFirstName(); array[i][2] = u.getLastName(); List<UserRole> uRoles = UserRoleController.getInstance().getUserRoleByUserId(u.getUserId()); String roles = ""; if (uRoles == null) { roles = "Žádné definované role"; } else { Iterator it2 = uRoles.iterator(); int x = 0; while (it2.hasNext()) { if (x == 0) { roles += ((UserRole) it2.next()).getRole().getName(); } else { roles += ", " + ((UserRole) it2.next()).getRole().getName(); } x++; } } array[i][3] = roles; array[i][4] = u.getPersonalIdentificationNumber(); array[i][5] = u.getUsername(); String pass = u.getPassword(); if (pass==null) array[i][6] = "-"; else if (pass.equals(DEFAULT_PASSWD)){ array[i][6] = "NE"; } else { array[i][6] = "ANO"; } array[i][7] = u.getCredit(); i++; } return array; } //aktualizuje uzivatele s danym Id public boolean updateUser(Integer userId, String name, String surname, String pid, String username) { user = User.findById(userId); if (user == null){ return false; } User u = null; u = User.findByPID(pid); if (u != null && u != user){ return false; } u = User.findByUsername(username); if (u != null && u != user){ return false; } user.setFirstName(name); user.setLastName(surname); user.setPersonalIdentificationNumber(pid); user.setUsername(username); user.update(); return true; } //nastavuje kredit uzivateli s danym Id public boolean updateUser(Integer userId, double credit) { user = User.findById(userId); if (user == null){ return false; } user.setCredit(user.getCredit()+credit); user.update(); return true; } public boolean updateUserPassword(Integer userId, String newPassword){ user = User.findById(userId); if (user == null){ return false; } user.setPassword(newPassword); user.update(); return true; } public String getDefaultPasswd(){ return DEFAULT_PASSWD; } public boolean isValidOldPasswd(Integer userId, String passwd){ user = User.findById(userId); if (user == null){ return false; } if (user.getPassword().equals(passwd)){ return true; } return false; } public double getUserCredit(int userId) { user = User.findById(userId); if (user == null) return 0; return user.getCredit(); } }