private void AddNotificationDetailsToDatabase(NotificationForm state) { DateTime date = DateTime.Parse(state.Date); User user; using (var repository = new ChatBotRepository <User>()) { user = repository.GetSender(_user.ConversationId, _user.ToName); user.MediaElements = null; user.Notifications = null; } using (var repository = new ChatBotRepository <Notification>()) { var notification = new Notification { Date = date, Description = state.Description, UserId = user.Id }; repository.Create(notification); notification.User = user; RunScheduller(notification); } }
private async Task <Activity> HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { using (var repository = new ChatBotRepository <User>()) { if (message.MembersAdded != null && message.MembersAdded.Any() && !(message.MembersAdded.Any(x => x.Name == "Bot") && message.MembersAdded.Count == 1)) { await GenerateWelcomeMessage(message); List <User> members = new List <User>(); foreach (var user in message.MembersAdded) { repository.Create(new User { ToId = user.Id, ToName = user.Name, FromId = message.Recipient.Id, FromName = message.Recipient.Name, ServiceUrl = message.ServiceUrl, ChannelId = message.ChannelId, ConversationId = message.Conversation.Id, }); } } if (message.MembersRemoved != null && message.MembersRemoved.Any()) { var members = repository.GetCollection.Where(x => x.ConversationId == message.Conversation.Id) .Where(x => message.MembersRemoved.FirstOrDefault(y => y.Name == x.ToName) != null); foreach (var user in members) { repository.Remove(user); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened //await Conversation.SendAsync(message, () => new WelcomeDialog()); } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
private async Task SaveAttachmentToRepository(IMessageActivity message) { var attachment = message.Attachments.First(); using (HttpClient httpClient = new HttpClient()) { if ((message.ChannelId.Equals("skype", StringComparison.InvariantCultureIgnoreCase) || message.ChannelId.Equals("msteams", StringComparison.InvariantCultureIgnoreCase)) && new Uri(attachment.ContentUrl).Host.EndsWith("skype.com")) { var token = await new MicrosoftAppCredentials().GetTokenAsync(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); } var responseMessage = await httpClient.GetAsync(attachment.ContentUrl); var attachmentsInBytes = await responseMessage.Content.ReadAsByteArrayAsync(); var imageData = Convert.ToBase64String(attachmentsInBytes); var mediaElement = new MediaElement { ContentData = await responseMessage.Content.ReadAsByteArrayAsync(), ContentType = attachment.ContentType, Tag = _state.Tag, Name = attachment.Name, Description = _state.Description }; int userId; using (var repository = new ChatBotRepository <User>()) { userId = repository.GetSender(_user.ConversationId, _user.ToName).Id; } using (var repository = new ChatBotRepository <MediaElement>()) { mediaElement.UserId = userId; repository.Create(mediaElement); } } }
private User GetCurrentUser(User user) { if (user == null) { return(null); } User result; using (var repository = new ChatBotRepository <User>()) { result = repository.GetSender(user.ConversationId, user.ToName); if (result == null) { repository.Create(user); result = user; } return(result); } }