Advertisement
Guest User

Untitled

a guest
Jan 27th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #import "ProfileController.h"
  2. #import "EventsController.h"
  3. #import "EventsCell.h"
  4. #import "Event.h"
  5.  
  6. typedef NS_ENUM(NSUInteger, EventType) {
  7.     AllEventsType = 1,
  8.     GameEventsType,
  9.     SympathiesEventsType,
  10.     ViewsEventsType
  11. };
  12.  
  13. @interface EventsController () <UITableViewDataSource, UITableViewDelegate>
  14.  
  15. @property(nonatomic, strong)NSArray *events;
  16. @property(nonatomic, strong)NSArray *statusNew;
  17. @property(nonatomic, strong)NSArray *statusOld;
  18.  
  19. @property (weak, nonatomic) IBOutlet UITableView *tableView;
  20. @property (weak, nonatomic) IBOutlet UISegmentedControl *segment;
  21.  
  22. @property(nonatomic, strong)NSArray *allEvents;
  23.  
  24. @end
  25.  
  26. @implementation EventsController
  27.  
  28. #pragma mark - View Life Cycle
  29.  
  30. - (void)viewDidLoad
  31. {
  32.     [super viewDidLoad];
  33.    
  34.     self.events = [NSArray array];
  35.    
  36.     [self initialConfigurations];
  37.    
  38.     [self setupSegmentButton];
  39. }
  40.  
  41. -(void)viewWillAppear:(BOOL)animated
  42. {
  43.     [super viewWillAppear:animated];
  44.    
  45.     self.segment.selectedSegmentIndex = 0;
  46.     [self loadData];
  47. }
  48.  
  49. - (UIStatusBarStyle)preferredStatusBarStyle
  50. {
  51.     return UIStatusBarStyleLightContent;
  52. }
  53.  
  54. #pragma mark - Configurations
  55.  
  56. - (void)initialConfigurations
  57. {
  58.     [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
  59.     self.navigationController.navigationBar.shadowImage = [UIImage new];
  60.     self.navigationController.navigationBar.translucent = YES;
  61.    
  62.     self.tableView.tableFooterView = [UIView new];
  63.    
  64.     self.tableView.estimatedRowHeight = 70.0;
  65.    
  66.     if (IS_IPAD) {
  67.         self.tableView.estimatedRowHeight = 120.0;
  68.         self.tableView.rowHeight = 120.0;
  69.     }
  70.    
  71.     self.tableView.rowHeight = UITableViewAutomaticDimension;
  72. }
  73.  
  74. #pragma mark - Data Handling
  75.  
  76. - (void)loadData
  77. {
  78.     dispatch_async(dispatch_get_main_queue(), ^{
  79.         [MBProgressHUD showHUDAddedTo:self.view animated:YES];
  80.     });
  81.    
  82.     User *currentUser = [UserManager sharedManager].currentUser;
  83.    
  84.     __weak typeof(self) selfInstance = self;
  85.    
  86.     [[APIManager sharedManager] getEventsForUserWithId:currentUser.userID.stringValue
  87.                                                 secret:currentUser.secret
  88.                                                   type:@(self.segment.selectedSegmentIndex + 1)
  89.                                        completionBlock:^(id responseObject, NSError *error) {
  90.         dispatch_async(dispatch_get_main_queue(), ^{
  91.             [MBProgressHUD hideHUDForView:self.view animated:YES];
  92.         });
  93.        
  94.         if (!error)
  95.         {
  96.             selfInstance.events = [responseObject[@"event"] eventsFromArrayOfDictionary];
  97.             selfInstance.allEvents = [responseObject[@"event"] eventsFromArrayOfDictionary];
  98.            
  99.             selfInstance.statusOld = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 1"];
  100.             selfInstance.statusNew = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 0"];
  101.            
  102.             dispatch_async(dispatch_get_main_queue(), ^{
  103.                 [selfInstance.tableView reloadData];
  104.             });
  105.            
  106.             for (__weak Event *ev in self.statusNew) {
  107.                 [[APIManager sharedManager] markEventWithIdAsOld:ev.eventId
  108.                                                    forUserWithId:[UserManager sharedManager].currentUser.userID.stringValue
  109.                                                           secret:[UserManager sharedManager].currentUser.secret
  110.                                                  completionBlock:^(id responseObject, NSError *error) {
  111.                                                      if ([responseObject[@"event"] boolValue]) {
  112.                                                          ev.eventStatus = @(1);
  113.                                                      }
  114.                                                  }];
  115.             }
  116.         }
  117.     }];
  118. }
  119.  
  120. #pragma mark - Actions
  121.  
  122. - (IBAction)segmentClicked:(id)sender {
  123.     switch ((self.segment.selectedSegmentIndex+1)) {
  124.         case AllEventsType:
  125.         {
  126.             self.events = self.allEvents;
  127.             break;
  128.         }
  129.         case GameEventsType:
  130.         {
  131.             self.events = [self.allEvents filteredByPredStr:@"self.eventType.integerValue == 5"];
  132.             break;
  133.         }
  134.         case SympathiesEventsType:
  135.         {
  136.             self.events = [self.allEvents filteredByPredStr:@"(SELF.eventType.integerValue == 2)  OR (SELF.eventType.integerValue == 3) OR (SELF.eventType.integerValue == 4)"];
  137.             break;
  138.         }
  139.         case ViewsEventsType:
  140.         {
  141.             self.events = [self.allEvents filteredByPredStr:@"SELF.eventType.integerValue == 1"];
  142.             break;
  143.         }
  144.         default:
  145.             break;
  146.     }
  147.    
  148.     self.statusOld = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 1"];
  149.     self.statusNew = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 0"];
  150.    
  151.     [self.tableView reloadData];
  152. }
  153.  
  154. #pragma mark - UITableViewDataSource
  155.  
  156. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  157. {
  158.     return 2;
  159. }
  160.  
  161. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  162. {
  163.     return section > 0?  self.statusOld.count : self.statusNew.count;
  164. }
  165.  
  166. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  167. {
  168.     EventsCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([EventsCell class])];
  169.     cell.event = indexPath.section>0? self.statusOld[indexPath.row] : self.statusNew[indexPath.row];
  170.    
  171.     if (indexPath.section == 0 && indexPath.row == (self.statusNew.count-1)) {
  172.         cell.separator.hidden = YES;
  173.     }
  174.    
  175.     return cell;
  176. }
  177.  
  178. #pragma mark - UITableViewDelegate
  179.  
  180. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  181. {
  182.     EventsCell *cell = [tableView cellForRowAtIndexPath:indexPath];
  183.     Event *event = cell.event;
  184.    
  185.     if (event.eventType.integerValue != 1) {
  186.         return;
  187.     }
  188.    
  189.     User *interlocator = [[User alloc] initWithUserID:event.guestID secret:[UserManager sharedManager].currentUser.secret andPushToken:[UserManager sharedManager].currentUser.pushToken];
  190.     interlocator.city = @"";
  191.     interlocator.birtday = 0;
  192.     interlocator.avatarURL = photoURLFromName(event.guestAvatarURL);
  193.     interlocator.username = event.eventName;
  194.    
  195.     ProfileController *contr = [[ProfileController alloc] initWithUser:interlocator];
  196.     [[self.navigationController navigationBar] setTintColor:[UIColor clearColor]];
  197.     [self.navigationController pushViewController:contr animated:YES];
  198. }
  199.  
  200. -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
  201. {
  202.     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 10)];
  203.     view.backgroundColor = [UIColor clearColor];
  204.     return section>0? 0 : view;
  205. }
  206.  
  207. - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
  208. {
  209.     return section>0? 0: 10;
  210. }
  211.  
  212. #pragma mark - Private
  213.  
  214. -(void)setupSegmentButton
  215. {
  216.     self.segment.apportionsSegmentWidthsByContent = YES;
  217.    
  218.     UIColor *color = [self gradientColorForSegmentSelectedStateWithText:NSLocalizedString(@"Общий рядом", nil) sizeForIphone:17 forIpad:25];
  219.    
  220.     UIFont *font = [UIFont fontWithName:@"HelveticaNeueCyr-Medium" size:IS_IPAD? 19 : 13];
  221.    
  222.     [self.segment setTitleTextAttributes:@{NSForegroundColorAttributeName : color, NSFontAttributeName: font} forState:UIControlStateSelected];
  223.    
  224.     [self.segment setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName: font} forState:UIControlStateNormal];
  225. }
  226.  
  227. - (UIColor *)gradientColorForSegmentSelectedStateWithText:(NSString *)text sizeForIphone:(CGFloat)iPhone forIpad:(CGFloat)iPad
  228. {
  229.     UIColor* startColor = [Utils colorWithHexString:@"#fe0d0d"];
  230.     UIColor* endColor = [Utils colorWithHexString:@"#bf0000"];
  231.    
  232.     UILabel *label = [[UILabel alloc] init];
  233.     label.text = text;
  234.     label.font = [UIFont fontWithName:@"HelveticaNeueCyr-Medium" size:IS_IPAD? iPad : iPhone];
  235.    
  236.     UIColor *result = [Utils gradientColorForLabel:label fromColor:startColor toColor:endColor];
  237.    
  238.     return result;
  239. }
  240.  
  241. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement