Beispiel #1
0
        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";
        }
Beispiel #2
0
        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();
                }
            }
        }