/**
* Este arquivo é parte do Biblivre3.
*
* Biblivre3 é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 3 da
* Licença, ou (caso queira) qualquer versão posterior.
*
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de
* MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
* com este programa, Se não, veja em <http://www.gnu.org/licenses/>.
*
* @author Alberto Wagner <alberto@biblivre.org.br>
* @author Danniel Willian <danniel@biblivre.org.br>
*
*/
package biblivre3.circulation;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mercury.BaseHandler;
import mercury.Dialog;
import mercury.I18nUtils;
import mercury.MemoryFileDTO;
public class UserCardsHandler extends BaseHandler {
@Override
public String processModule(HttpServletRequest request, HttpServletResponse response, String submitButton, HashMap<String, String> requestParametersHash) {
if (submitButton.equals("GENERATE_USER_CARDS_DATE")) {
String startDate = request.getParameter("startDate");
String finalDate = request.getParameter("endDate");
String defaultFormat = I18nUtils.getText(request.getSession(), "biblivre3", "DEFAULT_DATE_FORMAT");
Date parsedStartDate = null;
Date parsedFinalDate = null;
try {
DateFormat formatter = new SimpleDateFormat(defaultFormat);
formatter.setLenient(false);
parsedStartDate = (Date) formatter.parse(startDate);
parsedFinalDate = (Date) formatter.parse(finalDate);
} catch (Exception e) {
Dialog.showWarning(request, "MESSAGE_ERROR_INVALID_DATES");
return "/jsp/circulation/user_cards.jsp";
}
int generatedLabels[] = new CirculationBO().generateUserCardsByDate(parsedStartDate, parsedFinalDate);
if (generatedLabels[0] == 0) {
Dialog.showWarning(request, "MESSAGE_NO_USERS_IN_SELECTED_RANGE");
} else if (generatedLabels[1] == 0) {
Dialog.showWarning(request, "MESSAGE_USER_CARDS_IN_RANGE_ARE_ALREADY_IN_LIST");
} else {
Dialog.showNormal(request, "SUCCESS_ADD_USER_CARD");
}
return "/jsp/circulation/user_cards.jsp";
} else if (submitButton.equals("LIST_ALL_PENDING_USER_CARDS")) {
ArrayList<UserCardDTO> list = new CirculationBO().listPendingUserCards();
request.setAttribute("LIST_ALL_USER_CARDS", list);
if (list.isEmpty()) {
Dialog.showNormal(request, "MESSAGE_EMPTY_USER_CARD_LIST");
}
return "/jsp/circulation/user_cards.jsp";
} else if (submitButton.equals("DELETE_USER_CARD")) {
final String[] labels = request.getParameterValues("USER_CARD_SELECT");
if (labels != null) {
if (new CirculationBO().deleteUserCards(labels)) {
ArrayList<UserCardDTO> list = new CirculationBO().listPendingUserCards();
request.setAttribute("LIST_ALL_USER_CARDS", list);
Dialog.showNormal(request, "SUCCESS_DELETE_USER_CARD");
}
} else {
Dialog.showWarning(request, "ERROR_DELETE_USER_CARD");
}
return "/jsp/circulation/user_cards.jsp";
} else if (submitButton.equals("RECORD_FILE_PDF")) {
//FIXME: Remove those damn DAOs from here.
String dellabel = request.getParameter("dellabel");
final String[] userCards = request.getParameterValues("USER_CARD_SELECT");
final String startOffset = request.getParameter("START_OFFSET");
if (userCards != null) {
CirculationBO bo = new CirculationBO();
ArrayList<UserCardDTO> cardList = bo.listSelectedUserCards(userCards);
MemoryFileDTO pdfFile = bo.createFileUserCardsPDF(cardList, Integer.parseInt(startOffset), getI18nProperties(request, "biblivre3"));
if (pdfFile != null) {
Dialog.showNormal(request, "SUCCESS_CREATE_PDF");
if (dellabel != null) {
new CirculationBO().deleteUserCards(userCards);
}
ArrayList<UserCardDTO> list = new CirculationBO().listPendingUserCards();
request.setAttribute("LIST_ALL_USER_CARDS", list);
request.setAttribute("FILE_DOWNLOAD_URL", pdfFile.getFileName());
request.getSession().setAttribute(pdfFile.getFileName(), pdfFile);
}
} else {
Dialog.showNormal(request, "ERROR_CREATE_PDF");
}
return "/jsp/circulation/user_cards.jsp";
} else if (submitButton.equals("DOWNLOAD_USER_CARDS_FILE")) {
final String fileName = request.getParameter("FILE_NAME");
if (fileName != null) {
MemoryFileDTO file = (MemoryFileDTO)request.getSession().getAttribute(fileName);
this.returnFile(file, response);
return "x-download";
} else {
Dialog.showNormal(request, "ERROR_CREATE_PDF");
return "/jsp/circulation/user_cards.jsp";
}
} else {
return "";
}
}
}