Esempio n. 1
0
        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));
        }