public void EditSelectedAthleteCommand()
        {
            var athlete = new AthleteDto() { Nicknamek__BackingField = "Athlete" };
            _athleteViewModel.EditSelectedAthleteCommand.Execute(athlete);

            Assert.AreEqual(athlete.Nicknamek__BackingField, _athleteViewModel.Athlete.Nicknamek__BackingField);
        }
        public void Execute()
        {
            try {
                using (var command =
                           new SQLiteCommand(Resources.SQL_SELECT_ATHLETES_HAS_PARTICIPATED, _conn.DbConnection)) {
                    command.Parameters.AddWithValue("@COMPETITION_ID", _competition.ID);

                    using (var reader = command.ExecuteReader()) {
                        while (reader.Read())
                        {
                            var athlete = new AthleteDto {
                                Dni       = reader.GetString(0),
                                Name      = reader.GetString(1),
                                Surname   = reader.GetString(2),
                                BirthDate = reader.GetDateTime(3),
                                Gender    = reader.GetString(4).ToCharArray()[0]
                            };
                            List.Add(athlete);
                        }
                    }
                }
            }
            catch (SQLiteException) {
                _conn.DbConnection?.Close();
                throw;
            }
        }
示例#3
0
        public IActionResult Get(long id)
        {
            Athlete athlete = athleteRepository.GetById(id);

            if (athlete == null)
            {
                return(NotFound());
            }

            var dto = new AthleteDto()
            {
                Id     = athlete.Id,
                Name   = athlete.Name.Value,
                Email  = athlete.Email.Value,
                Status = athlete.Status.Type.ToString(),
                StatusExpirationDate    = athlete.Status.ExpirationDate,
                MoneySpent              = athlete.MoneySpent,
                PurchasedWorkoutRoutine = athlete.PurchasedWorkoutRoutine.Select(s => new PurchasedWorkoutRoutineDto()
                {
                    WorkoutRoutine = new WorkoutRoutineDto()
                    {
                        Id   = s.WorkoutRoutine.Id,
                        Name = s.WorkoutRoutine.Name
                    },
                    Price          = s.Price,
                    PurchaseDate   = s.PurchaseDate,
                    ExpirationDate = s.ExpirationDate
                }).ToList()
            };

            return(Json(dto));
        }
        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
            );
        }
示例#5
0
        public List <CompetitionDto> ListCompetitionsToPreinscribeObject(AthleteDto athlete)
        {
            var competitions = new CompetitionsToPreinscribeLogic(ref _conn, athlete);

            competitions.Execute();
            return(competitions.Competitions);
        }
        public void Execute()
        {
            try {
                using (var command = new SQLiteCommand(Resources.SQL_SELECT_ATHLETE_BY_DNI, _conn.DbConnection)) {
                    command.Parameters.AddWithValue("@DNI", _dni);

                    using (var reader = command.ExecuteReader()) {
                        reader.Read();
                        Athlete = new AthleteDto {
                            Dni     = reader.GetString(0),
                            Name    = reader.GetString(1),
                            Surname = reader.GetString(2)
                                      //BirthDate = reader.GetDateTime(3),
                        };
                        if (reader.GetString(4).ToCharArray()[0].Equals(AthleteDto.MALE))
                        {
                            Athlete.Gender = AthleteDto.MALE;
                        }
                        else
                        {
                            Athlete.Gender = AthleteDto.FEMALE;
                        }
                    }
                }
            }
            catch (SQLiteException) {
                _conn.DbConnection?.Close();
                throw;
            }
        }
示例#7
0
        public DataTable ListCompetitionsToPreinscribe(AthleteDto athlete)
        {
            var competitions = new CompetitionsToPreinscribeLogic(ref _conn, athlete);

            competitions.Execute();
            return(competitions.Table);
        }
示例#8
0
        // POST tables/Athlete
        public async Task <IHttpActionResult> PostAthlete(AthleteDto item)
        {
            bool first = _context.Athletes.Count() == 0;

            var exists = _context.Athletes.Any(l => l.Email.Equals(item.Email, StringComparison.InvariantCultureIgnoreCase) ||
                                               (l.Alias != null && l.Alias.Equals(item.Alias, StringComparison.InvariantCultureIgnoreCase)));

            if (exists)
            {
                return(Conflict());
            }

            if ((item.Alias == null || item.Alias.Trim() == string.Empty) && item.Name != null)
            {
                item.Alias = item.Name.Split(' ')[0];
            }

            item.UserId = _authController.UserId;
            Athlete athlete = await InsertAsync(item.ToAthlete());

            if (first)
            {
                //Seed some leagues for the user to join
                Seed(athlete);
            }

            return(CreatedAtRoute("Tables", new
            {
                id = athlete.Id
            }, athlete));
        }
 public SelectHasParticipatedTimeObject(ref DBConnection conn, CompetitionDto competition, AthleteDto athlete)
 {
     _conn           = conn;
     HasParticipated = new HasParticipatedDto();
     _competition    = competition;
     _athlete        = athlete;
 }
        public void CreateAthlete_CallsRepository()
        {
            var input = new AthleteRequest
            {
                Username = "******",
                Email    = "*****@*****.**",
                FullName = "User One"
            };
            var expected = new AthleteDto
            {
                Username = "******",
                Email    = "*****@*****.**",
                FullName = "User One"
            };
            var convertedDto = new AthleteDto
            {
                Username = "******",
                Email    = "*****@*****.**",
                FullName = "User One"
            };

            mockAthleteRepository.Setup(repo => repo.AddAthlete(convertedDto))
            .Returns(convertedDto);

            // act
            var actual = athleteService.CreateAthlete(input);

            // assert
            Assert.Equal(expected, actual);
            mockAthleteRepository.Verify(repo => repo.AddAthlete(convertedDto), Times.Once);
            mockAthleteRepository.VerifyNoOtherCalls();
        }
        public void CreateAthlete_CallsRepositoryAndThrowsException()
        {
            var input = new AthleteRequest
            {
                Username = "******",
                Email    = "*****@*****.**",
                FullName = "User Two"
            };
            var expected = new ConflictException(
                new List <string>()
            {
                ErrorConstants.UsernameAlreadyExists
            });

            var convertedDto = new AthleteDto
            {
                Username = "******",
                Email    = "*****@*****.**",
                FullName = "User Two"
            };

            mockAthleteRepository.Setup(repo => repo.AddAthlete(convertedDto))
            .Throws(expected);

            // act
            var actual = Assert.Throws <ConflictException>(
                () => athleteService.CreateAthlete(input)
                );

            // assert
            Assert.Equal(expected.Messages, actual.Messages);
            mockAthleteRepository.Verify(repo => repo.AddAthlete(convertedDto), Times.Once);
            mockAthleteRepository.VerifyNoOtherCalls();
        }
