Exemple #1
0
 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);
     }
 }
Exemple #2
0
        /// <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);
                    }
                }
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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("");
        }
Exemple #5
0
        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("");
        }