public ActionResult Index() { if (SessionHelper.CurrentEntity.Is(EntityTypeEnum.Citizen) == false) { return(RedirectToHomeWithError("You are not a citizen!")); } var vm = new TrainingIndexViewModel(SessionHelper.LoggedCitizen); return(View(vm)); }
// GET: Trainings public ActionResult Index() { //ログインユーザーのID取得 string loginUserId = User.Identity.GetUserId(); var trainings = db.Trainings.Where(t => t.ApplicationUserId == loginUserId).ToList(); var trainingIndexViewModels = new List <TrainingIndexViewModel>(); for (int i = 0; i < trainings.Count; i++) { //var viewTrainings = // from t in trainings // select new { t.Purpose, t.Title, t.UpdateDateTime, t.AddDateTime, t.Description, t.YoutubeURL }; string userName = ""; var userId = trainings[i].ApplicationUserId; var user = db.Users.FirstOrDefault(u => u.Id == userId); if (user != null) { userName = user.UserName; } var viewTraining = new TrainingIndexViewModel { ID = trainings[i].ID, AddDateTime = trainings[i].AddDateTime.ToShortDateString(), Purpose = trainings[i].Purpose, Title = trainings[i].Title, UpdateDateTime = trainings[i].UpdateDateTime, YoutubeURL = trainings[i].YoutubeURL, Tags = trainings[i].Tags.Select(x => x.Name).ToList(), UserName = userName }; trainingIndexViewModels.Add(viewTraining); } return(View(trainingIndexViewModels)); }
public ActionResult Search(string searchValue, IList <string> SearchTags) { //表示用タグオブジェクトを取得 List <ViewTagModel> ViewTagModels = new List <ViewTagModel>(); db.Tags.ToList().ForEach(t => ViewTagModels.Add(new ViewTagModel { ID = t.ID, Name = t.Name, Checked = false })); //パラメータにタグの指定がある場合、チェック済みとする。 if (SearchTags != null) { foreach (var tag in SearchTags) { int ID = int.Parse(tag); ViewTagModels.Find(vt => vt.ID == ID).Checked = true; } } List <Training> trainings = new List <Training>(); //検索文字列、タグどちらも指定がない場合、全件取得 if (string.IsNullOrEmpty(searchValue) && SearchTags == null) { trainings = db.Trainings.ToList(); } else { //検索文字列にヒットするトレーニングを取得 if (!string.IsNullOrEmpty(searchValue)) { db.Trainings.Where(t => t.Title.Contains(searchValue)).ToList().ForEach(training => trainings.Add(training)); db.Trainings.Where(t => t.Purpose.Contains(searchValue)).ToList().ForEach(training => trainings.Add(training)); } //タグにヒットするトレーニングを取得 foreach (var tag in ViewTagModels) { if (tag.Checked == false) { continue; } foreach (var training in db.Trainings.ToList()) { if (training.Tags.Select(x => x.Name).Contains(tag.Name)) { trainings.Add(training); } } } //重複削除 trainings = trainings.Distinct().ToList(); } //検索結果に表示するViewデータを生成 var trainingIndexViewModels = new List <TrainingIndexViewModel>(); for (int i = 0; i < trainings.Count; i++) { var viewTraining = new TrainingIndexViewModel(trainings[i]); ////ユーザー名を取得 //string userName = ""; //using (var appUserContext = new MyCoachDatabaseContext()) //{ // var userId = trainings[i].ApplicationUserId; // var user = appUserContext.Users.FirstOrDefault(u => u.Id == userId); // if (user != null) userName = user.Name; //} ////オブジェクトに設定 //var viewTraining = new TrainingIndexViewModel //{ // ID = trainings[i].ID, // AddDateTime = trainings[i].AddDateTime.ToShortDateString(), // Purpose = trainings[i].Purpose, // Title = trainings[i].Title, // UpdateDateTime = trainings[i].UpdateDateTime, // YoutubeURL = trainings[i].YoutubeURL, // Tags = trainings[i].Tags.Select(x => x.Name).ToList(), // UserName = userName //}; trainingIndexViewModels.Add(viewTraining); } //View用オブジェクトに格納 var trainingSearchViewModel = new TrainingSearchViewModel(); trainingSearchViewModel.ViewModels = trainingIndexViewModels; trainingSearchViewModel.ViewTagModels = ViewTagModels; return(View(trainingSearchViewModel)); }