public AthleteViewModel(IApplicationService service)
        {
            athleteInfo = new AthleteDto() { EventParticipationk__BackingField = new List<EventAreaDto>(Constants.EVENT_AREAS) };

            this._service = service;
            this.myAthletes = new ObservableCollection<AthleteDto>();
            this.showCurrent = true;
            this.showFuture = true;
            this.showPast = false;
            this.showAllInventoryItems = false;
            this.showOnlyDefaultInventoryItems = true;
            this.totalsByStatusModel = new TotalByStatusModel();

            this.SaveAthleteCommand = new RelayCommand(SaveAthlete);
            this.ClearFieldsCommand = new RelayCommand(ClearAthleteInfo);
            this.EditSelectedAthleteCommand = new RelayCommand<AthleteDto>(athleteToEdit => LoadAthleteInfoWithSelectedAthlete(athleteToEdit));

            Genders = new ObservableCollection<Char>(Data.Constants.GENDERS);
            Statuses = new ObservableCollection<String>(Data.Constants.ATHLETE_STATUSES);

            Messenger.Default.Register<ObservableCollection<AthleteDto>>(
                this,
                (a) => MyAthletes = a
            );
        }
        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
            );
        }