public static SmartDrawerDatabaseContext GetDbContext()
        {
            try
            {
                var dbContext = new SmartDrawerDatabaseContext(GetConnectionString());
                dbContext.Database.Connection.Open();
                return(dbContext);
            }

            catch (SqlException)
            {
                // connection to remote database failed (OpenAsync() raised an SqlException)
                return(null);
            }
        }
        private static void AddMovementToInventory(SmartDrawerDatabaseContext ctx, Inventory newInventory, IEnumerable tags, MovementType movement, int drawerId)
        {
            /* foreach (string uid in tags)
             * {
             *   var rfidTag = ctx.RfidTags.AddIfNotExisting(uid);
             *   int shelveNumber = drawerId;
             *
             *   newInventory.InventoryProducts.Add(ctx.InventoryProducts.Add(new InventoryProduct
             *   {
             *       InventoryId = newInventory.InventoryId,
             *       RfidTag = rfidTag,
             *       MovementType = (int)movement,
             *       Shelve = shelveNumber
             *   }));
             * }
             */
            List <InventoryProduct> ListProdToAdd = new List <InventoryProduct>();

            foreach (string uid in tags)
            {
                var rfidTag      = ctx.RfidTags.AddIfNotExisting(uid);
                int shelveNumber = drawerId;
                ListProdToAdd.Add(new InventoryProduct
                {
                    InventoryId  = newInventory.InventoryId,
                    RfidTag      = rfidTag,
                    MovementType = (int)movement,
                    Shelve       = shelveNumber
                });
            }
            IEnumerable <InventoryProduct> LstProducts = ctx.InventoryProducts.AddRange(ListProdToAdd);

            foreach (InventoryProduct ip in LstProducts)
            {
                newInventory.InventoryProducts.Add(ip);
            }
        }