Created
October 21, 2021 14:36
-
-
Save jackyvo/61d566efc63552b18b41b965a70ff55c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (void) findANPRInfo:(FindAnprInfoModel *) anpr andDelegate:(id<FindAnprInfoModelDelegate>) delegate { | |
if (![anpr.plate isEqualToString:@""] && ![anpr.region isEqualToString:@""] && delegate) { | |
_delegate = delegate; | |
} | |
NSMutableDictionary* parameters = [NSMutableDictionary new]; | |
parameters[@"registration_no"] = anpr.plate; | |
if ([BPConfiguration loadLoggedStation].identifier > 0) { | |
parameters[@"device_id"] = [NSString stringWithFormat:@"%@",[BPConfiguration loadLoggedStation].identifier]; | |
} | |
NSString* findAnprUrl = [NSString stringWithFormat:@"%@%@", BP_API_BASE_URL, BP_API_FIND_ANPR_INFO]; | |
DLog(@"%@",findAnprUrl); | |
NSMutableURLRequest* findAnprRequest = [self getGETRequestForURL:findAnprUrl withParameters:parameters]; | |
DLog(@"%@",findAnprRequest); | |
__block AFHTTPRequestOperation* findcarsReqOperation = [[AFHTTPRequestOperation alloc] initWithRequest:findAnprRequest]; | |
findcarsReqOperation.responseSerializer = [AFJSONResponseSerializer serializer]; | |
[findcarsReqOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { | |
DLog(@"%@",responseObject); | |
if (responseObject && [responseObject isKindOfClass:[NSDictionary class]]) { | |
if ([responseObject objectForKey:@"error"]) { | |
} else { | |
NSLog(@"anpr primary key = %@", anpr.primaryKey); | |
NSDictionary *non_anpr = [responseObject objectForKey:@"non_anpr"]; | |
NSDictionary *anprDict = [responseObject objectForKey:@"anpr"]; | |
int currentSiteLookups = [AppUtils checkNilNumber:[responseObject objectForKey:@"current_site_lookups"]]; | |
int incidents = [AppUtils checkNilNumber:[responseObject objectForKey:@"incidents"]]; | |
int totalLookups = [AppUtils checkNilNumber:[responseObject objectForKey:@"total_lookups"]]; | |
int orangeAnprAlertNumber = [AppUtils checkNilNumber:[responseObject objectForKey:@"orange_anpr_alert_number"]]; | |
int redAnprAlertNumber = [AppUtils checkNilNumber:[responseObject objectForKey:@"red_anpr_alert_number"]]; | |
// ([AppUtils checkNil:[non_anpr objectForKey:@"color"]] == YES && [AppUtils checkNil:[anprDict objectForKey:@"color"]] == YES) | |
if ([responseObject count] == 0 || (non_anpr == nil && anprDict == nil)) { | |
anpr.textPlate = anpr.plate; | |
anpr.textLine2 = @"Lookups: 1/1"; | |
anpr.colorCell = @"dark_grey";//green//orange | |
NSString *response = @""; | |
NSString *manufactureYear = [AppUtils upperCase:[AppUtils upperCase:anpr.manufactureYear]]; | |
NSString *color = [AppUtils upperCase:[AppUtils upperCase:anpr.color]]; | |
NSString *make = [AppUtils upperCase:[AppUtils upperCase:anpr.make]]; | |
NSString *bodyType = [AppUtils upperCase:[AppUtils upperCase:anpr.bodyType]]; | |
response = [[NSString stringWithFormat:@"%@ %@ %@ %@", color, make, bodyType, manufactureYear] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; | |
anpr.vehicle = response; | |
[FindAnprInfoModel updateAnprListStoreToUserDefault:anpr]; | |
if (_delegate && [(id) _delegate respondsToSelector:@selector(findAnprInfoSucceeded:)]) { | |
[_delegate findAnprInfoSucceeded:anpr]; | |
} | |
return; | |
} | |
//save to ANPR STORE SERVER | |
BOOL isNilColor = [AppUtils checkNil:[non_anpr objectForKey:@"color"]]; | |
BOOL isNilMake = [AppUtils checkNil:[non_anpr objectForKey:@"make"]]; | |
if ((non_anpr == nil || (isNilColor || isNilMake)) || (anprDict == nil)) { | |
[FindAnprInfoModel updateAnprListStoreToUserDefault:anpr]; | |
} | |
//Color logic | |
if (incidents > 0) { | |
anpr.colorCell = @"red"; | |
} else { | |
if (anpr.confidence < 80) { | |
anpr.colorCell = @"orange"; | |
} else { | |
if (anprDict == nil) { | |
anpr.colorCell = @"green"; | |
} else { | |
NSString *preMake = [[AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"make"]]] uppercaseString]; | |
if (![[anpr.make uppercaseString] isEqualToString:preMake]) { | |
anpr.colorCell = @"orange"; | |
} else { | |
anpr.colorCell = @"green"; | |
} | |
} | |
} | |
} | |
if (non_anpr != nil) { | |
NSString *bodyType = @""; | |
NSString *color = @""; | |
NSString *make = @""; | |
NSString *model = @""; | |
NSString *manufactureYear = @""; | |
NSString *carStatus = [AppUtils checkNilString:[non_anpr objectForKey:@"status"]]; | |
NSString *carStatusUpperCase = [carStatus uppercaseString]; | |
if ([carStatusUpperCase isEqualToString:@"STOLEN"] || [carStatusUpperCase isEqualToString:@"CANCELLED"] || [carStatusUpperCase isEqualToString:@"SUSPENDED"]) { | |
anpr.colorCell = @"red_orange"; | |
} | |
if ([AppUtils checkNil:[non_anpr objectForKey:@"color"]] || [AppUtils checkNil:[non_anpr objectForKey:@"make"]]) { | |
if (anprDict != nil && ![AppUtils checkNil:[non_anpr objectForKey:@"color"]] && ![AppUtils checkNil:[non_anpr objectForKey:@"make"]]) { | |
bodyType = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"body_type"]]]; | |
color = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"color"]]]; | |
make = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"make"]]]; | |
model = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"model"]]]; | |
manufactureYear = [AppUtils checkNilString:[anprDict objectForKey:@"year"]]; | |
anpr.bodyType = bodyType; | |
anpr.color = color; | |
anpr.make = make; | |
anpr.model = model; | |
anpr.manufactureYear = manufactureYear; | |
} else { | |
bodyType = [AppUtils upperCase:anpr.bodyType]; | |
color = [AppUtils upperCase:anpr.color]; | |
make = [AppUtils upperCase:anpr.make]; | |
model = [AppUtils upperCase:anpr.model]; | |
manufactureYear = anpr.manufactureYear; | |
} | |
} else { | |
bodyType = [AppUtils upperCase:[AppUtils checkNilString:[non_anpr objectForKey:@"body_type"]]]; | |
color = [AppUtils upperCase:[AppUtils checkNilString:[non_anpr objectForKey:@"color"]]]; | |
make = [AppUtils upperCase:[AppUtils checkNilString:[non_anpr objectForKey:@"make"]]]; | |
model = [AppUtils upperCase:[AppUtils checkNilString:[non_anpr objectForKey:@"model"]]]; | |
manufactureYear = [AppUtils checkNilString:[non_anpr objectForKey:@"year"]]; | |
anpr.bodyType = bodyType; | |
anpr.color = color; | |
anpr.make = make; | |
anpr.model = model; | |
anpr.manufactureYear = manufactureYear; | |
} | |
anpr.offenceCount = incidents; | |
anpr.totalLookups = totalLookups; | |
anpr.currentSiteLookups = currentSiteLookups; | |
anpr.orangeAnprAlertNumber = orangeAnprAlertNumber; | |
anpr.redAnprAlertNumber = redAnprAlertNumber; | |
NSString *response = [[NSString stringWithFormat:@"%@ %@ %@ %@", color, make, bodyType, manufactureYear] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; | |
anpr.vehicle = response; | |
if ([anpr.colorCell isEqualToString:@"red"]) { | |
anpr.textPlate = anpr.plate; | |
if (anpr.offenceCount > 1) { | |
anpr.textLine2 = [NSString stringWithFormat:@"%i Past Incidents", anpr.offenceCount]; | |
} else { | |
anpr.textLine2 = [NSString stringWithFormat:@"%i Past Incident", anpr.offenceCount]; | |
} | |
} else if ([anpr.colorCell isEqualToString:@"green"]) { | |
anpr.textPlate = anpr.plate; | |
if (anpr.totalLookups == 0 && anpr.currentSiteLookups == 0) { | |
anpr.textLine2 = @"Lookups: 1/1"; | |
} else { | |
anpr.textLine2 = [NSString stringWithFormat:@"Lookups: %i/%i", anpr.totalLookups, anpr.currentSiteLookups]; | |
} | |
} else { | |
if (anpr.confidence < 80) { | |
anpr.textPlate = [NSString stringWithFormat:@"%@?", anpr.plate]; | |
anpr.vehicle = anpr.vehicle; | |
} else { | |
NSString *preColor = [AppUtils checkNilString:[[[anpr.vehicleDictionary objectForKey:@"color"] firstObject] objectForKey:@"name"]]; | |
NSString *preMake = [AppUtils checkNilString:[[[anpr.vehicleDictionary objectForKey:@"make"] firstObject] objectForKey:@"name"]]; | |
if (![anpr.color isEqualToString:preColor] || ![anpr.make isEqualToString:preMake]) { | |
anpr.textPlate = anpr.plate; | |
anpr.vehicle = [NSString stringWithFormat:@"%@?", anpr.vehicle]; | |
} | |
} | |
if (anpr.totalLookups == 0 && anpr.currentSiteLookups == 0) { | |
anpr.textLine2 = @"Lookups: 1/1"; | |
} else { | |
anpr.textLine2 = [NSString stringWithFormat:@"Lookups: %i/%i", anpr.totalLookups, anpr.currentSiteLookups]; | |
} | |
} | |
if ([anpr.colorCell isEqualToString:@"red_orange"]) { | |
anpr.textPlate = anpr.plate; | |
anpr.vehicle = [NSString stringWithFormat:@"Possible %@", carStatus]; | |
anpr.isTapRedOrange = NO; | |
} | |
} else { | |
NSString *bodyType = @""; | |
NSString *color = @""; | |
NSString *make = @""; | |
NSString *model = @""; | |
NSString *manufactureYear = @""; | |
if (![AppUtils checkNil:[anprDict objectForKey:@"color"]] && ![AppUtils checkNil:[anprDict objectForKey:@"make"]]) { | |
bodyType = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"body_type"]]]; | |
color = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"color"]]]; | |
make = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"make"]]]; | |
model = [AppUtils upperCase:[AppUtils checkNilString:[anprDict objectForKey:@"model"]]]; | |
manufactureYear = [AppUtils checkNilString:[anprDict objectForKey:@"year"]]; | |
} else { | |
bodyType = [AppUtils upperCase:anpr.bodyType]; | |
color = [AppUtils upperCase:anpr.color]; | |
make = [AppUtils upperCase:anpr.make]; | |
model = [AppUtils upperCase:anpr.model]; | |
manufactureYear = anpr.manufactureYear; | |
} | |
anpr.bodyType = bodyType; | |
anpr.color = color; | |
anpr.make = make; | |
anpr.model = model; | |
anpr.manufactureYear = manufactureYear; | |
anpr.offenceCount = incidents; | |
anpr.totalLookups = totalLookups; | |
anpr.currentSiteLookups = currentSiteLookups; | |
anpr.orangeAnprAlertNumber = orangeAnprAlertNumber; | |
anpr.redAnprAlertNumber = redAnprAlertNumber; | |
NSString *response = [[NSString stringWithFormat:@"%@ %@ %@ %@", color, make, bodyType, manufactureYear] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; | |
anpr.vehicle = response; | |
if ([anpr.colorCell isEqualToString:@"red"]) { | |
anpr.textPlate = anpr.plate; | |
if (anpr.offenceCount > 1) { | |
anpr.textLine2 = [NSString stringWithFormat:@"%i Past Incidents", anpr.offenceCount]; | |
} else { | |
anpr.textLine2 = [NSString stringWithFormat:@"%i Past Incident", anpr.offenceCount]; | |
} | |
} else if ([anpr.colorCell isEqualToString:@"green"]) { | |
anpr.textPlate = anpr.plate; | |
if (anpr.totalLookups == 0 && anpr.currentSiteLookups == 0) { | |
anpr.textLine2 = @"Lookups: 1/1"; | |
} else { | |
anpr.textLine2 = [NSString stringWithFormat:@"Lookups: %i/%i", anpr.totalLookups, anpr.currentSiteLookups]; | |
} | |
} else { | |
if (anpr.confidence < 80) { | |
anpr.textPlate = [NSString stringWithFormat:@"%@?", anpr.plate]; | |
anpr.vehicle = anpr.vehicle; | |
} else { | |
NSString *preColor = [[AppUtils checkNilString:[[[anpr.vehicleDictionary objectForKey:@"color"] firstObject] objectForKey:@"name"]] uppercaseString]; | |
NSString *preMake = [[AppUtils checkNilString:[[[anpr.vehicleDictionary objectForKey:@"make"] firstObject] objectForKey:@"name"]] uppercaseString]; | |
if (![[anpr.color uppercaseString] isEqualToString:preColor] || ![[anpr.make uppercaseString] isEqualToString:preMake]) { | |
anpr.textPlate = anpr.plate; | |
anpr.vehicle = [NSString stringWithFormat:@"%@?", anpr.vehicle]; | |
} | |
} | |
if (anpr.totalLookups == 0 && anpr.currentSiteLookups == 0) { | |
anpr.textLine2 = @"Lookups: 1/1"; | |
} else { | |
anpr.textLine2 = [NSString stringWithFormat:@"Lookups: %i/%i", anpr.totalLookups, anpr.currentSiteLookups]; | |
} | |
} | |
} | |
} | |
if (_delegate && [(id) _delegate respondsToSelector:@selector(findAnprInfoSucceeded:)]) { | |
[_delegate findAnprInfoSucceeded:anpr]; | |
} | |
} else { | |
if (_delegate && [(id) _delegate respondsToSelector:@selector(findAnprInfoFailed:)]) { | |
[_delegate findAnprInfoFailed:anpr]; | |
} | |
} | |
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { | |
DLog(@"%@",error); | |
if (_delegate && [(id) _delegate respondsToSelector:@selector(findAnprInfoFailed:)]) { | |
[_delegate findAnprInfoFailed:anpr]; | |
} | |
}]; | |
[findcarsReqOperation start]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment