using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; namespace LBPUnion.ProjectLighthouse.Servers.Website.Extensions; public static class PartialExtensions { public static ViewDataDictionary WithLang(this ViewDataDictionary viewData, string language) => WithKeyValue(viewData, "Language", language); public static ViewDataDictionary WithTime(this ViewDataDictionary viewData, string timeZone) => WithKeyValue(viewData, "TimeZone", timeZone); public static ViewDataDictionary CanDelete(this ViewDataDictionary viewData, bool canDelete) => WithKeyValue(viewData, "CanDelete", canDelete); private static ViewDataDictionary WithKeyValue(this ViewDataDictionary viewData, string key, object? value) { try { return new ViewDataDictionary(viewData) { { key, value }, }; } catch { return viewData; } } public static Task ToLink(this User user, IHtmlHelper helper, ViewDataDictionary viewData, string language, string timeZone = "", bool includeStatus = false) => helper.PartialAsync("Partials/Links/UserLinkPartial", user, viewData.WithLang(language).WithTime(timeZone).WithKeyValue("IncludeStatus", includeStatus)); public static Task ToHtml ( this Slot slot, IHtmlHelper helper, ViewDataDictionary viewData, User? user, string callbackUrl, string language = "", string timeZone = "", bool isMobile = false, bool showLink = false, bool isMini = false ) => helper.PartialAsync("Partials/SlotCardPartial", slot, viewData.WithLang(language).WithTime(timeZone) .WithKeyValue("User", user) .WithKeyValue("CallbackUrl", callbackUrl) .WithKeyValue("ShowLink", showLink) .WithKeyValue("IsMobile", isMobile)); public static Task ToHtml(this Photo photo, IHtmlHelper helper, ViewDataDictionary viewData, string language, string timeZone, bool canDelete = false) => helper.PartialAsync("Partials/PhotoPartial", photo, viewData.WithLang(language).WithTime(timeZone).CanDelete(canDelete)); }