Search in sources :

Example 1 with HallOfHistoryService

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);
}
Also used : StringUtils(gg.projecteden.nexus.utils.StringUtils) JsonBuilder(gg.projecteden.nexus.utils.JsonBuilder) BiFunction(java.util.function.BiFunction) OptionalDouble(java.util.OptionalDouble) Async(gg.projecteden.annotations.Async) Arg(gg.projecteden.nexus.framework.commands.models.annotations.Arg) HashMap(java.util.HashMap) Group(gg.projecteden.nexus.framework.commands.models.annotations.Permission.Group) RankHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory.RankHistory) ArrayList(java.util.ArrayList) Nullables.isNullOrEmpty(gg.projecteden.nexus.utils.Nullables.isNullOrEmpty) ServerAge(gg.projecteden.nexus.features.commands.AgeCommand.ServerAge) Map(java.util.Map) Permission(gg.projecteden.nexus.framework.commands.models.annotations.Permission) Nickname(gg.projecteden.nexus.models.nickname.Nickname) Timespan(gg.projecteden.utils.TimeUtils.Timespan) ConfirmationMenu(gg.projecteden.nexus.features.menus.MenuUtils.ConfirmationMenu) Path(gg.projecteden.nexus.framework.commands.models.annotations.Path) Nerd(gg.projecteden.nexus.models.nerd.Nerd) Rank(gg.projecteden.nexus.models.nerd.Rank) CustomCommand(gg.projecteden.nexus.framework.commands.models.CustomCommand) Tasks(gg.projecteden.nexus.utils.Tasks) TimeUtils.shortDateFormat(gg.projecteden.utils.TimeUtils.shortDateFormat) UUID(java.util.UUID) PlayerNotFoundException(gg.projecteden.nexus.framework.exceptions.postconfigured.PlayerNotFoundException) TimeUtils.dateFormat(gg.projecteden.utils.TimeUtils.dateFormat) EdenSocialMediaSite(gg.projecteden.nexus.features.socialmedia.SocialMedia.EdenSocialMediaSite) HallOfHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory) Utils(gg.projecteden.nexus.utils.Utils) OfflinePlayer(org.bukkit.OfflinePlayer) StringUtils.stripColor(gg.projecteden.nexus.utils.StringUtils.stripColor) Aliases(gg.projecteden.nexus.framework.commands.models.annotations.Aliases) TickTime(gg.projecteden.utils.TimeUtils.TickTime) List(java.util.List) ChronoUnit(java.time.temporal.ChronoUnit) CommandEvent(gg.projecteden.nexus.framework.commands.models.events.CommandEvent) LocalDate(java.time.LocalDate) NerdService(gg.projecteden.nexus.models.nerd.NerdService) HallOfHistoryService(gg.projecteden.nexus.models.hallofhistory.HallOfHistoryService) Comparator(java.util.Comparator) HashMap(java.util.HashMap) HallOfHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory) LocalDate(java.time.LocalDate) JsonBuilder(gg.projecteden.nexus.utils.JsonBuilder) HallOfHistoryService(gg.projecteden.nexus.models.hallofhistory.HallOfHistoryService) RankHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory.RankHistory) UUID(java.util.UUID) Path(gg.projecteden.nexus.framework.commands.models.annotations.Path) Async(gg.projecteden.annotations.Async)

