Ejemplo n.º 1
0
        public IActionResult ViewImage(int Id, string Password)
        {
            ImagesDb db = new ImagesDb(_connectionString);

            var ids = HttpContext.Session.Get <List <int> >("Ids");

            if (ids == null)
            {
                ids = new List <int>();
            }
            var InSession = ids.Any(i => i == Id);

            var image = db.GetImage(Id);

            bool CorrectPassword = image.Password == Password;
            var  message         = (TempData["message"] != null);

            bool showImage = InSession || CorrectPassword;

            if (showImage)
            {
                db.UpdateImageViews(Id);
            }
            if (!InSession && CorrectPassword)
            {
                ids.Add(Id);
                HttpContext.Session.Set("Ids", ids);
            }
            ViewImageViewModel vm = new ViewImageViewModel
            {
                ShowMessage = message,
                ShowImage   = showImage,
                Image       = image
            };

            if (TempData["message"] != null)
            {
                return(View(vm));
            }
            if (Password != null)
            {
                TempData["message"] = "Invalid password";
                message             = true;
                return(Redirect($"/home/viewImage?id={Id}"));
            }
            return(View(vm));
        }