public async Task <IActionResult> Edit(int id, [Bind("TableGameId,Title,DateCreated,DateInitial,TableDuration,System,DescriptionGame,Theme,QuantityPeople,LinkDiscord,Photo,Presential,Address1,Address2,Latitude,Longitude")] TableGame tableGame, IFormFile file) { if (id != tableGame.TableGameId) { return(NotFound()); } tableGame.Photo = TempData["PhotoTable"].ToString(); if (ModelState.IsValid) { if (file != null) { var linkUpload = Path.Combine(_hostingEnvironment.WebRootPath, "Images"); using (FileStream fileStream = new FileStream(Path.Combine(linkUpload, file.FileName), FileMode.Create)) { await file.CopyToAsync(fileStream); tableGame.Photo = "~/Images/" + file.FileName; } } else { tableGame.Photo = TempData["PhotoTable"].ToString(); } await _tableGameRepository.Update(tableGame); return(RedirectToAction(nameof(Index))); } return(View(tableGame)); }
/// <summary>Конструктор экземпляра класса <see cref="TicTacToeGame"/></summary> /// <param name="dimension">Размерность игрового поля (по умолчанию = 3)</param> /// <param name="startCellType">Чем ходит первый игрок (по умолчанию "Крестик")</param> /// <param name="playerTypes">Типы игроков - по порядку</param> public TicTacToeGame(int dimension = 3, CellValues startCellType = CellValues.Cross, int maxVictoryLine = 3, params PlayerTypes[] playerTypes) { //Инициализация игрового поля Table = new TableGame(dimension); // Генерация победных вариантов MaxVictoryLine = maxVictoryLine; InitVictoryVariants(); // Инициализация игроков InitPlayers(startCellType, playerTypes); CurrentPlayer = 0; // Первоначальный вывод на экран Status = StatusTypes.Start; Draw(); }
private void handleTableSnapshotListPacket(TableSnapshotListPacket tableSnapshotListPacket) { unsubcribeRoom(currentRoom); tableList.Clear(); GameObject tableListObject = GameObject.Find("TableList"); TableListControl tableListControl = (TableListControl)tableListObject.GetComponent(typeof(TableListControl)); foreach (TableSnapshotPacket tableSnapshotPacket in tableSnapshotListPacket.snapshots) { TableGame tableGame = new TableGame(tableSnapshotPacket); if (tableGame.capacity > 0) { tableList.Add(tableGame); } } // update to the view tableListControl.updateListItem(tableList); }
public ActionResult _GetOneDetail(string tableGameID) { string shopID = Session["ShopID"].ToString(); TableGame tg = db.TableGames.Find(tableGameID); //從傳入的桌遊,找到店家ID為shopID的店內桌遊明細 TableGameInShopDetail detail = tg.TableGameInShopDetails.Where(m => m.ShopID == shopID).FirstOrDefault(); //如果有找到則作為Model,沒找到則傳入新鑄造的TableGameInShopDetail if (detail != null) { ViewBag.isContained = true; return(PartialView(detail)); } else { ViewBag.isContained = false; return(PartialView(new TableGameInShopDetail { TableGameID = tableGameID, TableGame = tg, ShopID = shopID, IsSale = false, Price = 0 })); } }
//以桌遊分類隨機取得桌遊項目的PartialView(卡片方式呈現) public ActionResult _GetTableGameCards(TableGame tableGame) { Tag[] tags = tableGame.GameCategoryTags.ToArray(); //將對應分類標籤下的TableGame全部裝入games List <TableGame> games = new List <TableGame>(); foreach (Tag t in tags) { foreach (TableGame tg in t.TableGamesForGameCategory) { if (!games.Contains(tg)) { games.Add(tg); } } } //若games包含傳入的桌遊本身則移除 if (games.Contains(tableGame)) { games.Remove(tableGame); } //若games不大於於四項則全丟入Model if (games.Count <= 4) { return(PartialView(games)); } //games大於四項則隨機選出四項裝入selectedGames List <TableGame> selectedGames = new List <TableGame>(); Random r = new Random(); TableGame selectedGame; for (int i = 0; i < 4; i++) { int index = r.Next(games.Count); selectedGame = games[index]; games.Remove(selectedGame); selectedGames.Add(selectedGame); } return(PartialView(selectedGames)); }
public void AddNewItem(TableGame tableGame) { RectTransform rect = (RectTransform)Instantiate(TableItem); rect.transform.parent = this.transform; rect.pivot = new Vector2(0.5f, 1); rect.offsetMax = new Vector2(0, rect.offsetMax.y); rect.offsetMin = new Vector2(MarginLR, rect.offsetMin.y); rect.anchoredPosition = new Vector2(0, bottomPositionY); bottomPositionY -= rect.rect.height + ItemSpacing; RectTransform textTransform = (RectTransform)rect.FindChild("Text"); Text text = textTransform.GetComponent <Text>(); text.text = tableGame.tostring(); UpdateScrollHeight(); }
public ActionResult DeleteTableGame(string tableGameID) { TableGame tg = db.TableGames.Find(tableGameID); //刪除對應的GameCategoryTags tg.GameCategoryTags.Clear(); //刪除對應的圖片 PhotoManager.Delete(tableGameID); //刪除相關教學連結 db.RelevantLinks.Where(m => m.TableGameID == tableGameID).ToList().ForEach(m => db.RelevantLinks.Remove(m)); //刪除店內桌遊明細 List <TableGameInShopDetail> details = db.TableGameInShopDetails.Where(m => m.TableGameID == tableGameID).ToList(); details.ForEach(m => db.TableGameInShopDetails.Remove(m)); //刪除桌遊評論 db.TableGameComments.RemoveRange(tg.TableGameComments); //刪除桌遊閱覽紀錄 db.TableGameVisitedStatistics.RemoveRange(tg.TableGameVisitedStatistics); //最後再刪除桌遊本身 db.TableGames.Remove(tg); db.SaveChanges(); return(RedirectToAction("ShowTableGameListForAdmin")); }
public ActionResult CreateTableGame(TableGame newTableGame, string[] selectedCategories, HttpPostedFileBase[] photos, string[] links) { //無法通過驗證則顯示錯誤訊息 if (!ModelState.IsValid) { UpdateTableGamePreparaion(); return(View()); } //儲存newTableGame newTableGame.ID = UsefulTools.GetNextID(db.TableGames, 1); db.TableGames.Add(newTableGame); db.SaveChanges(); foreach (string sc in selectedCategories) { newTableGame.GameCategoryTags.Add(db.Tags.Find(sc)); db.SaveChanges(); } //調用PhotoManager中的方法來儲存傳入的圖片 PhotoManager.Create(newTableGame.ID, photos); //儲存相關教學連結 RelevantLinkManager.Create(newTableGame.ID, links); return(RedirectToAction("ShowTableGameListForAdmin")); }
//玩家看到的店家列表 public ActionResult ShopIndexForPlayer(int?CityID, int?DistrictID, string searchedTableGameID, string AreaScale, string IsFoodAcceptable, string IsMinConsumeRequired, int page = 1) { ViewBag.CityID = new SelectList(db.Cities, "ID", "CityName"); ViewBag.DistrictID = new SelectList(db.Districts, "ID", "DistrictName", -1); ViewBag.AreaScale = new SelectList(new [] { new { Text = "大" }, new { Text = "中" }, new { Text = "小" }, new { Text = "不限" } }, "Text", "Text", "不限"); ViewBag.IsFoodAcceptable = new SelectList(new[] { new { Text = "可外食" }, new { Text = "不可外食" }, new { Text = "不限" } }, "Text", "Text", "不限"); ViewBag.IsMinConsumeRequired = new SelectList(new[] { new { Text = "有" }, new { Text = "無" }, new { Text = "不限" } }, "Text", "Text", "不限"); ViewBag.NoDistrict = DistrictID == null || DistrictID == -1; //店家查詢結果的容器 var shops = db.Shops.ToList(); if (searchedTableGameID == null || searchedTableGameID.Trim() == "") { //桌遊搜尋ID為空,啟用一般篩選功能 if (CityID != null) { if (DistrictID != -1) { shops = db.Districts.Find(DistrictID).Shops.ToList(); } else { shops.Clear(); foreach (District d in db.Cities.Find(CityID).Districts) { shops.AddRange(d.Shops); } } } } //在哪裡可以玩此桌遊的查詢 else { //先找到有此桌遊的店家 TableGame game = db.TableGames.Find(searchedTableGameID); //傳送搜尋相關資訊 ViewBag.SearchingTGInfo = game; //將包含此桌遊的店家找出 shops.Clear(); foreach (var detail in game.TableGameInShopDetails) { shops.Add(detail.Shop); } //地區篩選 if (CityID != null) { if (DistrictID != -1) { shops = shops.Where(s => s.DistrictID == DistrictID).ToList(); } else { shops = shops.Where(s => s.District.CityID == CityID).ToList(); } } } //店家規模篩選 if (AreaScale != "不限" && AreaScale != null) { shops = shops.Where(s => s.AreaScale == AreaScale).ToList(); } //可否外食篩選 if (IsFoodAcceptable != "不限" && IsFoodAcceptable != null) { bool acceptable = IsFoodAcceptable == "可外食"; shops = shops.Where(s => s.IsFoodAcceptable == acceptable).ToList(); } //有無低消篩選 if (IsMinConsumeRequired != "不限" && IsMinConsumeRequired != null) { bool required = IsMinConsumeRequired == "有"; shops = shops.Where(s => s.IsMinConsumeRequired == required).ToList(); } return(View(shops.OrderByDescending(s => s.IsVIP).ThenByDescending(s => s.AccumulatedHours).ToPagedList(page, 5))); }
public ActionResult EditTableGame(TableGame tableGame, string[] selectedCategories, int[] deletedPhotoID, HttpPostedFileBase[] newPhoto, int[] deletedLinkIDs, string[] links) { //無法通過驗證則顯示錯誤訊息 if (!ModelState.IsValid) { UpdateTableGamePreparaion(); //將圖片的ID的List傳入ViewBag ViewBag.photoIDList = PhotoManager.GetPhotoIDList(tableGame.ID); return(View(db.TableGames.Find(tableGame.ID))); } tableGame.ID = (string)TempData["TableGame_ID"]; //通過ID找到舊的tableGame資料 TableGame oldTableGame = db.TableGames.Find(tableGame.ID); //使用自訂方法更新 UsefulTools.Update(oldTableGame, tableGame); db.SaveChanges(); //通過selectedCategories解析出對應的Tags並加入newTagList List <Tag> newTagList = new List <Tag>(); foreach (string sc in selectedCategories) { Tag t = db.Tags.Find(sc); newTagList.Add(t); } //全部的GameCategoryTag List <Tag> allTagList = db.Tags.Where(t => t.ID.Substring(0, 1) == "C").ToList(); //遍歷所有GameCategoryTag foreach (Tag t in allTagList) { if (oldTableGame.GameCategoryTags.Contains(t)) { //這個GameCategoryTag有在這個桌遊的GameCategoryTags之中 //進一步判斷是否有在newTagList中,如果沒有就從這個桌遊的GameCategoryTags刪除 if (!newTagList.Contains(t)) { oldTableGame.GameCategoryTags.Remove(t); db.SaveChanges(); } } else { //這個GameCategoryTag不在這個桌遊的GameCategoryTags之中 //進一步判斷是否有在newTagList中,如果有就加入這個桌遊的GameCategoryTags if (newTagList.Contains(t)) { oldTableGame.GameCategoryTags.Add(t); db.SaveChanges(); } } } //刪除被勾選的圖片 if (deletedPhotoID != null) { foreach (int id in deletedPhotoID) { PhotoManager.Delete(id); } } //加入新圖片 PhotoManager.Create(tableGame.ID, newPhoto); //刪除連結 if (deletedLinkIDs != null) { RelevantLinkManager.Delete(deletedLinkIDs); } //加入新連結 RelevantLinkManager.Create(tableGame.ID, links); return(RedirectToAction("ShowTableGameListForAdmin")); }