protected override ApiResponse Respont(SimleApiRequest request, State state) { using var db = new DatabaseContext(); var uid = db.Admins.FirstOrDefault(x => x.UserId == request.FromId && x.GroupId == state.User.GroupId); if (uid != null) { db.Admins.Remove(uid); } state.User.GroupId = null; state.User.Group = null; state.User.IsSignedGroup = false; db.Users.Update(state.User); db.SaveChanges(); state.Step = Step.None; return(new ApiResponse { Text = "Все выполнено", UserId = request.PeerId }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { using var db = new DatabaseContext(); var CurrentGroup = db.Groups.Where(x => x.Name == request.Text).FirstOrDefault(); if (CurrentGroup == null) { return(new ApiResponse { Text = "Такой группы не существует\n" + "Повторите попытку...\n\n" + "Для отмены напишите команду \"Отмена\"", UserId = request.PeerId }); } state.User.Group = CurrentGroup; state.User.IsSignedGroup = true; db.Update(state.User); db.SaveChanges(); state.Step = Step.None; return(new ApiResponse { Text = $"Вы вступили в группу \"{request.Text}\"", UserId = request.PeerId }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { if (!state.User.IsSignedGroup) { return(new ApiResponse { Text = "Вы не состоите в группе", UserId = request.PeerId }); } if (!state.User.Group.Admins.Any(x => x.UserId == request.FromId)) { return(new ApiResponse { Text = "Вы не можете пользоваться этой командой", UserId = request.PeerId }); } state.Step = Step.AwaitAddNewAdmin; return(new ApiResponse { Text = "Уважаемый пользователь, чтоб добавить нового администратора группы, необходимо его существование в вашей группе.\n" + "Итак, введите ID пользователя или напишите команду \"Список группы\" чтобы узнать кто подключен к вашей группе", UserId = request.PeerId, KeyBoard = GenerateKeyBoard(Keyboards.ListGroup) }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { if (state.User.IsSignedGroup == false) { return(new ApiResponse { Text = $"Вы не состоите ни в какой группе\n" + $"Для того, чтобы вступить введите \"Вступить в группу\"", UserId = request.PeerId, }); } if (state.User.Group.Admins.Any(x => x.UserId == request.FromId) && state.User.Group.Admins.Count == 1) { return(new ApiResponse { Text = $"Вы единственный администратор группы, прежде чем выйти с беседы, добавьте другого администратора", UserId = request.PeerId, }); } state.Step = Step.AwaitLeaveGroup; return(new ApiResponse { Text = "Вы точно хотите выйти с группы?\n\n" + "Ответьте \"Да\" или \"Нет\"", UserId = request.PeerId }); }
internal ApiResponse HandleRequest(SimleApiRequest apiRequest) { ApiResponse response = null; if (!Modifiers.Any(modifier => modifier.Run(apiRequest, _state, out response))) { throw new NotSupportedException("No default modifier"); } return(response); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { return(new ApiResponse { Text = "Список команд:\n" + "1. \"Вступить в группу\"\n" + "2. \"Создать группу\"", UserId = request.PeerId, KeyBoard = GenerateKeyBoard(Keyboards.HelpKeyboard) }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { return(new ApiResponse { Text = "Я вас не понимаю.\nПожалуйста посмотрите список команд\n\n" + "Вы можете посмотреть список команд\n" + "Напишите команду \"помощь\"", UserId = request.PeerId, KeyBoard = GenerateKeyBoard(Keyboards.HelpKeyboard) }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { state.Step = Step.None; return(new ApiResponse { Text = "Вы отменили свой запрос", UserId = request.PeerId, KeyBoard = GenerateKeyBoard(Keyboards.HelpKeyboard) }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { long value = 0; var ch = long.TryParse(request.Text, out value); if (ch && value != 0) { using var db = new DatabaseContext(); var checkuser = db.Users.Where(x => x.Id == value).Select(x => x.Group.Name == state.User.Group.Name).FirstOrDefault(); if (!checkuser) { return(new ApiResponse { Text = "Вы не можете добавить этого пользователя, так как он не состоит в группе", UserId = request.PeerId, KeyBoard = GenerateKeyBoard(Keyboards.ListGroup) }); } if (db.Admins.Any(x => x.UserId == value)) { return(new ApiResponse { Text = "Такой пользователь уже есть в админах", UserId = request.PeerId, }); } state.User.Group.Admins.Add(new Admin { UserId = value }); db.Update(state.User); db.SaveChanges(); state.Step = Step.None; return(new ApiResponse { Text = "Пользователь успешно добавлен в администраторы", UserId = request.PeerId, KeyBoard = GenerateKeyBoard(Keyboards.HelpKeyboard) }); } return(new ApiResponse { Text = "Я не могу распознать ID\n\n" + "Повторите попытку", UserId = request.PeerId }); }
private void NewMessage(ApiRequest apiRequest) { var simpleApiRequest = new SimleApiRequest { Text = apiRequest.Object.Message.Text, FromId = apiRequest.Object.Message.FromId, PeerId = apiRequest.Object.Message.PeerId, }; var userId = simpleApiRequest.FromId; var session = Sessions.GetOrAdd(userId, uid => new UserSession(uid)); var apiResponse = session.HandleRequest(simpleApiRequest); SendMessage(apiResponse); }
public bool Run(SimleApiRequest request, State state, out ApiResponse response) { if (!Check(request, state)) { response = null; return(false); } var simple = Respont(request, state); response = new ApiResponse { Text = simple.Text, UserId = simple.UserId, KeyBoard = simple?.KeyBoard }; return(true); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { using var db = new DatabaseContext(); var usersId = db.Users.Where(x => x.Group == state.User.Group).ToList(); Task <string> result = GetUserInfo(usersId); var finalResult = result.Result; state.Step = Step.AwaitAddNewAdmin; return(new ApiResponse { Text = finalResult + "\n\n" + "Введите Id пользователя", UserId = request.PeerId }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { if (state.User.IsSignedGroup == true) { return(new ApiResponse { Text = $"Вы уже состоите в группе \"{state.User.Group.Name}\"", UserId = request.PeerId, }); } state.Step = Step.AwaitJoinGroup; return(new ApiResponse { Text = "Введите название группы", UserId = request.PeerId }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { if (state.User.IsSignedGroup) { return(new ApiResponse { Text = $"Вы уже состоите в группе \"{state.User.Group.Name}\"\n" + $"Для этого удалите выйдите с существующей группы", UserId = request.PeerId }); } state.Step = Step.CreateNewGroup; return(new ApiResponse { Text = "Введите название группы", UserId = request.PeerId }); }
protected override ApiResponse Respont(SimleApiRequest request, State state) { using var db = new DatabaseContext(); if (!db.Groups.Any(u => u.Name == request.Text)) { var admin = new Admin { UserId = request.FromId }; var group = new Group { Admins = new List <Admin> { admin }, Name = request.Text, }; db.Groups.Add(group); db.SaveChanges(); state.User.Group = group; state.User.IsSignedGroup = true; db.Update(state.User); db.SaveChanges(); state.Step = Step.None; return(new ApiResponse { Text = $"Группа \"{request.Text}\" успешно создана", UserId = request.PeerId }); } return(new ApiResponse { Text = $"Группа \"{request.Text}\" уже существует\n" + "Введите другое название группы", UserId = request.PeerId }); }
protected abstract bool Check(SimleApiRequest request, State state);
private bool CheckTokens(SimleApiRequest request) { return(CheckTokens(request.Text.Split(" "), Keywords.ToArray())); }
protected override bool Check(SimleApiRequest request, State state) { return(state.Step == Step.CreateNewGroup); }
protected override bool Check(SimleApiRequest request, State state) { return(state.Step == Step.AwaitJoinGroup); }
protected override bool Check(SimleApiRequest request, State state) { return(state.Step == Step.AwaitAddNewAdmin); }
protected override bool Check(SimleApiRequest request, State state) { return(CheckState(state) && CheckTokens(request)); }
protected abstract ApiResponse Respont(SimleApiRequest request, State state);
protected override bool Check(SimleApiRequest request, State state) { return(true); }