headless_lms_models/library/user_exercise_state_updater/
validation.rs1use crate::prelude::*;
2
3use super::UserExerciseStateUpdateRequiredData;
4
5pub(super) fn validate_input(input_data: &UserExerciseStateUpdateRequiredData) -> ModelResult<()> {
7 if input_data.current_user_exercise_state.deleted_at.is_some() {
8 return Err(ModelError::new(
9 ModelErrorType::Generic,
10 "Attempted to update user_exercise_state with a deleted current user exercise state"
11 .to_string(),
12 None,
13 ));
14 }
15 if let Some(peer_or_self_review_information) = &input_data.peer_or_self_review_information {
16 if peer_or_self_review_information
17 .given_peer_or_self_review_submissions
18 .iter()
19 .any(|prs| prs.deleted_at.is_some())
20 {
21 return Err(ModelError::new(
22 ModelErrorType::Generic,
23 "Attempted to update user_exercise_state with a deleted given peer review submission"
24 .to_string(),
25 None,
26 ));
27 }
28
29 if peer_or_self_review_information
30 .latest_exercise_slide_submission_received_peer_or_self_review_question_submissions
31 .iter()
32 .any(|prqs| prqs.deleted_at.is_some())
33 {
34 return Err(ModelError::new(
35 ModelErrorType::Generic,
36 "Attempted to update user_exercise_state with a deleted latest exercise slide submission received peer review question submission"
37 .to_string(),
38 None,
39 ));
40 }
41
42 if let Some(peer_review_queue_entry) =
43 &peer_or_self_review_information.peer_review_queue_entry
44 {
45 if peer_review_queue_entry.deleted_at.is_some() {
46 return Err(ModelError::new(
47 ModelErrorType::Generic,
48 "Attempted to update user_exercise_state with a deleted peer review queue entry"
49 .to_string(),
50 None,
51 ));
52 }
53 }
54
55 if peer_or_self_review_information
56 .peer_or_self_review_config
57 .deleted_at
58 .is_some()
59 {
60 return Err(ModelError::new(
61 ModelErrorType::Generic,
62 "Attempted to update user_exercise_state with a deleted peer review config"
63 .to_string(),
64 None,
65 ));
66 }
67 }
68
69 if let Some(latest_teacher_grading_decision) = &input_data.latest_teacher_grading_decision {
70 if latest_teacher_grading_decision.deleted_at.is_some() {
71 return Err(ModelError::new(
72 ModelErrorType::Generic,
73 "Attempted to update user_exercise_state with a latest teacher grading decision"
74 .to_string(),
75 None,
76 ));
77 }
78 }
79 Ok(())
80}