예제 #1
0
 public void AddUser(User user, string password)
 {
     using var ctx       = new QuestionTagsContext(_connectionString);
     user.HashedPassword = BCrypt.Net.BCrypt.HashPassword(password);
     ctx.Users.Add(user);
     ctx.SaveChanges();
 }
예제 #2
0
        public bool CanLike(int userId)
        {
            using var ctx = new QuestionTagsContext(_connectionString);
            var like = ctx.Likes.FirstOrDefault(l => l.UserId == userId);

            return(like == null ? true : false);
        }
예제 #3
0
        public void AddQuestion(Question q, List <string> tags)
        {
            using var ctx = new QuestionTagsContext(_connectionString);

            ctx.Questions.Add(q);
            ctx.SaveChanges();
            foreach (string tag in tags)
            {
                Tag t = GetTag(tag);
                int tagId;
                if (t == null)
                {
                    tagId = AddTag(tag);
                }
                else
                {
                    tagId = t.Id;
                }

                ctx.QuestionsTags.Add(new QuestionTags
                {
                    QuestionId = q.Id,
                    TagId      = tagId
                });
            }
        }
예제 #4
0
        public int GetLikes(int id)
        {
            using var ctx = new QuestionTagsContext(_connectionString);
            var question = GetQuestionById(id);

            return(question.Likes.Count);
        }
예제 #5
0
        public List <Question> GetAllQuestions()
        {
            using var ctx = new QuestionTagsContext(_connectionString);
            List <Question> questions = ctx.Questions.OrderByDescending(q => q.DatePosted).Include(q => q.Likes)
                                        .Include(q => q.Answers)
                                        .Include(q => q.QuestionTags).ThenInclude(qt => qt.Tag).ToList();

            return(questions);
        }
예제 #6
0
        private int AddTag(string name)
        {
            using var ctx = new QuestionTagsContext(_connectionString);
            var tag = new Tag {
                Name = name
            };

            ctx.Tags.Add(tag);
            ctx.SaveChanges();
            return(tag.Id);
        }
예제 #7
0
        public void UpdateLike(int id, User user)
        {
            using var ctx = new QuestionTagsContext(_connectionString);
            var like = new Likes
            {
                QuestionId = id,
                UserId     = user.ID
            };

            ctx.Likes.Add(like);
            ctx.SaveChanges();
        }
예제 #8
0
 public Question GetQuestionById(int id)
 {
     using var ctx = new QuestionTagsContext(_connectionString);
     return(ctx.Questions
            .Include(q => q.Likes)
            .ThenInclude(l => l.User)
            .Include(q => q.Answers)
            .ThenInclude(a => a.User)
            .Include(q => q.QuestionTags)
            .ThenInclude(qt => qt.Tag)
            .Include(q => q.User)
            .FirstOrDefault(q => q.Id == id));
 }
예제 #9
0
 public bool IsEmailAvailable(string email)
 {
     using var ctx = new QuestionTagsContext(_connectionString);
     return(!ctx.Users.Any(u => u.Email == email));
 }
예제 #10
0
 public User GetUserByEmail(string email)
 {
     using var ctx = new QuestionTagsContext(_connectionString);
     return(ctx.Users.FirstOrDefault(u => u.Email == email));
 }
예제 #11
0
 public void AddAnswer(Answer answer)
 {
     using var ctx = new QuestionTagsContext(_connectionString);
     ctx.Answers.Add(answer);
     ctx.SaveChanges();
 }
예제 #12
0
 public List <Question> GetQuestionsForTag(string name)
 {
     using var ctx = new QuestionTagsContext(_connectionString);
     return(ctx.Questions.Include(q => q.QuestionTags).ThenInclude(qt => qt.Tag)
            .Where(a => a.QuestionTags.Any((t => t.Tag.Name == name))).ToList());
 }
예제 #13
0
 private Tag GetTag(string name)
 {
     using var ctx = new QuestionTagsContext(_connectionString);
     return(ctx.Tags.FirstOrDefault(t => t.Name == name));
 }