Exemplo n.º 1
0
        public IHttpActionResult PostToggleFavourites(int courseId)
        {
            Course course = db.Courses.Find(courseId);

            if (course == null)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.NotFound)
                {
                    Content = new StringContent(string.Format("Course with ID = {0} " +
                                                              "doesn't exists", courseId))
                };
                throw new HttpResponseException(resp);
            }

            int  userId = JwtAuthManager.GetUserIdFromRequest(Request);
            User user   = db.Users.Find(userId);

            if (user.Favorites.Count(c => c.Id == courseId) > 0)
            {
                user.Favorites.Remove(course);
            }
            else
            {
                user.Favorites.Add(course);
            }

            db.SaveChanges();

            return(Ok());
        }
        public IHttpActionResult PostComment(int postId, Comment comment)
        {
            Post post = db.Posts.Find(postId);

            if (post == null)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(
                        string.Format("Post with ID = {0} doesn't exist", postId)
                        )
                };
                throw new HttpResponseException(resp);
            }

            int userId = JwtAuthManager.GetUserIdFromRequest(Request);

            comment.UserDetails = db.Users.Find(userId).UserDetails;
            post.Comments.Add(comment);

            InitPopularityIfAbsent(userId, post.Course);

            db.SaveChanges();

            return(Ok(comment));
        }
Exemplo n.º 3
0
        public async Task <IHttpActionResult> PatchUser()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(StatusCode(HttpStatusCode.UnsupportedMediaType));
            }

            int         userId              = JwtAuthManager.GetUserIdFromRequest(Request);
            UserDetails userDetails         = db.UserDetails.Find(userId);
            var         filesReadToProvider = await Request.Content.ReadAsMultipartAsync();

            var imageBytes = await filesReadToProvider.Contents[0].ReadAsByteArrayAsync();

            int?oldImageId = Image.ExtractImageId(userDetails.ImageUrl);

            if (oldImageId != null)
            {
                ImageController.DeleteImage(oldImageId.Value, db);
            }

            userDetails.ImageUrl = ImageController.SaveImage(imageBytes, Request, db);

            db.SaveChanges();

            return(Ok(userDetails));
        }
Exemplo n.º 4
0
        public HttpResponseMessage PostDeactivateAccount(UserDTO userDTO)
        {
            string email = JwtAuthManager.GetEmailFromRequest(Request);

            if (CheckCredentials(email, userDTO.Password))
            {
                int  userId = JwtAuthManager.GetUserIdFromRequest(Request);
                User user   = db.Users.Find(userId);

                List <Comment> allComments = db.Comments.Where(c => c.UserDetails.UserDetailsId == userId).ToList();
                allComments.ForEach(c => db.Comments.Remove(c));

                int?imageId = Image.ExtractImageId(user.UserDetails.ImageUrl);

                if (imageId != null)
                {
                    ImageController.DeleteImage(imageId.Value, db);
                }

                db.UserDetails.Remove(user.UserDetails);

                db.Users.Remove(user);

                db.SaveChanges();

                return(Request.CreateResponse(HttpStatusCode.OK));
            }

            return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Профилот не е деактивиран бидејќи лозинката која ја внесовте е погрешна."));
        }
Exemplo n.º 5
0
        public HttpResponseMessage PostChangePassword(ChangePasswordDTO changePasswordDTO)
        {
            string email = JwtAuthManager.GetEmailFromRequest(Request);

            if (CheckCredentials(email, changePasswordDTO.Password))
            {
                int  userId = JwtAuthManager.GetUserIdFromRequest(Request);
                User user   = db.Users.Find(userId);

                byte[] salt;
                rngCsp.GetBytes(salt = new byte[16]);

                var    pdkdf2 = new Rfc2898DeriveBytes(changePasswordDTO.NewPassword, salt, 1000);
                byte[] hash   = pdkdf2.GetBytes(20);

                byte[] hashBytes = new byte[36];
                Array.Copy(salt, 0, hashBytes, 0, 16);
                Array.Copy(hash, 0, hashBytes, 16, 20);

                user.Password = Convert.ToBase64String(hashBytes);
                user.Salt     = Convert.ToBase64String(salt);

                db.SaveChanges();

                return(Request.CreateResponse(HttpStatusCode.OK));
            }

            return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Промената на лозинка е неуспешна, бидејќи внесовте погрешна стара лозинка"));
        }
        public IHttpActionResult PostNewPost(int courseId, Post post)
        {
            Course course = db.Courses.Find(courseId);

            if (course == null)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(
                        string.Format("Cannot add post. Course with ID = {0} doesn't exist", courseId)
                        )
                };
                throw new HttpResponseException(resp);
            }

            post.CreatedAt = DateTime.Now;
            int userId = JwtAuthManager.GetUserIdFromRequest(Request);

            post.UserDetailsId = userId;

            course.Posts.Add(post);

            InitPopularityIfAbsent(userId, course);

            db.SaveChanges();

            return(Ok(post));
        }
Exemplo n.º 7
0
        public IHttpActionResult GetFavouriteCourses(int page = 1, int pageSize = 10)
        {
            int userId = JwtAuthManager.GetUserIdFromRequest(Request);
            IQueryable <Course> favCourses = db.Users.Find(userId).Favorites.AsQueryable();
            var coursesPage = Pagination.CreateMappedPage <Course, CourseCard>(
                favCourses, page, pageSize, "Title", true
                );

            return(Ok(coursesPage));
        }
Exemplo n.º 8
0
        public IHttpActionResult PutEditUser(UserDTO userDTO)
        {
            int         userId      = JwtAuthManager.GetUserIdFromRequest(Request);
            UserDetails userDetails = db.UserDetails.Find(userId);

            userDetails.FirstName = userDTO.FirstName;
            userDetails.LastName  = userDTO.LastName;
            db.SaveChanges();
            return(Ok(userDetails));
        }
Exemplo n.º 9
0
        public IHttpActionResult GetCourses([FromUri] CourseFilter courseFilter)
        {
            var queryable = Course.FilterCourses(db.Courses, courseFilter);

            if (courseFilter.Favourites)
            {
                int userId       = JwtAuthManager.GetUserIdFromRequest(Request);
                var favouriteIds = db.Users.Find(userId).Favorites.Select(course => course.Id).ToList();
                queryable = queryable.Where(c => favouriteIds.Contains(c.Id));
            }
            var coursesPage = Pagination.CreateMappedPage <Course, CourseCard>(
                queryable, courseFilter.Page, courseFilter.PageSize, "Title", true
                );

            return(Ok(coursesPage));
        }