package cz.cvut.fel.restauracefel.server.service.controllers;
import cz.cvut.fel.restauracefel.hibernate.Role;
import cz.cvut.fel.restauracefel.hibernate.User;
import cz.cvut.fel.restauracefel.hibernate.UserRole;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Jarda
*/
public class UserRoleController {
protected static UserRoleController instance = null;
protected UserRole userRole = null;
protected User user = null;
protected Role role = null;
private UserRoleController(){}
public static UserRoleController getInstance(){
if (instance == null){
instance = new UserRoleController();
}
return instance;
}
//vytvari novy objekt tridy UserRole
public boolean createUserRole(int userId, int roleId){
userRole = UserRole.findByUserAndRole(userId, roleId);
if (userRole == null){
userRole = new UserRole();
user = User.findById(userId);
role = Role.findById(roleId);
if (user == null || role == null){
return false;
}
userRole.setUser(user);
userRole.setRole(role);
userRole.create();
return true;
} else {
return false;
}
}
//maze uzivatelskou roli dle daneho uzivatele a dane role
public boolean deleteUserRole(int userId, int roleId){
userRole = UserRole.findByUserAndRole(userId, roleId);
if (userRole == null){
return false;
}
//userRole.delete();
userRole.setIsDeleted(1);
return true;
}
public UserRole getUserRoleById(int userRoleId){
return UserRole.findById(userRoleId);
}
//navraci uzivatelksou roli pro daneho uzivatele a danou roli
public UserRole getUserRoleByUserAndRole(int userId, int roleId){
return UserRole.findByUserAndRole(userId, roleId);
}
//pro daneho uzivatele vrati seznam jeho roli
public List getUserRoleByUserId(int userId){
return UserRole.findByUser(userId);
}
//navraci pole Id roli pro daneho uzivatele s danym userId
public boolean [] getUserRoles(int userId){
List<UserRole> list = UserRole.findByUser(userId);
boolean roles [] = {false, false, false};
if (list == null || list.isEmpty()){
return roles;
}
Iterator it = list.iterator();
int i = 0;
while (it.hasNext()){
int roleId = ((UserRole)it.next()).getRole().getRoleId();
if (roleId == 1){
roles [0] = true;
} else if (roleId == 2){
roles [1] = true;
} else if (roleId == 3){
roles [2] = true;
}
i++;
}
return roles;
}
public boolean isUserRole(int userId, int roleId){
UserRole ur = UserRoleController.getInstance().getUserRoleByUserAndRole(userId, roleId);
if (ur == null){
return false;
}
return true;
}
}