pub struct AdminCreditRegistration {Show 50 fields
pub id: Uuid,
pub created_at: DateTime<Utc>,
pub user_id: Uuid,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub email: Option<String>,
pub course_id: Uuid,
pub course_name: String,
pub course_module_id: Uuid,
pub course_module_name: Option<String>,
pub course_instance_id: Uuid,
pub course_module_completion_id: Uuid,
pub completion_date: DateTime<Utc>,
pub state: CreditRegistrationState,
pub state_entered_at: DateTime<Utc>,
pub error_code: Option<CreditRegistrationErrorCode>,
pub needs_admin_attention: bool,
pub next_attempt_at: DateTime<Utc>,
pub last_attempt_at: Option<DateTime<Utc>>,
pub submitted_at: Option<DateTime<Utc>>,
pub registered_at: Option<DateTime<Utc>>,
pub terminal_at: Option<DateTime<Utc>>,
pub student_number: Option<DbSecret>,
pub sisu_person_id: Option<DbSecret>,
pub uh_course_code: Option<String>,
pub selected_enrolment_id: Option<String>,
pub grade_scale_id: Option<String>,
pub grade_id: Option<String>,
pub credits: Option<f32>,
pub submitted_attainment_id: Option<String>,
pub sisu_attainment_id: Option<String>,
pub submit_retry_count: i32,
pub verify_attempt_count: i32,
pub attempt_number: i32,
pub superseded_by_id: Option<Uuid>,
pub verified_student_number: Option<DbSecret>,
pub verified_student_number_at: Option<DateTime<Utc>>,
pub verified_student_number_via: Option<StudentNumberVerificationMethod>,
pub resubmit_not_before: Option<DateTime<Utc>>,
pub partially_registered_at: Option<DateTime<Utc>>,
pub not_registered_reimport_count: i32,
pub no_usable_enrolment_since: Option<DateTime<Utc>>,
pub enrolment_checked_at: Option<DateTime<Utc>>,
pub enrolment_check_anchor_at: Option<DateTime<Utc>>,
pub enrolment_check_due_at: Option<DateTime<Utc>>,
pub enrolment_checks_stopped_at: Option<DateTime<Utc>>,
pub completion_eligible: bool,
pub has_verified_student_number: bool,
pub course_code_allowed: bool,
pub total_count: i64,
}Expand description
One ledger row as an admin sees it: every identifier support needs to answer “what happened to this student”, across courses.
Not the study registry’s own error text: it is written for an integrator, may name a person and is untranslated. The error code and the scrubbed call bodies stand in for it.
Fields§
§id: Uuid§created_at: DateTime<Utc>§user_id: Uuid§first_name: Option<String>§last_name: Option<String>§email: Option<String>In full: the admin view exists to resolve support cases, which starts from the address.
course_id: Uuid§course_name: String§course_module_id: Uuid§course_module_name: Option<String>§course_instance_id: Uuid§course_module_completion_id: Uuid§completion_date: DateTime<Utc>§state: CreditRegistrationState§state_entered_at: DateTime<Utc>§error_code: Option<CreditRegistrationErrorCode>§needs_admin_attention: bool§next_attempt_at: DateTime<Utc>§last_attempt_at: Option<DateTime<Utc>>§submitted_at: Option<DateTime<Utc>>§registered_at: Option<DateTime<Utc>>§terminal_at: Option<DateTime<Utc>>§student_number: Option<DbSecret>Frozen on the row when it left checking_enrolment, so it is what we actually sent.
sisu_person_id: Option<DbSecret>§uh_course_code: Option<String>§selected_enrolment_id: Option<String>§grade_scale_id: Option<String>§grade_id: Option<String>§credits: Option<f32>§submitted_attainment_id: Option<String>§sisu_attainment_id: Option<String>§submit_retry_count: i32§verify_attempt_count: i32§attempt_number: i32§superseded_by_id: Option<Uuid>§verified_student_number: Option<DbSecret>The account’s live link now, which may differ from the number frozen on the row.
verified_student_number_at: Option<DateTime<Utc>>§verified_student_number_via: Option<StudentNumberVerificationMethod>§resubmit_not_before: Option<DateTime<Utc>>§partially_registered_at: Option<DateTime<Utc>>§not_registered_reimport_count: i32§no_usable_enrolment_since: Option<DateTime<Utc>>§enrolment_checked_at: Option<DateTime<Utc>>§enrolment_check_anchor_at: Option<DateTime<Utc>>§enrolment_check_due_at: Option<DateTime<Utc>>§enrolment_checks_stopped_at: Option<DateTime<Utc>>§completion_eligible: bool§has_verified_student_number: bool§course_code_allowed: bool§total_count: i64The page’s total row count, so a caller can read it off the first row instead of a second query.
Implementations§
Source§impl AdminCreditRegistration
impl AdminCreditRegistration
Sourcepub fn resubmission_facts(&self) -> ResubmissionFacts
pub fn resubmission_facts(&self) -> ResubmissionFacts
What decides whether a human may move this row; see ResubmissionFacts.
Sourcepub fn is_waiting_for_enrolment(&self) -> bool
pub fn is_waiting_for_enrolment(&self) -> bool
Sourcepub fn pending_reason(&self) -> Option<CreditRegistrationPendingReason>
pub fn pending_reason(&self) -> Option<CreditRegistrationPendingReason>
What this row is waiting on, or None where it is not waiting at all: outside pending the
preconditions say nothing about why the row is where it is.
Trait Implementations§
Source§impl Clone for AdminCreditRegistration
impl Clone for AdminCreditRegistration
Source§fn clone(&self) -> AdminCreditRegistration
fn clone(&self) -> AdminCreditRegistration
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for AdminCreditRegistration
impl RefUnwindSafe for AdminCreditRegistration
impl Send for AdminCreditRegistration
impl Sync for AdminCreditRegistration
impl Unpin for AdminCreditRegistration
impl UnsafeUnpin for AdminCreditRegistration
impl UnwindSafe for AdminCreditRegistration
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].