Exemplo n.º 1
0
        public async Task <DTOs.Notification> Invite(DTOs.InviteJoinBand request)
        {
            var host = await banditRepository.Get(request.Host.Id);

            if (host == null)
            {
                throw new NotFoundException("Bandit", request.Host.Id);
            }

            var guest = await banditRepository.Get(request.Guest.Id);

            if (guest == null)
            {
                throw new NotFoundException("Bandit", request.Guest.Id);
            }

            var band = await bandRepository.Get(request.Band.Id);

            if (band == null)
            {
                throw new NotFoundException("Band", request.Band.Id);
            }

            if (!band.IsMember(host))
            {
                throw new InvalidOperationException(Strings.CantInviteToJoin.Format(host.Name, guest.Name, band.Name));
            }

            var member = BandMember.From(host, band);

            if (!member.CanInviteToJoin(guest))
            {
                throw new InvalidOperationException(Strings.CantInviteToJoin.Format(host.Name, guest.Name, band.Name));
            }

            var invitation = Invitation.Create(guest, band, guest);
            await invitationRepository.Add(invitation);

            var message = Notifications.InviteJoinBand(host.Name, band.Name);
            await notifications.Send(message, to : guest);

            return(new DTOs.Notification
            {
                To = guest.Name,
                Title = message.Title,
                Content = message.Body
            });
        }
Exemplo n.º 2
0
        public async Task <DTOs.Notification> Invite(DTOs.JoinApp request)
        {
            var bandit = await banditRepository.FindByEmail(request.GuestEmail);

            if (bandit != null)
            {
                throw new InvalidOperationException(Strings.EmailAlreadyUsed.Format(request.GuestEmail));
            }

            var host = await banditRepository.Get(request.Host.Id);

            if (host == null)
            {
                throw new NotFoundException("Bandit", request.Host.Id);
            }

            bandit = Bandit
                     .Create("New Bandit", request.GuestEmail);

            var message = Notifications.JoinApp(host.Name);

            await notifications.Send(message, to : bandit);

            return(new DTOs.Notification
            {
                To = request.GuestEmail,
                Title = message.Title,
                Content = message.Body
            });
        }
Exemplo n.º 3
0
        public async Task <DTOs.BanditsList> Get()
        {
            var bandits = await banditRepository.Get();

            var DTOs = bandits.Select(b => b.ToDto());

            return(new DTOs.BanditsList
            {
                Bandits = DTOs.ToArray()
            });
        }
Exemplo n.º 4
0
        public async Task <DTOs.BanditDetails> Get(int id)
        {
            var bandit = await banditRepository.Get(id);

            if (bandit == null)
            {
                throw new NotFoundException("Bandit", id);
            }

            return(bandit.ToDtoDetails());
        }
Exemplo n.º 5
0
        public async Task <DTOs.BandDetails> Create(DTOs.CreateBand request)
        {
            var boss = await banditRepository.Get(request.Boss.Id);

            if (boss == null)
            {
                throw new NotFoundException("Bandit", request.Boss.Id);
            }

            var band = Band.Create(request.Name, boss);

            band = await bandRepository.Add(band);

            return(band.ToDtoDetails());
        }
Exemplo n.º 6
0
        public async Task <DTOs.BanditBandsList> Get(int banditId)
        {
            var bandit = await banditRepository.Get(banditId);

            if (bandit == null)
            {
                throw new NotFoundException("Bandit", banditId);
            }

            var bands = bandit.Bands.Select(b => b.ToDtoBand());

            return(new DTOs.BanditBandsList
            {
                Bands = bands.ToArray()
            });
        }