/// <summary> /// Поменять текущее состояние в базе данных или содать это состояние. /// </summary> /// <param name="chatId"></param> /// <param name="hopType"></param> /// <param name="newStateName"></param> private static void ChangeCurrentChatState(long chatId, HopType hopType, string newStateName) { using (BotDbContext db = new BotDbContext(HelperDataBase.DB_OPTIONS)) { //Возьмем значение состояния из базы ChatState chatState = (from s in db.ChatState where s.ChatId == chatId select s).FirstOrDefault(); string stateString = chatState?.State; //Если ячейка в базе пустая, то заполним её чем-нибудь и поменяем тип хопа чтобы потом переписать несусветицу. if (string.IsNullOrEmpty(stateString?.Trim(' '))) { stateString = "___"; hopType = HopType.RootLevelHope; } //Поменять состояние в базе данных. StateController stateCtrl = new StateController(stateString); //Будем изменять значение состояния в зависимости от типа перехода состояния. switch (hopType) { case HopType.NextLevelHope: stateCtrl.AddStateAsNextState(newStateName); break; case HopType.CurrentLevelHope: stateCtrl.ChangeCurrentStateName(newStateName); break; case HopType.RootLevelHope: stateCtrl.SetRootState(newStateName); break; } //получаем измененную строку состояния и сохраняем в базу string newStateString = stateCtrl.State; chatState.State = newStateString; db.SaveChanges(); } }