package dist.service;
import api.v1.OrderSearch;
import models.OrderModel;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import play.api.libs.iteratee.Enumeratee;
import service.OrderService;
import service.PoseidonPropertyService;
import service.PoseidonService;
import java.util.List;
import java.util.stream.Collectors;
public class DistService extends PoseidonService {
private final static OrderService orderService = new OrderService("akka");
private final static Logger logger = LoggerFactory.getLogger(DistService.class);
public DistService(String user) {
super(user);
}
public DistSyncSummary syncDistdata() {
logger.info("Starter dist.service.DistService.syncDistdata");
DistSyncer syncer = new DistSyncer();
DistSyncSummary summary = new DistSyncSummary();
// delete orders
List<OrderModel> inactiveOrders = orderService.getInactiveOrdersForDistdb();
if ( inactiveOrders != null && inactiveOrders.size() > 0) {
for (OrderModel order : inactiveOrders) {
syncer.deleteOrder(order);
}
summary.deletedOrders = inactiveOrders.size();
}
// Sync orders
List<OrderModel> orders = orderService.getActiveOrdersForDistdb();
if (orders != null && orders.size() > 0) {
for (OrderModel order : orders) {
syncer.syncOrder(order);
}
summary.syncedOrders = orders.size();
}
logger.info("dist.service.DistService.syncDistdata er ferdig: {}", summary);
return summary;
}
public void syncOrderImmediately(OrderModel orderModel) {
DistSyncer syncer = new DistSyncer();
DateTime now = PoseidonService.getNow();
DateTime today = PoseidonService.getToday();
DateTime tomorrow = today.plusDays(1);
DateTime start1 = new DateTime(orderModel.start_date1, PoseidonService.getTimeZone()).withTimeAtStartOfDay();
if (start1.isEqual(today)) {
syncer.syncOrder(orderModel);
} else {
String startHourProp = PoseidonPropertyService.getProperty("kundedbsync.start_hour");
int startHour = Integer.valueOf(startHourProp);
if (start1.isEqual(tomorrow) && now.getHourOfDay() >= startHour) {
syncer.syncOrder(orderModel);
}
}
}
}