// Загрузка дополнительных данных с сервера по API для форм
- (void)loadAdditionalInformationFromServer
{
loadingError = nil;
success = YES;
group = dispatch_group_create();
[self startOfferEducationsRetrieveOperation];
[self startOfferLanguageLevelsRetrieveOperation];
[self startOfferTradesRetrieveOperation];
[self startOfferLanguagesRetrieveOperation];
[self startOperatingScheduleRetrieveOperation];
[self startRegionsRetrieveOperation];
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
[self.delegate resumeManagerDidFinishLoadingAdditionalInformationWithSuccess:success error:loadingError];
});
//dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
dispatch_release(group);
}
// Запрос на получение уровней образования
- (void)startOfferEducationsRetrieveOperation
{
if ([[RRSession sharedSession] offerEducations] == nil) {
// Блок успешного завершения запроса
SuccessBlock successBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *jsonArray = (NSArray *)JSON;
NSMutableArray *temp = [NSMutableArray new];
for (NSDictionary *jsonDic in jsonArray) {
RROfferEducation *obj = [[RROfferEducation alloc] initFromDic:jsonDic];
[temp addObject:obj];
}
[[RRSession sharedSession] setOfferEducations:temp];
dispatch_group_leave(group);
};
// Добавление запроса на загрузку в очередь
[self addOperationForMethod:RRApiMethodOfferEducations successBlock:successBlock];
}
}
// Запрос на получение уровней владения языком
- (void)startOfferLanguageLevelsRetrieveOperation
{
if ([[RRSession sharedSession] offerLanguageLevels] == nil) {
// Блок успешного завершения запроса
SuccessBlock successBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *jsonArray = (NSArray *)JSON;
NSMutableArray *temp = [NSMutableArray new];
for (NSDictionary *jsonDic in jsonArray) {
RROfferLanguageLevel *obj = [[RROfferLanguageLevel alloc] initFromDic:jsonDic];
[temp addObject:obj];
}
[[RRSession sharedSession] setOfferLanguageLevels:temp];
dispatch_group_leave(group);
};
// Добавление запроса на загрузку в очередь
[self addOperationForMethod:RRApiMethodOfferLanguageLevels successBlock:successBlock];
}
}
// Запрос на получение языков
- (void)startOfferLanguagesRetrieveOperation
{
if ([[RRSession sharedSession] offerLanguages] == nil) {
// Блок успешного завершения запроса
SuccessBlock successBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *jsonArray = (NSArray *)JSON;
NSMutableArray *temp = [NSMutableArray new];
for (NSDictionary *jsonDic in jsonArray) {
RROfferLanguage *obj = [[RROfferLanguage alloc] initFromDic:jsonDic];
[temp addObject:obj];
}
[[RRSession sharedSession] setOfferLanguages:temp];
dispatch_group_leave(group);
};
// Добавление запроса на загрузку в очередь
[self addOperationForMethod:RRApiMethodOfferLanguages successBlock:successBlock];
}
}
// Запрос на получение графиков работы
- (void)startOperatingScheduleRetrieveOperation
{
if ([[RRSession sharedSession] operatingSchedules] == nil) {
// Блок успешного завершения запроса
SuccessBlock successBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *jsonArray = (NSArray *)JSON;
NSMutableArray *temp = [NSMutableArray new];
for (NSDictionary *jsonDic in jsonArray) {
RROperatingSchedule *obj = [[RROperatingSchedule alloc] initFromDic:jsonDic];
[temp addObject:obj];
}
[[RRSession sharedSession] setOperatingSchedules:temp];
dispatch_group_leave(group);
};
// Добавление запроса на загрузку в очередь
[self addOperationForMethod:RRApiMethodOperatingSchedules successBlock:successBlock];
}
}
// Запрос на получение регионов
- (void)startRegionsRetrieveOperation
{
if ([[RRSession sharedSession] regions] == nil) {
// Блок успешного завершения запроса
SuccessBlock successBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *jsonArray = (NSArray *)JSON;
NSMutableArray *temp = [NSMutableArray new];
for (NSDictionary *jsonDic in jsonArray) {
RRRegion *obj = [[RRRegion alloc] initFromDic:jsonDic];
[temp addObject:obj];
}
[[RRSession sharedSession] setRegions:temp];
dispatch_group_leave(group);
};
// Добавление запроса на загрузку в очередь
[self addOperationForMethod:RRApiMethodRegions successBlock:successBlock];
}
}
// Запрос на получение рубрик вакансий
- (void)startOfferTradesRetrieveOperation
{
if ([[RRSession sharedSession] offerTrades] == nil) {
// Блок успешного завершения запроса
SuccessBlock successBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *jsonArray = (NSArray *)JSON;
NSMutableArray *temp = [NSMutableArray new];
for (NSDictionary *jsonDic in jsonArray) {
RROfferTrade *obj = [[RROfferTrade alloc] initFromDic:jsonDic];
[temp addObject:obj];
}
[[RRSession sharedSession] setOfferTrades:temp];
dispatch_group_leave(group);
};
// Добавление запроса на загрузку в очередь
[self addOperationForMethod:RRApiMethodOfferTrades successBlock:successBlock];
}
}
// Добавление запроса на загрузку в очередь
- (void)addOperationForMethod:(NSString *)methodName successBlock:(SuccessBlock)successBlock
{
dispatch_group_enter(group);
RRHTTPClient *client = [RRHTTPClient sharedClient];
NSString *apiMethodPath = [NSString stringWithFormat:@"%@%@", [RRHelper apiDomain], methodName];
NSMutableURLRequest *request = [client requestWithMethod:@"GET" path:apiMethodPath parameters:nil];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:successBlock failure:[self getStandartFailureBlock]];
[operation start];
//[[RRServerConnection sharedConnection] addCustomOperation:operation];
}
// Блок обработки ошибки при запросе
- (FailureBlock)getStandartFailureBlock
{
FailureBlock failureBlock = ^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
success = NO;
loadingError = error;
NSLog(@"Error: %@", error);
[RRHelper showServerErrorMessage];
dispatch_group_leave(group);
};
return failureBlock;
}