use serde::{Deserialize, Serialize};
#[cfg(feature = "diesel")]
use {
diesel::backend::Backend,
diesel::deserialize::FromSql,
diesel::pg::Pg,
diesel::serialize::{IsNull, Output, ToSql},
diesel::types::Varchar,
diesel::{deserialize, not_none, serialize},
diesel::{AsExpression, FromSqlRow},
std::io::Write,
};
#[derive(
Clone,
Serialize,
Deserialize,
Debug,
PartialEq,
)]
#[cfg_attr(feature = "diesel", derive(AsExpression, FromSqlRow))]
#[cfg_attr(feature = "diesel", sql_type = "Varchar")]
pub enum Templates {
AcceptEnroll,
AccessRequest,
AccessRequestApprove,
BeginEvent,
DeclineEnroll,
SendRegistration,
SendPasswordToUser,
RedirectEnroll,
SendInvitation,
SendSchoolInvitation,
SendGuestRequest,
SendGuestFeedback,
SendEmailVerification,
SendApproveUr,
SendRecovery,
SendAuthCode,
DoFeedback,
MailingLetters,
SendInvitationUserCreate,
InviteRegistrationForEvent,
NotifyApplicationForEvent,
NotifyCancel,
NotifyApprove,
NotifyTransmission,
SendFormRequest,
RevokeFormRequest,
LessonPlanLog,
CurriculumLog,
TestLog,
TaskLog,
TransactionLog,
MedicationLog,
SendBehaviourOutcome,
MeetingInvitation,
}
impl Templates {
pub fn as_str(&self) -> &'static str {
match self {
Templates::AcceptEnroll => "accept_enroll_template",
Templates::AccessRequest => "send_access_request",
Templates::AccessRequestApprove => "send_access_request_approve",
Templates::BeginEvent => "begin_event_template",
Templates::DeclineEnroll => "decline_enroll_template",
Templates::SendRegistration => "send_registration_template",
Templates::SendPasswordToUser => "send_password_to_user_template",
Templates::RedirectEnroll => "redirect_enroll_template",
Templates::SendInvitation => "send_invitation_template",
Templates::SendSchoolInvitation => "school_invitation_template",
Templates::SendGuestRequest => "send_guest_request_template",
Templates::SendGuestFeedback => "send_guest_feedback_template",
Templates::SendEmailVerification => "send_email_verification_template",
Templates::SendApproveUr => "send_approve_ur_template",
Templates::SendRecovery => "send_recovery_template",
Templates::SendAuthCode => "send_auth_code_template", Templates::DoFeedback => "do_feedback_template",
Templates::MailingLetters => "mailing_letters_template",
Templates::SendInvitationUserCreate => "send_invitation_user_create_template",
Templates::InviteRegistrationForEvent => "invite_registration_for_event_template",
Templates::NotifyApplicationForEvent => "notify_application_for_event_template",
Templates::NotifyCancel => "notify_cancel_template",
Templates::NotifyApprove => "notify_approve_template",
Templates::NotifyTransmission => "notify_transmission_template",
Templates::SendFormRequest => "send_form_request",
Templates::RevokeFormRequest => "revoke_form_request",
Templates::LessonPlanLog => "lesson_plan_log",
Templates::CurriculumLog => "curriculum_log",
Templates::TestLog => "test_log",
Templates::TaskLog => "task_log",
Templates::TransactionLog => "transaction_log",
Templates::MedicationLog => "medication_log",
Templates::SendBehaviourOutcome => "send_behaviour_outcome",
Templates::MeetingInvitation => "meeting_invitation",
}
}
pub fn get_title(&self) -> &'static str {
match self {
Templates::AccessRequest => "WebSchool access request",
Templates::AccessRequestApprove => "Administrative access in WebSchool",
Templates::AcceptEnroll => "Accept Enroll",
Templates::BeginEvent => "Begin Event",
Templates::DeclineEnroll => "Decline Enroll",
Templates::SendRegistration => "Send Registration",
Templates::SendPasswordToUser => "Send Password",
Templates::RedirectEnroll => "Redirect Enroll",
Templates::SendInvitation => "Invitation",
Templates::SendSchoolInvitation => "School Invitation",
Templates::SendGuestRequest => "Guest Request",
Templates::SendGuestFeedback => "Guest Feedback",
Templates::SendEmailVerification => "Email Verification",
Templates::SendApproveUr => "Approve User Role",
Templates::SendRecovery => "Password Recovery",
Templates::SendAuthCode => "Auth Code",
Templates::DoFeedback => "Feedback",
Templates::MailingLetters => "Invitation",
Templates::SendInvitationUserCreate => "Invitation User Create",
Templates::InviteRegistrationForEvent => "Invite Registration For Event",
Templates::NotifyApplicationForEvent => "Notify Application For Event",
Templates::NotifyCancel => "Notify Cancel",
Templates::NotifyApprove => "Notify Approve",
Templates::NotifyTransmission => "Notify Transmission",
Templates::SendFormRequest => "Form Request",
Templates::RevokeFormRequest => "Revoke Form Request",
Templates::LessonPlanLog => "Lesson plan status has been changed",
Templates::CurriculumLog => "Curriculum status has been changed",
Templates::TestLog => "Test status has been changed",
Templates::TaskLog => "Task of project has been updated",
Templates::TransactionLog => "Transaction status has been changed",
Templates::MedicationLog => "Medicines are about to expire",
Templates::SendBehaviourOutcome => "Behaviour student require your attention",
Templates::MeetingInvitation => "Meeting invitation",
}
}
}
#[cfg(feature = "diesel")]
impl ToSql<Varchar, Pg> for Templates {
fn to_sql<W: Write>(&self, out: &mut Output<W, Pg>) -> serialize::Result {
match *self {
Templates::AccessRequest => out.write_all(b"AccessRequest")?,
Templates::AccessRequestApprove => out.write_all(b"AccessRequestApprove")?,
Templates::AcceptEnroll => out.write_all(b"AcceptEnroll")?,
Templates::BeginEvent => out.write_all(b"BeginEvent")?,
Templates::DeclineEnroll => out.write_all(b"DeclineEnroll")?,
Templates::SendRegistration => out.write_all(b"SendRegistration")?,
Templates::SendPasswordToUser => out.write_all(b"SendPasswordToUser")?,
Templates::RedirectEnroll => out.write_all(b"RedirectEnroll")?,
Templates::SendInvitation => out.write_all(b"SendInvitation")?,
Templates::SendSchoolInvitation => out.write_all(b"SendSchoolInvitation")?,
Templates::SendGuestRequest => out.write_all(b"SendGuestRequest")?,
Templates::SendGuestFeedback => out.write_all(b"SendGuestFeedback")?,
Templates::SendEmailVerification => out.write_all(b"SendEmailVerification")?,
Templates::SendApproveUr => out.write_all(b"SendApproveUr")?,
Templates::SendRecovery => out.write_all(b"SendRecovery")?,
Templates::SendAuthCode => out.write_all(b"SendAuthCode")?,
Templates::DoFeedback => out.write_all(b"DoFeedback")?,
Templates::MailingLetters => out.write_all(b"MailingLetters")?,
Templates::SendInvitationUserCreate => out.write_all(b"SendInvitationUserCreate")?,
Templates::InviteRegistrationForEvent => out.write_all(b"InviteRegistrationForEvent")?,
Templates::NotifyApplicationForEvent => out.write_all(b"NotifyApplicationForEvent")?,
Templates::NotifyCancel => out.write_all(b"NotifyCancel")?,
Templates::NotifyApprove => out.write_all(b"NotifyApprove")?,
Templates::NotifyTransmission => out.write_all(b"NotifyTransmission")?,
Templates::SendFormRequest => out.write_all(b"SendFormRequest")?,
Templates::RevokeFormRequest => out.write_all(b"RevokeFormRequest")?,
Templates::LessonPlanLog => out.write_all(b"LessonPlanLog")?,
Templates::CurriculumLog => out.write_all(b"CurriculumLog")?,
Templates::TestLog => out.write_all(b"TestLog")?,
Templates::TaskLog => out.write_all(b"TaskLog")?,
Templates::TransactionLog => out.write_all(b"TransactionLog")?,
Templates::MedicationLog => out.write_all(b"MedicationLog")?,
Templates::SendBehaviourOutcome => out.write_all(b"SendBehaviourOutcome")?,
Templates::MeetingInvitation => out.write_all(b"MeetingInvitation")?,
}
Ok(IsNull::No)
}
}
#[cfg(feature = "diesel")]
impl FromSql<Varchar, Pg> for Templates {
fn from_sql(bytes: Option<&<Pg as Backend>::RawValue>) -> deserialize::Result<Self> {
match not_none!(bytes) {
b"AccessRequest" => Ok(Templates::AccessRequest),
b"AccessRequestApprove" => Ok(Templates::AccessRequestApprove),
b"AcceptEnroll" => Ok(Templates::AcceptEnroll),
b"BeginEvent" => Ok(Templates::BeginEvent),
b"DeclineEnroll" => Ok(Templates::DeclineEnroll),
b"SendRegistration" => Ok(Templates::SendRegistration),
b"SendPasswordToUser" => Ok(Templates::SendPasswordToUser),
b"RedirectEnroll" => Ok(Templates::RedirectEnroll),
b"SendInvitation" => Ok(Templates::SendInvitation),
b"SendSchoolInvitation" => Ok(Templates::SendSchoolInvitation),
b"SendGuestRequest" => Ok(Templates::SendGuestRequest),
b"SendGuestFeedback" => Ok(Templates::SendGuestFeedback),
b"SendEmailVerification" => Ok(Templates::SendEmailVerification),
b"SendApproveUr" => Ok(Templates::SendApproveUr),
b"SendRecovery" => Ok(Templates::SendRecovery),
b"SendAuthCode" => Ok(Templates::SendAuthCode),
b"DoFeedback" => Ok(Templates::DoFeedback),
b"MailingLetters" => Ok(Templates::MailingLetters),
b"SendInvitationUserCreate" => Ok(Templates::SendInvitationUserCreate),
b"InviteRegistrationForEvent" => Ok(Templates::InviteRegistrationForEvent),
b"NotifyApplicationForEvent" => Ok(Templates::NotifyApplicationForEvent),
b"NotifyCancel" => Ok(Templates::NotifyCancel),
b"NotifyApprove" => Ok(Templates::NotifyApprove),
b"NotifyTransmission" => Ok(Templates::NotifyTransmission),
b"SendFormRequest" => Ok(Templates::SendFormRequest),
b"RevokeFormRequest" => Ok(Templates::RevokeFormRequest),
b"LessonPlanLog" => Ok(Templates::LessonPlanLog),
b"CurriculumLog" => Ok(Templates::CurriculumLog),
b"TestLog" => Ok(Templates::TestLog),
b"TaskLog" => Ok(Templates::TaskLog),
b"TransactionLog" => Ok(Templates::TransactionLog),
b"MedicationLog" => Ok(Templates::MedicationLog),
b"SendBehaviourOutcome" => Ok(Templates::SendBehaviourOutcome),
b"MeetingInvitation" => Ok(Templates::MeetingInvitation),
_ => Err("Unrecognized enum variant".into()),
}
}
}