コード例 #1
0
 public void AddRating(Guid userId, Guid entityId, sbyte rating)
 {
     ValidateRating(userId, entityId, rating);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         ctx.RatedEntities.Add(new DB.RatedEntity()
         {
             UserId = userId, EntityId = entityId, Rating = rating
         });
         ctx.SaveChanges();
     }
 }
コード例 #2
0
 public void UpdateUser(Guid oldUserId, User @new, UserProperties propertiesToChange)
 {
     ValidateUser(@new, propertiesToChange);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         if (ctx.Users.Where(x => x.Username == @new.Username && x.Password == @new.Password).Count() != 0)
         {
             throw new InvalidCredentialsException();
         }
         var r = ctx.Users.Include(x => x.UserSkills).Where(x => x.Id == oldUserId).FirstOrDefault();
         if (r == null)
         {
             throw new UserNotFoundException();
         }
         if (propertiesToChange.HasFlag(UserProperties.DateOfBirth))
         {
             r.DOB = @new.DateOfBirth;
         }
         if (propertiesToChange.HasFlag(UserProperties.Email))
         {
             r.Email = @new.Email;
         }
         if (propertiesToChange.HasFlag(UserProperties.FirstName))
         {
             r.FirstName = @new.FirstName;
         }
         if (propertiesToChange.HasFlag(UserProperties.LastName))
         {
             r.LastName = @new.LastName;
         }
         if (propertiesToChange.HasFlag(UserProperties.Password))
         {
             r.Password = @new.Password;
         }
         if (propertiesToChange.HasFlag(UserProperties.Username))
         {
             r.Username = @new.Username;
         }
         if (propertiesToChange.HasFlag(UserProperties.Skills))
         {
             r.UserSkills.Clear();
             foreach (var s in @new.Skills)
             {
                 r.UserSkills.Add(new DB.UserSkill()
                 {
                     ProgrammingLanguageId = s.ProgrammingLanguage.Id, Proficiency = s.Proficiency, UserId = r.Id
                 });
             }
         }
         ctx.SaveChanges();
     }
 }
コード例 #3
0
 public void RemoveComment(Guid commentId)
 {
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var entity = ctx.RatableEntities.Where(x => x.Id == commentId).FirstOrDefault();
         if (entity == null)
         {
             throw new CommentNotFoundException();
         }
         ctx.RatableEntities.Remove(entity);
         ctx.SaveChanges();
     }
 }
コード例 #4
0
 public void RemoveUser(Guid userId)
 {
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var user = ctx.Users.Where(x => x.Id == userId).FirstOrDefault();
         if (user == null)
         {
             throw new UserNotFoundException();
         }
         ctx.Users.Remove(user);
         ctx.SaveChanges();
     }
 }
コード例 #5
0
 public void RemoveProgrammingLanguage(Guid languageId)
 {
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var lang = ctx.ProgrammingLanguages.Where(x => x.Id == languageId).FirstOrDefault();
         if (lang == null)
         {
             throw new ProgrammingLanguageNotFoundException();
         }
         ctx.ProgrammingLanguages.Remove(lang);
         ctx.SaveChanges();
     }
 }
コード例 #6
0
 public void UpdateRating(Guid userId, Guid entityId, sbyte newRating)
 {
     ValidateRating(userId, entityId, newRating);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var r = ctx.RatedEntities.Where(x => x.UserId == userId && x.EntityId == entityId).FirstOrDefault();
         if (r == null)
         {
             throw new RatingNotFoundException();
         }
         r.Rating = newRating;
         ctx.SaveChanges();
     }
 }
コード例 #7
0
 public void AddSkill(Guid userId, Guid languageId, byte proficiency)
 {
     ValidateSkill(userId, languageId, proficiency);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         ctx.UserSkills.Add(new DB.UserSkill()
         {
             UserId = userId,
             ProgrammingLanguageId = languageId,
             Proficiency           = proficiency
         });
         ctx.SaveChanges();
     }
 }
