Skip to content

Commit

Permalink
Consent form ansers csv expert and fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
anadis504 committed Mar 21, 2024
1 parent 83641be commit ec023c6
Show file tree
Hide file tree
Showing 15 changed files with 345 additions and 134 deletions.

This file was deleted.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

This file was deleted.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

60 changes: 24 additions & 36 deletions services/headless-lms/models/src/exercise_task_submissions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,7 @@ pub async fn get_user_custom_view_exercise_tasks_by_module_and_exercise_type(
Ok(res)
}

// get all submissions for user and course module and exercise type
/// get all submissions for user and course module and exercise type
pub async fn get_user_exersice_task_submissions_by_course_module_and_exercise_type(
conn: &mut PgConnection,
user_id: Uuid,
Expand All @@ -507,44 +507,32 @@ pub async fn get_user_exersice_task_submissions_by_course_module_and_exercise_ty
let res: Vec<CustomViewExerciseTaskSubmission> = sqlx::query_as!(
CustomViewExerciseTaskSubmission,
r#"
SELECT id,
created_at,
exercise_slide_submission_id,
exercise_slide_id,
exercise_task_id,
exercise_task_grading_id,
data_json
FROM exercise_task_submissions g
WHERE deleted_at IS NULL
AND g.exercise_task_id IN (
SELECT distinct (t.id)
FROM exercise_tasks t
WHERE deleted_at IS NULL
AND t.exercise_slide_id IN (
SELECT s.exercise_slide_id
FROM exercise_slide_submissions s
WHERE s.user_id = $1
AND s.course_instance_id = $4
AND deleted_at IS NULL
AND s.exercise_id IN (
SELECT id
FROM exercises e
WHERE exercise_type = $2
AND deleted_at IS NULL
AND e.chapter_id IN (
SELECT id
FROM chapters c
WHERE c.course_module_id = $3
AND deleted_at IS NULL
)
)
)
)
SELECT g.id,
g.created_at,
g.exercise_slide_submission_id,
g.exercise_slide_id,
g.exercise_task_id,
g.exercise_task_grading_id,
g.data_json
FROM exercise_task_submissions g
JOIN exercise_tasks et ON et.id = g.exercise_task_id
JOIN exercise_slide_submissions ess ON ess.id = g.exercise_slide_submission_id
JOIN exercises e ON e.id = ess.exercise_id
JOIN chapters c ON c.id = e.chapter_id
WHERE ess.user_id = $1
AND ess.course_instance_id = $2
AND et.exercise_type = $3
AND c.course_module_id = $4
AND g.deleted_at IS NULL
AND et.deleted_at IS NULL
AND ess.deleted_at IS NULL
AND e.deleted_at IS NULL
AND c.deleted_at IS NULL
"#,
user_id,
course_instance_id,
exercise_type,
module_id,
course_instance_id
module_id
)
.fetch_all(conn)
.await?;
Expand Down
30 changes: 11 additions & 19 deletions services/headless-lms/models/src/exercise_tasks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -496,25 +496,17 @@ pub async fn get_all_exercise_tasks_by_module_and_exercise_type(
let res: Vec<CustomViewExerciseTaskSpec> = sqlx::query_as!(
CustomViewExerciseTaskSpec,
r#"
SELECT distinct (t.id),
t.public_spec,
t.order_number
from exercise_tasks t
where t.exercise_slide_id in (
SELECT id
from exercise_slides s
where s.exercise_id in (
SELECT id
from exercises e
where exercise_type = $1
AND e.chapter_id in (
SELECT id
from chapters c
where c.course_module_id = $2
)
)
)
AND deleted_at IS NULL;
SELECT distinct (et.id),
et.public_spec,
et.order_number
FROM exercise_tasks et
JOIN exercise_slides es ON es.id = et.exercise_slide_id
JOIN exercises e ON es.exercise_id = e.id JOIN chapters c ON e.chapter_id = c.id
WHERE et.exercise_type = $1 AND c.course_module_id = $2
AND et.deleted_at IS NULL
AND es.deleted_at IS NULL
AND e.deleted_at IS NULL
AND c.deleted_at IS NULL;
"#,
exercise_type,
module_id
Expand Down
41 changes: 41 additions & 0 deletions services/headless-lms/models/src/research_forms.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use futures::Stream;

use crate::prelude::*;

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
Expand Down Expand Up @@ -165,6 +167,45 @@ AND deleted_at IS NULL
Ok(form_res)
}

pub struct ExportedCourseResearchFormQustionAnswer {
pub course_id: Uuid,
pub research_consent_form_id: Uuid,
pub research_form_question_id: Uuid,
pub question: String,
pub user_id: Uuid,
pub research_consent: bool,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}

pub fn stream_course_research_form_user_answers(
conn: &mut PgConnection,
course_id: Uuid,
) -> impl Stream<Item = sqlx::Result<ExportedCourseResearchFormQustionAnswer>> + '_ {
sqlx::query_as!(
ExportedCourseResearchFormQustionAnswer,
r#"
SELECT DISTINCT ON (a.research_form_question_id)
q.course_id,
q.research_consent_form_id,
a.research_form_question_id,
q.question,
a.user_id,
a.research_consent,
a.created_at,
a.updated_at
FROM course_specific_consent_form_answers a
LEFT JOIN course_specific_consent_form_questions q ON a.research_form_question_id = q.id
WHERE a.course_id = $1
AND a.deleted_at IS NULL
AND q.deleted_at IS NULL
ORDER BY a.research_form_question_id, a.updated_at DESC
"#,
course_id
)
.fetch(conn)
}

pub async fn upsert_research_form_anwser(
conn: &mut PgConnection,
course_id: Uuid,
Expand Down
Loading

0 comments on commit ec023c6

Please sign in to comment.