using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.WPF; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PRSDesktop { public static class CustomModuleUtils { public static List LoadCustomModules(string section, DataModel model) { return new Client() .Query( new Filter(x => x.Section).IsEqualTo(section) .And(x => x.DataModel).IsEqualTo(model.Name) .And(x => x.Visible).IsEqualTo(true), null, new SortOrder(x => x.Name)) .ToObjects().ToList(); } public static IEnumerable> LoadCustomModuleThumbnails(IList modules) { var thumbids = modules.Where(x => x.Thumbnail.IsValid()).Select(x => x.Thumbnail.ID); var thumbs = thumbids.Any() ? new Client().Load(Filter.List(x => x.ID, ListOperator.Includes, thumbids)) : Array.Empty(); var list = new List>(); foreach (var module in modules) { Bitmap image; try { var doc = thumbs.FirstOrDefault(x => x.ID.Equals(module.Thumbnail.ID)); if (doc != null) { var bmp = (new ImageConverter().ConvertFrom(doc.Data) as Bitmap)!; image = bmp; } else { image = PRSDesktop.Resources.edit; } } catch { image = PRSDesktop.Resources.edit; } yield return new(module, image); } } public static IEnumerable> LoadCustomModuleThumbnails(string section, DataModel model) { return LoadCustomModuleThumbnails(LoadCustomModules(section, model)); } } }