Skip to content

Instantly share code, notes, and snippets.

@jackyvo
Created October 21, 2021 14:36
Show Gist options
  • Save jackyvo/61d566efc63552b18b41b965a70ff55c to your computer and use it in GitHub Desktop.
Save jackyvo/61d566efc63552b18b41b965a70ff55c to your computer and use it in GitHub Desktop.
- (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