示例#12
0
        public void Execute()
        {
            try {
                using (var command =
                           new SQLiteCommand(Resources.SQL_SELECT_ATHLETES_PREINSCRIPTED, _conn.DbConnection)) {
                    command.Parameters.AddWithValue("@COMPETITION_ID", _competitionID);

                    using (var reader = command.ExecuteReader()) {
                        while (reader.Read())
                        {
                            Athlete = new AthleteDto {
                                Dni     = reader.GetString(0),
                                Name    = reader.GetString(1),
                                Surname = reader.GetString(2)
                            };
                            numeroPlazas = reader.GetInt16(3);

                            atletas.Add(Athlete);
                        }
                    }
                }
            }
            catch (SQLiteException) {
                _conn.DbConnection?.Close();
                throw;
            }
        }
示例#13
0
        public CreditCardWindow(AthleteDto athlete, CompetitionDto competition)
        {
            InitializeComponent();

            _athlete     = athlete;
            _competition = competition;
        }
示例#14
0
        public void InsertAthleteInCompetition(AthleteDto athlete, CompetitionDto competition, TypesStatus status)
        {
            var insertAthletesInCompetition =
                new InsertAthletesInCompetitionLogic(ref _conn, athlete, competition, status);

            insertAthletesInCompetition.Execute();
        }
示例#15
0
        public string GetCategory(AthleteDto athlete, CompetitionDto competition)
        {
            var getCategory = new GetCategoryLogic(ref _conn, competition, athlete);

            getCategory.Execute();
            return(getCategory.Category);
        }
示例#16
0
        public bool IsCategoryInCompetition(CompetitionDto competition, AthleteDto athlete)
        {
            var isCategory = new IsCategoryInCompetitionLogic(ref _conn, _competition, athlete);

            isCategory.Execute();
            return(isCategory.IsCorrect);
        }
示例#17
0
        public bool IsAthleteInComp(CompetitionDto competition, AthleteDto athlete)
        {
            var isAthlete = new IsAthleteInCompetition(ref _conn, competition, athlete);

            isAthlete.Execute();
            return(isAthlete.IsEnroll);
        }
示例#18
0
        public ActionResult Metrics()
        {
            var userId    = this.User.Identity.GetUserId();
            var dashboard = AthleteDto.Create(_unitOfWork, userId);

            return(View(dashboard));
        }
        public void AddAthlete_ThrowsConflictAthlete()
        {
            var input = new AthleteDto
            {
                Username = "******",
                Email    = "*****@*****.**",
                FullName = "User Two"
            };
            var expected = new ConflictException(
                new List <string>()
            {
                ErrorConstants.UsernameAlreadyExists
            });

            var existingEntity = new AthleteEntity
            {
                Username = "******",
                Email    = "*****@*****.**",
                FullName = "User Two Other"
            };

            testContext.Add(existingEntity);
            testContext.SaveChanges();

            // act
            var actual = Assert.Throws <ConflictException>(
                () => athleteRepository.AddAthlete(input));

            // assert
            Assert.Equal(expected.Message, actual.Message);
        }
        private void LoadData(string dni)
        {
            if (dni != null)
            {
                try {
                    var atleList = new AthletesService().SelectAthleteTable();
                    Athlete = atleList.First(a => a.Dni.ToUpper().Equals(dni.ToUpper()));
                    LbNameSurname.Content = $"{Athlete.Name} {Athlete.Surname}";

                    var category = _competitionService.SelectCompetitionByAthleteAndCompetition(Competition, Athlete);
                    LbCategory.Content = $"{category.Name.Replace('_', ' ')} ({category.MinAge} - {category.MaxAge})";

                    var p    = _service.SelectCompetitionHasParticipated(Competition, Athlete);
                    var time = PartialTimeString(p.FinishTime == 0 ? 0 : p.FinishTime - p.InitialTime);
                    LbTiempoTotal.Content = $"T. Final: {time}";

                    var partial = _service.SelectPartialTimesByAthlete(Competition, Athlete);

                    IEnumerable <PartialTimesDto> lista = new List <PartialTimesDto> {
                        partial
                    };
                    GenerateTable(lista);
                }
                catch (InvalidOperationException) { }
            }
        }
示例#21
0
 public CompetitionsToPreinscribeLogic(ref DBConnection conn, AthleteDto athlete)
 {
     _conn        = conn;
     Table        = new DataTable();
     _athlete     = athlete;
     Competitions = new List <CompetitionDto>();
 }
示例#22
0
        public PaymentMethodSelectionWindow(AthleteDto athlete, CompetitionDto competition)
        {
            InitializeComponent();

            _athlete     = athlete;
            _competition = competition;
        }
示例#23
0
 public IsCategoryInCompetitionLogic(ref DBConnection conn, CompetitionDto competitionP, AthleteDto athlete)
 {
     _conn        = conn;
     _competition = competitionP;
     _athlete     = athlete;
     IsCorrect    = false;
 }
