Esempio n. 1
0
        public static bool AddEntry(string key, string value, MensaBotEntities mensaBotEntities, string channelId, string conversationId)
        {
            try
            {
                if (string.IsNullOrEmpty(value))
                {
                    return(false);
                }

                var chat = mensaBotEntities.Chats.Single(t => t.ConversationId == conversationId && t.ChannelId == channelId);

                if (chat.Settings.Any(s => s.Key == key))
                {
                    chat.Settings.Single(s => s.Key == key).Value = value;
                    mensaBotEntities.SaveChanges();

                    return(true);
                }
                else
                {
                    chat.Settings.Add(
                        new Setting
                    {
                        Key   = key,
                        Value = value
                    });
                    mensaBotEntities.SaveChanges();
                    return(true);
                }
            }
            catch (Exception e)
            {
                return(false);
            }
        }
Esempio n. 2
0
        public static bool CreateChatEntry(MensaBotEntities mensaBotEntities, string channelId, string conversationId, string serviceURL)
        {
            if (!(mensaBotEntities.Chats.Any(t => t.ConversationId == conversationId && t.ChannelId == channelId)))
            {
                var tmp = mensaBotEntities.Chats.Add(
                    new Chat
                {
                    ChannelId      = channelId,
                    ConversationId = conversationId,
                    ServiceURL     = serviceURL,
                    Settings       = new List <Setting>
                    {
                        new Setting
                        {
                            Key   = DatabaseUtilities.LanguageTag,
                            Value = "en"
                        }
                    }
                });

                mensaBotEntities.SaveChanges();
                return(true);
            }
            return(false);
        }
Esempio n. 3
0
        public static bool RemoveKey(MensaBotEntities mensaBotEntities, string key, string channelId, string coversationId)
        {
            try
            {
                var chat = mensaBotEntities.Chats.FirstOrDefault(t => t.ConversationId == coversationId && t.ChannelId == channelId);

                if (chat == null || chat.Settings == null)
                {
                    return(false);
                }

                if (chat.Settings.Any(s => s.Key == key))
                {
                    mensaBotEntities.Settings.Remove(chat.Settings.Single(s => s.Key == key));
                    mensaBotEntities.SaveChanges();

                    return(true);
                }
            }
            catch (Exception e)
            {
                return(false);
            }

            return(false);
        }
Esempio n. 4
0
        public string SetDefaultCanteen(CanteenName defaultCanteen, MensaBotEntities mensaBotEntities, string channelId, string conversationId, string serviceURL)
        {
            DatabaseUtilities.CreateChatEntry(mensaBotEntities, channelId, conversationId, serviceURL);

            if (DatabaseUtilities.AddEntry(DatabaseUtilities.DefaultMensaTag, defaultCanteen.ToString(), mensaBotEntities, channelId, conversationId))
            {
                return(Lang.add_canteen);
            }
            else
            {
                return(Lang.add_canteen_failed);
            }
        }
Esempio n. 5
0
        public string SetLanguage(MensaBotEntities mensaBotEntities, string language, string channelId, string conversationId)
        {
            int index = Array.IndexOf(MessageInterpreter.AvailableLanguages, language);

            if (index >= 0)
            {
                if (DatabaseUtilities.AddEntry(DatabaseUtilities.LanguageTag, language, mensaBotEntities, channelId, conversationId))
                {
                    return(Lang.add_language + ": " + language);
                }
                else
                {
                    return(Lang.add_language_failed + " :" + language);
                }
            }
            return(Lang.unknown_language);
        }
Esempio n. 6
0
        public static bool RemoveAllSettingsAndChat(MensaBotEntities mensaBotEntities, string channelId, string conversationId)
        {
            if ((mensaBotEntities.Chats.Any(t => t.ConversationId == conversationId && t.ChannelId == channelId)))
            {
                var chat = mensaBotEntities.Chats.FirstOrDefault(t => t.ConversationId == conversationId && t.ChannelId == channelId);

                if (chat.Settings != null)
                {
                    mensaBotEntities.Settings.RemoveRange((chat.Settings));
                    mensaBotEntities.SaveChanges();
                }

                mensaBotEntities.Chats.Remove(chat);
                mensaBotEntities.SaveChanges();
                return(true);
            }
            return(false);
        }
