Pārlūkot izejas kodu

Waiter's Notepad clean up and enumerate

(cherry picked from commit a6e2eae6d6158faf9ce745c395f103b23d7462b2)
Jon Mårtensson 3 gadi atpakaļ
vecāks
revīzija
b7035f73c1

+ 71 - 3
FreeAPS/Sources/Modules/AddCarbs/AddCarbsStateModel.swift

@@ -1,4 +1,5 @@
 import CoreData
+import Foundation
 import SwiftUI
 
 extension AddCarbs {
@@ -144,9 +145,76 @@ extension AddCarbs {
             }
         }
 
-        func fullMeal() -> [String] {
-            let filteredArray = summation.filter { !$0.isEmpty }
-            return filteredArray
+        func addNewPresetToWaitersNotepad(_ dish: String) {
+            summation.append(dish)
+        }
+
+        func waitersNotepad() -> String {
+            var filteredArray = summation.filter { !$0.isEmpty }
+            var carbs_: Decimal = 0.0
+            var fat_: Decimal = 0.0
+            var protein_: Decimal = 0.0
+            var presetArray = [Presets]()
+
+            coredataContext.performAndWait {
+                let requestPresets = Presets.fetchRequest() as NSFetchRequest<Presets>
+                try? presetArray = coredataContext.fetch(requestPresets)
+            }
+
+            var waitersNotepad = [String]()
+            var stringValue = ""
+
+            for each in filteredArray {
+                let countedSet = NSCountedSet(array: filteredArray)
+                let count = countedSet.count(for: each)
+                if each != stringValue {
+                    waitersNotepad.append("\(count) \(each)")
+                }
+                stringValue = each
+
+                for sel in presetArray {
+                    if sel.dish == each {
+                        carbs_ += (sel.carbs)! as Decimal
+                        fat_ += (sel.fat)! as Decimal
+                        protein_ += (sel.protein)! as Decimal
+                        break
+                    }
+                }
+            }
+
+            let extracarbs = carbs - carbs_
+            let extraFat = fat - fat_
+            let extraProtein = protein - protein_
+            var addedString = ""
+
+            if extracarbs > 0, filteredArray.isNotEmpty {
+                addedString += "Additional carbs: \(extracarbs) "
+            } else if extracarbs < 0 { addedString += "Removed carbs: \(extracarbs) " }
+
+            if extraFat > 0, filteredArray.isNotEmpty {
+                addedString += "Additional fat: \(extraFat) "
+            } else if extraFat < 0 { addedString += "Removed fat: \(extraFat) " }
+
+            if extraProtein > 0, filteredArray.isNotEmpty {
+                addedString += "Additional protein: \(extraProtein) "
+            } else if extraProtein < 0 { addedString += "Removed protein: \(extraProtein) " }
+
+            if addedString != "" {
+                waitersNotepad.append(addedString)
+            }
+
+            var waitersNotepadString = ""
+
+            if waitersNotepad.count == 1 {
+                waitersNotepadString = waitersNotepad[0]
+            } else if waitersNotepad.count > 1 {
+                for each in waitersNotepad {
+                    if each != waitersNotepad.last {
+                        waitersNotepadString += " " + each + ","
+                    } else { waitersNotepadString += " " + each }
+                }
+            }
+            return waitersNotepadString
         }
     }
 }

+ 1 - 1
FreeAPS/Sources/Modules/AddCarbs/View/AddCarbsRootView.swift

@@ -86,7 +86,7 @@ extension AddCarbs {
                     DatePicker("Date", selection: $state.date)
                 }
 
-                Section(footer: Text(state.fullMeal().description != "[]" ? state.fullMeal().description : "")) {
+                Section(footer: Text(state.waitersNotepad().description)) {
                     Button { state.add() }
                     label: { Text("Save and continue") }
                         .disabled(state.carbs <= 0 && state.fat <= 0 && state.protein <= 0)