Пример #1
0
        public void AddLike(Likes like)
        {
            var ctx = new QuestionsDbContext(_connectionString);

            ctx.Likes.Add(like);
            ctx.SaveChanges();
        }
Пример #2
0
 public void AddQuestion(Question q, List <string> tags)
 {
     using var ctx = new QuestionsDbContext(_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.TagId;
         }
         ctx.QuestionsTags.Add(new QuestionsTags
         {
             QuestionId = q.Id,
             TagId      = tagId
         });
     }
     ctx.SaveChanges();
 }
Пример #3
0
 public List <Question> GetQuestions()
 {
     using var ctx = new QuestionsDbContext(_connectionString);
     return(ctx.Questions.Include(q => q.Answers)
            .Include(q => q.Likes)
            .Include(q => q.QuestionsTags)
            .ThenInclude(qt => qt.Tag)
            .ToList());
 }
Пример #4
0
 public Question GetQuestion(int id)
 {
     using var ctx = new QuestionsDbContext(_connectionString);
     return(ctx.Questions.Include(q => q.Answers)
            .ThenInclude(a => a.User)
            .Include(q => q.Likes)
            .Include(q => q.QuestionsTags)
            .ThenInclude(qt => qt.Tag)
            .FirstOrDefault(q => q.Id == id));
 }
Пример #5
0
        private int AddTag(string name)
        {
            using var ctx = new QuestionsDbContext(_connectionString);
            var tag = new Tag {
                TagName = name
            };

            ctx.Tags.Add(tag);
            ctx.SaveChanges();
            return(tag.TagId);
        }
Пример #6
0
        public void AddUser(string name, string email, string password)
        {
            string passwordHash = BCrypt.Net.BCrypt.HashPassword(password);

            using var ctx = new QuestionsDbContext(_connectionString);
            var user = new User {
                Name = name, Email = email, PasswordHash = passwordHash
            };

            ctx.Users.Add(user);
            ctx.SaveChanges();
        }
Пример #7
0
 public User GetByEmail(string email)
 {
     using var ctx = new QuestionsDbContext(_connectionString);
     return(ctx.Users.FirstOrDefault(u => u.Email == email));
 }
Пример #8
0
 public void AddAnswer(Answer a)
 {
     using var ctx = new QuestionsDbContext(_connectionString);
     ctx.Answers.Add(a);
     ctx.SaveChanges();
 }
Пример #9
0
        public string GetUserNameById(int id)
        {
            var ctx = new QuestionsDbContext(_connectionString);

            return(ctx.Users.Where(u => u.Id == id).Select(u => u.Name).FirstOrDefault());
        }
Пример #10
0
 private Tag GetTag(string name)
 {
     using var ctx = new QuestionsDbContext(_connectionString);
     return(ctx.Tags.FirstOrDefault(t => t.TagName == name));
 }
Пример #11
0
        public bool CanLike(int questionId, int userId)
        {
            var ctx = new QuestionsDbContext(_connectionString);

            return(!ctx.Likes.Any(l => l.UserId == userId && l.QuestionId == questionId));
        }
Пример #12
0
        public int GetLikes(int questionId)
        {
            var ctx = new QuestionsDbContext(_connectionString);

            return(ctx.Likes.Where(l => l.QuestionId == questionId).Count());
        }