using Comal.Classes; using InABox.Core; using System.Collections.Generic; using System.Linq; using Syncfusion.Pdf.Parsing; using System.Drawing; using System.IO; using System.Drawing.Imaging; using InABox.Database; using System; namespace Comal.Stores { public class SetoutStore : BaseStore { protected override void AfterSave(Setout entity) { if (entity.Group.ID != Guid.Empty) { var table = Provider.Query(new Filter(x => x.ID).IsEqualTo(entity.Group.ID) .And(x => x.OptimizationDocument.ID).IsNotEqualTo(Guid.Empty), Columns.None().Add(x => x.OptimizationDocument.ID)); if (!table.Rows.Any()) return; var docID = table.Rows.FirstOrDefault().Get(x => x.OptimizationDocument.ID); UpdateOptimisationDocument(FindSubStore, entity, docID); } base.AfterSave(entity); } /// /// Update the optimisation document ID for a setout. The setout must have a non-empty . /// /// /// Setout with non-empty /// public void UpdateOptimisationDocument(Func> docStore, Setout setout, Guid optimisationDocumentID) { if (optimisationDocumentID == Guid.Empty) return; var ids = new List(); var docsTable = Provider.Query( new Filter(x => x.EntityLink.ID).IsEqualTo(setout.ID), Columns.None().Add(x => x.DocumentLink.ID) ); foreach (var row in docsTable.Rows) ids.Add(row.Get(x => x.DocumentLink.ID)); if (!ids.Contains(optimisationDocumentID)) { var setoutdoc = new SetoutDocument(); setoutdoc.EntityLink.ID = setout.ID; setoutdoc.DocumentLink.ID = optimisationDocumentID; docStore().Save(setoutdoc, "Added optimsation document from Group"); } } protected override void BeforeDelete(Setout entity) { UnlinkTrackingKanban(entity); } } }