pub struct AdminCreditRegistration {Show 42 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<String>,
pub sisu_person_id: Option<String>,
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 request_item_id: String,
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<String>,
pub verified_student_number_at: Option<DateTime<Utc>>,
pub verified_student_number_via: Option<StudentNumberVerificationMethod>,
pub completion_eligible: bool,
pub has_verified_student_number: 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<String>Frozen on the row when it left checking_enrolment, so it is what we actually sent.
sisu_person_id: Option<String>§uh_course_code: Option<String>§selected_enrolment_id: Option<String>§grade_scale_id: Option<String>§grade_id: Option<String>§credits: Option<f32>§request_item_id: String§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<String>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>§completion_eligible: bool§has_verified_student_number: 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 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 moreSource§impl Debug for AdminCreditRegistration
impl Debug for AdminCreditRegistration
Source§impl PartialEq for AdminCreditRegistration
impl PartialEq for AdminCreditRegistration
impl StructuralPartialEq for AdminCreditRegistration
Auto 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].