package cz.cvut.fel.restauracefel.server.service.controllers;
import cz.cvut.fel.restauracefel.hibernate.Menu;
import cz.cvut.fel.restauracefel.hibernate.MenuMenuItem;
import cz.cvut.fel.restauracefel.hibernate.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Jarda
*/
public class MenuController {
private static MenuController instance = null;
private Menu menu = null;
private MenuController() {
}
public static MenuController getInstance() {
if (instance == null) {
instance = new MenuController();
}
return instance;
}
//vytvari zaznam o novem menu
public boolean createMenu(int userId, String name, Date date) {
menu = Menu.findByName(name);
if (menu == null) {
menu = new Menu();
User user = User.findById(userId);
if (user == null) {
return false;
}
menu.setUser(user);
menu.setName(name);
menu.setDate(date);
menu.create();
return true;
} else {
return false;
}
}
//odstrani menu podle menuId, predtim vsak odstrani vsechny vazby na polozky menu (polozky menu neodstranuje)
public boolean deleteMenu(int menuId) {
menu = Menu.findById(menuId);
if (menu == null) {
return false;
} else {
List<MenuMenuItem> list = MenuMenuItem.findByMenu(menuId);
if (list != null){
Iterator it = list.iterator();
MenuMenuItem mmi = null;
while (it.hasNext()){
mmi = (MenuMenuItem) it.next();
//mmi.delete();
mmi.setIsDeleted(1);
}
}
//menu.delete();
menu.setIsDeleted(1);
return true;
}
}
//aktualizuje menu s danym Id
public boolean updateMenu(int menuId, int userId, String name, Date date) {
menu = Menu.findById(menuId);
if (menu == null) {
return false;
} else {
User u = User.findById(userId);
if (u == null) {
return false;
}
Menu m = Menu.findByName(name);
if (m != null && m != menu) {
return false;
}
menu.setUser(u);
menu.setName(name);
menu.setDate(date);
menu.update();
return true;
}
}
//vraci menu s danym Id
public Menu getMenuById(int menuId) {
return Menu.findById(menuId);
}
//vraci menu s danym jmenem
public Menu getMenuByName(String name) {
return Menu.findByName(name);
}
//vraci Object pole se zaznamy jednotlivych menu
public Object[][] getMenus() {
List<Menu> list = Menu.findAll();
if (list == null || list.isEmpty()) {
return null;
}
Object[][] array = new Object[list.size()][4];
Iterator it = list.iterator();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
int i = 0;
while (it.hasNext()) {
menu = (Menu) it.next();
array[i][0] = menu.getMenuId();
array[i][1] = menu.getName();
array[i][2] = sdf.format(menu.getDate());
if (menu.getUser().getIsDeleted() == 1){
array [i][3] = "Uživatel smazán";
} else {
array[i][3] = menu.getUser().getUsername();
}
i++;
}
return array;
}
//vraci pole se jmeny jednotlivych menu
public String[] getMenuNames() {
List<Menu> list = Menu.findAll();
if (list == null || list.isEmpty()) {
return null;
}
String names[] = new String[list.size()];
Iterator it = list.iterator();
int i = 0;
while (it.hasNext()) {
menu = (Menu) it.next();
names[i] = menu.getName();
i++;
}
return names;
}
}