示例#24
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (TxName.Text == null || TxSurname.Text == null || TxDni.Text == null ||
                DPBirthDate.SelectedDate == null)
            {
                MessageBox.Show(Properties.Resources.IncompleteFields);
                return;
            }

            if (!ComprobarDNI(TxDni.Text))
            {
                MessageBox.Show(Properties.Resources.InvalidDNI);
                return;
            }

            var date = (DateTime)DPBirthDate.SelectedDate;

            if (DateTime.Now.Year - date.Year < 18 || DateTime.Now.Year - date.Year > 100)
            {
                MessageBox.Show(Properties.Resources.InvalidAge);
                return;
            }

            var athlete = new AthleteDto {
                Name      = TxName.Text,
                Surname   = TxSurname.Text,
                Dni       = TxDni.Text.ToUpper(),
                BirthDate = date
            };

            if ((bool)RbMasc.IsChecked)
            {
                athlete.Gender = AthleteDto.MALE;
            }
            else
            {
                athlete.Gender = AthleteDto.FEMALE;
            }

            if (_athletesService.CountAthleteByDni(athlete.Dni) != 0)
            {
                _stringBuilder.Append(athlete.Dni + " registrado anteriormente.\n\n");
                _athletes.Add(athlete);
            }
            else
            {
                _stringBuilder.Append(athlete.Dni + " registrado correctamente.\n\n");
                _athletes.Add(athlete);
                _athletesService.InsertAthletesTable(athlete);
            }

            TxFormIns.Text           = _stringBuilder.ToString();
            TxName.Text              = "";
            TxSurname.Text           = "";
            TxDni.Text               = "";
            DPBirthDate.SelectedDate = null;
            RbMasc.IsChecked         = true;
            GetListCompetition();
        }
