/// <inheritdoc/> public ValueTask <ChatEventResult> ProcessCommandAsync(TextDeconstructionInformation info, ChatEvent originalChatEvent, IAsyncResponder responder, IReadOnlyDictionary <string, string> settings) { var notify = info.TextSentanceChunk.StartsWith("Notify", StringComparison.InvariantCultureIgnoreCase); var departmentValue = info.Entities.GetValueOrDefault(nameof(Department))?.FirstOrDefault()?.Replace(". ", ".", StringComparison.InvariantCulture); var customersValue = info.Entities.GetValueOrDefault(nameof(Customer), new string[0]); var period = OpenAirText.GetPeriod(info.Entities.GetValueOrDefault("Period")?.FirstOrDefault()); var state = OpenAirText.GetTimesheetState(info.Entities.GetValueOrDefault("State")?.FirstOrDefault()); var today = DateTime.Today; var date = period == OpenAirPeriodTypes.LastWeek ? today.AddDays(-((int)today.DayOfWeek + 1)) : today; var senderEmail = originalChatEvent.Message.Sender.Email; var customersSetting = settings.GetAsArray(Default.DefaultExcludedClientKey); var customersToExclude = customersValue.Concat(customersSetting ?? new string[0]).ToArray(); var notifyByEmail = settings.GetValueOrDefault(Default.NotifyByEmailKey)?.ToLowerInvariant() == "true"; if (state == TimesheetStates.None) { return(new ValueTask <ChatEventResult>( new ChatEventResult("Provide a state of the time sheets, like unsubmitted or unapproved!"))); } NotifyAsync(date, state, senderEmail, customersToExclude, departmentValue, notify, notifyByEmail, new GoogleChatAddress(originalChatEvent), responder as IHangoutsChatConnector); return(new ValueTask <ChatEventResult>( new ChatEventResult(text: null))); }
/// <inheritdoc/> public ValueTask <ChatEventResult> ProcessCommandAsync( TextDeconstructionInformation info, ChatEvent originalChatEvent, IAsyncResponder responder, IPluginPropertiesAccessor accessor) { var notify = info.TextSentenceChunk.StartsWith("Notify", StringComparison.InvariantCultureIgnoreCase); var departmentValue = info .Entities .GetValueOrDefault(nameof(Department)) ?.FirstOrDefault() ?.Replace(". ", ".", StringComparison.InvariantCulture); var customersValue = info.Entities.GetValueOrDefault(nameof(Customer), new string[0]); var period = OpenAirText.GetPeriod(info.Entities.GetValueOrDefault("Period")?.FirstOrDefault()); var state = OpenAirText.GetTimesheetState(info.Entities.GetValueOrDefault("State")?.FirstOrDefault()); var today = Contract.LocalDateTime.Date; var date = period == OpenAirPeriodTypes.LastWeek ? today.AddDays(-((int)today.DayOfWeek + 1)) : today; var senderEmail = originalChatEvent.Message.Sender.Email; var customersSetting = accessor.GetAllPluginPropertyValues <string>(TimesheetsProperties.FilterByCustomer); var customersToExclude = customersValue.Concat(customersSetting ?? new string[0]).ToArray(); if (state == TimesheetStates.None) { return(new ValueTask <ChatEventResult>( new ChatEventResult("Provide a state of the time sheets, like unsubmitted or unapproved!"))); } var address = new GoogleChatAddress(originalChatEvent); NotifyAsync( date, state, senderEmail, customersToExclude, departmentValue, notify, false, true, address, responder as IHangoutsChatConnector) .ConfigureAwait(false); return(new ValueTask <ChatEventResult>( new ChatEventResult(text: null))); }