Example 2 with HallOfHistoryService

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);
}
Also used : StringUtils(gg.projecteden.nexus.utils.StringUtils) JsonBuilder(gg.projecteden.nexus.utils.JsonBuilder) BiFunction(java.util.function.BiFunction) OptionalDouble(java.util.OptionalDouble) Async(gg.projecteden.annotations.Async) Arg(gg.projecteden.nexus.framework.commands.models.annotations.Arg) HashMap(java.util.HashMap) Group(gg.projecteden.nexus.framework.commands.models.annotations.Permission.Group) RankHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory.RankHistory) ArrayList(java.util.ArrayList) Nullables.isNullOrEmpty(gg.projecteden.nexus.utils.Nullables.isNullOrEmpty) ServerAge(gg.projecteden.nexus.features.commands.AgeCommand.ServerAge) Map(java.util.Map) Permission(gg.projecteden.nexus.framework.commands.models.annotations.Permission) Nickname(gg.projecteden.nexus.models.nickname.Nickname) Timespan(gg.projecteden.utils.TimeUtils.Timespan) ConfirmationMenu(gg.projecteden.nexus.features.menus.MenuUtils.ConfirmationMenu) Path(gg.projecteden.nexus.framework.commands.models.annotations.Path) Nerd(gg.projecteden.nexus.models.nerd.Nerd) Rank(gg.projecteden.nexus.models.nerd.Rank) CustomCommand(gg.projecteden.nexus.framework.commands.models.CustomCommand) Tasks(gg.projecteden.nexus.utils.Tasks) TimeUtils.shortDateFormat(gg.projecteden.utils.TimeUtils.shortDateFormat) UUID(java.util.UUID) PlayerNotFoundException(gg.projecteden.nexus.framework.exceptions.postconfigured.PlayerNotFoundException) TimeUtils.dateFormat(gg.projecteden.utils.TimeUtils.dateFormat) EdenSocialMediaSite(gg.projecteden.nexus.features.socialmedia.SocialMedia.EdenSocialMediaSite) HallOfHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory) Utils(gg.projecteden.nexus.utils.Utils) OfflinePlayer(org.bukkit.OfflinePlayer) StringUtils.stripColor(gg.projecteden.nexus.utils.StringUtils.stripColor) Aliases(gg.projecteden.nexus.framework.commands.models.annotations.Aliases) TickTime(gg.projecteden.utils.TimeUtils.TickTime) List(java.util.List) ChronoUnit(java.time.temporal.ChronoUnit) CommandEvent(gg.projecteden.nexus.framework.commands.models.events.CommandEvent) LocalDate(java.time.LocalDate) NerdService(gg.projecteden.nexus.models.nerd.NerdService) HallOfHistoryService(gg.projecteden.nexus.models.hallofhistory.HallOfHistoryService) Comparator(java.util.Comparator) HashMap(java.util.HashMap) HallOfHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory) Nerd(gg.projecteden.nexus.models.nerd.Nerd) OptionalDouble(java.util.OptionalDouble) JsonBuilder(gg.projecteden.nexus.utils.JsonBuilder) HallOfHistoryService(gg.projecteden.nexus.models.hallofhistory.HallOfHistoryService) RankHistory(gg.projecteden.nexus.models.hallofhistory.HallOfHistory.RankHistory) UUID(java.util.UUID) Path(gg.projecteden.nexus.framework.commands.models.annotations.Path)

Aggregations

Async (gg.projecteden.annotations.Async)2 ServerAge (gg.projecteden.nexus.features.commands.AgeCommand.ServerAge)2 ConfirmationMenu (gg.projecteden.nexus.features.menus.MenuUtils.ConfirmationMenu)2 EdenSocialMediaSite (gg.projecteden.nexus.features.socialmedia.SocialMedia.EdenSocialMediaSite)2 CustomCommand (gg.projecteden.nexus.framework.commands.models.CustomCommand)2 Aliases (gg.projecteden.nexus.framework.commands.models.annotations.Aliases)2 Arg (gg.projecteden.nexus.framework.commands.models.annotations.Arg)2 Path (gg.projecteden.nexus.framework.commands.models.annotations.Path)2 Permission (gg.projecteden.nexus.framework.commands.models.annotations.Permission)2 Group (gg.projecteden.nexus.framework.commands.models.annotations.Permission.Group)2 CommandEvent (gg.projecteden.nexus.framework.commands.models.events.CommandEvent)2 PlayerNotFoundException (gg.projecteden.nexus.framework.exceptions.postconfigured.PlayerNotFoundException)2 HallOfHistory (gg.projecteden.nexus.models.hallofhistory.HallOfHistory)2 RankHistory (gg.projecteden.nexus.models.hallofhistory.HallOfHistory.RankHistory)2 HallOfHistoryService (gg.projecteden.nexus.models.hallofhistory.HallOfHistoryService)2 Nerd (gg.projecteden.nexus.models.nerd.Nerd)2 NerdService (gg.projecteden.nexus.models.nerd.NerdService)2 Rank (gg.projecteden.nexus.models.nerd.Rank)2 Nickname (gg.projecteden.nexus.models.nickname.Nickname)2 JsonBuilder (gg.projecteden.nexus.utils.JsonBuilder)2