示例#25
0
 public InsertAthletesInCompetitionLogic(ref DBConnection conn, AthleteDto athlete, CompetitionDto competition,
                                         TypesStatus status)
 {
     _conn        = conn;
     _athlete     = athlete;
     _competition = competition;
     _status      = status;
 }
        public DialogPayment(AthleteDto athlete, CompetitionDto competition)
        {
            InitializeComponent();

            Buttons = null;


            Content = new PaymentMethodSelectionWindow(athlete, competition);
        }
 private AthleteEntity ConvertToEntity(AthleteDto athleteDto)
 {
     return(new AthleteEntity
     {
         Username = athleteDto.Username,
         Email = athleteDto.Email,
         FullName = athleteDto.FullName
     });
 }
 private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
 {
     Athlete               = null;
     TxDni.Text            = "";
     LbNameSurname.Content = "";
     LbCategory.Content    = "";
     LbTiempoTotal.Content = "";
     CompetitionList_SelectionChanged(null, null);
 }
 private AthleteResponse ConvertToAthleteResponse(AthleteDto athleteDto)
 {
     return(new AthleteResponse
     {
         Username = athleteDto.Username,
         Email = athleteDto.Email,
         FullName = athleteDto.FullName
     });
 }
        public async Task EditAthlete(AthleteDto dto)
        {
            var entity = db.Athletes.Find(dto.Id);

            entity.FirstLoginDate = dto.FirstLoginDate;
            entity.LastLoginDate  = dto.LastLoginDate;
            entity.LastSyncDate   = dto.LastSyncDate;
            entity.IsAdmin        = dto.IsAdmin;
            await db.SaveChangesAsync();
        }
        public WireTransferWindow(AthleteDto athlete, CompetitionDto competition)
        {
            InitializeComponent();

            _athlete     = athlete;
            _competition = competition;

            var cont = Properties.Resources.PaymentAmount + " " + _competition.Price + " €";

            LbPaymentAmount.Content = cont;
        }
        public DialogPreinscripted(AthleteDto athlete, CompetitionDto competition)
        {
            InitializeComponent();

            var customButton = new Button {
                Content = Properties.Resources.Close, Margin = new Thickness(4)
            };

            customButton.Click += (ss, ee) => { Close(); };
            Buttons             = new[] { customButton };

            LbConfirmation.Text = $"El atleta {athlete.Name} se ha preregistrado correctamente en {competition.Name}.";
        }
        public Athlete(AthleteDto athleteDto)
        {
            Nickname = athleteDto.Nicknamek__BackingField;
            FirstName = athleteDto.FirstNamek__BackingField;
            LastName = athleteDto.LastNamek__BackingField;
            Gender = athleteDto.Genderk__BackingField;
            TrainerSizeM = athleteDto.TrainerSizeMk__BackingField;
            TrainerSizeW = athleteDto.TrainerSizeWk__BackingField;
            SpikeSizeM = athleteDto.SpikeSizeMk__BackingField;
            SpikeSizeW = athleteDto.SpikeSizeWk__BackingField;
            Notes = athleteDto.Notesk__BackingField;
            Status = athleteDto.Statusk__BackingField;

            EventParticipation = new ObservableCollection<EventArea>(Common.Constants.EVENT_AREAS);

            foreach (var eventArea in athleteDto.EventParticipationk__BackingField)
                EventParticipation.First(x => x.EventName == eventArea.EventNamek__BackingField).Check();
        }
        public AthleteModel(AthleteDto athleteDto)
        {
            Nickname = athleteDto.Nicknamek__BackingField;
            FirstName = athleteDto.FirstNamek__BackingField;
            LastName = athleteDto.LastNamek__BackingField;
            Gender = athleteDto.Genderk__BackingField;
            TrainerSizeM = athleteDto.TrainerSizeMk__BackingField;
            TrainerSizeW = athleteDto.TrainerSizeWk__BackingField;
            SpikeSizeM = athleteDto.SpikeSizeMk__BackingField;
            SpikeSizeW = athleteDto.SpikeSizeWk__BackingField;
            Notes = athleteDto.Notesk__BackingField;
            Status = athleteDto.Statusk__BackingField;

            EventParticipation = new ObservableCollection<EventAreaModel>(Data.Constants.EVENT_AREAS);
            Inventory = new ObservableCollection<InventoryItemModel>();

            foreach (var eventArea in athleteDto.EventParticipationk__BackingField)
                EventParticipation.First(x => x.EventName == eventArea.EventNamek__BackingField).Check();

            foreach (var inventoryItem in athleteDto.Inventoryk__BackingField)
                Inventory.Add(new InventoryItemModel(inventoryItem));
        }
        private void LoadAthleteInfoWithSelectedAthlete(AthleteDto athleteToEdit)
        {
            Athlete = CloneAthleteDto(athleteToEdit);

            RaisePropertyChanged("InventoryForAthlete");
            RaisePropertyChanged("Athlete");
            RaisePropertyChanged("TotalsByStatus");
        }
        private void ClearAthleteInfo()
        {
            athleteInfo = new AthleteDto() { EventParticipationk__BackingField = new List<EventAreaDto>(Constants.EVENT_AREAS) };

            RaisePropertyChanged("Athlete");
        }
 private AthleteDto CloneAthleteDto(AthleteDto athleteToEdit)
 {
     return new AthleteDto()
     {
         Idk__BackingField = athleteToEdit.Idk__BackingField,
         Nicknamek__BackingField = athleteToEdit.Nicknamek__BackingField,
         FirstNamek__BackingField = athleteToEdit.FirstNamek__BackingField,
         LastNamek__BackingField = athleteToEdit.LastNamek__BackingField,
         Genderk__BackingField = athleteToEdit.Genderk__BackingField,
         TrainerSizeMk__BackingField = athleteToEdit.TrainerSizeMk__BackingField,
         TrainerSizeWk__BackingField = athleteToEdit.TrainerSizeWk__BackingField,
         SpikeSizeMk__BackingField = athleteToEdit.SpikeSizeMk__BackingField,
         SpikeSizeWk__BackingField = athleteToEdit.SpikeSizeWk__BackingField,
         Notesk__BackingField = athleteToEdit.Notesk__BackingField,
         Statusk__BackingField = athleteToEdit.Statusk__BackingField,
         EventParticipationk__BackingField = new List<EventAreaDto>(athleteToEdit.EventParticipationk__BackingField),
         Inventoryk__BackingField = new List<InventoryItemDto>(athleteToEdit.Inventoryk__BackingField)
     };
 }
        public void FilterRemovesAppropriateRowsFromMyInventoryOnEachCallAndResetsAfterClearingFilter()
        {
            var athlete1 = new AthleteDto() { FirstNamek__BackingField = "Jeff", LastNamek__BackingField = "Artis-Gray", Nicknamek__BackingField = "JArtis-Gray", Genderk__BackingField = 'M', TrainerSizeMk__BackingField = 14, TrainerSizeWk__BackingField = 12, SpikeSizeMk__BackingField = 14, SpikeSizeWk__BackingField = 12, Notesk__BackingField = "Notes about Jeff Artis-Gray", Statusk__BackingField = "Future", Inventoryk__BackingField = new List<InventoryItemDto>() };
            var athlete2 = new AthleteDto() { FirstNamek__BackingField = "Darren", LastNamek__BackingField = "Barlow", Nicknamek__BackingField = "DBarlow", Genderk__BackingField = 'M', TrainerSizeMk__BackingField = 14, TrainerSizeWk__BackingField = 12, SpikeSizeMk__BackingField = 14, SpikeSizeWk__BackingField = 12, Notesk__BackingField = "Notes about Darren Barlow", Statusk__BackingField = "Past", Inventoryk__BackingField = new List<InventoryItemDto>() };
            var athlete3 = new AthleteDto() { FirstNamek__BackingField = "Jared", LastNamek__BackingField = "Berman", Nicknamek__BackingField = "JBerman", Genderk__BackingField = 'M', TrainerSizeMk__BackingField = 13, TrainerSizeWk__BackingField = 11, SpikeSizeMk__BackingField = 13, SpikeSizeWk__BackingField = 11, Notesk__BackingField = "Notes about Jared Berman", Statusk__BackingField = "Past", Inventoryk__BackingField = new List<InventoryItemDto>() };

            var model1 = new ModelDto() { ModelNumberk__BackingField = "524395-386", ModelNamek__BackingField = "Air Pegasus+ 29 Trail", Typek__BackingField = "Running", Pricek__BackingField = 105, Colork__BackingField = "Silver Sage/Team Red/University Red/Total Orange", IsDiscontinuedk__BackingField = false };
            var model2 = new ModelDto() { ModelNumberk__BackingField = "524395-038", ModelNamek__BackingField = "Air Pegasus+ 29 Trail", Typek__BackingField = "Running", Pricek__BackingField = 105, Colork__BackingField = "Cool Grey/Total Orange/Signal Blue/Electric Green", IsDiscontinuedk__BackingField = false };

            var inventoryItem1 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete1.Nicknamek__BackingField, Statusk__BackingField = Constants.REQUESTED, ReceivedOnk__BackingField = new DateTime(2012, 8, 18, 11, 26, 13).ToShortDateString() };
            var inventoryItem2 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 11, SizeWk__BackingField = 9, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete1.Nicknamek__BackingField, Statusk__BackingField = Constants.ORDERED, ReceivedOnk__BackingField = new DateTime(2012, 2, 16, 11, 4, 23).ToShortDateString() };
            var inventoryItem3 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 12, SizeWk__BackingField = 10, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete1.Nicknamek__BackingField, Statusk__BackingField = Constants.IN_STOCK, ReceivedOnk__BackingField = new DateTime(2012, 11, 26, 8, 16, 22).ToShortDateString() };
            var inventoryItem4 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 12, SizeWk__BackingField = 10, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete2.Nicknamek__BackingField, Statusk__BackingField = Constants.DISTRIBUTED, ReceivedOnk__BackingField = new DateTime(2012, 12, 28, 15, 3, 13).ToShortDateString() };
            var inventoryItem5 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete2.Nicknamek__BackingField, Statusk__BackingField = Constants.SURPLUSED, ReceivedOnk__BackingField = new DateTime(2012, 1, 12, 22, 49, 55).ToShortDateString() };
            var inventoryItem6 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 11, SizeWk__BackingField = 9, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete2.Nicknamek__BackingField, Statusk__BackingField = Constants.RETURNED, ReceivedOnk__BackingField = new DateTime(2012, 9, 18, 10, 59, 31).ToShortDateString() };
            var inventoryItem7 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete3.Nicknamek__BackingField, Statusk__BackingField = Constants.RECALLED, ReceivedOnk__BackingField = new DateTime(2012, 5, 21, 21, 45, 33).ToShortDateString() };
            var inventoryItem8 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 12, SizeWk__BackingField = 10, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete3.Nicknamek__BackingField, Statusk__BackingField = Constants.RECORDED_AS_LOST, ReceivedOnk__BackingField = new DateTime(2012, 1, 19, 2, 50, 54).ToShortDateString() };
            var inventoryItem9 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete3.Nicknamek__BackingField, Statusk__BackingField = Constants.IN_STOCK, ReceivedOnk__BackingField = new DateTime(2012, 6, 3, 16, 58, 1).ToShortDateString() };

            athlete1.Inventoryk__BackingField.Add(inventoryItem1);
            athlete1.Inventoryk__BackingField.Add(inventoryItem2);
            athlete1.Inventoryk__BackingField.Add(inventoryItem3);
            athlete2.Inventoryk__BackingField.Add(inventoryItem4);
            athlete2.Inventoryk__BackingField.Add(inventoryItem5);
            athlete2.Inventoryk__BackingField.Add(inventoryItem6);
            athlete3.Inventoryk__BackingField.Add(inventoryItem7);
            athlete3.Inventoryk__BackingField.Add(inventoryItem8);
            athlete3.Inventoryk__BackingField.Add(inventoryItem9);

            _inventoryViewModel.MyAthletes = new ObservableCollection<AthleteDto>();
            _inventoryViewModel.MyAthletes.Add(athlete1);
            _inventoryViewModel.MyAthletes.Add(athlete2);
            _inventoryViewModel.MyAthletes.Add(athlete3);

            _inventoryViewModel.MyInventory.Add(inventoryItem1);
            _inventoryViewModel.MyInventory.Add(inventoryItem2);
            _inventoryViewModel.MyInventory.Add(inventoryItem3);
            _inventoryViewModel.MyInventory.Add(inventoryItem4);
            _inventoryViewModel.MyInventory.Add(inventoryItem5);
            _inventoryViewModel.MyInventory.Add(inventoryItem6);
            _inventoryViewModel.MyInventory.Add(inventoryItem7);
            _inventoryViewModel.MyInventory.Add(inventoryItem8);
            _inventoryViewModel.MyInventory.Add(inventoryItem9);

            _inventoryViewModel.ShowAllInventoryItems = true;
            _inventoryViewModel.ShowOnlyDefaultInventoryItems = false;
            Assert.AreEqual(9, _inventoryViewModel.MyInventory.Count);
            Assert.AreEqual(9, _inventoryViewModel.MyInventoryToShow.Count);

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.Athletes.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete1.Nicknamek__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete2.Nicknamek__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete3.Nicknamek__BackingField));

            Assert.AreEqual(8, _inventoryViewModel.FilterInventoryModel.Statuses.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.REQUESTED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.ORDERED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.IN_STOCK));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.DISTRIBUTED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.SURPLUSED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.RETURNED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.RECALLED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.RECORDED_AS_LOST));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.ModelNames.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNames.Contains(model1.ModelNamek__BackingField));

            Assert.AreEqual(2, _inventoryViewModel.FilterInventoryModel.ModelNumbers.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNumbers.Contains(model1.ModelNumberk__BackingField));

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.SizeMs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("9"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("11"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("12"));

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.SizeWs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("7"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("9"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("10"));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.Widths.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Widths.Contains("N"));

            Assert.AreEqual(9, _inventoryViewModel.FilterInventoryModel.ReceivedOns.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem1.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem2.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem3.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem4.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem5.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem6.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem7.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem8.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem9.ReceivedOnk__BackingField));

            _inventoryViewModel.FilterInventoryModel.SelectedAthlete = athlete1.Nicknamek__BackingField;
            _inventoryViewModel.FilterCommand.Execute(null);

            Assert.AreEqual(3, _inventoryViewModel.MyInventory.Count);

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.Athletes.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete1.Nicknamek__BackingField));

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.Statuses.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.REQUESTED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.ORDERED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.IN_STOCK));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.ModelNames.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNames.Contains(model1.ModelNamek__BackingField));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.ModelNumbers.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNumbers.Contains(model1.ModelNumberk__BackingField));

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.SizeMs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("9"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("11"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("12"));

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.SizeWs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("7"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("9"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("10"));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.Widths.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Widths.Contains("N"));

            _inventoryViewModel.FilterInventoryModel.SelectedStatus = Constants.REQUESTED;
            _inventoryViewModel.FilterCommand.Execute(null);

            Assert.AreEqual(1, _inventoryViewModel.MyInventory.Count);

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.Athletes.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete1.Nicknamek__BackingField));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.Statuses.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.REQUESTED));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.ModelNames.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNames.Contains(model1.ModelNamek__BackingField));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.ModelNumbers.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNumbers.Contains(model1.ModelNumberk__BackingField));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.SizeMs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("9"));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.SizeWs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("7"));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.Widths.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Widths.Contains("N"));

            _inventoryViewModel.ClearFilterCommand.Execute(null);

            Assert.AreEqual(9, _inventoryViewModel.MyInventory.Count);
            Assert.AreEqual(9, _inventoryViewModel.MyInventoryToShow.Count);

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.Athletes.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete1.Nicknamek__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete2.Nicknamek__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Athletes.Contains(athlete3.Nicknamek__BackingField));

            Assert.AreEqual(8, _inventoryViewModel.FilterInventoryModel.Statuses.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.REQUESTED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.ORDERED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.IN_STOCK));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.DISTRIBUTED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.SURPLUSED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.RETURNED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.RECALLED));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Statuses.Contains(Constants.RECORDED_AS_LOST));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.ModelNames.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNames.Contains(model1.ModelNamek__BackingField));

            Assert.AreEqual(2, _inventoryViewModel.FilterInventoryModel.ModelNumbers.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ModelNumbers.Contains(model1.ModelNumberk__BackingField));

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.SizeMs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("9"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("11"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeMs.Contains("12"));

            Assert.AreEqual(3, _inventoryViewModel.FilterInventoryModel.SizeWs.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("7"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("9"));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.SizeWs.Contains("10"));

            Assert.AreEqual(1, _inventoryViewModel.FilterInventoryModel.Widths.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.Widths.Contains("N"));

            Assert.AreEqual(9, _inventoryViewModel.FilterInventoryModel.ReceivedOns.Count);
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem1.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem2.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem3.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem4.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem5.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem6.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem7.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem8.ReceivedOnk__BackingField));
            Assert.IsTrue(_inventoryViewModel.FilterInventoryModel.ReceivedOns.Contains(inventoryItem9.ReceivedOnk__BackingField));
        }
        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 SavingInventoryItemSetsSerialNumberInInventoryLabelModel()
        {
            var athlete = new AthleteDto() { FirstNamek__BackingField = "John", LastNamek__BackingField = "Doe", Inventoryk__BackingField = new List<InventoryItemDto>() };
            var eventArea = new EventAreaDto() { EventNamek__BackingField = Constants.POLE_VAULT };
            var model = new ModelDto() { ModelNamek__BackingField = "Model name" };
            _inventoryViewModel.NewInventorySelectedAthlete = athlete;
            _inventoryViewModel.NewInventorySelectedEventArea = eventArea;
            _inventoryViewModel.NewInventorySelectedModel = model;
            _inventoryViewModel.NewInventoryItemSize = 14;
            _inventoryViewModel.NewInventorySelectedSizeIsM = true;
            _inventoryViewModel.NewInventorySelectedSizeIsW = false;
            _inventoryViewModel.NewInventoryItemWidth = "N";
            var inventoryItemDto = new InventoryItemDto() { SerialNumberk__BackingField = 123456 };
            _mockAppService.Setup(x => x.SaveInventoryItem(It.IsAny<InventoryItemDto>())).Returns(inventoryItemDto);

            _inventoryViewModel.SaveNewInventoryCommand.Execute(null);

            Assert.AreEqual(inventoryItemDto.SerialNumberk__BackingField.ToString(), _inventoryViewModel.InventoryLabelModel.SerialNumber);
        }
        public void NewInventoryItemFieldsSetLabelValuesCorrectly()
        {
            var athlete = new AthleteDto() { FirstNamek__BackingField = "John", LastNamek__BackingField = "Doe" };
            var eventArea = new EventAreaDto() { EventNamek__BackingField = Constants.POLE_VAULT };
            var model = new ModelDto() { ModelNamek__BackingField = "Model name" };
            _inventoryViewModel.NewInventorySelectedAthlete = athlete;
            _inventoryViewModel.NewInventorySelectedEventArea = eventArea;
            _inventoryViewModel.NewInventorySelectedModel = model;
            _inventoryViewModel.NewInventoryItemSize = 14;
            _inventoryViewModel.NewInventorySelectedSizeIsM = true;
            _inventoryViewModel.NewInventorySelectedSizeIsW = false;
            _inventoryViewModel.NewInventoryItemWidth = "N";

            Assert.AreEqual(athlete.FirstNamek__BackingField + " " + athlete.LastNamek__BackingField, _inventoryViewModel.InventoryLabelModel.AthleteFirstAndLastName);
            Assert.AreEqual("PV", _inventoryViewModel.InventoryLabelModel.EventAreaAbbreviation);
            Assert.AreEqual("M", _inventoryViewModel.InventoryLabelModel.SizingGender);
            Assert.AreEqual(_inventoryViewModel.NewInventoryItemSize, _inventoryViewModel.InventoryLabelModel.Size);
            Assert.AreEqual("n/a", _inventoryViewModel.InventoryLabelModel.SerialNumber);
            Assert.AreEqual(DateTime.Now.ToString("MMM"), _inventoryViewModel.InventoryLabelModel.ReceivedMonth);
            Assert.AreEqual(DateTime.Now.Year.ToString(), _inventoryViewModel.InventoryLabelModel.ReceivedYear);
            Assert.AreEqual(_inventoryViewModel.NewInventorySelectedModel.ModelNamek__BackingField, _inventoryViewModel.InventoryLabelModel.ModelName);
        }
        public void SavingInventoryItemClearsSelectedItemsFields()
        {
            var athlete = new AthleteDto() { FirstNamek__BackingField = "John", LastNamek__BackingField = "Doe", Inventoryk__BackingField = new List<InventoryItemDto>() };
            _inventoryViewModel.MyAthletes = new ObservableCollection<AthleteDto>();
            _inventoryViewModel.MyAthletes.Add(athlete);
            var eventArea = new EventAreaDto() { EventNamek__BackingField = Constants.POLE_VAULT };
            var model = new ModelDto() { ModelNamek__BackingField = "Model name" };
            _inventoryViewModel.NewInventorySelectedAthlete = athlete;
            _inventoryViewModel.NewInventorySelectedEventArea = eventArea;
            _inventoryViewModel.NewInventorySelectedModel = model;
            _inventoryViewModel.NewInventoryItemSize = 14;
            _inventoryViewModel.NewInventorySelectedSizeIsM = true;
            _inventoryViewModel.NewInventorySelectedSizeIsW = false;
            _inventoryViewModel.NewInventoryItemWidth = "N";
            var inventoryItemDto = new InventoryItemDto() { SerialNumberk__BackingField = 123456, Statusk__BackingField = Constants.IN_STOCK };
            _mockAppService.Setup(x => x.SaveInventoryItem(It.IsAny<InventoryItemDto>())).Returns(inventoryItemDto);

            _inventoryViewModel.SaveNewInventoryCommand.Execute(null);

            Assert.AreEqual(null, _inventoryViewModel.NewInventorySelectedAthlete);
            Assert.AreEqual(null, _inventoryViewModel.NewInventorySelectedEventArea);
            Assert.AreEqual(null, _inventoryViewModel.NewInventorySelectedModel);
            Assert.AreEqual(null, _inventoryViewModel.NewInventoryItemSize);
            Assert.AreEqual(true, _inventoryViewModel.NewInventorySelectedSizeIsM);
            Assert.AreEqual(false, _inventoryViewModel.NewInventorySelectedSizeIsW);
            Assert.AreEqual(String.Empty, _inventoryViewModel.NewInventoryItemWidth);
            Assert.AreEqual(-1, _inventoryViewModel.NewInventoryAthleteIndex);
        }
        public void SaveNewInventoryCommand()
        {
            var athlete = new AthleteDto() { Inventoryk__BackingField = new List<InventoryItemDto>() };
            _inventoryViewModel.MyAthletes = new ObservableCollection<AthleteDto>();
            _inventoryViewModel.MyAthletes.Add(athlete);

            _inventoryViewModel.NewInventorySelectedAthlete = _inventoryViewModel.MyAthletes[0];
            _inventoryViewModel.NewInventorySelectedModel = new ModelDto();
            _inventoryViewModel.NewInventorySelectedStatus = Constants.IN_STOCK;
            _inventoryViewModel.NewInventoryItemWidth = "Wide";

            var returnedItem = new InventoryItemDto() { SerialNumberk__BackingField = 1234 };
            _mockAppService.Setup(x => x.SaveInventoryItem(It.IsAny<InventoryItemDto>())).Returns(returnedItem);

            _inventoryViewModel.SaveNewInventoryCommand.Execute(null);

            Assert.AreEqual(returnedItem.SerialNumberk__BackingField.ToString(), _inventoryViewModel.InventoryLabelModel.SerialNumber);
            Assert.AreEqual(1, _inventoryViewModel.MyInventory.Count);
            Assert.AreEqual(1, _inventoryViewModel.MyAthletes[0].Inventoryk__BackingField.Count);
            InventoryEntryFieldsAreReset();
        }
        public void ProcessMovementCommand_Surplus()
        {
            var athlete = new AthleteDto() { Nicknamek__BackingField = "TestAthlete" };
            var inventoryItem = new InventoryItemDto() { SerialNumberk__BackingField = 123456, Statusk__BackingField = Constants.DISTRIBUTED };
            athlete.Inventoryk__BackingField = new List<InventoryItemDto>();
            athlete.Inventoryk__BackingField.Add(inventoryItem);

            _inventoryViewModel.MyAthletes = new ObservableCollection<AthleteDto>();
            _inventoryViewModel.MyAthletes.Add(athlete);
            _inventoryViewModel.SerialNumber = inventoryItem.SerialNumberk__BackingField;
            _inventoryViewModel.SelectedMovementType = Constants.SURPLUS;

            _mockAppService.Setup(x => x.Surplus(inventoryItem, It.IsAny<String>())).Returns(new InventoryItemDto() { SerialNumberk__BackingField = inventoryItem.SerialNumberk__BackingField, Statusk__BackingField = Constants.SURPLUSED });

            _inventoryViewModel.ProcessMovementCommand.Execute(null);

            Assert.AreEqual(1, _inventoryViewModel.MyInventory.Count);
            Assert.AreEqual(1, _inventoryViewModel.MyAthletes[0].Inventoryk__BackingField.Count);
            Assert.AreEqual(Constants.SURPLUSED, _inventoryViewModel.MyAthletes[0].Inventoryk__BackingField[0].Statusk__BackingField);
            _mockAppService.VerifyAll();
        }
        public void ProcessMovementCommand_ReturnedByAthlete()
        {
            var athlete = new AthleteDto() { Nicknamek__BackingField = "TestAthlete" };
            var inventoryItem = new InventoryItemDto() { SerialNumberk__BackingField = 123456, Statusk__BackingField = Constants.DISTRIBUTED };
            athlete.Inventoryk__BackingField = new List<InventoryItemDto>();
            athlete.Inventoryk__BackingField.Add(inventoryItem);

            _inventoryViewModel.MyAthletes = new ObservableCollection<AthleteDto>();
            _inventoryViewModel.MyAthletes.Add(athlete);
            _inventoryViewModel.SerialNumber = inventoryItem.SerialNumberk__BackingField;
            _inventoryViewModel.SelectedMovementType = Constants.RETURNED_BY_ATHLETE;

            _mockAppService.Setup(x => x.ReturnedByAthlete(inventoryItem, It.IsAny<String>())).Returns(new InventoryItemDto() { SerialNumberk__BackingField = inventoryItem.SerialNumberk__BackingField, Statusk__BackingField = Constants.IN_STOCK });

            _inventoryViewModel.ProcessMovementCommand.Execute(null);

            // update to assign shoe to dummy athlete
            Assert.AreEqual(0, _inventoryViewModel.MyInventory.Count);
            Assert.AreEqual(0, _inventoryViewModel.MyAthletes[0].Inventoryk__BackingField.Count);
            _mockAppService.VerifyAll();
        }
        public void ProcessingMovementDoesNotResetInventoryFilters()
        {
            var athlete1 = new AthleteDto() { FirstNamek__BackingField = "Jeff", LastNamek__BackingField = "Artis-Gray", Nicknamek__BackingField = "JArtis-Gray", Genderk__BackingField = 'M', TrainerSizeMk__BackingField = 14, TrainerSizeWk__BackingField = 12, SpikeSizeMk__BackingField = 14, SpikeSizeWk__BackingField = 12, Notesk__BackingField = "Notes about Jeff Artis-Gray", Statusk__BackingField = "Future", Inventoryk__BackingField = new List<InventoryItemDto>() };
            var athlete2 = new AthleteDto() { FirstNamek__BackingField = "Darren", LastNamek__BackingField = "Barlow", Nicknamek__BackingField = "DBarlow", Genderk__BackingField = 'M', TrainerSizeMk__BackingField = 14, TrainerSizeWk__BackingField = 12, SpikeSizeMk__BackingField = 14, SpikeSizeWk__BackingField = 12, Notesk__BackingField = "Notes about Darren Barlow", Statusk__BackingField = "Past", Inventoryk__BackingField = new List<InventoryItemDto>() };
            var athlete3 = new AthleteDto() { FirstNamek__BackingField = "Jared", LastNamek__BackingField = "Berman", Nicknamek__BackingField = "JBerman", Genderk__BackingField = 'M', TrainerSizeMk__BackingField = 13, TrainerSizeWk__BackingField = 11, SpikeSizeMk__BackingField = 13, SpikeSizeWk__BackingField = 11, Notesk__BackingField = "Notes about Jared Berman", Statusk__BackingField = "Past", Inventoryk__BackingField = new List<InventoryItemDto>() };

            var model1 = new ModelDto() { ModelNumberk__BackingField = "524395-386", ModelNamek__BackingField = "Air Pegasus+ 29 Trail", Typek__BackingField = "Running", Pricek__BackingField = 105, Colork__BackingField = "Silver Sage/Team Red/University Red/Total Orange", IsDiscontinuedk__BackingField = false };
            var model2 = new ModelDto() { ModelNumberk__BackingField = "524395-038", ModelNamek__BackingField = "Air Pegasus+ 29 Trail", Typek__BackingField = "Running", Pricek__BackingField = 105, Colork__BackingField = "Cool Grey/Total Orange/Signal Blue/Electric Green", IsDiscontinuedk__BackingField = false };

            var inventoryItem1 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete1.Nicknamek__BackingField, Statusk__BackingField = Constants.REQUESTED, ReceivedOnk__BackingField = new DateTime(2012, 8, 18, 11, 26, 13).ToShortDateString() };
            var inventoryItem2 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 11, SizeWk__BackingField = 9, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete1.Nicknamek__BackingField, Statusk__BackingField = Constants.ORDERED, ReceivedOnk__BackingField = new DateTime(2012, 2, 16, 11, 4, 23).ToShortDateString() };
            var inventoryItem3 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 12, SizeWk__BackingField = 10, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete1.Nicknamek__BackingField, Statusk__BackingField = Constants.IN_STOCK, ReceivedOnk__BackingField = new DateTime(2012, 11, 26, 8, 16, 22).ToShortDateString() };
            var inventoryItem4 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 12, SizeWk__BackingField = 10, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete2.Nicknamek__BackingField, Statusk__BackingField = Constants.DISTRIBUTED, ReceivedOnk__BackingField = new DateTime(2012, 12, 28, 15, 3, 13).ToShortDateString() };
            var inventoryItem5 = new InventoryItemDto() { ModelDtok__BackingField = model1, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete2.Nicknamek__BackingField, Statusk__BackingField = Constants.SURPLUSED, ReceivedOnk__BackingField = new DateTime(2012, 1, 12, 22, 49, 55).ToShortDateString() };
            var inventoryItem6 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 11, SizeWk__BackingField = 9, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete2.Nicknamek__BackingField, Statusk__BackingField = Constants.RETURNED, ReceivedOnk__BackingField = new DateTime(2012, 9, 18, 10, 59, 31).ToShortDateString() };
            var inventoryItem7 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete3.Nicknamek__BackingField, Statusk__BackingField = Constants.RECALLED, ReceivedOnk__BackingField = new DateTime(2012, 5, 21, 21, 45, 33).ToShortDateString() };
            var inventoryItem8 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 12, SizeWk__BackingField = 10, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete3.Nicknamek__BackingField, Statusk__BackingField = Constants.RECORDED_AS_LOST, ReceivedOnk__BackingField = new DateTime(2012, 1, 19, 2, 50, 54).ToShortDateString() };
            var inventoryItem9 = new InventoryItemDto() { ModelDtok__BackingField = model2, SizeMk__BackingField = 9, SizeWk__BackingField = 7, Widthk__BackingField = "N", AthleteNicknamek__BackingField = athlete3.Nicknamek__BackingField, Statusk__BackingField = Constants.IN_STOCK, ReceivedOnk__BackingField = new DateTime(2012, 6, 3, 16, 58, 1).ToShortDateString() };

            athlete1.Inventoryk__BackingField.Add(inventoryItem1);
            athlete1.Inventoryk__BackingField.Add(inventoryItem2);
            athlete1.Inventoryk__BackingField.Add(inventoryItem3);
            athlete2.Inventoryk__BackingField.Add(inventoryItem4);
            athlete2.Inventoryk__BackingField.Add(inventoryItem5);
            athlete2.Inventoryk__BackingField.Add(inventoryItem6);
            athlete3.Inventoryk__BackingField.Add(inventoryItem7);
            athlete3.Inventoryk__BackingField.Add(inventoryItem8);
            athlete3.Inventoryk__BackingField.Add(inventoryItem9);

            _inventoryViewModel.MyAthletes = new ObservableCollection<AthleteDto>();
            _inventoryViewModel.MyAthletes.Add(athlete1);
            _inventoryViewModel.MyAthletes.Add(athlete2);
            _inventoryViewModel.MyAthletes.Add(athlete3);

            _inventoryViewModel.MyInventory.Add(inventoryItem1);
            _inventoryViewModel.MyInventory.Add(inventoryItem2);
            _inventoryViewModel.MyInventory.Add(inventoryItem3);
            _inventoryViewModel.MyInventory.Add(inventoryItem4);
            _inventoryViewModel.MyInventory.Add(inventoryItem5);
            _inventoryViewModel.MyInventory.Add(inventoryItem6);
            _inventoryViewModel.MyInventory.Add(inventoryItem7);
            _inventoryViewModel.MyInventory.Add(inventoryItem8);
            _inventoryViewModel.MyInventory.Add(inventoryItem9);

            _inventoryViewModel.ShowAllInventoryItems = true;
            _inventoryViewModel.ShowOnlyDefaultInventoryItems = false;

            _inventoryViewModel.FilterInventoryModel.SelectedAthlete = _inventoryViewModel.MyAthletes[0].Nicknamek__BackingField;

            _inventoryViewModel.FilterCommand.Execute(null);

            Assert.AreEqual(3, _inventoryViewModel.MyInventory.Count);

            _inventoryViewModel.SerialNumber = _inventoryViewModel.MyAthletes[0].Inventoryk__BackingField[0].SerialNumberk__BackingField;
            _inventoryViewModel.SelectedMovementType = Constants.DISTRIBUTE;

            inventoryItem1.Statusk__BackingField = Constants.DISTRIBUTED;
            _mockAppService.Setup(x => x.Distribute(It.IsAny<InventoryItemDto>(), It.IsAny<String>())).Returns(inventoryItem1);

            _inventoryViewModel.ProcessMovementCommand.Execute(null);

            Assert.AreEqual(3, _inventoryViewModel.MyInventory.Count);
        }