Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @interface NSArray (Duplicates)
  2.  
  3. - (instancetype)arrayByRemovingDuplicates;
  4.  
  5. @end
  6.  
  7. @implementation NSArray (Duplicates)
  8.  
  9. - (instancetype)arrayByRemovingDuplicates {
  10.     NSMutableSet *returnedObjects = [NSMutableSet set];
  11.    
  12.     for (id obj in self) {
  13.         if (![returnedObjects containsObject:obj]) {
  14.             [returnedObjects addObject:obj];
  15.         }
  16.     }
  17.    
  18.     return returnedObjects.allObjects;
  19. }
  20.  
  21. @end
  22.  
  23. @implementation SCCalendarTaskPresenter
  24.  
  25. -(NSArray *)executingTask:(NSDate*)selectedDate {
  26.     if (selectedDate == nil) {
  27.         selectedDate = [NSDate date];
  28.     }
  29.    
  30.     NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
  31.    
  32.     NSDateComponents *selectedDateComponent = [calendar components:NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth
  33.                                                               fromDate:selectedDate];
  34.     NSTimeInterval selectedDateInterval = [calendar dateFromComponents:selectedDateComponent].timeIntervalSince1970;
  35.    
  36.     BOOL (^checkEqualsDateComponents)(NSDateComponents *firstComponents, NSDateComponents *secondComponents) = ^BOOL(NSDateComponents *firstComponents, NSDateComponents *secondComponents) {
  37.         if (firstComponents.day == secondComponents.day &&
  38.             firstComponents.month == secondComponents.month &&
  39.             firstComponents.year == secondComponents.year) {
  40.             return YES;
  41.         } else {
  42.             return NO;
  43.         }
  44.     };
  45.    
  46.     NSArray<SCTask *> *allTasks = [SCTask MR_findAll];
  47.    
  48.     NSMutableArray<SCTask *> *filteredTasks = [NSMutableArray array];
  49.    
  50.     for (SCTask *task in allTasks) {
  51.         NSDateComponents *startDateComponent = [calendar components:NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth
  52.                                                             fromDate:[NSDate dateWithTimeIntervalSince1970:task.startDate.integerValue]];
  53.         NSDateComponents *finishedDateComponent = [calendar components:NSCalendarUnitDay | NSCalendarUnitYear | NSCalendarUnitMonth
  54.                                                                fromDate:[NSDate dateWithTimeIntervalSince1970:task.finishDate.integerValue]];
  55.        
  56.         //Started task check
  57.         if (checkEqualsDateComponents(startDateComponent, selectedDateComponent)) {
  58.             [filteredTasks addObject:task];
  59.         }
  60.        
  61.         //Finished tasks check
  62.         if (checkEqualsDateComponents(finishedDateComponent, selectedDateComponent)) {
  63.             [filteredTasks addObject:task];
  64.         }
  65.        
  66.         //Intermediate tasks check
  67.        
  68.         NSTimeInterval startDateInterval = [calendar dateFromComponents:startDateComponent].timeIntervalSince1970;
  69.         NSTimeInterval finishDateInterval = [calendar dateFromComponents:finishedDateComponent].timeIntervalSince1970;
  70.        
  71.         if (startDateInterval <= selectedDateInterval && finishDateInterval >= selectedDateInterval) {
  72.             [filteredTasks addObject:task];
  73.         }
  74.     }
  75.    
  76.     return [filteredTasks arrayByRemovingDuplicates];
  77. }
  78.  
  79. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement