forked from Ruderverein-Donau-Linz/rowt
create member type
This commit is contained in:
44
src/model/user/member.rs
Normal file
44
src/model/user/member.rs
Normal file
@ -0,0 +1,44 @@
|
||||
use super::ScheckbuchUser;
|
||||
use crate::model::{
|
||||
logbook::{Logbook, LogbookWithBoatAndRowers},
|
||||
user::User,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::SqlitePool;
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub(crate) enum Member {
|
||||
SchnupperInterest(User),
|
||||
Schnupperant(User),
|
||||
Scheckbuch(Vec<LogbookWithBoatAndRowers>),
|
||||
Regular(User),
|
||||
Foerdernd(User),
|
||||
Unterstuetzend(User),
|
||||
}
|
||||
|
||||
impl Member {
|
||||
pub(crate) async fn from(db: &SqlitePool, user: User) -> Self {
|
||||
if ScheckbuchUser::new(db, &user).await.is_some() {
|
||||
Self::Scheckbuch(Logbook::completed_with_user(db, &user).await)
|
||||
} else if user.has_role(db, "schnupper-interessierte").await {
|
||||
Self::SchnupperInterest(user)
|
||||
} else if user.has_role(db, "schnupperant").await {
|
||||
Self::Schnupperant(user)
|
||||
} else if user.has_role(db, "Donau Linz").await {
|
||||
Self::Regular(user)
|
||||
} else if user.has_role(db, "Förderndes Mitglied").await {
|
||||
Self::Foerdernd(user)
|
||||
} else if user.has_role(db, "Unterstützend").await {
|
||||
Self::Unterstuetzend(user)
|
||||
} else {
|
||||
panic!("User {user} has no membership_type!!");
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn is_club_member(&self) -> bool {
|
||||
match self {
|
||||
Member::Regular(_) | Member::Foerdernd(_) | Member::Unterstuetzend(_) => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
}
|
@ -34,6 +34,7 @@ use scheckbuch::ScheckbuchUser;
|
||||
|
||||
mod basic;
|
||||
mod fee;
|
||||
pub(crate) mod member;
|
||||
mod scheckbuch;
|
||||
|
||||
#[derive(FromRow, Serialize, Deserialize, Clone, Debug, Eq, Hash, PartialEq)]
|
||||
@ -1015,7 +1016,6 @@ special_user!(AllowedToEditPaymentStatusUser, +"kassier", +"admin");
|
||||
special_user!(ManageUserUser, +"admin", +"schriftfuehrer");
|
||||
special_user!(AllowedToSendFeeReminderUser, +"admin", +"schriftfuehrer", +"kassier");
|
||||
special_user!(AllowedToUpdateTripToAlwaysBeShownUser, +"admin");
|
||||
special_user!(ClubMember, +"Donau Linz");
|
||||
|
||||
#[derive(FromRow, Serialize, Deserialize, Clone, Debug)]
|
||||
pub struct UserWithRolesAndMembershipPdf {
|
||||
|
Reference in New Issue
Block a user