public void AddQuestion(Question question, List <string> tags)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         context.Questions.Add(question);
         foreach (var tag in tags)
         {
             var tagFromDB = context.Tags.FirstOrDefault(t => t.Text == tag);
             int tagID;
             if (tagFromDB == null)
             {
                 var newTag = new Tag {
                     Text = tag
                 };
                 context.Tags.Add(newTag);
                 context.SaveChanges();
                 tagID = newTag.ID;
             }
             else
             {
                 context.SaveChanges();
                 tagID = tagFromDB.ID;
             }
             context.QuestionsTags.Add(new QuestionsTags
             {
                 QuestionID = question.ID,
                 TagID      = tagID
             });;
         }
         context.SaveChanges();
     }
 }
 public void AddAnswer(Answer answer)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         context.Answers.Add(answer);
         context.SaveChanges();
     }
 }
 public void LikeAnswer(LikedAnswers like)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         context.LikedAnswers.Add(like);
         context.SaveChanges();
     }
 }
 public void LikeQuestion(LikedQuestions like)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         context.LikedQuestions.Add(like);
         context.SaveChanges();
     }
 }
 public List <Answer> GetAnswers(int id)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         return(context.Answers.Include(a => a.User).Include(a => a.LikedAnswers)
                .Where(a => a.QuestionID == id).ToList());
     }
 }
 public Question GetQuestion(int id)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         return(context.Questions.Include(q => q.LikedQuestions).Include(q => q.QuestionsTags).ThenInclude(qt => qt.Tag)
                .FirstOrDefault(q => q.ID == id));
     }
 }
 public List <Question> GetQuestions()
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         return(context.Questions.Include(q => q.LikedQuestions).
                Include(q => q.QuestionsTags).ThenInclude(qt => qt.Tag).OrderByDescending(o => o.DatePosted).ToList());
     }
 }
 public int GetUserID(string email)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         var user = context.Users.FirstOrDefault(u => u.Email == email);
         return(user == null ? 0 : user.ID);
     }
 }
 public void AddUser(User user, string password)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(password);
         context.Users.Add(user);
         context.SaveChanges();
     }
 }
 public bool Login(string email, string password)
 {
     using (var context = new StackOverflowContext(_connectionString))
     {
         if (context.Users.FirstOrDefault(u => u.Email == email) == null)
         {
             return(false);
         }
         return(BCrypt.Net.BCrypt.Verify(password, context.Users
                                         .FirstOrDefault(u => u.Email == email).PasswordHash ?? ""));
     }
 }