From 9468629302f4f02cc5ce1f1c677a4cc888d2d032 Mon Sep 17 00:00:00 2001
From: JMARyA <jmarya@hydrar.de>
Date: Wed, 25 Sep 2024 22:59:00 +0200
Subject: [PATCH] fix

---
 src/flow.rs        | 36 ++++++++++++++++++------------------
 src/routes/flow.rs |  8 ++++++++
 2 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/src/flow.rs b/src/flow.rs
index 12e9ce4..33983e7 100644
--- a/src/flow.rs
+++ b/src/flow.rs
@@ -164,27 +164,27 @@ impl Flow {
 
         for prod in produced {
             let t = Item::get(&prod.item)
-            .await
-            .ok_or_else(item_does_not_exist_error)?
-            .variant(&prod.variant)
-            .ok_or_else(variant_does_not_exist_error)?;
+                .await
+                .ok_or_else(item_does_not_exist_error)?
+                .variant(&prod.variant)
+                .ok_or_else(variant_does_not_exist_error)?;
 
-                t_create.push((t, prod));
-            }
+            t_create.push((t, prod));
+        }
 
         for (item, info) in t_create {
-                let t = item
-                    .supply(
-                        Price::zero(),
-                        Some(&format!("flow::{}::{}", self.kind.id(), self._id)),
-                        info.location.as_ref().map(|x| x.as_str()),
-                        info.note.as_ref().map(|x| x.as_str()),
-                    )
-                    .await;
-                ret.entry(item.item_variant_id().clone())
-                    .or_insert(Vec::new())
-                    .push(t._id.clone());
-                produced_ref.push(t.reference());
+            let t = item
+                .supply(
+                    Price::zero(),
+                    Some(&format!("flow::{}::{}", self.kind.id(), self._id)),
+                    info.location.as_ref().map(|x| x.as_str()),
+                    info.note.as_ref().map(|x| x.as_str()),
+                )
+                .await;
+            ret.entry(item.item_variant_id().clone())
+                .or_insert(Vec::new())
+                .push(t._id.clone());
+            produced_ref.push(t.reference());
         }
 
         self.change()
diff --git a/src/routes/flow.rs b/src/routes/flow.rs
index 6fd799e..af343af 100644
--- a/src/routes/flow.rs
+++ b/src/routes/flow.rs
@@ -156,6 +156,10 @@ pub async fn end_flow_route(id: &str, form: Json<EndFlow>) -> FallibleApiRespons
         .await
         .ok_or_else(|| api_error("Flow not found"))?;
 
+    if flow.done.is_some() {
+        return Err(api_error("Flow already ended"));
+    }
+
     if let Some(produced) = &form.produced {
         let prod = flow.end_with_produce(produced).await?;
         Ok(json!({"produced": prod}))
@@ -175,6 +179,10 @@ pub async fn continue_flow_route(
         .await
         .ok_or_else(|| api_error("Flow not found"))?;
 
+    if this_flow.done.is_some() {
+        return Err(api_error("Flow already ended"));
+    }
+
     // create next flow
     let next_kind = flows
         .get(this_flow.kind.id())