/** * Axelor Business Solutions * * Copyright (C) 2016 Axelor (<http://axelor.com>). * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.axelor.apps.base.web; import java.io.IOException; import java.util.List; import org.eclipse.birt.core.exception.BirtException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.axelor.apps.ReportFactory; import com.axelor.apps.base.db.Company; import com.axelor.apps.base.exceptions.IExceptionMessage; import com.axelor.apps.base.report.IReport; import com.axelor.apps.message.db.Message; import com.axelor.apps.message.db.repo.MessageRepository; import com.axelor.apps.message.service.MessageService; import com.axelor.apps.report.engine.ReportSettings; import com.axelor.auth.AuthUtils; import com.axelor.auth.db.User; import com.axelor.exception.AxelorException; import com.axelor.i18n.I18n; import com.axelor.meta.schema.actions.ActionView; import com.axelor.rpc.ActionRequest; import com.axelor.rpc.ActionResponse; import com.google.inject.Inject; public class MessageController extends com.axelor.apps.message.web.MessageController { private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private MessageRepository messageRepo; @Inject private MessageService messageService; /** * Method that generate message as a pdf * * @param request * @param response * @return * @throws BirtException * @throws IOException */ public void printMessage(ActionRequest request, ActionResponse response) throws AxelorException { Message message = request.getContext().asType(Message.class); String pdfPath = messageService.printMessage(message); if(pdfPath != null){ response.setView(ActionView .define("Message "+message.getSubject()) .add("html", pdfPath).map()); } else response.setFlash(I18n.get(IExceptionMessage.MESSAGE_1)); } public void print(ActionRequest request, ActionResponse response) throws AxelorException { Message message = request.getContext().asType(Message.class ); String messageIds = ""; @SuppressWarnings("unchecked") List<Integer> lstSelectedMessages = (List<Integer>) request.getContext().get("_ids"); if(lstSelectedMessages != null){ for(Integer it : lstSelectedMessages) { messageIds+= it.toString()+","; } } if(!messageIds.equals("")){ messageIds = messageIds.substring(0, messageIds.length()-1); message = messageRepo.find(new Long(lstSelectedMessages.get(0))); }else if(message.getId() != null){ messageIds = message.getId().toString(); } if(!messageIds.equals("")){ User user = AuthUtils.getUser(); Company company = message.getCompany(); String language = "en"; if(user != null && user.getLanguage() != null && !user.getLanguage().isEmpty()) { language = user.getLanguage(); } else if(company != null && company.getPrintingSettings() != null && company.getPrintingSettings().getLanguageSelect() !=null && !company.getPrintingSettings().getLanguageSelect().isEmpty() ) { language = company.getPrintingSettings().getLanguageSelect(); } String title = " "; if(message.getSubject() != null) { title += lstSelectedMessages == null ? "Message "+message.getSubject():"Messages"; } String fileLink = ReportFactory.createReport(IReport.MESSAGE_PDF, title+"-${date}") .addParam("Locale", language) .addParam("MessageId", messageIds) .addFormat(ReportSettings.FORMAT_XLS) .generate() .getFileLink(); logger.debug("Printing "+title); response.setView(ActionView .define(title) .add("html", fileLink).map()); }else{ response.setFlash(I18n.get(IExceptionMessage.MESSAGE_2)); } } }