| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 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<WebSticker>    {        protected override void DoReconfigure(FluentList<DynamicGridOption> options)        {            base.DoReconfigure(options);            options.AddRange(DynamicGridOption.AddRows, DynamicGridOption.EditRows, DynamicGridOption.DeleteRows, DynamicGridOption.ShowHelp, DynamicGridOption.MultiSelect);        }        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<WebSticker>(new Filter<WebSticker>(x => x.ID).IsEqualTo((Guid)row["ID"]));            ReportUtils.PrintMenu<WebSticker>(null, "Sticker Grid", dataModel, Security.IsAllowed<CanDesignReports>(), true);            return false;        }        protected override void GenerateColumns(DynamicGridColumns columns)        {            base.GenerateColumns(columns);            columns.Add<WebSticker, string>(x => x.Equipment.Code, 0, "Equipment", "", Alignment.MiddleCenter);        }        private bool GenerateSticker_Click(Button sender, CoreRow[] selectedRows)        {            var window = new GenerateStickers();            if(window.ShowDialog() == true)            {                var stickers = new Client<WebSticker>().Query(null, new Columns<WebSticker>(x => x.Code)).Rows                    .Select(x => (string)x["Code"]).ToHashSet();                var newStickers = new List<WebSticker>();                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<WebSticker>().Save(newStickers, "Generated by user");                return true;            }            return false;        }    }}
 |