using Comal.Classes; using FastReport; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; using InABox.Reports; using InABox.Wpf.Reports; using InABox.WPF; using PRSDesktop.Forms; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Media.Imaging; namespace PRSDesktop.Grids { public class StickerGrid : DynamicDataGrid { protected override void DoReconfigure(DynamicGridOptions options) { base.DoReconfigure(options); options.AddRows = true; options.EditRows = true; options.DeleteRows = true; options.ShowHelp = true; options.MultiSelect = true; } protected override void Init() { base.Init(); ActionColumns.Add(new DynamicImageColumn(PrintImage, PrintClick) { Position = DynamicActionColumnPosition.End }); AddButton("Generate Stickers", null, GenerateSticker_Click); } private BitmapImage? PrintImage(CoreRow? arg) { if (arg == null) return null; return PRSDesktop.Resources.printer.AsBitmapImage(); } private bool PrintClick(CoreRow? row) { if (row == null) return false; var dataModel = new AutoDataModel(new Filter(x => x.ID).IsEqualTo((Guid)row["ID"])); ReportUtils.PrintMenu(null, "Sticker Grid", dataModel, Security.IsAllowed(), true); return false; } public override DynamicGridColumns GenerateColumns() { var columns = base.GenerateColumns(); columns.Add(x => x.Equipment.Code, 0, "Equipment", "", Alignment.MiddleCenter); return columns; } private bool GenerateSticker_Click(Button sender, CoreRow[] selectedRows) { var window = new GenerateStickers(); if(window.ShowDialog() == true) { var stickers = new Client().Query( null, Columns.None().Add(x => x.Code)).Rows .Select(x => (string)x["Code"]).ToHashSet(); var newStickers = new List(); var prefix = window.CodePrefix.Text; var codeNumber = 0; for(int i = 0; i < window.NumberOfStickers.Value; i++) { var sticker = new WebSticker(); string code; do { code = string.Format("{0}{1:D3}", prefix, codeNumber); codeNumber++; } while (stickers.Contains(code)); sticker.Code = code; newStickers.Add(sticker); } new Client().Save(newStickers, "Generated by user"); return true; } return false; } } }