コード例 #1
0
        /// <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)));
        }
コード例 #2
0
        /// <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)));
        }