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)); }
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)); }
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, "Профилот не е деактивиран бидејќи лозинката која ја внесовте е погрешна.")); }
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)); }
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)); }
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)); }
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)); }