From 151c97aabc797fca7351b1e2b2e1e4dd25b38337 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Sat, 3 May 2025 21:12:04 +0200 Subject: [PATCH 1/3] add notes --- src/model/activity.rs | 18 ++++++++++++++++++ src/model/user/basic.rs | 9 ++++++++- src/tera/admin/user.rs | 7 +++++-- templates/admin/user/view.html.tera | 5 +++-- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/model/activity.rs b/src/model/activity.rs index c19d744..33e0939 100644 --- a/src/model/activity.rs +++ b/src/model/activity.rs @@ -1,5 +1,6 @@ use std::ops::DerefMut; +use super::user::User; use chrono::NaiveDateTime; use serde::{Deserialize, Serialize}; use sqlx::{FromRow, Sqlite, SqlitePool, Transaction}; @@ -51,4 +52,21 @@ impl Activity { Self::create_with_tx(&mut tx, text, relevant_for, keep_until).await; tx.commit().await.unwrap(); } + + pub async fn for_user(db: &SqlitePool, user: &User) -> Vec { + let user_str = format!("user-{};", user.id); + sqlx::query_as!( + Self, + " +SELECT id, created_at, text, relevant_for, keep_until FROM activity +WHERE + relevant_for like CONCAT('%', ?, '%') +ORDER BY created_at DESC; + ", + user_str + ) + .fetch_all(db) + .await + .unwrap() + } } diff --git a/src/model/user/basic.rs b/src/model/user/basic.rs index d61ac96..66d0aba 100644 --- a/src/model/user/basic.rs +++ b/src/model/user/basic.rs @@ -11,11 +11,18 @@ impl User { &self, db: &SqlitePool, updated_by: &ManageUserUser, + user: &User, note: &str, ) -> Result<(), String> { let note = note.trim(); - Activity::create(db, note, "relevant_for", None).await; + Activity::create( + db, + &format!("({updated_by}) {note}"), + &format!("user-{};", user.id), + None, + ) + .await; Ok(()) } diff --git a/src/tera/admin/user.rs b/src/tera/admin/user.rs index 42056cd..8fa6aad 100644 --- a/src/tera/admin/user.rs +++ b/src/tera/admin/user.rs @@ -1,5 +1,6 @@ use crate::{ model::{ + activity::Activity, family::Family, log::Log, logbook::Logbook, @@ -128,6 +129,7 @@ async fn view( let member = Member::from(db, user.clone()).await; let fee = user.fee(db).await; + let activities = Activity::for_user(db, &user).await; let user = UserWithRolesAndMembershipPdf::from_user(db, user).await; @@ -147,6 +149,7 @@ async fn view( context.insert("supposed_to_pay", &member.supposed_to_pay()); context.insert("fee", &fee); context.insert("member", &member); + context.insert("activities", &activities); context.insert("roles", &roles); context.insert("families", &families); context.insert( @@ -332,7 +335,7 @@ pub struct AddNoteForm { note: String, } -#[post("/user//add-note", data = "")] +#[post("/user//new-note", data = "")] async fn add_note( db: &State, data: Form, @@ -346,7 +349,7 @@ async fn add_note( ); }; - match user.add_note(db, &admin, &data.note).await { + match user.add_note(db, &admin, &user, &data.note).await { Ok(_) => Flash::success( Redirect::to(format!("/admin/user/{}", user.id)), "Notiz hinzugefügt", diff --git a/templates/admin/user/view.html.tera b/templates/admin/user/view.html.tera index bd08efb..11772f9 100644 --- a/templates/admin/user/view.html.tera +++ b/templates/admin/user/view.html.tera @@ -390,8 +390,9 @@
    -
  • Passwort zurückgesetzt am/um X
  • -
  • Am X beigetreten.
  • + {% for activity in activities %} +
  • {{ activity.created_at | date(format="%d. %m. %Y") }}: {{ activity.text }}
  • + {% endfor %}
From cd52e76b618f73dbb13b66f327411afa326bc2bb Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Sat, 3 May 2025 21:17:17 +0200 Subject: [PATCH 2/3] remove already replaced part --- templates/admin/user/view.html.tera | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/admin/user/view.html.tera b/templates/admin/user/view.html.tera index 11772f9..4e04d8e 100644 --- a/templates/admin/user/view.html.tera +++ b/templates/admin/user/view.html.tera @@ -36,7 +36,6 @@ {{ macros::inputgroup(label='Neue Notiz', name='note', type="text") }} {% endif %} - Notizen: to be replaced with activity :-) {% if user.pw and allowed_to_edit %}
Date: Sat, 3 May 2025 21:22:35 +0200 Subject: [PATCH 3/3] add explanation text + reformat --- templates/admin/user/view.html.tera | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/templates/admin/user/view.html.tera b/templates/admin/user/view.html.tera index 4e04d8e..65966ff 100644 --- a/templates/admin/user/view.html.tera +++ b/templates/admin/user/view.html.tera @@ -32,9 +32,9 @@ {{ macros::inputgroup(label='Spitzname', name='nickname', type="text", value=user.nickname, readonly=not allowed_to_edit) }} {% if allowed_to_edit %} -
- {{ macros::inputgroup(label='Neue Notiz', name='note', type="text") }} -
+
+ {{ macros::inputgroup(label='Neue Notiz', name='note', type="text") }} +
{% endif %} {% if user.pw and allowed_to_edit %}
@@ -389,9 +389,11 @@
    - {% for activity in activities %} -
  • {{ activity.created_at | date(format="%d. %m. %Y") }}: {{ activity.text }}
  • - {% endfor %} + {% for activity in activities %} +
  • {{ activity.created_at | date(format="%d. %m. %Y") }}: {{ activity.text }}
  • + {% else %} +
  • Noch keine Aktivität... Stay tuned 😆
  • + {% endfor %}