public async Task <Models.Flare> SendFlare(Models.Flare flare) { if (!ValidateFlare(flare)) { throw new ArgumentException("Flare is invalid!"); } flare.Id = Guid.NewGuid(); flare = await FlareRepository.Create(flare); CryptoProvider crypt = new CryptoProvider(); if (flare.UseEmail) { FlareMessage[] emails = flare.Recipients.Select(x => { return(new FlareMessage { RecipientId = x, FlareId = flare.Id }); }).ToArray(); emails = await Task.WhenAll(emails.Select(x => FlareMessageService.CreateFlareMessage(x, FlareMessageType.Email))); } if (flare.UseSms) { FlareMessage[] texts = flare.Recipients.Select(x => { return(new FlareMessage { RecipientId = x, FlareId = flare.Id }); }).ToArray(); texts = await Task.WhenAll(texts.Select(x => FlareMessageService.CreateFlareMessage(x, FlareMessageType.Sms))); } if (flare.UsePhone) { FlareMessage[] calls = flare.Recipients.Select(x => { return(new FlareMessage { RecipientId = x, FlareId = flare.Id }); }).ToArray(); calls = await Task.WhenAll(calls.Select(x => FlareMessageService.CreateFlareMessage(x, FlareMessageType.PhoneCall))); } return(flare); }
private bool ValidateFlare(Models.Flare flare) { if (flare == null) { throw new ArgumentException("Must provide a flare to send..."); } if (flare.SenderId == Guid.Empty) { throw new ArgumentException("To send a flare you specify a sender!"); } if (flare.OrganizationId == Guid.Empty) { throw new ArgumentException("To send a flare you must specify an organization!"); } if (flare.Recipients == null || flare.Recipients.Length < 1) { throw new ArgumentException("A flare must have recipients!"); } return(true); }
public async Task <ActionResult> Post([FromBody] Models.Flare flare) { return(Ok(await FlareService.SendFlare(flare))); }