コード例 #8
0
 public void UpdateSkill(Guid userId, Guid languageId, byte proficiency)
 {
     ValidateSkill(userId, languageId, proficiency);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var s = ctx.UserSkills.Where(x => x.UserId == userId && x.ProgrammingLanguageId == languageId).FirstOrDefault();
         if (s == null)
         {
             throw new UserSkillNotFoundException();
         }
         s.Proficiency = proficiency;
         ctx.SaveChanges();
     }
 }
コード例 #9
0
        public void AddProgrammingLanguage(ProgrammingLanguage language)
        {
            ValidateProgrammingLanguage(language, ProgrammingLanguageProperties.All);
            var langModel = new DB.ProgrammingLanguage()
            {
                Id   = language.Id,
                Name = language.Name
            };

            using (var ctx = new DB.CodingIdeasEntities())
            {
                ctx.ProgrammingLanguages.Add(langModel);
                ctx.SaveChanges();
            }
        }
コード例 #10
0
 public void UpdateProgrammingLanguage(Guid oldLanguageId, string newName)
 {
     ValidateProgrammingLanguage(new ProgrammingLanguage()
     {
         Name = newName
     }, ProgrammingLanguageProperties.All);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var l = ctx.ProgrammingLanguages.Where(x => x.Id == oldLanguageId).FirstOrDefault();
         if (l == null)
         {
             throw new ProgrammingLanguageNotFoundException();
         }
         l.Name = newName;
         ctx.SaveChanges();
     }
 }
コード例 #11
0
 public void UpdateComment(Guid oldCommentId, string newContent)
 {
     ValidateComment(new Comment()
     {
         Content = newContent
     }, CommentProperties.Content);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var c = ctx.Comments.Where(x => x.Id == oldCommentId).FirstOrDefault();
         if (c == null)
         {
             throw new CommentNotFoundException();
         }
         c.Content = newContent;
         ctx.SaveChanges();
     }
 }
コード例 #12
0
 public void RemovePost(Guid postId)
 {
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var post = ctx.Posts.Include(x => x.Comments).Where(x => x.Id == postId).FirstOrDefault();
         if (post == null)
         {
             throw new PostNotFoundException();
         }
         foreach (var c in post.Comments.ToList())
         {
             ctx.Comments.Remove(c);
         }
         ctx.Posts.Remove(post);
         ctx.SaveChanges();
     }
 }
コード例 #13
0
 public void Unsave(Guid userId, Guid postId)
 {
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var user = ctx.Users.Include(x => x.SavedPosts).Where(x => x.Id == userId).FirstOrDefault();
         if (user == null)
         {
             throw new UserNotFoundException();
         }
         var savedPost = user.SavedPosts.Where(x => x.Id == postId).FirstOrDefault();
         if (savedPost == null)
         {
             throw new SavedPostNotFoundException();
         }
         user.SavedPosts.Remove(savedPost);
         ctx.SaveChanges();
     }
 }
コード例 #14
0
 public void Save(Guid userId, Guid postToSaveId)
 {
     ValidateSavePost(userId, postToSaveId);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var post = ctx.Posts.Where(x => x.Id == postToSaveId).FirstOrDefault();
         var user = ctx.Users.Where(x => x.Id == userId).FirstOrDefault();
         if (user == null)
         {
             throw new UserNotFoundException();
         }
         if (post == null)
         {
             throw new SavedPostNotFoundException();
         }
         user.SavedPosts.Add(post);
         ctx.SaveChanges();
     }
 }
