public ActionResult Delete([Bind(Include = "EmployeeId,EmployeeName,FollowId")] FollowsDeleteViewModel deleteViewModel) { //フォロー解除するユーザ情報をModelに格納 deleteViewModel = new FollowsDeleteViewModel { FollowId = deleteViewModel.FollowId, EmployeeId = deleteViewModel.EmployeeId, EmployeeName = deleteViewModel.EmployeeName }; //ログインユーザがフォローしてる従業員IDのリスト var follows = db.Follows .Where(r => r.EmployeeId == deleteViewModel.EmployeeId) .ToList(); //followにfollowsリストのIDと解除要求したIDが一致するデータを格納 Follow follow = follows.Find(f => f.FollowId == deleteViewModel.FollowId); //データベースからfollowの情報を削除 db.Follows.Remove(follow); //更新データを保存 db.SaveChanges(); TempData["flush"] = deleteViewModel.EmployeeName + "さんのフォローを解除しました。"; return(RedirectToAction("Index")); }
// GET: Follows/Delete/5 public ActionResult Delete() { //ビューに送る為のFollowsCreateViewModelのリストを作成 List <FollowsDeleteViewModel> deleteViewModels = new List <FollowsDeleteViewModel>(); //ユーザ一覧を、IDが若い順に登録 List <ApplicationUser> users = db.Users.OrderBy(u => u.Id).ToList(); string MyId = User.Identity.GetUserId(); //ログインユーザがフォローしてる従業員IDのリスト var follows = db.Follows .Where(f => f.EmployeeId == MyId) .Select(f => f.FollowId) .ToList(); follows.Add(MyId); //ユーザのリストをFollowsCreateViewModelのリストに変換 //ApplicationUserはユーザ作成に必要なモデル foreach (ApplicationUser applicationUser in users) { //FollowCreateViewModelをApplicationUsersから必要なプロパティだけ抜き出して作成 FollowsDeleteViewModel deleteViewModel = new FollowsDeleteViewModel { FollowId = applicationUser.Id, EmployeeName = applicationUser.EmployeeName, EmployeeId = MyId }; if (deleteViewModel.FollowId == deleteViewModel.EmployeeId) { deleteViewModel.FollowFlg = FollowStatus.MyUser; } //フォローしていたユーザと一致した else if (follows.Contains(applicationUser.Id)) { deleteViewModel.FollowFlg = FollowStatus.Followed; //Modelに追加する deleteViewModels.Add(deleteViewModel); } else { deleteViewModel.FollowFlg = FollowStatus.UnFollow; } } //作成したリストをIndexビューに送る return(View(deleteViewModels)); }