コード例 #1
0
        public ActionResult Index(string magazine, string year, string month)
        {
            Int32.TryParse(month, out int monthNum);
            Int32.TryParse(year, out int yearNum);

            if ((monthNum > 0 && monthNum < 13) && (yearNum >= 2000 && yearNum <= 2100))
            {
                var edition = _editionRepository.GetEdition(magazine, yearNum, (Month)monthNum);

                if (edition.EditionStatus == EditionStatus.Deleted && !User.IsInRole("Admin"))
                {
                    return(RedirectToAction("Index", "Error", new { message = "This edition has been deleted" }));
                }

                bool isUserSubscribed = false;

                if (User.Identity.IsAuthenticated)
                {
                    isUserSubscribed = _subscribeRepository.IsUserSubscribed(edition.EditionId, User.Identity.Name);
                }

                ViewBag.IsSubscribed = isUserSubscribed;
                // Show deleted and creating edition only to the Admin
                if ((edition.EditionStatus == EditionStatus.Creating || edition.EditionStatus == EditionStatus.Deleted) && User.IsInRole("Admin"))
                {
                    ViewBag.Articles = _editionRepository.GetArticles(edition.EditionId);

                    return(View(edition));
                }
                else if (edition.EditionStatus == EditionStatus.Active)
                {
                    ViewBag.Articles = _editionRepository.GetArticles(edition.EditionId);

                    return(View(edition));
                }
            }

            return(View());
        }