Esempio n. 7
0
        public bool SendTrigger(string trigger)
        {
            MensaBotEntities mensaBotEntities = new MensaBotEntities();

            List <Chat> chats = DatabaseUtilities.GetChatTrigger(mensaBotEntities, trigger);

            if (chats == null)
            {
                return(false);
            }

            foreach (var chat in chats)
            {
                string definedLanguage = CommandBucket.Get.GetValue(mensaBotEntities, DatabaseUtilities.LanguageTag, chat.ChannelId, chat.ConversationId);

                if (definedLanguage == null)
                {
                    definedLanguage = "en";
                }

                CultureInfo.CurrentCulture   = CultureInfo.GetCultureInfo(definedLanguage);
                CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo(definedLanguage);

                string[] results = CommandBucket.Get.CreateMensaReply(Dates.today, null, mensaBotEntities, chat.ChannelId, chat.ConversationId, true);

                ConnectorClient connector2 = new ConnectorClient(new Uri(chat.ServiceURL));

                foreach (var result in results)
                {
                    connector2.Conversations.SendToConversationAsync(
                        new Activity
                    {
                        Type         = ActivityTypes.Message,
                        ChannelId    = chat.ChannelId,
                        Conversation = new ConversationAccount(id: chat.ConversationId),
                        From         = new ChannelAccount(id: "mensa_md_bot", name: "mensa_md_bot"),
                        Text         = result
                    });
                }
            }

            return(chats.Count > 0);
        }
Esempio n. 8
0
        public string SetStyle(string style, MensaBotEntities mensaBotEntities, string channelId, string conversationId, string serviceURL)
        {
            FoodDisplayStyle foodDisplayStyle;

            if (FoodDisplayStyle.TryParse(style.ToUpper(), out foodDisplayStyle))
            {
                DatabaseUtilities.CreateChatEntry(mensaBotEntities, channelId, conversationId, serviceURL);
                if (DatabaseUtilities.AddEntry(DatabaseUtilities.StyleTag, foodDisplayStyle.ToString().ToLower(), mensaBotEntities, channelId, conversationId))
                {
                    return(Lang.style_update + ": " + foodDisplayStyle.ToString().ToLower());
                }
                else
                {
                    return(Lang.style_fail_to_add_database);
                }
            }
            else
            {
                return(Lang.style_not_found + ": " + style);
            }
        }
Esempio n. 9
0
        public string SetTrigger(MensaBotEntities mensaBotEntities, string trigger, string channelId, string conversationId)
        {
            Regex r = new Regex("2[0-3]:[0-5][0-9]|[0-1][0-9]:[0-5][0-9]", RegexOptions.IgnoreCase);

            Match m = r.Match(trigger);

            if (!m.Success || trigger.Length != 5)
            {
                return(Lang.regex_not_matched + " " + trigger + " " + trigger.Length);
            }


            var smoothTime = SmoothTime(trigger);

            if (DatabaseUtilities.AddEntry(DatabaseUtilities.Trigger, smoothTime, mensaBotEntities, channelId, conversationId))
            {
                return(Lang.set_time_tigger + " " + smoothTime);
            }
            else
            {
                return(Lang.failed_set_trigger + " " + smoothTime);
            }
        }
Esempio n. 10
0
        public static string GetValueBytKey(MensaBotEntities mensaBotEntities, string key, string channelId, string coversationId)
        {
            try
            {
                var chat = mensaBotEntities.Chats.FirstOrDefault(t => t.ConversationId == coversationId && t.ChannelId == channelId);

                if (chat == null || chat.Settings == null)
                {
                    return(null);
                }

                if (chat.Settings.Any(s => s.Key == key))
                {
                    return(chat.Settings.Single(s => s.Key == key).Value);
                }
            }
            catch (Exception e)
            {
                return(null);
            }

            return(null);
        }
