예제 #1
0
        private static async Task processDeletedDocuments(IUnitOfWork uow, CancellationToken cToken, string thisTruckID, List <TruckPickupListRelease> truckReleaseDocuments)
        {
            if (cToken.IsCancellationRequested)
            {
                return;
            }
            try
            {
                var docsDeleted = new List <DocumentToProcess>();

                foreach (var d in uow.DocumentsToProcessRepository.GetAll())
                {
                    if (d.EntityType == EntityType.PICKUPLIST)
                    {
                        var releaseDoc = new TruckPickupListRelease();
                        releaseDoc.Id            = Guid.NewGuid().ToString();
                        releaseDoc.Source        = InputSource.TRUCK;
                        releaseDoc.SyncedToCloud = true;
                        releaseDoc.Name          = "LIST_RELEASE_" + thisTruckID + "_" + d.Id;
                        releaseDoc.TruckID       = thisTruckID;
                        releaseDoc.PickupListID  = d.Id;
                        truckReleaseDocuments.Add(releaseDoc);
                    }
                    docsDeleted.Add(d);
                }

                if (truckReleaseDocuments.Count() > 0)
                {
                    await DocumentDBContext.BulkUpsert <TruckPickupListRelease>(truckReleaseDocuments, 500);
                }

                uow.DocumentsToProcessRepository.BulkDelete(docsDeleted);
                uow.SaveChanges();
            }
            catch (Exception exc)
            {
                Logging.Logger.Log(exc);
            }
        }