| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- using System.Collections.Generic;
 
- using System.Linq;
 
- using Comal.Classes;
 
- using InABox.Core;
 
- using System;
 
- namespace Comal.Stores
 
- {
 
-     public class ManufacturingPacketStore : BaseStore<ManufacturingPacket>
 
-     {
 
-         protected override void AfterSave(ManufacturingPacket entity)
 
-         {
 
-             base.AfterSave(entity);
 
-             UpdateDeliveryItems(entity);
 
-         
 
-             UpdateTrackingKanban<ManufacturingPacketKanban, ManufacturingPacket, ManufacturingPacketLink>(entity, m => 
 
-             {
 
-                 if (entity.Completed != DateTime.MinValue || entity.Archived != DateTime.MinValue)
 
-                     return KanbanStatus.Complete;
 
-                 if (entity.Issued != DateTime.MinValue)
 
-                     return KanbanStatus.InProgress;
 
-                 return KanbanStatus.Open;
 
-             });
 
-         }
 
-         #region DeliveryItems
 
-         private void UpdateDeliveryItems(ManufacturingPacket entity)
 
-         {
 
-             // if the Barcode printed flag has not changed, we don't need to do anything
 
-             if (!entity.HasOriginalValue(x => x.BarcodePrinted))
 
-                 return;
 
-             if (!entity.BarcodePrinted.IsEmpty())
 
-             {
 
-                 var dstore = FindSubStore<DeliveryItem>();
 
-                 IEnumerable<CoreRow> rows = dstore.Query(
 
-                     new Filter<DeliveryItem>(x => x.SetoutLink.ID).IsEqualTo(entity.SetoutLink.ID),
 
-                     Columns.None<DeliveryItem>().Add(x => x.Sequence, x => x.ManufacturingPacketLink.ID),
 
-                     new SortOrder<DeliveryItem>(x => x.Sequence)
 
-                 ).Rows;
 
-                 var lastseq = rows.Any() ? rows.Last().Get<DeliveryItem, int>(c => c.Sequence) : 0;
 
-                 var alreadycreated = rows.Any(r => r.Get<DeliveryItem, Guid>(c => c.ManufacturingPacketLink.ID).Equals(entity.ID));
 
-                 if (!alreadycreated)
 
-                 {
 
-                     var items = entity.CreateDeliveryItems(lastseq);
 
-                     if (items.Any())
 
-                         dstore.Save(items, "Manufacturing Packet Barcode has been issued");
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 ClearDeliveryItems(entity, "Manufacturing Packet Barcode has been revoked");
 
-             }
 
-         }
 
-         private void ClearDeliveryItems(ManufacturingPacket entity, string message)
 
-         {
 
-             // If we haven't printed any barcodes, simply return
 
-             if (!entity.HasOriginalValue(x => x.BarcodePrinted) && entity.BarcodePrinted.IsEmpty())
 
-                 return;
 
-             var dstore = FindSubStore<DeliveryItem>();
 
-             var ditems = dstore.Query(
 
-                 new Filter<DeliveryItem>(x => x.ManufacturingPacketLink.ID).IsEqualTo(entity.ID),
 
-                 Columns.None<DeliveryItem>().Add(x => x.ID)
 
-             );
 
-             dstore.Delete(ditems.Rows.Select(r => r.ToObject<DeliveryItem>()), message);
 
-         }
 
-         #endregion
 
-         #region PurchaseItems
 
-         //private void CheckPurchaseItems(ManufacturingPacket entity)
 
-         //{
 
-         //    Setout setout = FindSubStore<Setout>().Load(new Filter<Setout>(x => x.ID).IsEqualTo(entity.SetoutID)).FirstOrDefault();
 
-         //    if (setout != null)
 
-         //    {
 
-         //        ManufacturingItem mi = setout.Manufacturing.FirstOrDefault(x => x.ID.Equals(entity.ManufacturingItemID));
 
-         //        if ((mi != null) && (mi.Purchased))
 
-         //        {
 
-         //            var pStore = FindSubStore<PurchaseItem>();
 
-         //            PurchaseItem purchase = pStore.Load(new Filter<PurchaseItem>(x => x.PacketID).IsEqualTo(entity.ID)).FirstOrDefault();
 
-         //            if ((!entity.Issued.IsEmpty()) && (purchase == null))
 
-         //            {
 
-         //                PurchaseItem pi = new PurchaseItem();
 
-         //                pi.JobID = setout.Job.ID;
 
-         //                pi.SetoutID = setout.ID;
 
-         //                pi.PacketID = entity.ID;
 
-         //                pi.Description = "Purchased Item"; // need to put something here
 
-         //                pStore.Save(ref pi, "Created based on Setout.Issued");
 
-         //            }
 
-         //            else if ((entity.Issued.IsEmpty()) && (purchase != null) && (purchase.OrderID == Guid.Empty))
 
-         //             {
 
-         //                pStore.Delete(purchase, "Removed due to Setout being unissued");
 
-         //             }
 
-         //        }
 
-         //    }
 
-         //}
 
-         #endregion
 
-     }
 
- }
 
 
  |