コード例 #15
0
 public void RemoveSkill(Guid userId, Guid languageId)
 {
     using (var ctx = new DB.CodingIdeasEntities())
     {
         if (ctx.Users.Where(x => x.Id == userId).FirstOrDefault() == null)
         {
             throw new UserNotFoundException();
         }
         if (ctx.ProgrammingLanguages.Where(x => x.Id == languageId).FirstOrDefault() == null)
         {
             throw new ProgrammingLanguageNotFoundException();
         }
         var skill = ctx.UserSkills.Where(x => x.UserId == userId && x.ProgrammingLanguageId == languageId).FirstOrDefault();
         if (skill == null)
         {
             throw new UserSkillNotFoundException();
         }
         ctx.UserSkills.Remove(skill);
         ctx.SaveChanges();
     }
 }
コード例 #16
0
 public void UpdatePost(Guid oldPostId, Post @new, PostProperties propertiesToChange)
 {
     ValidatePost(@new, propertiesToChange);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         var p = ctx.Posts.Where(x => x.Id == oldPostId).FirstOrDefault();
         if (p == null)
         {
             throw new PostNotFoundException();
         }
         if (propertiesToChange.HasFlag(PostProperties.Content))
         {
             p.Content = @new.Content;
         }
         if (propertiesToChange.HasFlag(PostProperties.Title))
         {
             p.Title = @new.Title;
         }
         ctx.SaveChanges();
     }
 }
コード例 #17
0
 public void RemoveRating(Guid userId, Guid entityId)
 {
     using (var ctx = new DB.CodingIdeasEntities())
     {
         if (ctx.Users.Where(x => x.Id == userId).FirstOrDefault() == null)
         {
             throw new UserNotFoundException();
         }
         if (ctx.RatableEntities.Where(x => x.Id == entityId).FirstOrDefault() == null)
         {
             throw new RatableEntityNotFoundException();
         }
         var rating = ctx.RatedEntities.Where(x => x.EntityId == entityId && x.UserId == userId).FirstOrDefault();
         if (rating == null)
         {
             throw new RatingNotFoundException();
         }
         ctx.RatedEntities.Remove(rating);
         ctx.SaveChanges();
     }
 }
コード例 #18
0
 public void AddUser(User user)
 {
     ValidateUser(user, UserProperties.All);
     using (var ctx = new DB.CodingIdeasEntities())
     {
         if (ctx.Users.Where(x => x.Username == user.Username && x.Password == user.Password).Count() != 0)
         {
             throw new InvalidCredentialsException();
         }
         ctx.Users.Add(new DB.User()
         {
             Id        = user.Id,
             DOB       = user.DateOfBirth,
             Email     = user.Email,
             FirstName = user.FirstName,
             LastName  = user.LastName,
             Password  = user.Password,
             Username  = user.Username
         });
         ctx.SaveChanges();
     }
 }
コード例 #19
0
        public void AddComment(Comment comment)
        {
            ValidateComment(comment, CommentProperties.All);
            var commentModel = new DB.Comment()
            {
                Id      = comment.Id,
                Content = comment.Content,
                PostId  = comment.PostId,
            };

            var ratableEntityModel = new DB.RatableEntity()
            {
                Id          = comment.Id,
                PublishDate = comment.PublishDate,
                UserId      = comment.AuthorId
            };

            using (var ctx = new DB.CodingIdeasEntities())
            {
                ctx.RatableEntities.Add(ratableEntityModel);
                ctx.Comments.Add(commentModel);
                ctx.SaveChanges();
            }
        }
コード例 #20
0
        public void AddPost(Post post)
        {
            ValidatePost(post, PostProperties.All);
            var postModel = new DB.Post()
            {
                Id      = post.Id,
                Content = post.Content,
                Title   = post.Title
            };

            var ratableEntityModel = new DB.RatableEntity()
            {
                Id          = post.Id,
                UserId      = post.AuthorId,
                PublishDate = post.PublishDate
            };

            using (var ctx = new DB.CodingIdeasEntities())
            {
                ctx.RatableEntities.Add(ratableEntityModel);
                ctx.Posts.Add(postModel);
                ctx.SaveChanges();
            }
        }