Rev 7096 | Rev 7169 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.recharge.controllers;import in.shop2020.model.v1.order.RechargeOrderStatus;import in.shop2020.model.v1.order.RechargeTransaction;import in.shop2020.thrift.clients.TransactionClient;import in.shop2020.warehouse.InventoryAvailability;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.CreationHelper;import org.apache.poi.ss.usermodel.DataValidationConstraint.OperatorType;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.util.ServletContextAware;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.sun.mail.iap.Response;public class ReportController implements ServletRequestAware, ServletContextAware, ServletResponseAware {private static Logger logger = LoggerFactory.getLogger(ReportController.class);protected HttpServletRequest request;protected HttpSession session;protected HttpServletResponse response;private ServletContext context;private String startDate;private String endDate;private String status;private String dateselector;private TransactionClient tsc;private in.shop2020.model.v1.order.TransactionService.Client tClient;private final DateFormat formatter = new SimpleDateFormat("EEE, dd-MMM-yyyy hh:mm a");private final DateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");private List<RechargeTransaction> txns = null;public ReportController(){try {tsc = new TransactionClient();tClient = tsc.getClient();} catch (Exception e) {logger.error("Error connecting to one of the user, order or payment service", e);}}public String index() throws Exception{String loginStatus = (String) request.getSession().getAttribute("LOGGED_IN");if(loginStatus == null || !loginStatus.equals("TRUE")){return "authfail";}txns = tClient.getRechargeTransactions(Long.parseLong((String) request.getSession().getAttribute("STORE_ID")));return "index";}public String create() throws Exception{long sDate = -1;long eDate = -1;RechargeOrderStatus st = null;String loginStatus = (String) request.getSession().getAttribute("LOGGED_IN");if(loginStatus == null || !loginStatus.equals("TRUE")){return "authfail";}if(dateselector.equals("1")) {sDate = new Date().getTime();eDate = sDate;}else if (dateselector.equals("2")) {sDate = new Date().getTime() - 86400*1000;eDate = sDate;}else {if(!(startDate.equals(""))) {sDate = dateFormatter.parse(startDate).getTime();startDate = dateFormatter.format(sDate);}if(!endDate.equals("")) {eDate = dateFormatter.parse(endDate).getTime();endDate = dateFormatter.format(sDate);}}if(!status.equals("-1")){st = RechargeOrderStatus.findByValue(Integer.parseInt("0"));}ByteArrayOutputStream baos = generateReport(tClient.getRechargeTrans(Long.parseLong((String) request.getSession().getAttribute("STORE_ID")), sDate, eDate, st));response.setContentType("application/vnd.ms-excel");String st1 = "ALL";if(st!=null){st1 = st.name();}String fileName = st1 + "-recharge-report";if (!startDate.equals("")) {fileName = fileName + "-" + startDate.replaceAll("\\\\", "") ;}if (!endDate.equals("")) {fileName = fileName + "-" + endDate.replaceAll("\\\\", "") ;}fileName = fileName + ".xls";response.setHeader("Content-disposition", "inline; filename=" + fileName);ServletOutputStream sos;try {sos = response.getOutputStream();baos.writeTo(sos);sos.flush();} catch (IOException e) {e.printStackTrace();}return "index";}private ByteArrayOutputStream generateReport(List<RechargeTransaction> rechargeTrans) {ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();Workbook wb = new HSSFWorkbook();Sheet reportSheet = wb.createSheet("Recharge Report");Row reportSheetHeader = reportSheet.createRow((short)0);reportSheetHeader.createCell(0).setCellValue("Order ID");reportSheetHeader.createCell(1).setCellValue("Order Date");reportSheetHeader.createCell(2).setCellValue("Operator");reportSheetHeader.createCell(3).setCellValue("Device");reportSheetHeader.createCell(4).setCellValue("Status");reportSheetHeader.createCell(5).setCellValue("Amount");reportSheetHeader.createCell(6).setCellValue("Discount");int serialNo = 0;for(RechargeTransaction transaction : rechargeTrans) {serialNo++;Row contentRow = reportSheet.createRow((short)serialNo);contentRow.createCell(0).setCellValue(transaction.getId());contentRow.createCell(1).setCellValue(formatter.format(new Date(transaction.getTransactionTime())));contentRow.createCell(2).setCellValue(getOperatorName(transaction.getOperatorId()));contentRow.createCell(3).setCellValue(transaction.getDeviceNum());contentRow.createCell(4).setCellValue(transaction.getStatus().name());contentRow.createCell(5).setCellValue(transaction.getAmount());contentRow.createCell(6).setCellValue(transaction.getDiscount());}try {wb.write(baosXLS);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return baosXLS;}public String getDateTime(long milliseconds) {Calendar cal = Calendar.getInstance();cal.setTimeInMillis(milliseconds);return formatter.format(cal.getTime());}public List<RechargeTransaction> getTxns(){return txns;}@Overridepublic void setServletRequest(HttpServletRequest req) {this.request = req;this.session = req.getSession();}@Overridepublic void setServletContext(ServletContext context) {this.context = context;}@Overridepublic void setServletResponse(HttpServletResponse response) {this.response = response;}public String getServletContextPath() {return context.getContextPath();}public String getOperatorName(long operatorId) {String operatorName = "";if (HomeController.getMobileProvidersMap().containsKey(operatorId)) {operatorName = HomeController.getMobileProvidersMap().get(operatorId);} else if(HomeController.getDthProvidersMap().containsKey(operatorId)) {operatorName = HomeController.getDthProvidersMap().get(operatorId);} else {operatorName = "N/A";}return operatorName;}public String getStartDate() {return startDate;}public void setStartDate(String startDate) {this.startDate = startDate;}public String getEndDate() {return endDate;}public void setEndDate(String endDate) {this.endDate = endDate;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}public String getDateselector() {return dateselector;}public void setDateselector(String dateselector) {this.dateselector = dateselector;}}