Created TreatmentEntryAccessor newTreatmentsIfRequired and TreatmentNSResponse asNewTreatmentEntry.

This commit is contained in:
eduardopietre 2022-01-12 20:26:07 -03:00 committed by Johan Degraeve
parent 57d51c9fce
commit 59ed3b0caf
2 changed files with 26 additions and 0 deletions

View File

@ -151,6 +151,18 @@ class TreatmentEntryAccessor {
return treatment
}
public func newTreatmentsIfRequired(responses: [TreatmentNSResponse]) -> [TreatmentEntry] {
var newTreatments: [TreatmentEntry] = []
for response in responses {
if !self.existsTreatmentWithId(response.id), let treatment = response.asNewTreatmentEntry(nsManagedObjectContext: coreDataManager.mainManagedObjectContext) {
newTreatments.append(treatment)
}
}
return newTreatments
}
// MARK: - private helper functions
/// returnvalue can be empty array

View File

@ -7,6 +7,7 @@
//
import Foundation
import CoreData
/// Class that represents the Nightscout response for adding a single new treatment.
/// NS API docs states:
@ -71,4 +72,17 @@ public struct TreatmentNSResponse {
return entry.date.ISOStringFromDate() == self.createdAt && entry.treatmentType == self.eventType && entry.value == self.value
}
// Converts self (TreatmentNSResponse) to TreatmentEntry.
// Be extra carefull when creating new TreatmentEntry, will impact core data.
public func asNewTreatmentEntry(nsManagedObjectContext: NSManagedObjectContext) -> TreatmentEntry? {
guard let date = Date.fromISOString(createdAt) else {
return nil
}
var treatment = TreatmentEntry(date: date, value: value, treatmentType: eventType, nsManagedObjectContext: nsManagedObjectContext)
// Since this entry originated at nightscout, set uploaded as true.
treatment.uploaded = true
return treatment
}
}