public IActionResult Post_Detail_joinNow(int?id) { ViewBag.UserID = HttpContext.Session.GetInt32(CDictionary.CURRENT_LOGINED_USERID); int UserID = ViewBag.UserID; if (id != null) { int p = db.TPosts.FirstOrDefault(p => p.FPostId == id).FPeople; //活動人數 IEnumerable <TJoinPerson> query = db.TJoinPeople.Where(p => p.FPostId == id && p.FUserId == UserID); //有沒有報名 if (query.Any() == true) //已參加 { db.TJoinPeople.Remove(query.FirstOrDefault()); db.SaveChanges(); //判斷目前報名人數 候補 if (p > db.TJoinPeople.Where(j => j.FPostId == id && j.FJoincheck == true).Count()) { TJoinPerson j = db.TJoinPeople.FirstOrDefault(j => j.FPostId == id && j.FJoincheck == false); if (j != null) { j.FJoincheck = true; db.SaveChanges(); } } } else { TJoinPerson joinPerson = null; //判斷目前報名人數,T=不足(參加),F=額滿(等待)。 if (p > db.TJoinPeople.Where(j => j.FPostId == id && j.FJoincheck == true).Count()) { joinPerson = new() { FPostId = id, FUserId = UserID, FJoinTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm"), FJoincheck = true }; } else { joinPerson = new() { FPostId = id, FUserId = UserID, FJoinTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm"), FJoincheck = false }; } db.TJoinPeople.Add(joinPerson); db.SaveChanges(); } var people = db.TPosts.AsEnumerable().GroupJoin(db.TJoinPeople, p => p.FPostId, j => j.FPostId, (p, j) => (p, j)).FirstOrDefault(p => p.p.FPostId == id); var result = people.j.Join(db.Members, j => j.FUserId, m => m.FUserId, (j, m) => new Post_Join_ViewModel { joinPerson = j, member = m, }).OrderBy(p => p.joinPerson.FJoinId).Skip(1); return(PartialView("Post_Detail_join", result)); } return(View("Post_Detail_post")); }
public IActionResult Post_Create(CPostViewModel cPost, string[] tag) { try { for (int i = 0; i < tag.Count(); i++) { Tag.Add(tag[i]); } user = cPost.FUserId; //context.Add(cPost); TPost new_Post = new TPost { FUserId = cPost.FUserId, //todo FDescription = cPost.FDescription, FPeople = cPost.FPeople, FPostCity = cPost.FPostCity, FPostAddress = cPost.FPostAddress, FPostDistrict = cPost.FPostDistrict, FPostTime = cPost.FPostTime, FSportName = cPost.FSportName, FSystemTime = DateTime.Now.ToString(), FTitle = cPost.FTitle, }; context.TPosts.Add(new_Post); context.SaveChanges(); foreach (var i in Tag) //標籤 { TPostTag postTag = new TPostTag(); postTag.FTagId = int.Parse(i); postTag.FPostId = new_Post.FPostId; context.TPostTags.Add(postTag); context.SaveChanges(); } TJoinPerson joinPerson = new TJoinPerson(); //參加人 joinPerson.FUserId = new_Post.FUserId; joinPerson.FPostId = new_Post.FPostId; joinPerson.FJoinTime = DateTime.Now.ToString(); TPostSport postSport = new TPostSport(); //活動種類 postSport.FPostId = new_Post.FPostId; postSport.FSportName = new_Post.FSportName; context.TJoinPeople.Add(joinPerson); context.SaveChanges(); if (cPost.image != null) { foreach (var i in cPost.image) { string photoName = Guid.NewGuid().ToString() + ".jpg"; using (var photo = new FileStream(iv_host.ContentRootPath + @"/wwwroot/Postimg/" + photoName, FileMode.Create)) { i.CopyTo(photo); } TPostPhoto postPhoto = new TPostPhoto(); postPhoto.FPostId = new_Post.FPostId; postPhoto.FPostPhoto = @"/Postimg/" + photoName; context.TPostPhotos.Add(postPhoto); context.SaveChanges(); } } return(RedirectToAction("Post_Index", "CPost")); } catch { return(RedirectToAction("Post_Index", "CPost")); } }