FuelMan/Gas Man/AddMaintenanceView.swift

74 lines
2.3 KiB
Swift

//
// AddMaintenanceView.swift
// Gas Man
//
// Created by Kameron Kenny on 3/17/25.
//
import SwiftUI
struct AddMaintenanceView: View {
@Environment(\.managedObjectContext) private var viewContext
@Environment(\.dismiss) var dismiss
@State private var date = Date()
@State private var odometer = ""
@State private var eventType = ""
@State private var cost = ""
@State private var notes = ""
@State private var locationCoordinates = ""
@State private var locationName = ""
var body: some View {
NavigationView {
Form {
Section(header: Text("Maintenance Details")) {
DatePicker("Date", selection: $date, displayedComponents: [.date, .hourAndMinute])
TextField("Odometer Reading", text: $odometer)
.keyboardType(.decimalPad)
TextField("Service Type", text: $eventType)
TextField("Cost ($)", text: $cost)
.keyboardType(.decimalPad)
TextField("Notes", text: $notes)
TextField("Location Coordinates", text: $locationCoordinates)
TextField("Location Name", text: $locationName)
}
}
.navigationTitle("Add Maintenance")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button("Save") {
saveMaintenance()
}
}
ToolbarItem(placement: .navigationBarLeading) {
Button("Cancel") {
dismiss()
}
}
}
}
}
private func saveMaintenance() {
let newEvent = MaintenanceEvent(context: viewContext)
newEvent.id = UUID()
newEvent.date = date
newEvent.odometer = Double(odometer) ?? 0
newEvent.eventType = eventType
newEvent.cost = Double(cost) ?? 0
newEvent.notes = notes
newEvent.locationCoordinates = locationCoordinates
newEvent.locationName = locationName
do {
try viewContext.save()
dismiss()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
}
}