Esempio n. 11
0
        public static List <Chat> GetChatTrigger(MensaBotEntities mensaBotEntities, string trigger)
        {
            try
            {
                var chats = mensaBotEntities.Chats.Where(t => t.Settings.Any()).ToList();

                if (chats == null)
                {
                    return(null);
                }

                List <Chat> chatsWithTrigger = new List <Chat>();

                foreach (var chat in chats)
                {
                    var settings = chat.Settings.FirstOrDefault(t => t.Key == DatabaseUtilities.Trigger);
                    if (settings == null)
                    {
                        continue;
                    }

                    if (settings.Value == trigger)
                    {
                        chatsWithTrigger.Add(chat);
                    }
                }


                return(chatsWithTrigger);
            }
            catch (Exception e)
            {
                return(null);
            }

            return(null);
        }
Esempio n. 12
0
        public async Task <HttpResponseMessage> Post([FromBody] Activity activity)
        {
            MensaBotEntities mbe = new MensaBotEntities();

            string definedLanguage = CommandBucket.Get.GetValue(mbe, DatabaseUtilities.LanguageTag, activity.ChannelId, activity.Conversation.Id);

            if (definedLanguage == null)
            {
                definedLanguage = "en";
            }

            CultureInfo.CurrentCulture   = CultureInfo.GetCultureInfo(definedLanguage);
            CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo(definedLanguage);


            if (activity.Type == ActivityTypes.Message)
            {
                ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));

                if (string.IsNullOrEmpty(activity.Text) || (!activity.Text.StartsWith("/") && activity.ChannelId.ToLower() == "telegram"))
                {
                    return(Request.CreateResponse(HttpStatusCode.NoContent));
                }
                bool   commandMessage = false;
                string chatMessage    = activity.Text.ToLower().Replace(_botHandle, "");

                if (activity.ChannelId.ToLower() == "telegram" || activity.ChannelId.ToLower() == "emulator")
                {
                    chatMessage    = chatMessage.Remove(0, 1);
                    commandMessage = true;
                }

                if (chatMessage.StartsWith("start"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.CreateStartMessage()));
                }

                if (chatMessage.StartsWith("help"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.CreateHelpMessage()));
                }

                if (chatMessage.StartsWith("ping"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, (_random.Next(10) > 8 ? Lang.pong  : Lang.not_play_ping_pong)));
                }

                if (chatMessage.StartsWith("pong"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, (_random.Next(10) > 8 ? Lang.ping : Lang.not_play_ping_pong)));
                }

                if (chatMessage.StartsWith("key") || chatMessage.StartsWith("legende"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.CreateKeyMessage()));
                }

                if (chatMessage.StartsWith("deletedata") || chatMessage.StartsWith("stop"))
                {
                    bool result = DatabaseUtilities.RemoveAllSettingsAndChat(mbe, activity.ChannelId, activity.Conversation.Id);
                    return(await SendResponseMessage(connector, activity, commandMessage, (result == true ? Lang.removed_all_data : Lang.removed_all_data_failed + MessageInterpreter.LineBreak + Lang.failed_sorry)));
                }

                if (chatMessage.StartsWith("remove"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.RemoveDefaults(chatMessage, mbe, activity.ChannelId, activity.Conversation.Id)));
                }

                if (chatMessage.StartsWith("get mensa") || chatMessage.StartsWith("get canteen"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.GetValue(mbe, DatabaseUtilities.DefaultMensaTag, activity.ChannelId, activity.Conversation.Id)));
                }

                if (chatMessage.StartsWith("get filter") || chatMessage.StartsWith("get canteen"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.GetValue(mbe, DatabaseUtilities.IgnoreTags, activity.ChannelId, activity.Conversation.Id)));
                }

                if (chatMessage.StartsWith("get language"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.GetValue(mbe, DatabaseUtilities.LanguageTag, activity.ChannelId, activity.Conversation.Id)));
                }

                if (chatMessage.StartsWith("set"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.SetDefaults(chatMessage, mbe, activity.ChannelId, activity.Conversation.Id, activity.ServiceUrl)));
                }

                if (chatMessage.StartsWith("list canteen") || chatMessage.StartsWith("list mensen"))
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.CreateListCanteensMessage()));
                }

                //------------------------------------------------------------------------------------------------
                //Find mensa commands
                //------------------------------------------------------------------------------------------------

                //Remove(0, 1)
                string[] messageParts         = chatMessage.Split(' ');
                string[] expectedMessageParts = new string[3];

                for (int i = 0; i < messageParts.Length; i++)
                {
                    expectedMessageParts[i] = messageParts[i];
                }

                bool hasCommand = MessageInterpreter.Get.ContainsCommands(MessageInterType.MAIN_COMMAND, expectedMessageParts[0]);

                if (!hasCommand)
                {
                    return(await SendResponseMessage(connector, activity, commandMessage, CommandBucket.Get.CreateUnknownCommand()));
                }


                string[] results = CommandBucket.Get.CreateMensaReply(expectedMessageParts[1], expectedMessageParts[2], mbe, activity.ChannelId, activity.Conversation.Id, false);

                foreach (var result in results)
                {
                    await connector.Conversations.ReplyToActivityAsync(activity.CreateReply(result));
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            else if ((activity.Type == ActivityTypes.DeleteUserData))
            {
                ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
                bool            result    = DatabaseUtilities.RemoveAllSettingsAndChat(mbe, activity.ChannelId, activity.Conversation.Id);
                return(await SendResponseMessage(connector, activity, false, (result == true ? Lang.removed_all_data : Lang.removed_all_data_failed + MessageInterpreter.LineBreak + Lang.failed_sorry)));
            }


            var response = Request.CreateResponse(HttpStatusCode.OK);

            return(response);
        }
