use of gg.projecteden.nexus.models.hallofhistory.HallOfHistoryService in project Nexus by ProjectEdenGG.
the class HallOfHistoryCommand method staffTime.
@Async
@Path("staffTime [page]")
public void staffTime(@Arg("1") int page) {
LocalDate now = LocalDate.now();
HallOfHistoryService service = new HallOfHistoryService();
Map<UUID, Long> staffTimeMap = new HashMap<>();
for (HallOfHistory hallOfHistory : service.getAll()) {
long days = 0;
days: for (LocalDate date = ServerAge.getEPOCH().toLocalDate(); date.isBefore(now); date = date.plusDays(1)) {
for (RankHistory rankHistory : hallOfHistory.getRankHistory()) {
LocalDate from = rankHistory.getPromotionDate();
LocalDate to = rankHistory.getResignationDate();
if (from == null)
continue;
if (to == null)
to = now;
if (Utils.isBetween(date, from, to)) {
++days;
continue days;
}
}
}
if (days == 0)
continue;
staffTimeMap.put(hallOfHistory.getUuid(), days);
}
send(PREFIX + "Staff times");
BiFunction<UUID, String, JsonBuilder> formatter = (uuid, index) -> {
String time = Timespan.ofSeconds(staffTimeMap.get(uuid) * (TickTime.DAY.get() / 20)).format();
return json(index + " &e" + time + " &7- " + Nerd.of(uuid).getNameFormat());
};
paginate(Utils.sortByValueReverse(staffTimeMap).keySet(), formatter, "/hoh staffTime", page);
}
use of gg.projecteden.nexus.models.hallofhistory.HallOfHistoryService in project Nexus by ProjectEdenGG.
the class HallOfHistoryCommand method promotionTimes.
@Path("promotionTimes [page]")
void promotionTimes(@Arg("1") int page) {
HallOfHistoryService service = new HallOfHistoryService();
Map<UUID, Long> promotionTimeMap = new HashMap<>();
for (HallOfHistory hallOfHistory : service.getAll()) {
Nerd nerd = Nerd.of(hallOfHistory.getUuid());
List<RankHistory> history = hallOfHistory.getRankHistory();
history.sort(Comparator.comparing(RankHistory::getPromotionDate));
if (nerd.getFirstJoin().isBefore(ServerAge.getEPOCH().minusYears(1)))
continue;
long days = nerd.getFirstJoin().toLocalDate().until(history.get(0).getPromotionDate(), ChronoUnit.DAYS);
if (days > 0)
promotionTimeMap.put(hallOfHistory.getUuid(), days);
}
OptionalDouble average = promotionTimeMap.values().stream().mapToLong(Long::valueOf).average();
send(PREFIX + "Promotion times | Average: " + StringUtils.getNf().format(average.orElse(0)) + " days");
BiFunction<UUID, String, JsonBuilder> formatter = (uuid, index) -> {
String time = Timespan.ofSeconds(promotionTimeMap.get(uuid) * (TickTime.DAY.get() / 20)).format();
return json(index + " &e" + Nickname.of(uuid) + " &7- " + time);
};
paginate(Utils.sortByValue(promotionTimeMap).keySet(), formatter, "/hoh promotionTimes", page);
}
Aggregations