public ProgressStatus Update(AirPortModel.Models.DetailValue obj) { try { var result = new ProgressStatus { Number = 0, Title = "Update Error", Message = "DetailValue can't be Update" }; if (Delete(obj.Id).Number.Equals(1)) { obj.LastUpdate = DateTime.Now.Date; _db.Attach <AirPortModel.Models.DetailValue>(obj).State = EntityState.Modified; _db.SaveChanges(); result = new ProgressStatus { Number = 1, Title = "Update Successful", Message = "DetailValue Has been Update" }; } return(result); } catch (Exception ex) { string mes = ex.Message; var result = new ProgressStatus { Number = 0, Title = "Update Error", Message = "DetailValue can't be Update" }; return(result); } }
/// <summary> /// Explicitly loads all audio and images associated with the specified page. /// Additional information pages are loaded recursively in the same way. /// </summary> /// <param name="page"></param> public static void LoadPageDetails(Page page) { // Loading must happen in one DbContext scope so that // references between pages are correctly fixed up. using (var db = new AppDatabaseContext(QueryTrackingBehavior.TrackAll)) { db.Attach(page); var pageEntry = db.Entry(page); pageEntry.Navigation(nameof(Page.Audio)).Load(); switch (page) { case ImagePage imagePage: db.Entry(imagePage).Navigation(nameof(ImagePage.Image)).Load(); break; case TimeSliderPage timeSliderPage: pageEntry.Navigation(nameof(TimeSliderPage.SliderImages)).Load(); foreach (var img in timeSliderPage.SliderImages) { db.Entry(img).Navigation(nameof(TimeSliderPageImage.Image)).Load(); } break; } var subpageNav = pageEntry.Navigation(nameof(Page.AdditionalInformationPagesRefs)); // Recursively load additional information pages // (Note: page references may be circular - this check breaks the recursion) if (!subpageNav.IsLoaded) { subpageNav.Load(); foreach (var subpageRef in page.AdditionalInformationPagesRefs) { db.Entry(subpageRef).Navigation(nameof(JoinPagePage.AdditionalInformationPage)).Load(); LoadPageDetails(subpageRef.AdditionalInformationPage); } } } }
public List <Item> GetItemsWithPrice(List <Item> items, AppDatabaseContext context, List <HttpClient> clients) { List <Item> responseItems = new List <Item>(); List <Task <Item> > taskPool = new List <Task <Item> >(); #region FastWay //int index = 0; //while (items.Count > 0) //{ // while (taskPool.Count <= 10) // { // Item curItem = items[0]; // HttpClient tempClient = clients[index]; // taskPool.Add(Task.Run(() => Steam.GetItemPrice(tempClient, curItem))); //Почему нельзя передават сразу параметры, а только через переменные-посредники? // items.Remove(curItem); // index++; // if (index >= Proxies.Count()) // { // index = 0; // } // } // int taskIndex = Task.WaitAny(taskPool.ToArray()); // Item item = taskPool[taskIndex].Result; // taskPool.Remove(taskPool[taskIndex]); // responseItems.Add(item); //} #endregion //Поиск по базе данных, и если Айтем нашелся и он был обновлен меньше чем 30 минут назад, то добавляем его в список возвращяемых Айтемов List <Item> itemsToRemove = new List <Item>(); foreach (Item item in items) { Item dbItem = context.Items.Where(c => c.Name == item.Name && c.IdSecond == item.IdSecond).FirstOrDefault(); if (dbItem != null) { if ((DateTime.Now - dbItem.UpTime).TotalMinutes < 30) { dbItem.Price = item.Price; responseItems.Add(dbItem); itemsToRemove.Add(item); context.Attach(dbItem); } } } foreach (Item rmItem in itemsToRemove) { items.Remove(rmItem); } //Медленный способ запросов на стим площадку, обновление базы данных. int temp = items.Count / clients.Count(); for (int i = 0; i < temp + 1; i++) { for (int j = i * clients.Count(); j < (i + 1) * clients.Count(); j++) { if (j >= items.Count()) { break; } Item curItem = items[j]; HttpClient curClient = clients[j - i * clients.Count()]; taskPool.Add(Task.Run(() => Steam.GetItemPrice(curClient, curItem))); } Task.WaitAll(taskPool.ToArray()); for (int y = 0; y < taskPool.Count(); y++) { Item res = taskPool[y].Result; Console.WriteLine("Not Loaded: " + res.Name); if (res.SteamPrice != -100) { Item dbItem = context.Items.Where(c => c.Name == res.Name && c.IdSecond == res.IdSecond).FirstOrDefault(); if (dbItem != null) { dbItem.SteamPrice = res.SteamPrice; dbItem.UpTime = res.UpTime; responseItems.Add(dbItem); context.Attach(dbItem); } else { responseItems.Add(res); context.Items.Update(res); } } } taskPool.Clear(); } context.SaveChanges(); Console.WriteLine("Items delivered: " + responseItems.Count().ToString()); return(responseItems); }
public static string LoadSavedGame() { var filenames = new List <string>(); var fileNames2 = new Dictionary <int, string>(); int savedFileInt; string savedFile; using var ctx = new AppDatabaseContext(); do { Console.WriteLine("Saved Games :"); foreach (var fileName in ctx.Settings) { Console.WriteLine(fileName.GameSettingsId + " " + fileName.PlayerName + " " + fileName.Time.ToString("yyyy-MM-dd HH:mm")); fileNames2.Add(fileName.GameSettingsId, fileName.PlayerName); filenames.Add(fileName.PlayerName); } Console.WriteLine(); Console.WriteLine("Enter saved game number"); Console.WriteLine("Enter EXIT to leave"); Console.Write(">"); savedFile = Console.ReadLine(); if (savedFile == "EXIT") { return(""); } var loadSuccess = false; loadSuccess = int.TryParse(savedFile, out savedFileInt); if (!loadSuccess) { Console.WriteLine($"{savedFile} is not a number"); } if (!ctx.Settings.Any(n => n.GameSettingsId == savedFileInt)) { Console.WriteLine("No Such Saved game!"); } } while (!fileNames2.ContainsKey(savedFileInt)); GameSettings savedGame = ctx.Settings.First(n => n.GameSettingsId == savedFileInt); if (savedGame != null) { ctx.Entry(savedGame).State = EntityState.Detached; } var game = new Game(savedGame); game.SetBoard(savedGame?.CellStates); bool done; do { UserInterface.BoardPrint(game); int userYInt; bool success; do { if (savedGame?.MovesCounter % 2 == 0 && savedGame.AgainstAi) { Console.WriteLine("Mastermind AI move"); Random r = new Random(); userYInt = r.Next(0, savedGame.BoardWidth - 1); success = true; } else { Console.WriteLine("Enter EXIT to Go to Main Menu"); Console.WriteLine($"Enter column number(0-{savedGame?.BoardHeight - 1})"); Console.WriteLine("Your move"); Console.Write(">"); var userY = Console.ReadLine(); if (userY == "EXIT") { Menu.AgainstAi = false; return(""); } success = int.TryParse(userY, out userYInt); if (!success || userYInt > savedGame?.BoardWidth) { Console.WriteLine($"{userY} is not a number or is out of board!"); success = false; } } } while (!success); savedGame.MovesCounter += game.Move(userYInt); savedGame.CellStates = game.GetBoard(); ctx.Entry(savedGame).State = EntityState.Modified; //ctx.Settings.Update(savedGame); ctx.SaveChanges(); done = Validator(savedGame.CellStates, savedGame.BoardHeight, savedGame.BoardWidth); } while (!done); UserInterface.BoardPrint(game); ctx.Attach(savedGame); ctx.Remove(savedGame); ctx.SaveChanges(); Console.WriteLine("Game Over!"); return(""); }
public static string GameEngine() { _settings = new GameSettings { MovesCounter = 0, Time = DateTime.Now }; if (Menu.AgainstAi) { _settings.AgainstAi = true; } int userBoardHeightInt; int userBoardWidthInt; bool success; bool nameSet; do { Console.WriteLine("Enter your Name"); Console.Write(">"); _settings.PlayerName = Console.ReadLine(); nameSet = _settings.PlayerName != null && _settings.PlayerName.Length >= 1; if (!nameSet) { Console.WriteLine("Please enter your name!"); //_settings.Time = DateTime.Now; } } while (!nameSet); do { Console.WriteLine("Enter board height"); Console.Write(">"); var userBoardHeight = Console.ReadLine(); success = int.TryParse(userBoardHeight, out userBoardHeightInt); if (!success || userBoardHeightInt < 6) { Console.WriteLine($"{userBoardHeight} is not a number or too small(6)!"); success = false; } } while (!success); do { Console.WriteLine("Enter board width"); Console.Write(">"); var userBoardWidth = Console.ReadLine(); success = int.TryParse(userBoardWidth, out userBoardWidthInt); if (!success || userBoardWidthInt < 7) { Console.WriteLine($"{userBoardWidth} is not a number or is too small(7)!"); success = false; } } while (!success); _settings.BoardHeight = userBoardHeightInt; _settings.BoardWidth = userBoardWidthInt; var game = new Game(_settings); bool done; do { UserInterface.BoardPrint(game); int userYInt; do { if (_settings.MovesCounter % 2 == 0 && _settings.AgainstAi) { Console.WriteLine("Mastermind AI move"); var r = new Random(); userYInt = r.Next(0, _settings.BoardWidth - 1); success = true; } else { Console.WriteLine("Enter EXIT to Go to Main Menu"); Console.WriteLine($"Enter column number(0-{userBoardHeightInt - 1})"); Console.WriteLine("Your move"); Console.Write(">"); var userY = Console.ReadLine(); if (userY == "EXIT") { Menu.AgainstAi = false; return(""); } success = int.TryParse(userY, out userYInt); if (!success || userYInt > _settings.BoardWidth) { Console.WriteLine($"{userY} is not a number or is out of board!"); success = false; } } } while (!success); _settings.MovesCounter += game.Move(userYInt); _settings.CellStates = game.GetBoard(); using (var ctx = new AppDatabaseContext()) { if (ctx.Settings.Any(n => n.PlayerName == _settings.PlayerName)) { ctx.Settings.Update(_settings); } else { ctx.Settings.Add(_settings); } ctx.SaveChanges(); } done = Validator(_settings.CellStates, userBoardHeightInt, userBoardWidthInt); } while (!done); UserInterface.BoardPrint(game); using (var ctx = new AppDatabaseContext()) { ctx.Attach(_settings); ctx.Remove(_settings); ctx.SaveChanges(); } Console.WriteLine("Game Over!"); return(""); }