Esempio n. 13
0
        public string [] CreateMensaReply(string paramFirst, string paramSecond, MensaBotEntities mensaBotEntities, string channelId, string conversationId, bool forceDate)
        {
            bool isShortRequest = false;

            //check if paramFirst is date, if true -> change order
            if (!string.IsNullOrEmpty(paramFirst) && string.IsNullOrEmpty(paramSecond))
            {
                var isDate = (MessageInterpreter.Get.FindDate(paramFirst) != DateIndex.none);
                if (isDate)
                {
                    paramSecond = paramFirst;
                    paramFirst  = null;
                }
            }

            if (string.IsNullOrEmpty(paramFirst))
            {
                paramFirst = DatabaseUtilities.GetValueBytKey(mensaBotEntities, DatabaseUtilities.DefaultMensaTag, channelId, conversationId);

                if (string.IsNullOrEmpty(paramFirst))
                {
                    return new string[] { Lang.please_add + " " + MessageInterpreter.MarkBold(Lang.canteen_name) + "!" }
                }
                ;
                else
                {
                    isShortRequest = true;
                }
            }

            CanteenName canteenName = MessageInterpreter.Get.FindCanteen(paramFirst);

            if (canteenName == CanteenName.none)
            {
                return(new string[] { Lang.canteen_not_found + ": " + MessageInterpreter.MarkBold(paramFirst) });
            }

            try
            {
                if (_canteens == null)
                {
                    CreateCanteenInfo();
                }

                _canteens[(int)canteenName].LoadElements(3);
            }
            catch (Exception e)
            {
                return(new string[] { Lang.fail_to_load_information + ": " + MessageInterpreter.MarkBold(paramFirst) });
            }

            DateIndex dateIndex = DateIndex.TODAY;

            if (!string.IsNullOrEmpty(paramSecond))
            {
                dateIndex = MessageInterpreter.Get.FindDate(paramSecond);
                if (dateIndex == DateIndex.none)
                {
                    return(new string[] { Lang.date_not_found + " " + MessageInterpreter.MarkBold(paramSecond) });
                }
            }


            //Find correct date element.
            DateTime now = DateTime.Now.ToUniversalTime().AddDays((int)dateIndex).AddHours(1);

            DayElement[] dayElements = null;

            try
            {
                if (isShortRequest && !forceDate)
                {
                    int maxDays = 3;
                    for (int i = 0; i < maxDays; i++)
                    {
                        if (i == 0 && now.Hour > 16)//TODO read close time via website
                        {
                            continue;
                        }

                        dayElements = _canteens[(int)canteenName].DayElements.FindAll(t => t.Date.Day == now.AddDays(i).Day).ToArray();
                        if (dayElements != null && dayElements.Length != 0)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    dayElements = _canteens[(int)canteenName].DayElements.FindAll(t => t.Date.Day == now.Day).ToArray();
                }
            }
            catch (Exception e)
            {
                dayElements = null;
            }

            if (dayElements == null || dayElements.Length == 0)
            {
                return(new string[] { MessageInterpreter.MarkBold(Lang.could_not_find_date + " " + now.ToString("dd.MM.yyyy") + Lang.broken_heart) });
            }

            IEnumerable <FoodTags> filter = null;

            try
            {
                filter =
                    CommandBucket.Get.GetValue(mensaBotEntities, DatabaseUtilities.IgnoreTags, channelId, conversationId)
                    .Split(MessageInterpreter.ParamDivider)
                    .Select(t => Enum.Parse(typeof(FoodTags), t.ToUpper()))
                    .Cast <FoodTags>();
            }
            catch (Exception e)
            {
                filter = null;
            }

            string[] menuItems = new string[dayElements.Length];

            //List all elements for dayElement
            for (int i = 0; i < dayElements.Length; i++)
            {
                menuItems[i] = Lang.menu_for + ":" + MessageInterpreter.LineBreak + MessageInterpreter.MarkBold(_canteens[(int)canteenName].GetDescription(i)) + " "
                               + Lang.menu_for_at + " " + MessageInterpreter.MarkItalic(dayElements[i].Date.ToString("dd.MM.yyyy"))
                               + MessageInterpreter.DrawLine;

                foreach (var foodElement in dayElements[i].FoodElements)
                {
                    bool hideElement = false;
                    var  tagResult   = "";
                    if (foodElement.Tags != null)
                    {
                        foreach (var tag in foodElement.Tags)
                        {
                            if (tag != null)
                            {
                                if (filter != null && filter.Contains(tag))
                                {
                                    hideElement = true;
                                    break;
                                }
                                tagResult += FoodElement.FoodTagsToEmoji(tag) + ",";
                            }
                            else
                            {
                                tagResult += "❎";
                            }
                        }
                    }
                    if (tagResult.Length > 1)
                    {
                        tagResult = tagResult.Remove(tagResult.Length - 1, 1).ToLower() + ";";
                    }

                    string warning = null;

                    if (string.IsNullOrEmpty(foodElement.EnglishName.Trim()) && CultureInfo.CurrentCulture.ToString() != (new CultureInfo("de")).ToString())
                    {
                        warning = MessageInterpreter.MarkItalic(Lang.no_english_available);
                    }

                    FoodDisplayStyle foodDisplayStyle = FoodDisplayStyle.none;
                    string           styleString      = GetValue(mensaBotEntities, DatabaseUtilities.StyleTag, channelId, conversationId);
                    if (!string.IsNullOrEmpty(styleString))
                    {
                        if (!FoodDisplayStyle.TryParse(styleString.ToUpper(), out foodDisplayStyle))
                        {
                            foodDisplayStyle = FoodDisplayStyle.none;
                        }
                    }

                    var tagsDisplay = "";
                    switch (foodDisplayStyle)
                    {
                    case FoodDisplayStyle.none:
                    case FoodDisplayStyle.MAXIMUM:
                        tagsDisplay = MessageInterpreter.LineBreak + tagResult + (!string.IsNullOrEmpty(foodElement.Cost) ? foodElement.Cost + "€" : "") + MessageInterpreter.DrawLine;
                        break;

                    case FoodDisplayStyle.MINIMUM_NOLINES:
                        tagsDisplay = MessageInterpreter.LineBreak;
                        break;

                    case FoodDisplayStyle.MINIMUM:
                        tagsDisplay = MessageInterpreter.DrawLine;
                        break;

                    case FoodDisplayStyle.INLINE:
                        tagsDisplay = " " + ((tagResult.Length > 1) ? tagResult.Remove(tagResult.Length - 1, 1) : tagResult) + MessageInterpreter.DrawLine;
                        break;
                    }

                    if (!hideElement)
                    {
                        if (CultureInfo.CurrentCulture.ToString() == (new CultureInfo("de")).ToString() || warning != null)
                        {
                            menuItems[i] += MessageInterpreter.MarkBold(foodElement.GermanName) + warning + " " + tagsDisplay;
                        }
                        else
                        {
                            menuItems[i] += MessageInterpreter.MarkBold(MessageInterpreter.FirstCharToUpper(foodElement.EnglishName)) + " " + tagsDisplay;
                        }
                    }
                }
            }

            return(menuItems);
        }
Esempio n. 14
0
        public string SetDefaults(string activityMessage, MensaBotEntities mensaBotEntities, string channelId, string conversationId, string serviceURL)
        {
            if (activityMessage.StartsWith("set help"))
            {
                var message = MessageInterpreter.MarkBold(Lang.set_help) + MessageInterpreter.DrawLine
                              + Lang.set_help_canteen + MessageInterpreter.DrawLine
                              + Lang.set_help_filter + MessageInterpreter.DrawLine
                              + Lang.set_help_style + MessageInterpreter.DrawLine
                              + Lang.set_help_trigger + MessageInterpreter.DrawLine
                              + Lang.language_help;

                return(message);
            }

            string[] setMessageParts = activityMessage.Remove(0, 1).ToLower().Split(' ');

            if (setMessageParts.Length != 3)
            {
                return(Lang.set_fail);
            }

            bool containsCommand = MessageInterpreter.Get.ContainsCommands(MessageInterType.MAIN_COMMAND, setMessageParts[1]);

            if (containsCommand)
            {
                DatabaseUtilities.CreateChatEntry(mensaBotEntities, channelId, conversationId, serviceURL);
                CanteenName canteenName = MessageInterpreter.Get.FindCanteen(setMessageParts[2]);

                if (canteenName == CanteenName.none)
                {
                    return(Lang.canteen_not_found + " " + MessageInterpreter.MarkBold(setMessageParts[2]));
                }

                return(CommandBucket.Get.SetDefaultCanteen(canteenName, mensaBotEntities, channelId, conversationId, serviceURL));
            }

            if (setMessageParts[1] == "language")
            {
                DatabaseUtilities.CreateChatEntry(mensaBotEntities, channelId, conversationId, serviceURL);

                var lang = activityMessage.Split(' ');
                if (lang.Length != 3)
                {
                    return(Lang.language_help);
                }

                return(CommandBucket.Get.SetLanguage(mensaBotEntities, lang[2], channelId, conversationId));
            }

            if (setMessageParts[1] == "trigger")
            {
                DatabaseUtilities.CreateChatEntry(mensaBotEntities, channelId, conversationId, serviceURL);

                var time = activityMessage.Split(' ');
                if (time.Length != 3)
                {
                    return(Lang.fail_so_define_trigger);
                }

                return(CommandBucket.Get.SetTrigger(mensaBotEntities, time[2], channelId, conversationId));
            }


            if ((setMessageParts[1].ToLower() == "style"))
            {
                DatabaseUtilities.CreateChatEntry(mensaBotEntities, channelId, conversationId, serviceURL);
                return(CommandBucket.Get.SetStyle(setMessageParts[2], mensaBotEntities, channelId, conversationId, serviceURL));
            }

            if ((setMessageParts[1].ToLower() == "filter"))
            {
                DatabaseUtilities.CreateChatEntry(mensaBotEntities, channelId, conversationId, serviceURL);

                var tags           = CommandBucket.Get.SetIgnoreTags(setMessageParts[2], MessageInterpreter.ParamDivider);
                var tagsAdditional = CommandBucket.Get.SetIgnoreTags(setMessageParts[2], MessageInterpreter.ParamDivider);

                if (tags != null && tagsAdditional != null)
                {
                    tags.AddRange(tagsAdditional);
                }
                if (tags == null && tagsAdditional != null)
                {
                    tags = tagsAdditional;
                }

                if (tags == null)
                {
                    return(Lang.failed_sorry + MessageInterpreter.LineBreak + Lang.add_tags_failed);
                }

                tags = tags.Distinct().ToList();

                string enumToString  = "";
                string displayString = "";
                for (int i = 0; i < tags.Count - 1; i++)
                {
                    enumToString  += tags[i].ToString().ToLower() + MessageInterpreter.ParamDivider;
                    displayString += FoodElement.FoodTagsToString(tags[i]) + MessageInterpreter.ParamDivider;
                }
                enumToString  += tags[tags.Count - 1].ToString().ToLower();
                displayString += FoodElement.FoodTagsToString(tags[tags.Count - 1]);

                if (DatabaseUtilities.AddEntry(DatabaseUtilities.IgnoreTags, enumToString, mensaBotEntities, channelId, conversationId))
                {
                    return(Lang.add_tags + " " + MessageInterpreter.MarkBold(displayString));
                }
                else
                {
                    return(Lang.add_tags_failed + MessageInterpreter.LineBreak + Lang.add_tags_failed);
                }
            }

            return(CommandBucket.Get.CreateUnknownCommand());
        }
Esempio n. 15
0
        public string RemoveDefaults(string activityMessage, MensaBotEntities mensaBotEntities, string channelId, string conversationId)
        {
            if (activityMessage.StartsWith("remove mensa") || activityMessage.StartsWith("remove canteen"))
            {
                string[] msgParts = activityMessage.Split(' ');

                if (msgParts.Length != 2)
                {
                    return(Lang.wrong_param_remove_canteen);
                }

                bool containsCommand = MessageInterpreter.Get.ContainsCommands(MessageInterType.MAIN_COMMAND, msgParts[1]);

                if (containsCommand)
                {
                    return(CommandBucket.Get.CreateUnknownCommand());
                }
                else
                {
                    DatabaseUtilities.RemoveKey(mensaBotEntities, DatabaseUtilities.DefaultMensaTag, channelId, conversationId);
                    return(Lang.deleted_canteen);
                }
            }

            if (activityMessage.StartsWith("remove filter"))
            {
                string[] msgParts = activityMessage.Split(' ');

                if (msgParts.Length != 2)
                {
                    return(Lang.wrong_param_remove_filter);
                }

                DatabaseUtilities.RemoveKey(mensaBotEntities, DatabaseUtilities.IgnoreTags, channelId, conversationId);
                return(Lang.deleted_filter);
            }

            if (activityMessage.StartsWith("remove style"))
            {
                string[] msgParts = activityMessage.Split(' ');

                if (msgParts.Length != 2)
                {
                    return(Lang.wrong_param_remove_filter);
                }

                DatabaseUtilities.RemoveKey(mensaBotEntities, DatabaseUtilities.StyleTag, channelId, conversationId);
                return(Lang.deleted_filter);
            }

            if (activityMessage.StartsWith("remove trigger"))
            {
                string[] msgParts = activityMessage.Split(' ');

                if (msgParts.Length != 2)
                {
                    return(Lang.wrong_param_remove_filter);
                }

                DatabaseUtilities.RemoveKey(mensaBotEntities, DatabaseUtilities.Trigger, channelId, conversationId);
                return(Lang.deleted_filter);
            }

            if (activityMessage.StartsWith("remove help"))
            {
                var message = MessageInterpreter.MarkBold(Lang.remove_help) + MessageInterpreter.DrawLine
                              + Lang.remove_help_canteen + MessageInterpreter.DrawLine
                              + Lang.remove_help_filter + MessageInterpreter.DrawLine
                              + Lang.remove_help_trigger + MessageInterpreter.DrawLine
                              + Lang.remove_help_style + MessageInterpreter.LineBreak;

                return(message);
            }

            return(Lang.command_help_intro + " /remove help " + Lang.help_default_settings_remove);
        }
Esempio n. 16
0
 public string GetValue(MensaBotEntities mensaBotEntities, string key, string channelId, string conversationId)
 {
     return(DatabaseUtilities.GetValueBytKey(mensaBotEntities, key, channelId, conversationId));
 }