// GET: Follows/Create public ActionResult Create() { //ビューに送る為のFollowsCreateViewModelのリストを作成 List <FollowsCreateViewModel> createViewModels = new List <FollowsCreateViewModel>(); //ユーザ一覧を、IDが若い順に登録 List <ApplicationUser> users = db.Users.OrderBy(u => u.Id).ToList(); //ログインユーザのIDを保持 string MyId = User.Identity.GetUserId(); //ログインユーザがフォローしてる従業員IDのリスト var follows = db.Follows .Where(f => f.EmployeeId == MyId) .Select(f => f.FollowId) .ToList(); follows.Add(MyId); //ユーザのリストをFollowsCreateViewModelのリストに変換 foreach (ApplicationUser applicationUser in users) { //FollowCreateViewModelをApplicationUsersから必要なプロパティだけ抜き出して作成 FollowsCreateViewModel createViewModel = new FollowsCreateViewModel { FollowId = applicationUser.Id, EmployeeName = applicationUser.EmployeeName, }; //followsにapplicationUserのIDがあった場合 if (follows.Contains(applicationUser.Id)) { //フォロー済みなのでフォローフラグを立てておく createViewModel.FollowFlg = FollowStatus.Followed; } //IDがなかった場合 //【フォローしていないユーザのみを一覧で出したい為】 else { //フォローフラグを非に設定し、Modelを追加する createViewModel.FollowFlg = FollowStatus.UnFollow; //作成したEmployeesIndexViewModelをリストに追加 createViewModels.Add(createViewModel); } } //作成したリストをIndexビューに送る return(View(createViewModels)); }
//public ActionResult Create([Bind(Include = "ReportDate")] ReportsCreateViewModel createViewModel) public ActionResult Create([Bind(Include = "EmployeeName,FollowId")] FollowsCreateViewModel createViewModel) { if (ModelState.IsValid) { //フォローボタンを押下した時ログインしていたユーザのIDと //フォローするユーザIDをfollowに格納 Follow follow = new Follow() { EmployeeId = User.Identity.GetUserId(), FollowId = createViewModel.FollowId }; //Followsデータベースに追加 db.Follows.Add(follow); //更新情報を保存 db.SaveChanges(); TempData["flush"] = createViewModel.EmployeeName + "さんをフォローしました。"; return(RedirectToAction("Index")); } return(View(createViewModel)); }