public InventoryViewModel(IApplicationService service, ILabelPrinter labelPrinter)
        {
            this._service = service;
            this._labelPrinter = labelPrinter;

            myInventory = new ObservableCollection<InventoryItemDto>();
            myInventoryBackup = new ObservableCollection<InventoryItemDto>();
            movementTypes = new ObservableCollection<String>(Constants.MOVEMENT_TYPES);
            modelsAvailable = new ObservableCollection<ModelDto>(GetModelsAvailable());

            totalsByStatusModel = new TotalByStatusModel();
            filterInventoryModel = new FilterInventoryModel();
            inventoryLabelModel = new InventoryLabelModel();

            showAllInventoryItems = false;
            showOnlyDefaultInventoryItems = true;
            isAdmin = userDto == null ? false : userDto.IsAdmin;
            newInventorySelectedSizeIsM = true;
            newInventorySelectedSizeIsW = false;

            myInventoryIsVisible = VISIBLE;
            newItemEntryIsVisible = HIDDEN;

            newInventoryAthleteIndex = -1;

            newInventorySelectedAthlete = new AthleteDto();
            newInventorySelectedModel = new ModelDto();

            ProcessMovementCommand = new RelayCommand(ProcessInventoryMovement);
            FilterCommand = new RelayCommand(FilterInventory);
            ClearFilterCommand = new RelayCommand(ResetMyInventory);
            ShowNewInventoryEntryCommand = new RelayCommand(ShowNewInventoryEntry);
            SaveNewInventoryCommand = new RelayCommand(SaveNewInventoryItem);
            ShowMyInventoryCommand = new RelayCommand(ShowMyInventory);
            ClearInventoryItemEntryFieldsCommand = new RelayCommand(ResetNewInventoryEntryFields);
            SaveNewModelCommand = new RelayCommand(SaveNewModel);
            ClearNewModelFields = new RelayCommand(ResetNewModelFields);
            DistributeItemCommand = new RelayCommand<InventoryItemDto>(itemToDistribute => DistributeItem(itemToDistribute));
            ReturnItemToVendorCommand = new RelayCommand<InventoryItemDto>(itemToDistribute => DistributeItem(itemToDistribute));
            ReturnToStockCommand = new RelayCommand<InventoryItemDto>(itemToDistribute => DistributeItem(itemToDistribute));
            SurplusItemCommand = new RelayCommand<InventoryItemDto>(itemToDistribute => DistributeItem(itemToDistribute));
            RecallItemCommand = new RelayCommand<InventoryItemDto>(itemToDistribute => DistributeItem(itemToDistribute));
            RecordItemAsLostCommand = new RelayCommand<InventoryItemDto>(itemToDistribute => DistributeItem(itemToDistribute));
            PrintInventoryLabelCommand = new RelayCommand<InventoryItemDto>(itemToPrint => PrintInventoryLabel(itemToPrint));
            AssignInventoryItemToAnotherAthleteCommand = new RelayCommand<InventoryItemDto>(itemToReassign => AssignInventoryItemToAnotherAthlete(itemToReassign));
            ShowInventoryItemHistoryCommand = new RelayCommand<InventoryItemDto>(itemWithHistory => ShowInventoryItemHistory(itemWithHistory));

            Messenger.Default.Register<UserDto>(
                this,
                (u) => UpdateUser(u)
            );

            Messenger.Default.Register<ObservableCollection<AthleteDto>>(
                this,
                (a) => MyAthletes = a
            );
        }
        private void ResetMyInventory()
        {
            filterInventoryModel = new FilterInventoryModel();
            myInventory = GetInventory();

            RaisePropertyChanged("MyInventoryToShow");
            RaisePropertyChanged("FilterInventoryModel");
        }