using collAnon.Shared; using System; using System.IO; using System.Net.Mail; using System.Text.Json; namespace collAnon.Client.Helpers { public static class SUtility { public static T IfTrueThen(bool conditionIsTrue, T ifTrue, T ifFalse = default) { if (conditionIsTrue) return ifTrue; else return ifFalse; } public static bool TimeBetween(this DateTime datetime, TimeSpan start, TimeSpan end) { // convert datetime to a TimeSpan var now = datetime.TimeOfDay; // see if start comes before end if (start < end) return start <= now && now <= end; // start is after end, so do the inverse comparison return !(end < now && now < start); } public static bool CacheHasExpired(long? lastTimeCacheTimeTicks) { if (!lastTimeCacheTimeTicks.HasValue) return true; return (DateTime.Now.Ticks - lastTimeCacheTimeTicks.Value) > VConstants.CacheExpirationPeriod.Ticks; } public static string GetFileIcon(string fileName) { switch (Path.GetExtension(fileName)) { case ".odp": case ".pptx": return "file-powerpoint"; case ".ods": case ".xlsx": return "file-excel"; case ".odt": case ".docx": return "file-word"; case ".pdf": return "file-pdf"; case ".jpg": case ".jpeg": case ".png": return "file-image"; default: return "file"; } } public static string GetMissingMimeType(string fileName) { switch (Path.GetExtension(fileName)) { case ".docx": return "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; case ".xlsx": return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; default: return string.Empty; } } public static bool IsValidEmail(string email) { try { var addr = new MailAddress(email); return addr.Address == email; } catch { return false; } } public static string GetQrCodeBase64(string base64String) => $"data:image/png;base64,{base64String}"; public static int GetRand() { var random = new Random(DateTime.Now.Millisecond); return random.Next(0, random.Next(10, 1000)); } public static T Deserialize(string value) { return JsonSerializer.Deserialize(value, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); } } }