/// <summary> /// Clean up duplicate serial numbers in the event the truck added a module with a serial number that existed at the gin /// in this scenario the truck will get the gin module and the module it created, only the gin module should stay /// </summary> /// <param name="uow"></param> /// <param name="repo"></param> /// <param name="cToken"></param> private static void cleanDupedModules(IUnitOfWork uow, IModuleRepository repo, CancellationToken cToken) { if (cToken.IsCancellationRequested) { return; } var modulesWithTruckSource = repo.FindMatching(m => m.Source == InputSource.TRUCK); var modulesWithGinSource = repo.FindMatching(m => m.Source == InputSource.GIN); foreach (var m in modulesWithTruckSource.Where(m => modulesWithGinSource.Any(g => g.Name == m.Name))) { repo.Delete(m); } uow.SaveChanges(); }
private static async Task pushModules(IUnitOfWork uow, IModuleRepository repo, CancellationToken cToken, IEnumerable <ModuleEntity> remoteEntities, params string[] includes) { try { Logging.Logger.Log("INFO", "Pushing entities of type Module"); //var remoteIds = remoteEntities.Select(t => t.Id).ToList(); //only push modules if they are not already in cloud, they were created on the truck, and they are not on the unassigned list //TODO PICKUP LIST ID var newEntities = repo.FindMatching(t => t.Source == InputSource.TRUCK && t.PickupListId != GUIDS.UNASSIGNED_LIST_ID, includes).ToList(); int count = 1; foreach (var entity in newEntities /*.Where(t => !remoteIds.Contains(t.Id))*/) { Console.WriteLine("Pushing entity: " + entity.Name); if (cToken.IsCancellationRequested) { return; } await DocumentDBContext.UpsertItemAsync <ModuleEntity>(entity); var remoteEntity = remoteEntities.SingleOrDefault(m => m.Id == entity.Id); if (remoteEntity != null) { remoteEntity.PickupListId = entity.PickupListId; remoteEntity.FieldId = entity.FieldId; } repo.Update(entity, true); count++; if (count == 100) { count = 1; Console.WriteLine("Saving changes"); uow.SaveChanges(); } } Console.WriteLine("Saving changes"); uow.SaveChanges(); } catch (Exception exc) { Logging.Logger.Log(exc); } }