using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Linq; using System.Threading.Tasks; namespace MP.Data { public class Utils { #region Public Properties public static string redKeyArtUsed { get => RedHash($"CACHE:CheckArtUsed"); } public static string redKeyTabCheckArt { get => RedHash($"CACHE:TabCheckArt"); } #endregion Public Properties #region Public Methods public static string ConvMinToTime(double minutes) { // FIXME TODO: da rendere parametrico da appsettings.json... var ts = TimeSpan.FromMinutes(minutes); string answ = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}"; //.{ts.Milliseconds} return answ; } public static string ConvMsecToTime(long milliseconds) { // FIXME TODO: da rendere parametrico da appsettings.json... var ts = TimeSpan.FromMilliseconds(milliseconds); string answ = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}"; //.{ts.Milliseconds} return answ; } /// /// Nome della variabile HASH da utilizzare (dato CodModulo / Server / DB impiegato da /// funzionalita' DbConfig) + keyName richiesto... /// public static string RedHash(string keyName) { string answ = keyName; try { answ = $"MP:Data:{keyName}"; } catch { } return answ; } public static async Task SaveToCsv(List reportData, string path) { var lines = new List(); IEnumerable props = TypeDescriptor.GetProperties(typeof(T)).OfType(); var header = string.Join(";", props.ToList().Select(x => x.Name)); lines.Add(header); var valueLines = reportData.Select(row => string.Join(";", header.Split(';').Select(a => row.GetType().GetProperty(a).GetValue(row, null)))); lines.AddRange(valueLines); await Task.Run(() => File.WriteAllLines(path, lines.ToArray())); } #endregion Public Methods } }