Beispiel #1
0
        public async override Task <AbstractDialogue> OnMessage(MessageEventArgs args)
        {
            var dialog = new MainMenuDialogue(_sendMessege);
            await dialog.OnMessage(args);

            return(dialog);
        }
Beispiel #2
0
            public async override Task <AbstractDialogue> OnMessage(MessageEventArgs args)
            {
                var records = from record in Schedule.Records where record.User.Id == args.Message.From.Id select record;

                await _sendMessege("You have the following reservations:",
                                   (ReplyKeyboardMarkup)
                                   records
                                   .Select(x => new [] { x.FromTime.ToString("dd MMMM, hh:mm") + "—" + x.ToTime.Hour + ":00" })
                                   .ToArray());

                var md = new MainMenuDialogue(_sendMessege);

                return(md);
            }
        internal async void AskForRecord(int userId)
        {
            var records = from record in RecordModel.GetAllRecords() where record.User.Id == userId select record;

            if (records.Count() < 1)
            {
                _state = 99;
                var _menueMessage = "No record found";

                await _sendMessege(_menueMessage, MainMenuDialogue.getMainMenuKeyboard());
            }
            else
            {
                await _sendMessege("Select one of your reservations to update or delete:",
                                   (ReplyKeyboardMarkup)
                                   records
                                   .Select(x => new[] { x.FromTime.ToString("dd MMMM, HH:mm") + "—" + x.ToTime.Hour + ":00" })
                                   .ToArray());
            }
        }
Beispiel #4
0
        public override async Task <AbstractDialogue> OnMessage(MessageEventArgs args)
        {
            Process(args);

            if (CurrentState == State.Success)
            {
                bool success = Create(args.Message.From);
                if (success)
                {
                    await _sendMessege("Yay! Your reservation is approved. Have a great BBQing!",
                                       MainMenuDialogue.getMainMenuKeyboard());
                }
                else
                {
                    await _sendMessege("There is already a reservation at that time. Maybe you can join them))",
                                       MainMenuDialogue.getMainMenuKeyboard());
                }

                var md = new MainMenuDialogue(_sendMessege);
                await md.OnMessage(args);

                return(md);
            }

            if (CurrentState == State.Fail)
            {
                await _sendMessege("Something went wrong!)", MainMenuDialogue.getMainMenuKeyboard());

                var md = new MainMenuDialogue(_sendMessege);
                await md.OnMessage(args);

                return(md);
            }

            SendQuestion();
            return(this);
        }
        private async Task <AbstractDialogue> messageHandler(MessageEventArgs args)
        {
            var text   = args.Message.Text;
            var userId = args.Message.From.Id;

            switch (_state)
            {
            case 1:
                AskForRecord(userId);
                if (_state != 99)
                {
                    _state++;
                }
                break;

            case 2:
                _record = RecordModel.FindRecordByUserInputString(text);
                if (_record == null)
                {
                    AskForRecord(userId);
                    break;
                }
                else if (_record.User.Id != userId)
                {
                    _state = 99;
                    await _sendMessege("Invalid Record, It is another user reservation", MainMenuDialogue.getMainMenuKeyboard());

                    break;
                }
                AskForOption();
                _state++;
                break;

            case 3:
                _state++;
                if (Operate(text, userId))
                {
                    await _sendMessege("Deletion successful", MainMenuDialogue.getMainMenuKeyboard());
                }
                break;

            case 4:
                ProcessTime(args.Message.Text, true);
                GetUpdatedTimes("Select the time when you want to finish");
                _state++;
                break;

            case 5:
                ProcessTime(args.Message.Text, false);
                if (RecordModel.UpdateRecord(_record, _record.User, _updateStart, _updateStop))
                {
                    await _sendMessege("Update successful", MainMenuDialogue.getMainMenuKeyboard());
                }
                else
                {
                    await _sendMessege("Change not possible, time is overlapping with another reservation",
                                       MainMenuDialogue.getMainMenuKeyboard());
                }
                _state = 99;
                break;

            case 99:
                _state = 1;     //for some reason, there is no new object created; at least the counter stays; so reset
                var md = new MainMenuDialogue(_sendMessege);
                await md.OnMessage(args);

                return(md);

            default:
                return(this);
            }
            return(this);
        }