package controllers;
import auth.modules.TokenAuthorize;
import auth.types.PermissionType;
import compositions.*;
import play.mvc.Result;
import service.PoseidonPropertyService;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
@ResponseTimeLoggingComposition.ResponseTimeLogging
@NoCacheComposition.NoCache
@ErrorHandlingComposition.ErrorHandling
@RequestLoggingComposition.RequestLogging
@CorsComposition.Cors
public class CSVDownloadControllerV1 extends PoseidonController {
public static final String DISTRIBUTIONLIST = "distributionlist";
public static final String INVOICE = "invoice";
public Result downloadInvoiceCSV(String file) {
return downloadCSV(file, INVOICE);
}
public Result downloadDistributionListCSV(String file) {
return downloadCSV(file, DISTRIBUTIONLIST);
}
private Result downloadCSV(String file, String type) {
String csvdir = PoseidonPropertyService.getProperty("csvfile." + type + ".dir");
csvdir = csvdir.endsWith("/")?csvdir:csvdir + "/";
if ( file.startsWith("..") || file.startsWith("/")) return notFound();
File f = new File(csvdir + file);
if (f.exists() && f.canRead()) {
response().setContentType("application/x-download");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm");
String filename = file + "-" + sdf.format(new Date()) + ".csv";
String contentDispositionValue = "attachment; url=" + filename;
response().setHeader("Content-disposition", contentDispositionValue);
return ok(f);
} else return notFound();
}
}