예제 #1
0
        public IActionResult Login(LoginUserBindingModel model)
        {
            if (!this.IsValidModel(model))
            {
                this.Model["message"] = this.GetErrors();

                return(this.View());
            }

            using (var db = new MyTubeDbContext())
            {
                User user = db.Users
                            .FirstOrDefault(u => u.Username == model.Username && u.Password == model.Password);

                if (user == null)
                {
                    this.Model["message"] = "<p>Invalid user or password</p>";

                    return(this.View());
                }

                this.SignIn(user.Username, user.Id);
            }

            return(new RedirectResult("/home/wellcome"));
        }
예제 #2
0
        public IActionResult Details(int tubeId)
        {
            if (!this.User.IsAuthenticated)
            {
                return(new RedirectResult("/"));
            }

            using (var db = new MyTubeDbContext())
            {
                Tube tube = db.Tubes.FirstOrDefault(t => t.Id == tubeId);

                if (tube == null)
                {
                    return(new RedirectResult("/"));
                }

                tube.Views++;

                db.SaveChanges();

                this.Model["title"]  = tube.Title;
                this.Model["tubeId"] = tube.YouTubeId;
                this.Model["author"] = tube.Author;
                this.Model["views"]  = tube.Views.ToString();
                this.Model["desc"]   = tube.Description;
            }

            return(this.View());
        }
예제 #3
0
        public IActionResult Upload(UploadTubeBindingModel model)
        {
            if (!this.User.IsAuthenticated)
            {
                return(new RedirectResult("/"));
            }

            if (!this.IsValidModel(model))
            {
                this.Model["message"] = this.GetErrors();

                return(this.View());
            }

            var userId = this.Request.Session.Get <int>(SessionStore.CurrentUserIdKey);

            Tube tube = new Tube();

            tube.Title       = model.Title;
            tube.Author      = model.Author;
            tube.YouTubeId   = model.YouTubeId;
            tube.Description = model.Description;
            tube.UploaderId  = userId;

            using (var db = new MyTubeDbContext())
            {
                db.Tubes.Add(tube);

                db.SaveChanges();
            }

            this.Model["message"] = "<p>The Tube Successfully added</p>";

            return(this.View());
        }
예제 #4
0
        public IActionResult Wellcome()
        {
            if (!this.User.IsAuthenticated)
            {
                return(this.Index());
            }

            this.Model["username"] = this.User.Name;

            using (var db = new MyTubeDbContext())
            {
                var allTubes = db.Tubes.ToList();

                string tubeCard = File.ReadAllText(Paths.PartialViewsPath + "TubeCard.html");

                StringBuilder allTubesView = new StringBuilder();

                foreach (var tube in allTubes)
                {
                    string tubeView = string.Format(tubeCard,
                                                    tube.Id,
                                                    tube.YouTubeId,
                                                    tube.Title,
                                                    tube.Author);

                    allTubesView.AppendLine(tubeView);
                }

                this.Model["allTubes"] = allTubesView.ToString();
            }

            return(this.View());
        }
예제 #5
0
        public IActionResult Profile()
        {
            if (!this.User.IsAuthenticated)
            {
                return(new RedirectResult("/users/login"));
            }

            int userId = this.Request.Session.Get <int>(SessionStore.CurrentUserIdKey);

            using (var db = new MyTubeDbContext())
            {
                var userInfo = db.Users
                               .Where(u => u.Id == userId)
                               .Select(u => new { u.Username, u.Email })
                               .First();

                var userTubes = db.Tubes
                                .Where(t => t.UploaderId == userId)
                                .Select(t => new { t.Id, t.Title, t.Author })
                                .ToList();

                StringBuilder userTubesTable = new StringBuilder();

                string tableRow = File.ReadAllText(Paths.PartialViewsPath + "TableRow.html");

                int row = 0;

                foreach (var tube in userTubes)
                {
                    row++;

                    string rowFilled = string.Format(tableRow, row, tube.Title, tube.Author, tube.Id);

                    userTubesTable.AppendLine(rowFilled);
                }

                this.Model["userInfo"]  = $"@{userInfo.Username}<br />({userInfo.Email})";
                this.Model["userTubes"] = userTubesTable.ToString();
            }

            return(this.View());
        }
예제 #6
0
        public IActionResult Register(RegisterUserBindingModel model)
        {
            if (!this.IsValidModel(model))
            {
                this.Model["message"] = this.GetErrors();

                return(this.View());
            }

            using (var db = new MyTubeDbContext())
            {
                var user = new User();
                user.Username = model.Username;
                user.Password = model.Password;
                user.Email    = model.Email;

                db.Users.Add(user);
                db.SaveChanges();
            }

            this.Model["message"] = "<p>Successful registration</p>";

            return(this.View());
        }