Untitled
unknown
plain_text
a year ago
3.8 kB
7
Indexable
{
DispatchQueue.main.async {
guard self.arrAgendaDetail.count > 0 else { return }
let event = EKEvent(eventStore: store)
let model = self.arrAgendaDetail[0]
event.title = String(format: "%@ - %@", App_Name, model.Heading ?? "")
event.location = model.custom_location
// Event details
let strStartDate = model.Start_date_cal ?? ""
let strEndDate = model.End_date_cal ?? ""
let strStartTime = model.Start_time ?? ""
let strEndTime = model.End_time ?? ""
let eventTimeZoneAbbreviation = model.Event_show_time_zone ?? "UTC"
// Date formatter for parsing event date-time
let strEventDateFormat = Utility.getEventDateFormat()
let eventDateFormatter = DateFormatter()
eventDateFormatter.dateFormat = "\(strEventDateFormat ?? "") HH:mm"
eventDateFormatter.locale = Locale(identifier: "en_US_POSIX")
eventDateFormatter.timeZone = TimeZone(abbreviation: eventTimeZoneAbbreviation)
let startDateTimeString = "\(strStartDate) \(strStartTime)"
let endDateTimeString = "\(strEndDate) \(strEndTime)"
let startDateInEventTimeZone = eventDateFormatter.date(from: startDateTimeString)
let endDateInEventTimeZone = eventDateFormatter.date(from: endDateTimeString)
// Convert event time to the user's current time zone
let userTimeZone = TimeZone.current
let userDateFormatter = DateFormatter()
userDateFormatter.dateFormat = "MM/dd/yyyy HH:mm"
userDateFormatter.locale = Locale(identifier: "en_US_POSIX")
userDateFormatter.timeZone = userTimeZone
// Convert start and end dates to user's time zone
let startDateInUserTimeZone = userDateFormatter.string(from: startDateInEventTimeZone ?? Date())
let endDateInUserTimeZone = userDateFormatter.string(from: endDateInEventTimeZone ?? Date())
let newuserDateFormatter = DateFormatter()
newuserDateFormatter.dateFormat = "MM/dd/yyyy HH:mm"
guard let startDate = newuserDateFormatter.date(from: startDateInUserTimeZone),
let endDate = newuserDateFormatter.date(from: endDateInUserTimeZone) else {
print("Error converting event dates to user time zone")
return
}
// Configure and save the event
event.startDate = startDate
event.endDate = endDate
event.calendar = store.defaultCalendarForNewEvents
let alarm = EKAlarm(relativeOffset: -60 * 60) // 1 hour before
event.addAlarm(alarm)
if Utility.fetchExistedEventState(forStart: startDate, andEnd: endDate, andEvent: event) {
DispatchQueue.main.async {
Utility.showAlert(withTitle: App_Name, andMessage: CALENDAR_EVENT_ALREADY_EXIST_MSG)
}
} else {
do {
try store.save(event, span: .thisEvent)
DispatchQueue.main.async {
Utility.showAlert(withTitle: App_Name, andMessage: CALENDAR_EVENT_SAVED_MSG)
}
} catch {
print("Error saving event to calendar: \(error)")
}
}
}
}Editor is loading...
Leave a Comment