use of org.motechproject.email.builder.EmailRecordSearchCriteria in project motech by motech.
the class EmailController method prepareCriteria.
private EmailRecordSearchCriteria prepareCriteria(GridSettings filter) {
EmailRecordSearchCriteria criteria = new EmailRecordSearchCriteria();
DateTime from = StringUtils.isBlank(filter.getTimeFrom()) ? null : DateTimeFormat.forPattern("Y-MM-dd HH:mm:ss").parseDateTime(filter.getTimeFrom());
DateTime to = StringUtils.isBlank(filter.getTimeTo()) ? null : DateTimeFormat.forPattern("Y-MM-dd HH:mm:ss").parseDateTime(filter.getTimeTo());
criteria.withMessageTimeRange(new Range<>(from, to));
if (filter.getDeliveryStatusFromSettings() != null && (!filter.getDeliveryStatusFromSettings().isEmpty())) {
criteria = criteria.withDeliveryStatuses(filter.getDeliveryStatusFromSettings());
}
Order sortOrder = new Order(filter.getSidx(), filter.getSord());
QueryParams queryParams = new QueryParams(filter.getPage(), filter.getRows(), sortOrder);
criteria.withQueryParams(queryParams);
criteria.withSubject(filter.getSubject());
criteria.withToAddress(filter.getSubject());
criteria.withFromAddress(filter.getSubject());
criteria.withMessage(filter.getSubject());
return criteria;
}
use of org.motechproject.email.builder.EmailRecordSearchCriteria in project motech by motech.
the class EmailController method exportEmailLog.
@RequestMapping(value = "/emails/export", method = RequestMethod.GET)
@PreAuthorize(EmailRolesConstants.HAS_ANY_EMAIL_ROLE)
public void exportEmailLog(@RequestParam("range") String range, @RequestParam(value = "month", required = false) String month, HttpServletResponse response, HttpServletRequest request) throws IOException {
DateTime now = new DateTime();
List<? extends BasicEmailRecordDto> toSave = new ArrayList<>();
if ("all".equals(range)) {
GridSettings allEmailsFilter = new GridSettings();
List<EmailRecord> allEmails = auditService.findAllEmailRecords();
allEmailsFilter.setPage(1);
allEmailsFilter.setRows(allEmails.size());
toSave = hideColumns(allEmails, allEmailsFilter);
} else if ("table".equals(range)) {
GridSettings filter = lastFilter.get(getUsername(request));
toSave = getEmails(filter, request).getRows();
} else if ("month".equals(range) && (!month.isEmpty())) {
int moved = 0;
String fixedMonth;
if (month.charAt(0) == '0') {
fixedMonth = month.substring(1);
moved++;
} else {
fixedMonth = month;
}
GridSettings oneMonthFilter = new GridSettings();
DateTime monthBegin = new // NO CHECKSTYLE MagicNumber
DateTime(// NO CHECKSTYLE MagicNumber
Integer.parseInt(fixedMonth.substring(3 - moved, 7 - moved)), Integer.parseInt(fixedMonth.substring(0, 2 - moved)), 1, 0, 0);
DateTime monthFall = // NO CHECKSTYLE MagicNumber
new DateTime().withYear(Integer.parseInt(fixedMonth.substring(3 - moved, 7 - moved))).withMonthOfYear(Integer.parseInt(fixedMonth.substring(0, 2 - moved))).dayOfMonth().withMaximumValue().hourOfDay().withMaximumValue().minuteOfHour().withMaximumValue().secondOfMinute().withMaximumValue().millisOfSecond().withMaximumValue();
Set<DeliveryStatus> allDeliveryStatuses = Sets.newHashSet(DeliveryStatus.values());
List<EmailRecord> monthEmails = auditService.findEmailRecords(new EmailRecordSearchCriteria().withMessageTimeRange(new Range<>(monthBegin, monthFall)).withDeliveryStatuses(allDeliveryStatuses));
oneMonthFilter.setPage(1);
oneMonthFilter.setRows(monthEmails.size());
toSave = hideColumns(monthEmails, oneMonthFilter);
}
String fileName = "motech_email_logs_" + now.toString("yyyy-MM-dd_HH-kk-mm");
response.setContentType("text/csv;charset=utf-8");
response.setCharacterEncoding(UTF_8);
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");
try (CsvBeanWriter csvBeanWriter = new CsvBeanWriter(response.getWriter(), CsvPreference.STANDARD_PREFERENCE)) {
String[] headers;
String[] fieldMapping;
if (toSave.size() == 0 || toSave.get(0) instanceof EmailRecordDto) {
headers = new String[] { "Delivery Status", "Delivery Time", "From Address", "To Address", "Subject", "Message" };
fieldMapping = new String[] { "deliveryStatus", "deliveryTime", "fromAddress", "toAddress", "subject", "message" };
} else {
headers = new String[] { "Delivery Status", "Delivery Time" };
fieldMapping = new String[] { "deliveryStatus", "deliveryTime" };
}
csvBeanWriter.writeHeader(headers);
for (BasicEmailRecordDto email : toSave) {
csvBeanWriter.write(email, fieldMapping);
}
}
}
use of org.motechproject.email.builder.EmailRecordSearchCriteria in project motech by motech.
the class EmailController method getEmails.
@RequestMapping(value = "/emails", method = RequestMethod.GET)
@PreAuthorize(EmailRolesConstants.HAS_ANY_EMAIL_ROLE)
@ResponseBody
public EmailRecords<? extends BasicEmailRecordDto> getEmails(GridSettings filter, HttpServletRequest request) {
EmailRecordSearchCriteria criteria = prepareCriteria(filter);
List<EmailRecord> filtered = auditService.findEmailRecords(criteria);
List<? extends BasicEmailRecordDto> rows = hideColumns(filtered, filter);
long total = auditService.countEmailRecords(criteria);
if (filter.getRows() == null) {
int defaultRowsAmount = 10;
filter.setRows(defaultRowsAmount);
}
if (filter.getPage() == null) {
int defaultPage = 1;
filter.setPage(defaultPage);
}
int totalPages = (int) Math.ceil((double) total / filter.getRows());
String username = getUsername(request);
if (username != null) {
lastFilter.put(username, filter);
}
return new EmailRecords<>((int) total, filter.getPage(), totalPages, rows);
}
Aggregations