private async void Button_Click(object sender, RoutedEventArgs e) { string IP = txtIP.Text; string serial = txtSerial.Text; JsonInventory[] inventories = await ProcessSelectionFromServer.GetLastScan(serial); if (inventories != null) { TagList.Clear(); foreach (JsonInventory inv in inventories) { inv.present_tags.ForEach(uid => TagList.Add(uid)); } } int nbTag = TagList.Count; txtScanInfo.Text = DateTime.Now.ToShortDateString() + " : " + nbTag + " Tag(s) UID recover from last scan"; }
private async void Button_Click_1(object sender, RoutedEventArgs e) { int nbTagInRequest = int.Parse(txtNbTag.Text); List <string> ListTagToPull = new List <string>(); if (TagList.Count > nbTagInRequest) { Random rd = new Random(DateTime.Now.Millisecond); for (int loop = 0; loop < nbTagInRequest; loop++) { int rg = rd.Next(0, TagList.Count); if (!ListTagToPull.Contains(TagList[rg])) { ListTagToPull.Add(TagList[rg]); } } } string user = "******"; string description = "Random Selection at " + DateTime.Now.ToShortTimeString(); bool x = await ProcessSelectionFromServer.PostRequest(user, description, ListTagToPull); }
public static void HandleNewScanCompleted(int drawerId) { lock (lockMethodInventory) { LogToFile.LogMessageToFile("______________________________________________________________ "); LogToFile.LogMessageToFile("Process Inventory for drawer " + drawerId); var ctx = RemoteDatabase.GetDbContext(); ctx.Configuration.AutoDetectChangesEnabled = false; //ctx.Configuration.ValidateOnSaveEnabled = false; Inventory newInventory = null; try { if (_deviceEntity == null) { _deviceEntity = DevicesHandler.GetDeviceEntity(); if (_deviceEntity == null) { return; } } //remove previous entry Older than 7 days DateTime dtToKeep = DateTime.Now.AddDays(-7.0); using (new PerfTimerLogger("remove previous entry Older than 7 days")) { //remove event drawer var itemBinding2 = ctx.EventDrawerDetails.Where(i => i.DrawerNumber == drawerId && i.DeviceId == _deviceEntity.DeviceId && i.EventDrawerDate < dtToKeep); if (itemBinding2 != null) { foreach (var ib in itemBinding2) { ctx.EventDrawerDetails.Remove(ib); } } //removed inventory var itemBinding = ctx.Inventories.Where(i => i.DrawerNumber == drawerId && i.DeviceId == _deviceEntity.DeviceId && i.InventoryDate < dtToKeep); if (itemBinding != null) { foreach (var ib in itemBinding) { ctx.Inventories.Remove(ib); } } ctx.ChangeTracker.DetectChanges(); ctx.SaveChanges(); } using (new PerfTimerLogger("Store inventory")) { AccessType newInventoryAccessType = null; int? newInventoryGrantedUserId = null; switch (DevicesHandler.LastScanAccessTypeName) { case AccessType.Badge: newInventoryAccessType = ctx.AccessTypes.Badge(); newInventoryGrantedUserId = GrantedUsersCache.LastAuthenticatedUser.GrantedUserId; break; case AccessType.Fingerprint: newInventoryAccessType = ctx.AccessTypes.Fingerprint(); newInventoryGrantedUserId = GrantedUsersCache.LastAuthenticatedUser.GrantedUserId; break; default: newInventoryAccessType = ctx.AccessTypes.Manual(); newInventoryGrantedUserId = null; break; } newInventory = new Inventory { DeviceId = _deviceEntity.DeviceId, DrawerNumber = drawerId, GrantedUserId = newInventoryGrantedUserId, AccessTypeId = newInventoryAccessType.AccessTypeId, TotalAdded = DevicesHandler.ListTagAddedPerDrawer.Where(kvp => kvp.Value == drawerId).ToList().Count(), TotalPresent = DevicesHandler.ListTagPerDrawer.Where(kvp => kvp.Value == drawerId).ToList().Count(), TotalRemoved = DevicesHandler.ListTagRemovedPerDrawer.Where(kvp => kvp.Value == drawerId).ToList().Count(), InventoryDate = DateTime.Now, InventoryStream = SerializeHelper.SeralizeObjectToXML(DevicesHandler.Device.ReaderData), }; ctx.Inventories.Add(newInventory); ctx.ChangeTracker.DetectChanges(); ctx.SaveChanges(); // now the inventory is saved, we can use its ID } using (new PerfTimerLogger("Store movement added")) { var addedTags = DevicesHandler.GetTagFromDictionnary(drawerId, DevicesHandler.ListTagAddedPerDrawer); AddMovementToInventory(ctx, newInventory, addedTags, MovementType.Added, drawerId); //ctx.ChangeTracker.DetectChanges(); ctx.SaveChanges(); } using (new PerfTimerLogger("Store movement present")) { var presentTags = DevicesHandler.GetTagFromDictionnary(drawerId, DevicesHandler.ListTagPerDrawer); AddMovementToInventory(ctx, newInventory, presentTags, MovementType.Present, drawerId); ctx.ChangeTracker.DetectChanges(); ctx.SaveChanges(); } using (new PerfTimerLogger("Store movement removed")) { var removedTags = DevicesHandler.GetTagFromDictionnary(drawerId, DevicesHandler.ListTagRemovedPerDrawer); AddMovementToInventory(ctx, newInventory, removedTags, MovementType.Removed, drawerId); ctx.ChangeTracker.DetectChanges(); ctx.SaveChanges(); } //Update event drawer using (new PerfTimerLogger("Update Inventory")) { ctx.EventDrawerDetails.UpdateInventoryForEventDrawer(_deviceEntity, drawerId, newInventory); ctx.ChangeTracker.DetectChanges(); ctx.SaveChanges(); } using (new PerfTimerLogger("Send to Indian server")) { ProcessSelectionFromServer.PostInventoryForDrawer(_deviceEntity, drawerId, newInventory); } var handler = InventoryCompleted; if (handler != null) { handler(new InventoryEventArgs(newInventory, null)); } } catch (Exception ex) { Console.WriteLine(ex.GetType().FullName); Console.WriteLine(ex.Message); var handler = InventoryAborted; if (handler != null) { handler(null); } if (newInventory != null) { ctx.Inventories.Remove(newInventory); ctx.SaveChanges(); } } finally { ctx.Database.Connection.Close(); ctx.Dispose(); } } }