import Foundation
import Capacitor
import EventKit

let eventStore : EKEventStore = EKEventStore()

@objc(CalendarPlugin)
public class CalendarPlugin: CAPPlugin {

    @objc func addEvent(_ call: CAPPluginCall){
        guard let eventTitle = call.getString("title") else {
            call.error("Must provide an event title")
            return
        }
        guard let eventDescription = call.getString("description") else {
            call.error("Must provide an event description")
            return
        }
        guard let eventLocation = call.getString("location") else {
            call.error("Must provide an event location")
            return
        }
        guard let eventStartDate = call.getDate("startDate") else {
            call.error("Must provide an event start date")
            return
        }

        guard let eventEndDate = call.getDate("endDate") else {
            call.error("Must provide an event end date")
            return
        }

        eventStore.requestAccess(to: .event) { (granted, error) in

            if (granted) && (error == nil) {


                let event:EKEvent = EKEvent(eventStore: eventStore)

                event.title = eventTitle
                event.startDate = eventStartDate
                event.endDate = eventEndDate
                event.notes = eventDescription
                event.location = eventLocation
                event.calendar = eventStore.defaultCalendarForNewEvents
                do {
                    try eventStore.save(event, span: .thisEvent)
                    call.success()
                } catch let error as NSError {
                    call.reject("error", error)
                }

            }
            else{
                call.reject("failed to save")
            }
        }


    }

}
