Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,25 @@ private SQLBuilder getExtraCriteria(MakerCheckerRequest makerCheckerRequest) {
}
extraCriteria.addNonNullCriteria("aud.resource_id = ", makerCheckerRequest.getResourceId());
extraCriteria.addNonNullCriteria("aud.maker_id = ", makerCheckerRequest.getMakerId());
extraCriteria.addNonNullCriteria("aud.made_on_date >= ", makerCheckerRequest.getMakerDateTimeFrom());
extraCriteria.addNonNullCriteria("aud.made_on_date <= ", makerCheckerRequest.getMakerDateTimeTo());
if (StringUtils.isNotBlank(makerCheckerRequest.getUsername())) {
extraCriteria.addCriteria("mk.username like ", makerCheckerRequest.getUsername().trim() + "%");
}
if (makerCheckerRequest.getMakerDateTimeFrom() != null) {
extraCriteria.addSubOperation((SQLBuilder criteria) -> {
criteria.addNonNullCriteria("aud.made_on_date >= ", makerCheckerRequest.getMakerDateTimeFrom(),
SQLBuilder.WhereLogicalOperator.NONE);
criteria.addNonNullCriteria("aud.made_on_date_utc >= ", makerCheckerRequest.getMakerDateTimeFrom(),
SQLBuilder.WhereLogicalOperator.OR);
});
}
if (makerCheckerRequest.getMakerDateTimeTo() != null) {
extraCriteria.addSubOperation((SQLBuilder criteria) -> {
criteria.addNonNullCriteria("aud.made_on_date <= ", makerCheckerRequest.getMakerDateTimeTo(),
SQLBuilder.WhereLogicalOperator.NONE);
criteria.addNonNullCriteria("aud.made_on_date_utc <= ", makerCheckerRequest.getMakerDateTimeTo(),
SQLBuilder.WhereLogicalOperator.OR);
});
}
extraCriteria.addNonNullCriteria("aud.office_id = ", makerCheckerRequest.getOfficeId());
extraCriteria.addNonNullCriteria("aud.group_id = ", makerCheckerRequest.getGroupId());
extraCriteria.addNonNullCriteria("aud.client_id = ", makerCheckerRequest.getClientId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,17 @@
import jakarta.ws.rs.QueryParam;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Locale;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import org.apache.fineract.infrastructure.core.service.DateUtils;

@Setter
Expand All @@ -44,6 +50,8 @@ public class MakerCheckerRequest implements Serializable {
private Long resourceId;
@QueryParam("makerId")
private Long makerId;
@QueryParam("username")
private String username;
@QueryParam("makerDateTimeFrom")
private String makerDateTimeFrom;
@QueryParam("makerDateTimeTo")
Expand All @@ -64,10 +72,28 @@ public class MakerCheckerRequest implements Serializable {
private String locale;

public OffsetDateTime getMakerDateTimeFrom() {
return DateUtils.convertDateTimeStringToOffsetDateTime(makerDateTimeFrom, dateFormat, locale, LocalTime.MIN);
OffsetDateTime parsed = tryParseDayMonthYear(makerDateTimeFrom, LocalTime.MIN);
return parsed != null ? parsed
: DateUtils.convertDateTimeStringToOffsetDateTime(makerDateTimeFrom, dateFormat, locale, LocalTime.MIN);
}

public OffsetDateTime getMakerDateTimeTo() {
return DateUtils.convertDateTimeStringToOffsetDateTime(makerDateTimeTo, dateFormat, locale, LocalTime.MAX);
OffsetDateTime parsed = tryParseDayMonthYear(makerDateTimeTo, LocalTime.MAX);
return parsed != null ? parsed
: DateUtils.convertDateTimeStringToOffsetDateTime(makerDateTimeTo, dateFormat, locale, LocalTime.MAX);
}

private static final DateTimeFormatter DAY_MONTH_YEAR = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH);

private static OffsetDateTime tryParseDayMonthYear(String value, LocalTime time) {
if (StringUtils.isBlank(value)) {
return null;
}
try {
LocalDate date = LocalDate.parse(value.trim(), DAY_MONTH_YEAR);
return date.atTime(time).atOffset(ZoneOffset.UTC);
} catch (DateTimeParseException e) {
return null;
}
}
}
Loading