From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/screendisplay/Classes/Helpers/LMJEventTool.m |  242 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 242 insertions(+), 0 deletions(-)

diff --git a/screendisplay/screendisplay/Classes/Helpers/LMJEventTool.m b/screendisplay/screendisplay/Classes/Helpers/LMJEventTool.m
new file mode 100755
index 0000000..5a421d8
--- /dev/null
+++ b/screendisplay/screendisplay/Classes/Helpers/LMJEventTool.m
@@ -0,0 +1,242 @@
+
+#import "LMJEventTool.h"
+
+@implementation LMJEventModel
+
+@end
+
+
+#define yyyyMMddHHmm @"yyyy-MM-dd HH:mm"
+#define SavedLMJEventsIdenti @"SavedLMJEventsIdenti"
+
+@interface LMJEventTool ()
+
+@property (nonatomic, strong) EKEventStore *myEventStore;
+
+@end
+
+
+@implementation LMJEventTool
+
+
+static LMJEventTool *eventTool = nil;
++ (instancetype)sharedEventTool {
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        eventTool = [[LMJEventTool alloc]init];
+    });
+    return eventTool;
+}
+
+
+/**
+ *  ������������
+ */
+- (void )createEventWithEventModel:(LMJEventModel *)eventModel {
+    
+    EKEventStore * eventStore = [[EKEventStore alloc]init];
+    
+    if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
+        [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
+            
+            dispatch_async(dispatch_get_main_queue(), ^{
+                if (error) {
+                    NSLog(@"������������");
+                } else if (!granted) {
+                    NSLog(@"���������");
+                } else {
+                    
+                    //���������������������������������������������������
+                    EKEvent *event = [self getEventWithEKEventModel:eventModel];
+                    
+                    if (event == nil) {
+                        
+                        event = [EKEvent eventWithEventStore:self.myEventStore];
+                        event.title = eventModel.title;
+                        event.location = eventModel.location;
+                        
+                        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
+                        [dateFormatter setDateFormat:yyyyMMddHHmm];
+                        
+                        NSDate *startDate = [dateFormatter dateFromString:eventModel.startDateStr];
+                        NSDate *endDate = [dateFormatter dateFromString:eventModel.endDateStr];
+                        event.startDate = startDate;
+                        event.endDate = endDate;
+                        event.allDay = eventModel.allDay;
+                        event.notes = eventModel.notes;
+                        if (eventModel.alarmStr.length) {
+                            NSInteger alarmTime = [self getAlarmWithStr:eventModel.alarmStr];
+                            if (alarmTime != 0) {
+                                [event addAlarm:[EKAlarm alarmWithRelativeOffset:alarmTime]];
+                            }
+                        }
+                        
+                        [event setCalendar:[self.myEventStore defaultCalendarForNewEvents]];
+                        NSError *err;
+                        BOOL isSave;
+                        isSave = [self.myEventStore saveEvent:event span:EKSpanThisEvent error:&err];
+                        if (isSave) {
+                            NSString *identifer = event.eventIdentifier;
+                            
+                            NSMutableArray *tmpArr = [NSMutableArray arrayWithObject:identifer];
+                            
+                            
+                            NSMutableArray *arr = [[NSUserDefaults standardUserDefaults] objectForKey:SavedLMJEventsIdenti];
+                            if (!arr) {
+                                [[NSUserDefaults standardUserDefaults] setObject:tmpArr forKey:SavedLMJEventsIdenti];
+                            } else {
+                                [tmpArr addObjectsFromArray:arr];
+                                [[NSUserDefaults standardUserDefaults] setObject:tmpArr forKey:SavedLMJEventsIdenti];
+                            }
+                        }
+                    }
+                }
+                
+            }) ;
+        }];
+    }
+}
+
+
+
+/**
+ *  ������������
+ */
+- (BOOL)deleteEvent:(LMJEventModel *)eventModel {
+    
+    
+    BOOL isDeleted = NO;
+    NSString *eventIdentif;
+        
+    EKEvent * event = [self getEventWithEKEventModel:eventModel];
+    eventIdentif = event.eventIdentifier;
+    NSError *err = nil;
+    isDeleted = [self.myEventStore removeEvent:event span:EKSpanThisEvent commit:YES error:&err];
+    
+    if (isDeleted) {
+        [self clearIdentifier:eventIdentif];
+    }
+    
+    return isDeleted;
+}
+
+//������������������ NSUserDefaults ������ identifier
+- (void)clearIdentifier:(NSString *)identifier {
+    NSMutableArray<NSString *> *savedArr = [[NSUserDefaults standardUserDefaults] objectForKey:SavedLMJEventsIdenti];
+    
+   NSArray<NSString *> *newArray = [savedArr filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != %@", identifier]];
+    
+    [[NSUserDefaults standardUserDefaults] setObject:newArray forKey:SavedLMJEventsIdenti];
+}
+
+/**
+ *  ������ identifier������
+ */
+-(void)deleteWithIdentifier:(NSString *)identifier {
+    if (!self.myEventStore) {
+        self.myEventStore = [[EKEventStore alloc]init];
+    }
+    
+    EKEvent *event = [self.myEventStore eventWithIdentifier:identifier];
+    NSLog(@"eventtitle == %@", event.title);
+    
+    BOOL isDeleted = NO;
+    
+    NSError *err = nil;
+    isDeleted = [self.myEventStore removeEvent:event span:EKSpanThisEvent commit:YES error:&err];
+    
+    if (isDeleted) {
+        [self clearIdentifier:event.eventIdentifier];
+    }
+}
+
+/**
+ *  ���������������������
+ */
+- (void)deleteAllCreatedEvent {
+    
+    NSMutableArray *savedArr = [[NSUserDefaults standardUserDefaults] objectForKey:SavedLMJEventsIdenti];
+    
+    for (int i = 0; i < savedArr.count; i++) {
+        NSString *eventIdentifier = savedArr[i];
+        [self deleteWithIdentifier:eventIdentifier];
+    }
+    
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:SavedLMJEventsIdenti];
+}
+
+/**
+ *  ������������������������������������
+ */
+- (EKEvent *)getEventWithEKEventModel:(LMJEventModel *)eventModel {
+    
+    EKEventStore * eventStore = [[EKEventStore alloc]init];
+    self.myEventStore =  eventStore;
+    
+    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
+    [dateFormatter setDateFormat:yyyyMMddHHmm];
+    
+    NSDate *startDate = [dateFormatter dateFromString:eventModel.startDateStr];
+    NSDate *endDate = [dateFormatter dateFromString:eventModel.endDateStr];
+    
+    NSPredicate *predicate = [eventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:@[[eventStore defaultCalendarForNewEvents]]];
+    
+    NSArray *events = [eventStore eventsMatchingPredicate:predicate];
+    
+    EKEvent *resultEvent = nil;
+    if (events) {
+        for (EKEvent *event in events) {
+            if ([self checkEvent:event sameWithEvent:eventModel]) {
+                resultEvent = event;
+            }
+        }
+    }
+    return resultEvent;
+}
+
+/**
+ *  ������������������������������
+ */
+- (BOOL)checkEvent:(EKEvent *)event sameWithEvent:(LMJEventModel *)eventModel {
+    
+    NSInteger modelAlarm = [self getAlarmWithStr:eventModel.alarmStr];
+    
+    EKAlarm *eventAlarm = event.alarms[0];
+    NSInteger alarmInt = eventAlarm.relativeOffset;
+    
+    //��������������� ������ ��������� ������ ��������������� ������������������������
+    if ([event.title isEqualToString: eventModel.title] && (modelAlarm == alarmInt)) {
+        return YES;
+    } else {
+        return NO;
+    }
+}
+
+/**
+ *  ������������ NSinteger
+ */
+- (NSInteger)getAlarmWithStr:(NSString *)alarmStr {
+    
+    NSInteger alarmTime;
+    if (alarmStr.length == 0) {
+        alarmTime = 0;
+    } else if ([alarmStr isEqualToString:@"���������"]) {
+        alarmTime = 0;
+    } else if ([alarmStr isEqualToString:@"1���������"]) {
+        alarmTime = 60.0 * -1.0f;
+    } else if ([alarmStr isEqualToString:@"10���������"]) {
+        alarmTime = 60.0 * -10.f;
+    } else if ([alarmStr isEqualToString:@"30���������"]) {
+        alarmTime = 60.0 * -30.f;
+    } else if ([alarmStr isEqualToString:@"1���������"]) {
+        alarmTime = 60.0 * -60.f;
+    } else if ([alarmStr isEqualToString:@"1������"]) {
+        alarmTime = 60.0 * - 60.f * 24;
+    }else {
+        alarmTime = 0;
+    }
+    return alarmTime;
+}
+
+
+@end

--
Gitblit v1.8.0