public async Task <ChannelDetails> CreateChannel(User activeUser, string groupTitle, IEnumerable <string> addUsernames)
        {
            List <int> recipientIds = new List <int>();
            int        channelId;

            using (var trans = TransactionScopeFactory.Create())
            {
                if (addUsernames != null && addUsernames.Count() > 0)
                {
                    var recipients = (await UserDomain.RetrieveUsersByUsername(addUsernames)).ToDictionary(u => u.Username);
                    foreach (var userName in addUsernames)
                    {
                        if (!recipients.ContainsKey(userName) || !recipients[userName].IsActive)
                        {
                            throw new CritterException($"Could not add {userName} to a group!", $"Invalid message recipient provided - {userName}", System.Net.HttpStatusCode.BadRequest);
                        }
                        recipientIds.Add(recipients[userName].Id);
                    }
                }
                if (string.IsNullOrEmpty(groupTitle))
                {
                    groupTitle = string.Join(", ", addUsernames);
                }
                channelId = await MessageRepo.CreateChannel(groupTitle);

                recipientIds.Add(activeUser.Id);
                await MessageRepo.AddUsersToChannel(channelId, recipientIds);

                trans.Complete();
            }
            return((await GetChannels(new List <int> {
                channelId
            }, activeUser)).FirstOrDefault());
        }