Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @interface NSArray (Duplicates)
- - (instancetype)arrayByRemovingDuplicates;
- @end
- @implementation NSArray (Duplicates)
- - (instancetype)arrayByRemovingDuplicates {
- NSMutableSet *returnedObjects = [NSMutableSet set];
- for (id obj in self) {
- if (![returnedObjects containsObject:obj]) {
- [returnedObjects addObject:obj];
- }
- }
- return returnedObjects.allObjects;
- }
- @end
- @implementation SCCalendarTaskPresenter
- -(NSArray *)executingTask:(NSDate*)selectedDate {
- if (selectedDate == nil) {
- selectedDate = [NSDate date];
- }
- NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
- NSDateComponents *selectedDateComponent = [calendar components:NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth
- fromDate:selectedDate];
- NSTimeInterval selectedDateInterval = [calendar dateFromComponents:selectedDateComponent].timeIntervalSince1970;
- BOOL (^checkEqualsDateComponents)(NSDateComponents *firstComponents, NSDateComponents *secondComponents) = ^BOOL(NSDateComponents *firstComponents, NSDateComponents *secondComponents) {
- if (firstComponents.day == secondComponents.day &&
- firstComponents.month == secondComponents.month &&
- firstComponents.year == secondComponents.year) {
- return YES;
- } else {
- return NO;
- }
- };
- NSArray<SCTask *> *allTasks = [SCTask MR_findAll];
- NSMutableArray<SCTask *> *filteredTasks = [NSMutableArray array];
- for (SCTask *task in allTasks) {
- NSDateComponents *startDateComponent = [calendar components:NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth
- fromDate:[NSDate dateWithTimeIntervalSince1970:task.startDate.integerValue]];
- NSDateComponents *finishedDateComponent = [calendar components:NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth
- fromDate:[NSDate dateWithTimeIntervalSince1970:task.finishDate.integerValue]];
- //Started task check
- if (checkEqualsDateComponents(startDateComponent, selectedDateComponent)) {
- [filteredTasks addObject:task];
- }
- //Finished tasks check
- if (checkEqualsDateComponents(finishedDateComponent, selectedDateComponent)) {
- [filteredTasks addObject:task];
- }
- //Intermediate tasks check
- NSTimeInterval startDateInterval = [calendar dateFromComponents:startDateComponent].timeIntervalSince1970;
- NSTimeInterval finishDateInterval = [calendar dateFromComponents:finishedDateComponent].timeIntervalSince1970;
- if (startDateInterval <= selectedDateInterval && finishDateInterval >= selectedDateInterval) {
- [filteredTasks addObject:task];
- }
- }
- return [filteredTasks arrayByRemovingDuplicates];
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement