74 lines
2.3 KiB
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)")
|
|
}
|
|
}
|
|
}
|