private void CheckBoxCheckOutIn_OnChecked(object sender, RoutedEventArgs e)
        {
            _checkBox = (CheckBox)sender;
            int toolId = (int)_checkBox.Tag;

            _checkBox.IsEnabled = false;
            _isOnChecked        = true;

            backgroundWorkerUpdateToolIssued                     = new BackgroundWorker();
            backgroundWorkerUpdateToolIssued.DoWork             += BackgroundWorkerUpdateToolIssued_DoWork;
            backgroundWorkerUpdateToolIssued.RunWorkerCompleted += BackgroundWorkerUpdateToolIssued_RunWorkerCompleted;

            _checkOutInTool = ToolTrackerService.CheckOutInTools.FirstOrDefault(t => t.ToolId == toolId);

            if (_checkOutInTool == null)
            {
                return;
            }

            _newToolIssued = new ToolIssued
            {
                ToolId             = _checkOutInTool.ToolId,
                DateTimeOut        = DateTime.Now,
                ReceivedByInmateId = _checkOutInTool.InmateId,
                IssuedByOfficerId  = ToolTrackerService.Officer.Id,
                ToolReturned       = false
            };

            // Update db on separate thread
            backgroundWorkerUpdateToolIssued.RunWorkerAsync();


            //StopLoaderAnimation();
        }
        private void CheckBoxCheckOutIn_OnUnchecked(object sender, RoutedEventArgs e)
        {
            //StartLoaderAnimation();

            _checkBox = (CheckBox)sender;
            int toolId = (int)_checkBox.Tag;

            _checkBox.IsEnabled = false;
            _isOnChecked        = false;

            backgroundWorkerUpdateToolIssued                     = new BackgroundWorker();
            backgroundWorkerUpdateToolIssued.DoWork             += BackgroundWorkerUpdateToolIssued_DoWork;
            backgroundWorkerUpdateToolIssued.RunWorkerCompleted += BackgroundWorkerUpdateToolIssued_RunWorkerCompleted;

            _checkOutInTool = ToolTrackerService.CheckOutInTools.FirstOrDefault(t => t.ToolId == toolId);

            if (_checkOutInTool == null)
            {
                return;
            }

            // Update db on separate thread
            backgroundWorkerUpdateToolIssued.RunWorkerAsync();



            //StopLoaderAnimation();
        }
        private static void MapToolToCheckOutInViewModel(Tool tool, Inmate inmate, UnitOfWork db)
        {
            var shop = db.ShopsRepo.FindById(tool.ShopId);

            var checkToolOutIn = new CheckToolOutInViewModel
            {
                ToolNumber      = tool.ToolNumber,
                ToolDescription = tool.Description,
                ShopName        = shop.Name,
                InmateId        = inmate.Id,
                Inmate          = inmate,
                ToolId          = tool.Id,
                ToolReturned    = true
            };

            // check if tool is checked out
            bool toolCheckedOut = db.ToolsIssuedRepo
                                  .Exists(ti => ti.ToolId == tool.Id && !ti.ToolReturned);

            // if already checked out, get inmate name and assign to property
            if (toolCheckedOut)
            {
                // get ToolIssued obj
                var toolIssued         = db.ToolsIssuedRepo.Find(ti => ti.ToolId == tool.Id && !ti.ToolReturned);
                var checkedOutByInmate = db.InmatesRepo.FindById(toolIssued.ReceivedByInmateId);
                checkToolOutIn.Inmate       = checkedOutByInmate;
                checkToolOutIn.InmateId     = checkedOutByInmate?.Id ?? 0;
                checkToolOutIn.IsCheckedOut = true;
                checkToolOutIn.ToolIssuedId = toolIssued.Id;
                checkToolOutIn.ToolReturned = toolIssued.ToolReturned;
            }

            CheckOutInTools.Add(checkToolOutIn);
        }