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
            );
        }
 public void Setup(InventoryLabelModel model)
 {
     _label.SetObjectText("EventAbbreviation", model.EventAreaAbbreviation);
     _label.SetObjectText("Gender", model.SizingGender);
     _label.SetObjectText("Size", model.Size.ToString());
     _label.SetObjectText("SerialNumber", model.SerialNumber);
     _label.SetObjectText("ReceivedMonth", model.ReceivedMonth);
     _label.SetObjectText("ReceivedYear", model.ReceivedYear);
     _label.SetObjectText("ModelName", model.ModelName);
     _label.SetObjectText("AthleteName", model.AthleteFirstAndLastName);
 }
        private void PrintInventoryLabel(InventoryItemDto inventoryItemDto)
        {
            if (inventoryItemDto != null)
            {
                var label = new InventoryLabelModel();

                label.EventAreaAbbreviation = "H";
                label.SizingGender = "F";
                label.Size = 11;
                label.SerialNumber = inventoryItemDto.SerialNumberk__BackingField.ToString();
                label.ReceivedMonth = "Nov";
                label.ReceivedYear = "2012";
                label.ModelName = "Zoom Air Pegasus +29 (WIDE)";
                var athlete = myAthletes.Where(x => x.Nicknamek__BackingField == inventoryItemDto.AthleteNicknamek__BackingField).FirstOrDefault();
                label.AthleteFirstAndLastName = String.Format("{0} {1}", athlete.FirstNamek__BackingField, athlete.LastNamek__BackingField);

                _labelPrinter.Setup(label);
                _labelPrinter.Print();
            }
            else
                MessageBox.Show("An error occurred while trying to print the inventory label.");
        }