// // ViewController.m // AntsContract // // Created by Ray on 12/16/16. // Copyright © 2016 United Software Applications, Inc. All rights reserved. // #import "RootViewController.h" #import "DocumentPageViewController.h" #import "LoginViewController.h" #import "AppDelegate.h" #import "RAUtils.h" #import "PDFViewController.h" #import "DocumentListViewController.h" #import "PendingDocumentsViewController.h" #import "ACNetwork.h" #import "PDFUtils.h" #import "AddExtDocumentViewController.h" @interface RootViewController () @property (nonatomic,assign) BOOL hasShowLoginView; @end @implementation RootViewController - (void)viewDidLoad { [super viewDidLoad]; self.title= @"eSign"; self.welcomeLabel.text=@"Not sign in"; self.buttonHIC.enabled = false; self.buttonSRL.enabled = false; self.coverView.hidden = false; [self reloadBG]; NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary]; NSString* build =[infoDict objectForKey:@"CFBundleVersion"]; NSString* version =[infoDict objectForKey:@"CFBundleShortVersionString"]; NSString* versionNum = [NSString stringWithFormat:@"VeS1.%@.%@",version,build]; self.labelVer.text = versionNum; // Do any additional setup after loading the view, typically from a nib. } -(void) viewDidAppear:(BOOL)animated { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.accessMode == AppAccessModeOnline) { self.labelMode.text = @"Mode: Online"; [self.switchMode setOn:true]; self.navigationItem.rightBarButtonItem = self.ibSignin; } else { self.labelMode.text = @"Mode: Offline"; [self.switchMode setOn:false]; self.navigationItem.rightBarButtonItem = nil; } if(!appDelegate.bLogin) [self presentLogin:self.ibSignin]; } -(void) presentLogin:(id)sender { // 确保只Presnet LoginView一次. if (self.hasShowLoginView) return; self.hasShowLoginView = YES; UIBarButtonItem* bbitem = sender; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; { LoginViewController * loginvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; loginvc.returnValue = ^(bool blogin){ // [self checklogin :true]; self.hasShowLoginView = NO; if(blogin) { self.welcomeLabel.text=[NSString stringWithFormat:@"Welcome %@",appDelegate.user]; [bbitem setTitle:@"Sign out"]; self.buttonHIC.enabled = true; self.buttonSRL.enabled = true; self.coverView.hidden = true; // 处理三方app 传入文件 AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.shareFile) { AddExtDocumentViewController * addVC; addVC = [ [UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"AddExtDocumentViewController"]; addVC.is_present = true; addVC.doc_number = nil; addVC.arr_documents = [NSMutableArray arrayWithObjects:appDelegate.shareFile, nil]; appDelegate.shareFile=nil; // notesVC.docNotes = notes; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:addVC] ; navi.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"filter present........."); // self.btop = false; // <#code#> }]; } } else { appDelegate.shareFile=nil; self.welcomeLabel.text=@"Not sign in"; self.buttonHIC.enabled = false; self.buttonSRL.enabled = false; self.coverView.hidden = false; } }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ; navi.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ DebugLog(@"login present........."); }]; } } //-(void) leak_debug //{ // // // CGPDFDocumentRef document = [PDFUtils OpenPDF:@"GEIC - Home Improvement Contract 2017.pdf"]; // // self.total_page = CGPDFDocumentGetNumberOfPages (self.document); // // NSMutableDictionary * controlTemplate = [self templateInit:[PDFUtils loadControl:@"GEIC - Home Improvement Contract 2017.json"]]; // // // NSString* pdffile = [PDFUtils SavePDF:controlTemplate source:document window_rect:CGRectMake(0, 0, 768, 960)]; // // CGPDFDocumentRelease(document); // // // CFRelease(document); // // NSString* zipfile=[ACNetwork prepareUploadFile:pdffile json:controlTemplate]; // // [self previewPDF:pdffile]; // // // // // // //} //-(NSMutableDictionary*) templateInit:(NSMutableDictionary*) template //{ // // // NSString* temp = NSTemporaryDirectory(); // NSString* filename =[NSString stringWithFormat:@"%@.png", [[NSUUID UUID] UUIDString]]; // NSString* qrpath=[temp stringByAppendingPathComponent:filename]; // UIImage* qrimg=[RAUtils generateBarCode:@"leak test" width:300 height:44];//[QRCodeGenerator qrImageForString:order_code imageSize:240]; // bool bwrite=[UIImagePNGRepresentation(qrimg)writeToFile: qrpath atomically:YES]; // // // // for(int i=0;i<[template[@"count"] intValue];i++) // { // NSMutableDictionary* page =template[[NSString stringWithFormat:@"page_%d",i]]; // for(int j=0;j<[page[@"count"] intValue];j++) // { // NSMutableDictionary* control =page[[NSString stringWithFormat:@"control_%d",j]]; // NSString* type = control[@"type"]; // NSString* field =control[@"field"]; // if([type isEqualToString:@"Label"]) // { // if([field isEqualToString:@"doc_number"]) // { // control[@"value"]= @"leak test"; // } // } // else if([type isEqualToString:@"Image"]) // { // NSString* name =control[@"name"]; // if([name isEqualToString:@"BarCode"]) // { // if(bwrite) // control[@"value"]= qrpath; // } // } // else if([type isEqualToString:@"DatePicker"]) // { // NSString* name =control[@"aname"]; // if([name isEqualToString:@"Today's Date"]) // { // NSDateFormatter * formatter = [[NSDateFormatter alloc]init]; // [formatter setDateFormat:@"MM/dd/yyyy"]; // NSString* date = [formatter stringFromDate:[NSDate date]] ; // // control[@"value"]= date; // } // } // } // } // return template; //} - (IBAction)onNewCustomerClick:(id)sender { // [self leak_debug]; // return; __weak typeof(self) weakSelf = self; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.accessMode == AppAccessModeOffline) { __block NSString* offline_docnumber =[ACNetwork offline_docnumber]; if(offline_docnumber==nil) { [RAUtils message_alert:@"Offline document number prefix not found, Please check your user name and make sure you had signed in at least once." title:@"Create Customer" controller:self] ; return; } DocumentPageViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DocumentPageViewController" ]; // dvc.templateName = @"debug.json"; dvc.templatePath = [[NSBundle mainBundle] pathForResource:@"GEIC - Home Improvement Contract 2017 Update.json" ofType:nil]; dvc.pdfPath = [[NSBundle mainBundle] pathForResource:@"GEIC - Home Improvement Contract 2017 Update.pdf" ofType:nil]; dvc.docment_id = offline_docnumber; dvc.OnSave=^(NSString* file, NSString* subject) { [weakSelf previewPDF:file title:offline_docnumber subject:subject]; }; [self.navigationController pushViewController:dvc animated:true]; } else { UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Create customer"]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSMutableDictionary* json=[[ACNetwork new_document] mutableCopy]; dispatch_async(dispatch_get_main_queue(), ^{ [waitalert dismissWithClickedButtonIndex:0 animated:FALSE]; if([json[@"result"] intValue]==RESULT_TRUE) { DocumentPageViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DocumentPageViewController" ]; // dvc.templateName = @"debug.json"; dvc.templatePath = [[NSBundle mainBundle] pathForResource:@"GEIC - Home Improvement Contract 2017 Update.json" ofType:nil]; dvc.pdfPath = [[NSBundle mainBundle] pathForResource:@"GEIC - Home Improvement Contract 2017 Update.pdf" ofType:nil]; dvc.docment_id = json[@"doc_number"]; dvc.OnSave=^(NSString* file, NSString* subject) { [weakSelf previewPDF:file title:json[@"doc_number"] subject:subject]; }; [self.navigationController pushViewController:dvc animated:true]; } else { // [RAUtils message_alert:[json valueForKey:@"err_msg"] title:@"Create Customer" controller:self] ; UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Create Customer" message:@"Can not create new customer on server, do you want to create an offline document?" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { __block NSString* offline_docnumber =[ACNetwork offline_docnumber]; if(offline_docnumber==nil) { [RAUtils message_alert:@"Offline document number prefix not found, Please check your user name and make sure you had signed in at least once." title:@"Create Customer" controller:self] ; return; } [appDelegate SwitchToOffline:appDelegate.user]; DocumentPageViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DocumentPageViewController" ]; // dvc.templateName = @"debug.json"; dvc.templatePath = [[NSBundle mainBundle] pathForResource:@"GEIC - Home Improvement Contract 2017 Update.json" ofType:nil]; dvc.pdfPath = [[NSBundle mainBundle] pathForResource:@"GEIC - Home Improvement Contract 2017 Update.pdf" ofType:nil]; dvc.docment_id = offline_docnumber; dvc.OnSave=^(NSString* file, NSString* subject) { [weakSelf previewPDF:file title:offline_docnumber subject:subject]; }; [self.navigationController pushViewController:dvc animated:true]; }]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { DebugLog(@"Cancel"); }]; [alertControl addAction:actionOne]; [alertControl addAction:alertthree]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; } }); }); } } - (IBAction)onCustomerPerDocClick:(id)sender { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.accessMode == AppAccessModeOffline) { [RAUtils message_alert:@"You can only access this function onder online mode." title:@"Offline mode." controller:self]; return; } DocumentListViewController* docVC =[self.storyboard instantiateViewControllerWithIdentifier:@"DocumentListViewController" ]; [self.navigationController pushViewController:docVC animated:true]; } - (IBAction)onPendingDocClick:(id)sender { PendingDocumentsViewController* docVC =[self.storyboard instantiateViewControllerWithIdentifier:@"PendingDocumentsViewController" ]; [self.navigationController pushViewController:docVC animated:true]; } - (IBAction)onModeSwitch:(id)sender { UISwitch* sw = sender; NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults]; NSString * user = [AESCrypt decrypt:[defaults stringForKey:@"user"] password:@"usai"]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(sw.isOn) { self.navigationItem.rightBarButtonItem = self.ibSignin; self.labelMode.text = @"Mode: Online"; [appDelegate Logout]; [self.ibSignin setTitle:@"Sign in"]; [self presentLogin:self.ibSignin]; // // [self.switchMode setOn:true]; } else { UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Enter user name for offline mode." message:nil preferredStyle:UIAlertControllerStyleAlert]; [alertControl addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.text = user; textField.keyboardType=UIKeyboardTypeDefault; textField.delegate = nil; }]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { UITextField *name = alertControl.textFields.firstObject; if(name.text.length==0) { self.navigationItem.rightBarButtonItem = self.ibSignin; [sw setOn: true]; [RAUtils message_alert:@"User name is required." title:@"Can not switch to offline mode." controller:self]; } else { self.navigationItem.rightBarButtonItem = nil; self.labelMode.text = @"Mode: Offline"; [appDelegate SwitchToOffline:name.text]; self.welcomeLabel.text=[NSString stringWithFormat:@"Welcome %@",appDelegate.user]; self.coverView.hidden = true; } }]; // [alertControl addAction:actionOne]; [alertControl addAction:alertthree]; UIAlertAction *alertcancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { [sw setOn: true]; }]; [alertControl addAction:alertcancel]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; // [self.switchMode setOn:false]; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void) reloadBG { UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation]; switch (orientation) { case UIInterfaceOrientationPortrait: case UIInterfaceOrientationPortraitUpsideDown: { self.coverBG.image = [UIImage imageNamed:@"home_bg_p"]; self.imageBG.image = [UIImage imageNamed:@"home_bg_p"]; break; } case UIInterfaceOrientationLandscapeLeft: case UIInterfaceOrientationLandscapeRight: { self.coverBG.image = [UIImage imageNamed:@"home_bg_l"]; self.imageBG.image = [UIImage imageNamed:@"home_bg_l"]; break; } default: self.coverBG.image = [UIImage imageNamed:@"home_bg_p"]; self.imageBG.image = [UIImage imageNamed:@"home_bg_p"]; break; } } -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { [self reloadBG]; // [self initControl]; // // [self.pdfPageView setNeedsLayout]; // [self.pdfPageView setNeedsDisplay]; // // UIDeviceOrientation dev_ori = [[UIDevice currentDevice]orientation]; // // // UIApplication * app = [UIApplication sharedApplication]; // // AppDelegate *appDelegate = (AppDelegate *)[app delegate]; // // [appDelegate didRotated]; // // // if (UIInterfaceOrientationIsLandscape(orientation)|| UIInterfaceOrientationIsPortrait(orientation)) // // { // // self.orientation = orientation; // // [self.collectionview.collectionViewLayout invalidateLayout]; // // DebugLog(@"routed"); // // } } - (void)dealWithUILogout { self.welcomeLabel.text=@"Not sign in"; // [sender setTitle:@"Sign in" forState:UIControlStateNormal]; [self.ibSignin setTitle:@"Sign in"]; self.buttonHIC.enabled = false; self.buttonSRL.enabled = false; self.coverView.hidden = false; } - (IBAction)OnSigninClick:(id)sender { UIBarButtonItem* bbitem = sender; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.bLogin) { UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Are you sure to sign out?" message:nil preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Sign out"]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* logout_json = nil; logout_json = [ACNetwork logout]; dispatch_async(dispatch_get_main_queue(), ^{ [waitalert dismissWithClickedButtonIndex:0 animated:FALSE]; if([[logout_json valueForKey:@"result"] intValue]==2) { self.welcomeLabel.text=@"Not sign in"; // [sender setTitle:@"Sign in" forState:UIControlStateNormal]; [bbitem setTitle:@"Sign in"]; self.buttonHIC.enabled = false; self.buttonSRL.enabled = false; self.coverView.hidden = false; } else { [RAUtils message_alert:[logout_json valueForKey:@"err_msg"] title:@"Sign out" controller:self] ; } }); }); }]; // [alertControl addAction:actionOne]; [alertControl addAction:alertthree]; UIAlertAction *alertcancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { }]; [alertControl addAction:alertcancel]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; } else [self presentLogin:sender]; } -(void) previewPDF:(NSString*)file title:(NSString*)title subject:(NSString*)subject { // return; NSString* name=@"";//[self.content_data[indexPath.row] valueForKey:@"tear_name"]; NSString* url= file;//[self.content_data[indexPath.row] valueForKey:@"pdf_path"]; bool isLocalFile= true;//[self.content_data[indexPath.row] valueForKey:@"isLocalFile"]; PDFViewController *ViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PDFViewController"]; ViewController.url = url; ViewController.canSave = false; ViewController.isLocalfile=isLocalFile; ViewController.defaultStyle = true; ViewController.save_name=title; ViewController.title = title; // NSString* subject; // if (company.length==0) { // NSString* cur_time =[RAUtils current_date]; // subject =name;//[NSString stringWithFormat:@"NPD Product List %@",cur_time]; // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // NSString* customer_email= [appDelegate.customerInfo valueForKey:@"customer_email"]; NSMutableArray* send_to = [[NSMutableArray alloc]init]; // if(customer_email.length>0) // { // send_to=[[customer_email componentsSeparatedByString:NSLocalizedString(@";", nil)] mutableCopy]; // // customer_email compo // // [send_to addObject:customer_email]; // } ViewController.mail_to = send_to; // } // else // { // subject = [NSString stringWithFormat:@"Tear sheet for %@",company ]; // } // ViewController.attachment_name = [NSString stringWithFormat:@"NPD_Product_List %@.pdf",cur_time]; ViewController.mail_subject = subject; ViewController.hidenavi = false; [self.navigationController pushViewController:ViewController animated:YES]; } //- (IBAction)OnHICClick:(id)sender { // // // __weak typeof(self) weakSelf = self; // // // DocumentPageViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DocumentPageViewController" ]; // // dvc.templateName = @"GEIC - Home Improvement Contract 2016.json"; // dvc.pdfName = @"GEIC - Home Improvement Contract 2017.pdf"; // // dvc.OnSave=^(NSString* file) // { // // [weakSelf previewPDF:file]; // }; // // [self.navigationController pushViewController:dvc animated:true]; //} //- (IBAction)OnSRLClick:(id)sender { // // DocumentPageViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DocumentPageViewController" ]; // // dvc.templateName = @"SUBCONTRACTORS REFERRAL LIST.json"; // dvc.pdfName = @"SUBCONTRACTORS REFERRAL LIST.pdf"; // dvc.OnSave=^(NSString* file) // { // // //[self previewPDF:file]; // }; // // [self.navigationController pushViewController:dvc animated:true]; //} @end