package models;
import com.avaje.ebean.Expr;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
@Entity
@Table(
name = "POS_FORECAST",
uniqueConstraints = {@UniqueConstraint(columnNames={"order_id", "termin"})}
)
public class ForecastModel extends AuditedModel {
public static Finder<Long, ForecastModel> find = new Finder<>(ForecastModel.class);
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
public String comment;
public String confidence;
public String forecastedBy;
public Date forecastedAt;
public Date producedAt;
public Date failedAt;
public String failureReason;
public String termin;
public boolean invoiced = false;
@ManyToOne
@JoinColumn(name = "order_id")
public OrderModel order;
public ForecastModel() {
}
public static ForecastModel findByMetrefAndTermin(String metref, String termin) {
return find
.where()
.and(Expr.ieq("order.met_ref", metref),
Expr.eq("termin", termin))
.findUnique();
}
public static ForecastModel findLastForecastForMetref(String met_ref) {
List<ForecastModel> forecasts =
find.where()
.and(Expr.eq("order.met_ref", met_ref),
Expr.isNotNull("producedAt"))
.orderBy("forecastedAt desc").findList();
if ( forecasts == null || forecasts.size() == 0) return null;
else {
return forecasts.get(0);
}
}
public static List<ForecastModel> findByMetrefAndDateRange(String metref, Date start, Date end) {
return find
.where()
.ieq("order.met_ref", metref)
.ge("producedAt", start) // >=
.le("producedAt", end) // <=
.findList();
}
public ForecastModel(String comment, String confidence, String forecastedBy, Date forecastedAt, Date producedAt, String termin, OrderModel order) {
this.comment = comment;
this.confidence = confidence;
this.forecastedBy = forecastedBy;
this.forecastedAt = forecastedAt;
this.producedAt = producedAt;
this.termin = termin;
this.order = order;
this.invoiced = false;
}
}