diff --git a/src/model/user/mod.rs b/src/model/user/mod.rs index 257551c..0c2e06d 100644 --- a/src/model/user/mod.rs +++ b/src/model/user/mod.rs @@ -8,14 +8,12 @@ use rocket::{ http::{Cookie, Status}, request::{FromRequest, Outcome}, time::{Duration, OffsetDateTime}, - tokio::io::AsyncReadExt, Request, }; use serde::{Deserialize, Serialize}; use sqlx::{FromRow, Sqlite, SqlitePool, Transaction}; use super::{ - family::Family, log::Log, logbook::Logbook, mail::Mail, @@ -26,7 +24,7 @@ use super::{ tripdetails::TripDetails, Day, }; -use crate::{tera::admin::user::UserEditForm, AMOUNT_DAYS_TO_SHOW_TRIPS_AHEAD}; +use crate::AMOUNT_DAYS_TO_SHOW_TRIPS_AHEAD; use scheckbuch::ScheckbuchUser; mod basic; @@ -483,68 +481,6 @@ ORDER BY last_access DESC .unwrap(); //Okay, because we can only create a User of a valid id } - pub async fn update(&self, db: &SqlitePool, data: UserEditForm<'_>) -> Result<(), String> { - let mut db = db.begin().await.map_err(|e| e.to_string())?; - - let mut family_id = data.family_id; - - if family_id.is_some_and(|x| x == -1) { - family_id = Some(Family::insert_tx(&mut db).await) - } - - if !self.has_membership_pdf_tx(&mut db).await { - if let Some(membership_pdf) = data.membership_pdf { - let mut stream = membership_pdf.open().await.unwrap(); - let mut buffer = Vec::new(); - stream.read_to_end(&mut buffer).await.unwrap(); - sqlx::query!( - "UPDATE user SET membership_pdf = ? where id = ?", - buffer, - self.id - ) - .execute(db.deref_mut()) - .await - .unwrap(); //Okay, because we can only create a User of a valid id - } - } - - sqlx::query!( - "UPDATE user SET dob = ?, weight = ?, sex = ?, member_since_date=?, birthdate=?, mail=?, nickname=?, notes=?, phone=?, address=?, family_id = ? where id = ?", - data.dob, - data.weight, - data.sex, - data.member_since_date, - data.birthdate, - data.mail, - data.nickname, - data.notes, - data.phone, - data.address, - family_id, - self.id - ) - .execute(db.deref_mut()) - .await - .unwrap(); //Okay, because we can only create a User of a valid id - - // handle roles - sqlx::query!("DELETE FROM user_role WHERE user_id = ?", self.id) - .execute(db.deref_mut()) - .await - .unwrap(); - - for role_id in data.roles.into_keys() { - let role = Role::find_by_id_tx(&mut db, role_id.parse::().unwrap()) - .await - .unwrap(); - self.add_role_tx(&mut db, &role).await?; - } - - db.commit().await.map_err(|e| e.to_string())?; - - Ok(()) - } - async fn send_end_mail_scheckbuch( &self, db: &mut Transaction<'_, Sqlite>, diff --git a/src/tera/admin/user.rs b/src/tera/admin/user.rs index 21fbe8c..534971e 100644 --- a/src/tera/admin/user.rs +++ b/src/tera/admin/user.rs @@ -1,5 +1,3 @@ -use std::collections::HashMap; - use crate::{ model::{ family::Family, @@ -301,49 +299,6 @@ async fn delete(db: &State, admin: ManageUserUser, user: i32) -> Fla } } -#[derive(FromForm, Debug)] -pub struct UserEditForm<'a> { - pub(crate) id: i32, - pub(crate) dob: Option, - pub(crate) weight: Option, - pub(crate) sex: Option, - pub(crate) roles: HashMap, - pub(crate) member_since_date: Option, - pub(crate) birthdate: Option, - pub(crate) mail: Option, - pub(crate) nickname: Option, - pub(crate) notes: Option, - pub(crate) phone: Option, - pub(crate) address: Option, - pub(crate) family_id: Option, - pub(crate) membership_pdf: Option>, -} - -#[post("/user", data = "", format = "multipart/form-data")] -async fn update( - db: &State, - data: Form>, - admin: ManageUserUser, -) -> Flash { - let user = User::find_by_id(db, data.id).await; - Log::create( - db, - format!("{} updated user from {user:?} to {data:?}", admin.user.name), - ) - .await; - let Some(user) = user else { - return Flash::error( - Redirect::to("/admin/user"), - format!("User with ID {} does not exist!", data.id), - ); - }; - - match user.update(db, data.into_inner()).await { - Ok(_) => Flash::success(Redirect::to("/admin/user"), "Successfully updated user"), - Err(e) => Flash::error(Redirect::to("/admin/user"), e), - } -} - #[derive(FromForm, Debug)] pub struct MailUpdateForm { mail: String, @@ -712,11 +667,11 @@ async fn create( } } -#[derive(FromForm, Debug)] -struct UserAddScheckbuchForm<'r> { - name: &'r str, - mail: &'r str, -} +//#[derive(FromForm, Debug)] +//struct UserAddScheckbuchForm<'r> { +// name: &'r str, +// mail: &'r str, +//} //#[post("/user/new/scheckbuch", data = "")] //async fn create_scheckbuch( @@ -778,7 +733,7 @@ pub struct SchnupperantToRegularForm<'a> { #[post("/user//schnupperant-to-regular", data = "")] async fn schnupperant_to_regular( db: &State, - data: Form>, + data: Form>, admin: ManageUserUser, config: &State, id: i32, @@ -1174,7 +1129,6 @@ pub fn routes() -> Vec { index_admin, view, resetpw, - update, create, //create_scheckbuch, delete,