コード例 #1
0
        public void Can_Remove_Game_From_Meeting()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                var game = new Game
                {
                    GameId = 1, Title = "game1"
                };

                var meeting = new Meeting
                {
                    MeetingId = 1,
                    Title     = "TestToAddGame"
                };

                var gameInMeeting = new MeetingGame
                {
                    Game    = game,
                    Meeting = meeting
                };

                using (var context = factory.CreateContext())
                {
                    context.Games.Add(game);
                    context.Meetings.Add(meeting);
                    context.SaveChanges();
                    context.MeetingGame.Add(gameInMeeting);
                    context.SaveChanges();

                    //Act
                    var meetingRepository = new EFMeetingRepository(context);
                    meetingRepository.RemoveGameFromMeeting(game.GameId, meeting.MeetingId);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var gameInMeetings = context.MeetingGame
                                         .Include(mg => mg.Meeting)
                                         .Include(mg => mg.Game)
                                         .ToList();
                    Assert.Empty(gameInMeetings);
                }
            }
        }
コード例 #2
0
        public async Task <IActionResult> Edit(MeetingViewModels.CreateEditMeetingViewModel vm)
        {
            var timeZone            = GetTimeZoneOfCurrentUser();
            var startDateUTC        = TimeZoneInfo.ConvertTimeToUtc(vm.StartDateTime, timeZone);
            var endDateUTC          = TimeZoneInfo.ConvertTimeToUtc(vm.EndDateTime, timeZone);
            var currentUserId       = GetCurrentUserId().Result;
            var overlappingMeetings = new List <Meeting>();

            overlappingMeetings = vm.MeetingId == 0
                ? _meetingRepository.GetOverlappingMeetingsForUser(startDateUTC, endDateUTC, currentUserId).ToList()
                : _meetingRepository.GetOverlappingMeetingsForMeeting(startDateUTC, endDateUTC, vm.MeetingId).ToList();

            if (!ToolsExtensions.IsDateInFuture(startDateUTC))
            {
                ModelState.AddModelError(nameof(MeetingViewModels.CreateEditMeetingViewModel.StartDateTime),
                                         Constants.FutureDateInPastMessage);
            }

            if (!ToolsExtensions.IsStartDateBeforeEndDate(startDateUTC, endDateUTC))
            {
                ModelState.AddModelError(nameof(MeetingViewModels.CreateEditMeetingViewModel.EndDateTime),
                                         Constants.EndDateBeforeStartMessage);
            }

            if (overlappingMeetings.Count > 0)
            {
                var overlappingMeetingsTitle = ": ";
                foreach (var meeting in overlappingMeetings)
                {
                    overlappingMeetingsTitle += meeting.Title + " ";
                }

                ModelState.AddModelError(nameof(MeetingViewModels.CreateEditMeetingViewModel.OrganizerId),
                                         Constants.OverlappingMeetingsMessage + overlappingMeetingsTitle);
            }

            if (ModelState.IsValid)
            {
                var organizer = await _userManager.FindByIdAsync(currentUserId);

                var meeting = new Meeting
                {
                    MeetingId     = vm.MeetingId,
                    Title         = vm.Title,
                    StartDateTime = startDateUTC,
                    EndDateTime   = endDateUTC,
                    Organizer     = organizer,
                    Street        = vm.Address.Street,
                    PostalCode    = vm.Address.PostalCode,
                    City          = vm.Address.City,
                    Country       = vm.Address.Country,
                    Notes         = vm.Notes
                };
                _meetingRepository.SaveMeeting(meeting);
                var savedGames    = GetGameIdsFromMeeting(meeting.MeetingId);
                var selectedGames = vm.SelectedGames ?? new int[0];
                var gamesToAdd    = selectedGames.Except(savedGames).ToList();
                var gamesToRemove = savedGames.Except(selectedGames).ToList();

                if (gamesToAdd.Count > 0)
                {
                    foreach (var game in gamesToAdd)
                    {
                        var gameToAdd = new MeetingGame {
                            GameId = game, MeetingId = meeting.MeetingId
                        };
                        _meetingRepository.AddGameToMeeting(gameToAdd);
                    }
                }

                if (gamesToRemove.Count > 0)
                {
                    foreach (var game in gamesToRemove)
                    {
                        _meetingRepository.RemoveGameFromMeeting(game, meeting.MeetingId);
                    }
                }

                TempData["SuccessMessage"] = Constants.GeneralSuccessMessage;
                return(RedirectToAction(nameof(Edit), new { id = meeting.MeetingId }));
            }

            vm.Organizers = _userManager.Users.ToList();
            vm.Games      = _gameRepository.Games.ToList();
            return(View(vm));
        }
コード例 #3
0
        public void Can_Check_Is_Game_In_Meeting()
        {
            //Arrange
            var game1 = new Game {
                GameId = 1, Title = "game1"
            };
            var game2 = new Game {
                GameId = 2, Title = "game2"
            };
            var game3 = new Game {
                GameId = 3, Title = "game3"
            };

            var user1 = new AppUser
            {
                Id = "1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser
            {
                Id = "2", UserName = "******", Email = "*****@*****.**"
            };

            var meeting1 = new Meeting
            {
                Title = "Meeting1", Organizer = user1
            };
            var meeting2 = new Meeting
            {
                Title = "Meeting2", Organizer = user1
            };

            var meetingGame1 = new MeetingGame
            {
                Game = game2, Meeting = meeting1
            };
            var meetingGame2 = new MeetingGame
            {
                Game = game3, Meeting = meeting1
            };
            var meetingGame3 = new MeetingGame
            {
                Game = game3, Meeting = meeting2
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                bool result1;
                bool result2;
                bool result3;
                using (var context = factory.CreateContext())
                {
                    context.Games.Add(game1);
                    context.Games.Add(game2);
                    context.Games.Add(game3);
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.SaveChanges();
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.SaveChanges();
                    context.MeetingGame.Add(meetingGame1);
                    context.MeetingGame.Add(meetingGame2);
                    context.MeetingGame.Add(meetingGame3);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var gameRepository = new EFGameRepository(context);
                    result1 = gameRepository.IsGameInMeeting(game1.GameId);
                    result2 = gameRepository.IsGameInMeeting(game2.GameId);
                    result3 = gameRepository.IsGameInMeeting(game3.GameId);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    Assert.Equal(3, context.Games.Count());
                    Assert.Equal(2, context.Users.Count());
                    Assert.Equal(2, context.Meetings.Count());
                    Assert.Equal(3, context.MeetingGame.Count());
                    Assert.False(result1);
                    Assert.True(result2);
                    Assert.True(result3);
                }
            }
        }