12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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>
- {
- public StickerGrid()
- {
- Options.AddRange(DynamicGridOption.AddRows, DynamicGridOption.EditRows, DynamicGridOption.DeleteRows, DynamicGridOption.ShowHelp, DynamicGridOption.MultiSelect);
- 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;
- }
- }
- }
|