Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import "ProfileController.h"
- #import "EventsController.h"
- #import "EventsCell.h"
- #import "Event.h"
- typedef NS_ENUM(NSUInteger, EventType) {
- AllEventsType = 1,
- GameEventsType,
- SympathiesEventsType,
- ViewsEventsType
- };
- @interface EventsController () <UITableViewDataSource, UITableViewDelegate>
- @property(nonatomic, strong)NSArray *events;
- @property(nonatomic, strong)NSArray *statusNew;
- @property(nonatomic, strong)NSArray *statusOld;
- @property (weak, nonatomic) IBOutlet UITableView *tableView;
- @property (weak, nonatomic) IBOutlet UISegmentedControl *segment;
- @property(nonatomic, strong)NSArray *allEvents;
- @end
- @implementation EventsController
- #pragma mark - View Life Cycle
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.events = [NSArray array];
- [self initialConfigurations];
- [self setupSegmentButton];
- }
- -(void)viewWillAppear:(BOOL)animated
- {
- [super viewWillAppear:animated];
- self.segment.selectedSegmentIndex = 0;
- [self loadData];
- }
- - (UIStatusBarStyle)preferredStatusBarStyle
- {
- return UIStatusBarStyleLightContent;
- }
- #pragma mark - Configurations
- - (void)initialConfigurations
- {
- [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
- self.navigationController.navigationBar.shadowImage = [UIImage new];
- self.navigationController.navigationBar.translucent = YES;
- self.tableView.tableFooterView = [UIView new];
- self.tableView.estimatedRowHeight = 70.0;
- if (IS_IPAD) {
- self.tableView.estimatedRowHeight = 120.0;
- self.tableView.rowHeight = 120.0;
- }
- self.tableView.rowHeight = UITableViewAutomaticDimension;
- }
- #pragma mark - Data Handling
- - (void)loadData
- {
- dispatch_async(dispatch_get_main_queue(), ^{
- [MBProgressHUD showHUDAddedTo:self.view animated:YES];
- });
- User *currentUser = [UserManager sharedManager].currentUser;
- __weak typeof(self) selfInstance = self;
- [[APIManager sharedManager] getEventsForUserWithId:currentUser.userID.stringValue
- secret:currentUser.secret
- type:@(self.segment.selectedSegmentIndex + 1)
- completionBlock:^(id responseObject, NSError *error) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [MBProgressHUD hideHUDForView:self.view animated:YES];
- });
- if (!error)
- {
- selfInstance.events = [responseObject[@"event"] eventsFromArrayOfDictionary];
- selfInstance.allEvents = [responseObject[@"event"] eventsFromArrayOfDictionary];
- selfInstance.statusOld = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 1"];
- selfInstance.statusNew = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 0"];
- dispatch_async(dispatch_get_main_queue(), ^{
- [selfInstance.tableView reloadData];
- });
- for (__weak Event *ev in self.statusNew) {
- [[APIManager sharedManager] markEventWithIdAsOld:ev.eventId
- forUserWithId:[UserManager sharedManager].currentUser.userID.stringValue
- secret:[UserManager sharedManager].currentUser.secret
- completionBlock:^(id responseObject, NSError *error) {
- if ([responseObject[@"event"] boolValue]) {
- ev.eventStatus = @(1);
- }
- }];
- }
- }
- }];
- }
- #pragma mark - Actions
- - (IBAction)segmentClicked:(id)sender {
- switch ((self.segment.selectedSegmentIndex+1)) {
- case AllEventsType:
- {
- self.events = self.allEvents;
- break;
- }
- case GameEventsType:
- {
- self.events = [self.allEvents filteredByPredStr:@"self.eventType.integerValue == 5"];
- break;
- }
- case SympathiesEventsType:
- {
- self.events = [self.allEvents filteredByPredStr:@"(SELF.eventType.integerValue == 2) OR (SELF.eventType.integerValue == 3) OR (SELF.eventType.integerValue == 4)"];
- break;
- }
- case ViewsEventsType:
- {
- self.events = [self.allEvents filteredByPredStr:@"SELF.eventType.integerValue == 1"];
- break;
- }
- default:
- break;
- }
- self.statusOld = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 1"];
- self.statusNew = [self.events filteredByPredStr:@"SELF.eventStatus.integerValue == 0"];
- [self.tableView reloadData];
- }
- #pragma mark - UITableViewDataSource
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- {
- return 2;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- return section > 0? self.statusOld.count : self.statusNew.count;
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- EventsCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([EventsCell class])];
- cell.event = indexPath.section>0? self.statusOld[indexPath.row] : self.statusNew[indexPath.row];
- if (indexPath.section == 0 && indexPath.row == (self.statusNew.count-1)) {
- cell.separator.hidden = YES;
- }
- return cell;
- }
- #pragma mark - UITableViewDelegate
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- EventsCell *cell = [tableView cellForRowAtIndexPath:indexPath];
- Event *event = cell.event;
- if (event.eventType.integerValue != 1) {
- return;
- }
- User *interlocator = [[User alloc] initWithUserID:event.guestID secret:[UserManager sharedManager].currentUser.secret andPushToken:[UserManager sharedManager].currentUser.pushToken];
- interlocator.city = @"";
- interlocator.birtday = 0;
- interlocator.avatarURL = photoURLFromName(event.guestAvatarURL);
- interlocator.username = event.eventName;
- ProfileController *contr = [[ProfileController alloc] initWithUser:interlocator];
- [[self.navigationController navigationBar] setTintColor:[UIColor clearColor]];
- [self.navigationController pushViewController:contr animated:YES];
- }
- -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
- {
- UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 10)];
- view.backgroundColor = [UIColor clearColor];
- return section>0? 0 : view;
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
- {
- return section>0? 0: 10;
- }
- #pragma mark - Private
- -(void)setupSegmentButton
- {
- self.segment.apportionsSegmentWidthsByContent = YES;
- UIColor *color = [self gradientColorForSegmentSelectedStateWithText:NSLocalizedString(@"Общий рядом", nil) sizeForIphone:17 forIpad:25];
- UIFont *font = [UIFont fontWithName:@"HelveticaNeueCyr-Medium" size:IS_IPAD? 19 : 13];
- [self.segment setTitleTextAttributes:@{NSForegroundColorAttributeName : color, NSFontAttributeName: font} forState:UIControlStateSelected];
- [self.segment setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName: font} forState:UIControlStateNormal];
- }
- - (UIColor *)gradientColorForSegmentSelectedStateWithText:(NSString *)text sizeForIphone:(CGFloat)iPhone forIpad:(CGFloat)iPad
- {
- UIColor* startColor = [Utils colorWithHexString:@"#fe0d0d"];
- UIColor* endColor = [Utils colorWithHexString:@"#bf0000"];
- UILabel *label = [[UILabel alloc] init];
- label.text = text;
- label.font = [UIFont fontWithName:@"HelveticaNeueCyr-Medium" size:IS_IPAD? iPad : iPhone];
- UIColor *result = [Utils gradientColorForLabel:label fromColor:startColor toColor:endColor];
- return result;
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement