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 }); }
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 }); }
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() }); }
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()); }
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()); }
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() }); }