/** * 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 biblivre3.administration.permission.PermissionBO; import biblivre3.circulation.lending.LendingBO; import biblivre3.utils.DateUtils; import biblivre3.utils.ApplicationConstants; import biblivre3.utils.TextUtils; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import mercury.ErrorDTO; import mercury.SuccessDTO; import mercury.IFJson; import mercury.LoginDTO; import mercury.BaseHandler; import mercury.I18nUtils; import mercury.RootJsonHandler; import org.apache.commons.lang.StringUtils; import org.json.JSONObject; public class JsonCirculationHandler extends RootJsonHandler { @Override public JSONObject process(HttpServletRequest request, HttpServletResponse response) { String submitButton = request.getParameter("submitButton"); Properties properties = BaseHandler.getI18nProperties(request, "biblivre3"); IFJson dto = null; if (submitButton == null || submitButton.isEmpty()) { } else if (submitButton.equals("search")) { dto = search(request); } else if (submitButton.equals("record")) { dto = searchById(request); } else if (submitButton.equals("save_user")) { dto = saveUser(request); } else if (submitButton.equals("delete_user")) { dto = deleteUser(request); } else if (submitButton.equals("user_history")) { dto = getUserHistory(request); } else if (submitButton.equals("create_user_card")) { dto = createUserCard(request); } else if (submitButton.equals("block_user")) { dto = blockUser(request, true); } else if (submitButton.equals("unblock_user")) { dto = blockUser(request, false); } return dto.toJSONObject(properties); } public IFJson search(final HttpServletRequest request) { String searchName = request.getParameter("SEARCH_NAME"); int searchUserid; try { searchUserid = Integer.parseInt(request.getParameter("SEARCH_USER_ID")); } catch (Exception e) { searchUserid = 0; } int offset; try { offset = Integer.parseInt(request.getParameter("offset")); } catch (Exception e) { offset = 0; } CirculationBO cbo = new CirculationBO(); UsersDTO udto = cbo.list(searchName, searchUserid, offset); if (udto != null && udto.size() > 0) { return udto; } else { return new ErrorDTO("MESSAGE_FOUND_NONE", "warning"); } } public IFJson searchById(final HttpServletRequest request) { int userid; try { userid = Integer.parseInt(request.getParameter("userid")); } catch (Exception e) { return new ErrorDTO("ERROR_RECORD_NOT_FOUND", "warning"); } //-- BO searches records... CirculationBO cbo = new CirculationBO(); UserDTO udto = cbo.searchByUserId(userid); if (udto != null) { return udto; } else { return new ErrorDTO("ERROR_RECORD_NOT_FOUND", "warning"); } } public IFJson saveUser(final HttpServletRequest request) { String name = TextUtils.sanitize(request.getParameter("NAME"), ""); String address = TextUtils.sanitize(request.getParameter("ADDRESS"), ""); String number = TextUtils.sanitize(request.getParameter("NUMBER"), ""); String completion = TextUtils.sanitize(request.getParameter("COMPLETION"), ""); String zipCode = TextUtils.sanitize(request.getParameter("ZIP_CODE"), ""); String city = TextUtils.sanitize(request.getParameter("CITY"), ""); String state = TextUtils.sanitize(request.getParameter("STATE"), ""); String socialIdNumber = TextUtils.sanitize(request.getParameter("SOCIAL_ID_NUMBER"), ""); String dlicense = TextUtils.sanitize(request.getParameter("DLICENSE"), ""); String email = TextUtils.sanitize(request.getParameter("EMAIL"), ""); String telRef1 = TextUtils.sanitize(request.getParameter("TEL_REF_1"), ""); String telRef2 = TextUtils.sanitize(request.getParameter("TEL_REF_2"), ""); String birthday = TextUtils.sanitize(request.getParameter("BIRTHDAY"), ""); String obs = TextUtils.sanitize(request.getParameter("OBS"), ""); String cellPhone = TextUtils.sanitize(request.getParameter("CEL_PHONE"), ""); String ramal = TextUtils.sanitize(request.getParameter("RAMAL"), ""); String userType = TextUtils.sanitize(request.getParameter("USER_TYPE"), "0"); String photo = TextUtils.sanitize(request.getParameter("NEW_USER_PHOTO"), ""); if (name.isEmpty()) { return new ErrorDTO("ERROR_BLANK_NAME", "error"); } Date parsedDate = DateUtils.verifyDate(birthday, I18nUtils.getText(request.getSession(), "biblivre3", "DEFAULT_DATE_FORMAT")); if (parsedDate == null && StringUtils.isNotBlank(birthday)) { return new ErrorDTO("ERROR_INVALID_DATE", "error"); } if (parsedDate != null) { SimpleDateFormat expectedFormat = new SimpleDateFormat("dd/MM/yyyy"); birthday = expectedFormat.format(parsedDate); } UserDTO userDTO = new UserDTO(); userDTO.setName(name); userDTO.setAddress(address); userDTO.setNumber(number); userDTO.setCompletion(completion); userDTO.setZip_code(zipCode); userDTO.setCity(city); userDTO.setState(state); userDTO.setSocial_id_number(socialIdNumber); userDTO.setDlicense(dlicense); userDTO.setEmail(email); userDTO.setTelRef1(telRef1); userDTO.setTelRef2(telRef2); userDTO.setBirthday(birthday); userDTO.setObs(obs); userDTO.setCellphone(cellPhone); userDTO.setExtension_line(ramal); userDTO.setUsernameascii(TextUtils.removeDiacriticals(name)); userDTO.setUserType((new Integer(userType)).intValue()); userDTO.setPhoto(photo); CirculationBO cbo = new CirculationBO(); String userIdStr = TextUtils.sanitize(request.getParameter("user_id"), "0"); int userId = (new Integer(userIdStr).intValue()); if (userId == 0) { userId = cbo.addUser(userDTO); if (userId != 0) { userDTO.setUserid(userId); return new SuccessDTO("SUCCESS_ADD_USER"); } } else { cbo.updateUser(userDTO, userId); userDTO.setUserid(userId); return new SuccessDTO("SUCCESS_UPDATE_USER"); } return new SuccessDTO("ERROR_SAVE_USER"); } public IFJson deleteUser(final HttpServletRequest request) { int userId; try { userId = Integer.valueOf(request.getParameter("user_id")); } catch (Exception e) { userId = 0; } if (userId == 0) { return new ErrorDTO("ERROR_INVALID_USER", "error"); } if (ApplicationConstants.CODE_ADMIN.equals(String.valueOf(userId))) { return new ErrorDTO("MESSAGE_CANT_REMOVE_ADMIN", "error"); } CirculationBO circulationBO = new CirculationBO(); UserDTO userDTO = circulationBO.searchByUserId(userId); int loginId = userDTO.getLoginid(); LoginDTO id = (LoginDTO) request.getSession().getAttribute("LOGGED_USER"); int loggedId = id.getLoginId(); if (new LendingBO().getUserLendingCount(userDTO) > 0) { return new ErrorDTO("MESSAGE_FAILED_CANNOT_DELETE_USER_WITH_LENDINGS", "error"); } if (loginId == loggedId) { return new ErrorDTO("MESSAGE_FAILED_CANNOT_DELETE_YOU_ARE_USING_THIS_ACCOUNT", "error"); } if (loginId != 0) { (new PermissionBO()).removeLogin(userDTO); } circulationBO.deleteUser(userId); return new SuccessDTO("SUCCESS_REMOVE_USER"); } public IFJson getUserHistory(final HttpServletRequest request) { String param = request.getParameter("userid"); Integer userid = 0; try { userid = Integer.valueOf(param); } catch (NumberFormatException nfe) { return new ErrorDTO("MESSAGE_FOUND_NONE", "warning"); } CirculationBO cbo = new CirculationBO(); UserHistoryDTO udto = cbo.getUserHistory(userid); if (udto != null) { return udto; } else { return new ErrorDTO("MESSAGE_FOUND_NONE", "warning"); } } private IFJson blockUser(HttpServletRequest request, boolean block) { int userid; try { userid = Integer.parseInt(request.getParameter("user_id")); } catch (Exception e) { userid = 0; } if (userid == 0) { return new ErrorDTO("ERROR_INVALID_USER", "error"); } if (ApplicationConstants.CODE_ADMIN.equals(String.valueOf(userid))) { return new ErrorDTO("MESSAGE_CANT_BLOCK_ADMIN", "error"); } CirculationBO circulationBO = new CirculationBO(); UserDTO userDTO = circulationBO.searchByUserId(userid); int loginId = userDTO.getLoginid(); LoginDTO id = (LoginDTO) request.getSession().getAttribute("LOGGED_USER"); int loggedId = id.getLoginId(); if (loginId == loggedId) { return new ErrorDTO("MESSAGE_FAILED_CANNOT_DELETE_YOU_ARE_USING_THIS_ACCOUNT", "error"); } if (loginId != 0) { (new PermissionBO()).removeLogin(userDTO); } boolean success = circulationBO.blockUser(userid, block); if (block) { if (success) { return new SuccessDTO("SUCCESS_BLOCK_USER"); } else { return new ErrorDTO("ERROR_BLOCK_USER", "error"); } } else { if (success) { return new SuccessDTO("SUCCESS_UNBLOCK_USER"); } else { return new ErrorDTO("ERROR_UNBLOCK_USER", "error"); } } } private IFJson createUserCard(HttpServletRequest request) { String param = request.getParameter("userid"); Integer userid = 0; try { userid = Integer.valueOf(param); } catch (NumberFormatException nfe) { return new ErrorDTO("MESSAGE_FOUND_NONE", "warning"); } boolean success = false; boolean cardExists = false; CirculationBO bo = new CirculationBO(); UserDTO userDto = bo.searchByUserId(userid); UserTypeDTO userTypeDto = bo.getUserTypeById(userDto.getUserType()); String userTypeName = userTypeDto != null ? userTypeDto.getName() : ""; cardExists = bo.existsUserCard(userDto.getUserid(), userTypeName); if (cardExists) { return new ErrorDTO("MESSAGE_USER_CARD_ALREADY_IN_QUEUE", "warning"); } else { UserCardDTO userCard = new UserCardDTO(); userCard.setUserId(userDto.getUserid()); userCard.setUserName(userDto.getName()); userCard.setUserType(userTypeName); success = bo.insertUserCard(userCard); } if (success) { return new SuccessDTO("SUCCESS_CREATE_USER_CARD"); } else { return new ErrorDTO("ERROR_CREATE_USER_CARD", "warning"); } } }