public async Task <FlareMessage> ReadFlareMessage(string token)
        {
            FlareMessage message = await GetFlareMessageByToken(token);

            if (message == null)
            {
                return(null);
            }

            message.Read = true;

            return(await FlareMessageRepository.Update(message));
        }
        public async Task <FlareMessage> ReadFlareMessage(Guid id)
        {
            FlareMessage message = await GetFlareMessageById(id);

            if (message == null)
            {
                return(null);
            }

            message.Read = true;

            return(await FlareMessageRepository.Update(message));
        }
        private bool ValidateFlareMessage(FlareMessage message)
        {
            if (message.RecipientId == Guid.Empty)
            {
                throw new ArgumentException("Flare Message must have a recipient id!");
            }

            if (message.FlareId == Guid.Empty)
            {
                throw new ArgumentException("Flare Message must have a flare id!");
            }

            return(true);
        }
        public async Task <FlareMessage> CreateFlareMessage(FlareMessage message, FlareMessageType messageType)
        {
            if (!ValidateFlareMessage(message))
            {
                throw new ArgumentException("Invalid Flare Message");
            }

            if (message.Id == Guid.Empty)
            {
                message.Id = Guid.NewGuid();
            }

            if (string.IsNullOrWhiteSpace(message.Token))
            {
                CryptoProvider crypt = new CryptoProvider();

                message.Token = crypt.CreateUrlKey();
            }

            if (messageType == FlareMessageType.Email)
            {
                message.MessageType = "email";
            }
            else if (messageType == FlareMessageType.Sms)
            {
                message.MessageType = "sms";
            }
            else if (messageType == FlareMessageType.PhoneCall)
            {
                message.MessageType = "phone";
            }

            message = await FlareMessageRepository.Create(message);

            return(message);
        }