/// <inheritdoc/> public async ValueTask <ChatEventResult> ProcessCommandAsync( TextDeconstructionInformation info, ChatEvent originalChatEvent, IAsyncResponder responder, IPluginPropertiesAccessor accessor) { var plugins = await _storageService.GetAllPluginsAsync(); var results = plugins.SelectMany(it => it.Examples ?? Array.Empty <string>()).DefaultIfEmpty(string.Empty); return(new ChatEventResult( ChatEventFactory.CreateCard( new TextParagraph { Text = string.Join("<br />", results) }))); }
/// <inheritdoc/> public async ValueTask <ChatEventResult> ProcessCommandAsync( TextDeconstructionInformation info, ChatEvent originalChatEvent, IAsyncResponder responder, IPluginPropertiesAccessor accessor) { Contract.Ensures(info != null, "Text deconstruction information is required!"); var sender = originalChatEvent?.Message.Sender ?? throw new ArgumentNullException(nameof(originalChatEvent)); var item = await _googleCalendarConnector .GetNextMeetingAsync(sender.Email) .ConfigureAwait(false); if (item?.Summary == null) { return(new ChatEventResult( "Can not find your next event! You may have no events or the service user account do not see your calendar.")); } var link = item.ConferenceData?.EntryPoints.FirstOrDefault(); var startDate = item.Start.DateTime.HasValue ? TimeZoneInfo .ConvertTime(item.Start.DateTime.Value, _currentTimeZoneFactory()) .ToString("HH:mm", CultureInfo.InvariantCulture) : null; var keyValue = new KeyValue { Content = item.Summary, ContentMultiline = false, BottomLabel = startDate, Icon = "INVITE", Button = link == null ? null : ChatEventFactory.CreateTextButton("JOIN", link.Uri) }; var card = ChatEventFactory.CreateCard(keyValue); return(new ChatEventResult(card)); }
#pragma warning restore CC0021 /// <inheritdoc/> public async ValueTask <ChatEventResult> ProcessCommandAsync( TextDeconstructionInformation info, ChatEvent originalChatEvent, IAsyncResponder responder, IPluginPropertiesAccessor accessor) { var userName = info.Entities.GetValueOrDefault("Text")?.FirstOrDefault(); var senderEmail = originalChatEvent?.Message?.Sender.Email; if (string.IsNullOrWhiteSpace(userName)) { return(new ChatEventResult("User was not found!")); } var users = await _storageService.GetAllUsersAsync(); var foundUsers = users .Where(u => MatchUserByName(u, userName)) .Where(u => users.RequestorHasAccessToUserData(u, senderEmail)) .ToArray(); if (foundUsers.Length == 0) { return(new ChatEventResult($"User with name {userName} was not found!")); } return(new ChatEventResult( foundUsers.Select(user => ChatEventFactory.CreateCard( new CardBody { Icon = "PERSON", TopLabel = user.Name, Content = $"{user.Email}\n_{user.Department?.Name}, {FindManagerName(users, user.Manager?.OpenAirUserId)}_", ContentMultiline = true, BottomLabel = string.Join(", ", user.Customers?.Select(it => it.Name) ?? new string[0]), })) .ToArray())); }