Exemplo n.º 1
0
        public async Task PartyGoerAttendingFindsPartyWithAttendee()
        {
            string partyCode1 = await _partyService.StartNewPartyAsync(PartyHost1);

            PartyCodeDTO partyCodeDTO1 = new PartyCodeDTO {
                PartyCode = partyCode1
            };

            string partyCode3 = await _partyService.StartNewPartyAsync(PartyHost2);

            PartyCodeDTO partyCodeDTO3 = new PartyCodeDTO {
                PartyCode = partyCode3
            };

            string partyCode2 = await _partyService.StartNewPartyAsync(PartyHost3);

            PartyCodeDTO partyCodeDTO2 = new PartyCodeDTO {
                PartyCode = partyCode2
            };

            await _partyService.JoinPartyAsync(partyCodeDTO1, PartyAttendee1);

            await _partyService.JoinPartyAsync(partyCodeDTO2, PartyAttendee2);

            await _partyService.JoinPartyAsync(partyCodeDTO3, PartyAttendee3);

            Domain.Party party = await _partyService.GetPartyWithAttendeeAsync(PartyAttendee3);

            Assert.AreEqual(partyCodeDTO3.PartyCode, party.PartyCode);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> UpdateSongForParty([FromBody] PartyCodeDTO partyCode)
        {
            PartyGoer user = new PartyGoer(User.FindFirstValue(ClaimTypes.NameIdentifier));

            if (await _partyService.IsUserHostingAPartyAsync(user))
            {
                Party party = await _partyService.GetPartyWithHostAsync(user);

                await _logService.LogUserActivityAsync(user.Id, $"User updated song for party with code {partyCode.PartyCode}");

                return(await UpdateCurrentSongForEveryoneInPartyAsync(party, user));
            }
            else if (await _partyService.IsUserPartyingAsync(user))
            {
                Party party = await _partyService.GetPartyWithAttendeeAsync(user);

                await _logService.LogUserActivityAsync(user.Id, $"User updated song for party with code {partyCode.PartyCode}");

                return(await UpdateCurrentSongForEveryoneInPartyAsync(party, user));
            }
            else
            {
                await _logService.LogUserActivityAsync(user.Id, $"User failed tp update song for party with code {partyCode.PartyCode}");

                return(BadRequest($"You are currently not hosting a party or attending a party: {partyCode.PartyCode}"));
            }
        }
Exemplo n.º 3
0
        public async Task MultiplePartyHasCorrectNumberAttendees_Leaving()
        {
            string partyCode1 = await _partyService.StartNewPartyAsync(PartyHost1);

            PartyCodeDTO partyCodeDTO1 = new PartyCodeDTO {
                PartyCode = partyCode1
            };

            string partyCode2 = await _partyService.StartNewPartyAsync(PartyHost2);

            PartyCodeDTO partyCodeDTO2 = new PartyCodeDTO {
                PartyCode = partyCode2
            };

            string partyCode3 = await _partyService.StartNewPartyAsync(PartyHost3);

            PartyCodeDTO partyCodeDTO3 = new PartyCodeDTO {
                PartyCode = partyCode3
            };


            await _partyService.JoinPartyAsync(partyCodeDTO1, PartyAttendee1);

            await _partyService.JoinPartyAsync(partyCodeDTO2, PartyAttendee2);

            await _partyService.JoinPartyAsync(partyCodeDTO3, PartyAttendee3);

            await _partyService.LeavePartyAsync(PartyAttendee1);

            await _partyService.LeavePartyAsync(PartyAttendee2);

            Assert.AreEqual(0, (await _partyService.GetPartyWithHostAsync(PartyHost1)).Listeners.Count);
            Assert.AreEqual(0, (await _partyService.GetPartyWithHostAsync(PartyHost2)).Listeners.Count);
            Assert.AreEqual(1, (await _partyService.GetPartyWithHostAsync(PartyHost3)).Listeners.Count);
        }
Exemplo n.º 4
0
        public async Task NewPartyWithHostHasNoAttendeesEmpty()
        {
            string partyCode = await _partyService.StartNewPartyAsync(PartyHost1);

            PartyCodeDTO partyCodeDTO = new PartyCodeDTO {
                PartyCode = partyCode
            };

            Assert.AreEqual(0, (await _partyService.GetPartyWithHostAsync(PartyHost1)).Listeners.Count);
        }
Exemplo n.º 5
0
        public async Task <Party> GetPartyAsync(PartyCodeDTO partyCode)
        {
            try
            {
                return(await _partyRepository.GetAsync(partyCode));
            }
            catch (Exception ex)
            {
                await _logService.LogExceptionAsync(ex, "Error occurred in GetPartyAsync");

                return(null);
            }
        }
Exemplo n.º 6
0
        public async Task SinglePartyHasCorrectNumberOfAttendees()
        {
            string partyCode = await _partyService.StartNewPartyAsync(PartyHost1);

            PartyCodeDTO partyCodeDTO = new PartyCodeDTO {
                PartyCode = partyCode
            };

            await _partyService.JoinPartyAsync(partyCodeDTO, PartyAttendee1);

            await _partyService.JoinPartyAsync(partyCodeDTO, PartyAttendee2);

            await _partyService.JoinPartyAsync(partyCodeDTO, PartyAttendee3);

            Assert.AreEqual(3, (await _partyService.GetPartyWithHostAsync(PartyHost1)).Listeners.Count);
        }
Exemplo n.º 7
0
        public async Task <IActionResult> UpdateQueueForParty([FromBody] PartyCodeDTO partyCode)
        {
            PartyGoer user = new PartyGoer(User.FindFirstValue(ClaimTypes.NameIdentifier));

            if (await _partyService.IsUserPartyingAsync(user))
            {
                Party party = await _partyService.GetPartyWithAttendeeAsync(user);

                await UpdatePlaylistForEveryoneInPartyAsync(party, user);

                return(Ok());
            }
            else
            {
                return(new StatusCodeResult(400));
            }
        }
Exemplo n.º 8
0
        public async Task <IActionResult> UpdateQueueForParty([FromBody] PartyCodeDTO partyCode)
        {
            PartyGoer user = new PartyGoer(User.FindFirstValue(ClaimTypes.NameIdentifier));

            List <Song> playlist = null;

            if (await _partyService.IsUserHostingAPartyAsync(user))
            {
                Party party = await _partyService.GetPartyWithHostAsync(user);

                playlist = await UpdatePlaylistForEveryoneInPartyAsync(party, user);

                //await party.;

                // update the playlist for everyone
                await _partyHubContext.Clients.Group(party.PartyCode).SendAsync("UpdatePlaylist", playlist, playlist.First());
            }
            else if (await _partyService.IsUserPartyingAsync(user))
            {
                Party party = await _partyService.GetPartyWithAttendeeAsync(user);

                playlist = await UpdatePlaylistForEveryoneInPartyAsync(party, user);

                //await party.StartPlaylistAsync();

                // update the playlist for everyone
                await _partyHubContext.Clients.Group(party.PartyCode).SendAsync("UpdatePlaylist", playlist, playlist.First());
            }

            if (playlist != null)
            {
                await _logService.LogUserActivityAsync(user.Id, $"User successfully updated playlist for party {partyCode.PartyCode}");

                return(Ok());
            }
            else
            {
                await _logService.LogUserActivityAsync(user.Id, $"User failed to update playlist for party with code {partyCode.PartyCode}");

                return(BadRequest("Unable to create a new playlist"));
            }
        }
Exemplo n.º 9
0
        public async Task <bool> JoinPartyAsync(PartyCodeDTO partyCode, PartyGoer attendee)
        {
            try
            {
                Party party = await _partyRepository.GetPartyWithCodeAsync(partyCode.PartyCode);

                if (party == null)
                {
                    return(false);
                }

                return(await JoinPartyAsync(partyCode, attendee));
            }
            catch (Exception ex)
            {
                await _logService.LogExceptionAsync(ex, "Error occurred in JoinPartyAsync");

                return(false);
            }
        }
        public async Task SinglePartyHasNoAttendeesWithAllLeavingAttendees()
        {
            string partyCode = await _partyService.StartNewPartyAsync(PartyHost1);

            PartyCodeDTO partyCodeDTO = new PartyCodeDTO {
                PartyCode = partyCode
            };

            await _partyService.JoinPartyAsync(partyCodeDTO, PartyAttendee1);

            await _partyService.JoinPartyAsync(partyCodeDTO, PartyAttendee2);

            await _partyService.JoinPartyAsync(partyCodeDTO, PartyAttendee3);

            await _partyService.LeavePartyAsync(PartyAttendee2);

            await _partyService.LeavePartyAsync(PartyAttendee3);

            await _partyService.LeavePartyAsync(PartyAttendee1);

            Assert.AreEqual(0, (await _partyService.GetPartyWithHostAsync(PartyHost1)).GetListenerCount());
        }
Exemplo n.º 11
0
        public async Task <IActionResult> JoinParty(string partyCode)
        {
            PartyCodeDTO partyCodeDto = new PartyCodeDTO
            {
                PartyCode = partyCode
            };

            PartyGoer user = new PartyGoer(User.FindFirstValue(ClaimTypes.NameIdentifier));

            if (partyCodeDto == null)
            {
                await _logService.LogUserActivityAsync(user.Id, $"Failed to join party with null party code");

                return(RedirectToAction("Index", "Dashboard"));
            }

            if (await _partyService.IsUserPartyingAsync(user))
            {
                // User can only join 1 party at a time
                return(RedirectToAction("Index", "Dashboard", new { ErrorMessage = "You cannot join 2 parties. You must leave the first to join another" }));
            }

            if (await _partyService.JoinPartyAsync(partyCodeDto, user))
            {
                await _partyService.SyncUserWithSong(user);

                await _logService.LogUserActivityAsync(user.Id, $"Joined a party with code {partyCodeDto.PartyCode}");

                return(RedirectToAction("Index", "Party", new { PartyCode = partyCode }));
            }
            else
            {
                await _logService.LogUserActivityAsync(user.Id, $"Failed to join party with code {partyCodeDto.PartyCode}");

                return(RedirectToAction("Index", "Dashboard", new { ErrorMessage = $"A party does not exist with the party code {partyCode}" }));
            }
        }
Exemplo n.º 12
0
 public Task <Party> GetAsync(PartyCodeDTO partyCode)
 {
     return(Task.FromResult(_parties.Find(p => p.PartyCode.Equals(partyCode.PartyCode, StringComparison.OrdinalIgnoreCase))));
 }