public bool GradeFile(bool gradeBool, int fileId, string userName) { using (var connection = new SqlConnection(_connectionString)) { int userId = userDAL.GetUserId(userName); var checkExistGrade = new SqlCommand("SELECT COUNT(UserId) FROM dbo.GradeTable WHERE FileId = @FileId AND UserId = @UserId", connection); checkExistGrade.Parameters.AddWithValue("@FileId", fileId); checkExistGrade.Parameters.AddWithValue("@UserId", userId); var checkExistSameGrade = new SqlCommand("SELECT CheckGrade FROM dbo.GradeTable WHERE FileId = @FileId AND UserId=@UserId", connection); checkExistSameGrade.Parameters.AddWithValue("@FileId", fileId); checkExistSameGrade.Parameters.AddWithValue("@UserId", userId); var insertNewGradeTable = new SqlCommand("INSERT INTO dbo.GradeTable (FileId,UserId,CheckGrade) VALUES (@FileId,@UserId,@CheckGrade)", connection); insertNewGradeTable.Parameters.AddWithValue("@FileId", fileId); insertNewGradeTable.Parameters.AddWithValue("@UserId", userId); insertNewGradeTable.Parameters.AddWithValue("@CheckGrade", gradeBool); var updateGradeTable = new SqlCommand("UPDATE dbo.GradeTable SET CheckGrade = @CheckGrade WHERE FileId = @FileId AND UserId=@UserId", connection); updateGradeTable.Parameters.AddWithValue("@FileId", fileId); updateGradeTable.Parameters.AddWithValue("@UserId", userId); connection.Open(); if ((int)checkExistGrade.ExecuteScalar() == 0) { insertNewGradeTable.ExecuteNonQuery(); return(true); } else if (checkExistSameGrade.ExecuteScalar().GetType() == typeof(DBNull)) { updateGradeTable.Parameters.AddWithValue("@CheckGrade", gradeBool); updateGradeTable.ExecuteNonQuery(); return(true); } else if ((bool)checkExistSameGrade.ExecuteScalar() != gradeBool) { updateGradeTable.Parameters.AddWithValue("@CheckGrade", DBNull.Value); updateGradeTable.ExecuteNonQuery(); return(true); } else { return(false); } } }