Saturday, September 14, 2013

Reg Date

RegisterView.h

#import <UIKit/UIKit.h>
#import "HttpWrapper.h"
#import "ASIFormDataRequest.h"
#import "BSKeyboardControls.h"
#import "TermsAndConditon.h"


@interface RegisterView : UIViewController<UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDelegate,HttpWrapperDelegate,UIScrollViewDelegate,BSKeyboardControlsDelegate>{

    IBOutlet UITextField *txtUserName;
    IBOutlet UITextField *txtFirstName;
    IBOutlet UITextField *txtLastName;
    IBOutlet UITextField *txtEmail;
    IBOutlet UITextField *txtPassword;
    IBOutlet UITextField *txtRepassword;
    IBOutlet UITextField *txtDateOfBirth;
    IBOutlet UITextField *txtZip;
    IBOutlet UITextField *txtGender;
    IBOutlet UITextField *txtDisease;
    IBOutlet UIButton *btnRegister;
    IBOutlet UIView *pickerView;

    IBOutlet UIPickerView *picker;
    
    IBOutlet UIScrollView *objScroll;
    IBOutlet UIButton *btnTerms;
    NSString *pickerTitle;

    NSMutableArray *arrPickerData;

    NSMutableData *webData;
    ASIFormDataRequest *request;
    HttpWrapper *registrationRequest;
    BOOL isDateLoad;
    BOOL isGender;
    BOOL isDisease;
}
@property (nonatomic, strong) BSKeyboardControls *keyboardControls;
@property(nonatomic,retain)IBOutlet UITextField *txtUserName;
@property(nonatomic,retain)IBOutlet UITextField *txtFirstName;
@property(nonatomic,retain)IBOutlet UITextField *txtLastName;
@property(nonatomic,retain)IBOutlet UITextField *txtEmail;
@property(nonatomic,retain)IBOutlet UITextField *txtPassword;
@property(nonatomic,retain)IBOutlet UITextField *txtRepassword;
@property(nonatomic,retain)IBOutlet UITextField *txtGender;
@property(nonatomic,retain)IBOutlet UITextField *txtZip;
@property(nonatomic,retain)IBOutlet UITextField *txtDateOfBirth;
@property(nonatomic,retain)IBOutlet UITextField *txtDisease;
@property(nonatomic,retain)IBOutlet UIScrollView *objScroll;

@end

Register.m


#import "RegisterView.h"
#import "AppDelegate.h"
#import "ASIFormDataRequest.h"
#import "NSString+SBJSON.h"

@interface RegisterView ()

@end

@implementation RegisterView
@synthesize keyboardControls,objScroll;
@synthesize txtFirstName,txtLastName,txtEmail,txtPassword,txtRepassword,txtUserName,txtZip,txtDateOfBirth,txtGender,txtDisease;
AppDelegate *appDelegate;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    [objScroll setContentSize:CGSizeMake(320,570)];
     appDelegate = [AppDelegate sharedAppDelegate];
     self.title =@"Register";
    
    NSArray *fields = @[self.txtUserName,self.txtFirstName, self.txtLastName,self.txtGender,self.txtDateOfBirth,self.txtDisease,self.txtPassword,self.txtRepassword,self.txtEmail,self.txtZip];
    [self setKeyboardControls:[[BSKeyboardControls alloc] initWithFields:fields]];
    [self.keyboardControls setDelegate:self];
    
    arrPickerData =[[NSMutableArray alloc]init];
    // Do any additional setup after loading the view from its nib.
}
-(void)viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:NO];
}
#pragma mark - HttpWrapper Delegate Methods
#pragma mark -
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataSuccess:(NSString *)response
{
    NSMutableDictionary *dicsUserInfo = (NSMutableDictionary *)[response JSONValue];
    if([[dicsUserInfo objectForKey:@"message"] isEqualToString:@"Registration Successful"])
    {
        [appDelegate showAlertWithTitle:@"" message:[dicsUserInfo objectForKey:@"message"]];
        [self.navigationController popViewControllerAnimated:YES];
    }
    else
    {
        [[AppDelegate sharedAppDelegate]showAlertWithTitle:@"" message:[dicsUserInfo objectForKey:@"message"]];
    }
    [appDelegate hideLoadingView];
}
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataFail:(NSError *)error
{
    [appDelegate hideLoadingView];
    NSLog(@"======= fetchDataFail =======");
}
-(IBAction)onTermsClick:(id)sender
{
//    TermsAndConditon *termsandcondition =[[TermsAndConditon alloc]initWithNibName:@"TermsAndConditon" bundle:nil];
//    [self.navigationController pushViewController:termsandcondition animated:YES];
   
    [btnTerms setSelected:!btnTerms.selected];
     //[termsandcondition release];
}
-(IBAction)onClickRegister:(id)sender
{
    [self hideKeyboard];
    CGPoint bottomOffset = CGPointMake(0, 0);
    [objScroll setContentOffset:bottomOffset animated:YES];
    
    if(! [self validateForm])
    {
        return;
    }
    [appDelegate showLoadingView];
    
    registrationRequest = [[HttpWrapper alloc] init];
    registrationRequest.delegate=self;
    
    NSMutableDictionary *paramsDict=[[NSMutableDictionary alloc]init];
    [paramsDict setValue:txtUserName.text forKey:@"UserName"];
    [paramsDict setValue:txtFirstName.text forKey:@"FirstName"];
    [paramsDict setValue:txtLastName.text forKey:@"LastName"];
    [paramsDict setValue:txtGender.text forKey:@"Gender"];
    [paramsDict setValue:txtDateOfBirth.text forKey:@"Date_Of_Birth"];
    [paramsDict setValue:txtPassword.text forKey:@"Password"];
    [paramsDict setValue:txtEmail.text forKey:@"Email"];
    [paramsDict setValue:txtDisease.text forKey:@"Disease"];
    [paramsDict setValue:txtZip.text forKey:@"ZipCode"];
    
    NSString *strUrl = [NSString stringWithFormat:@"%@?action=RegisterUser",API_URL];
    [registrationRequest requestWithMethod:@"POST" url:strUrl param:paramsDict];
    [btnRegister resignFirstResponder];
}
-(BOOL) validateForm
{
    BOOL isValid = TRUE;
    if(![txtUserName.text isEqualToString:@""])
    {
        if(![txtFirstName.text isEqualToString:@""])
        {
            if(![txtLastName.text isEqualToString:@""])
            {
                    if(![txtEmail.text isEqualToString:@""])
                    {
                        if (![txtZip.text isEqualToString:@""])
                        {
                            if(![txtPassword.text isEqualToString:@""])
                            {
                                 if ([self validateEmailWithString:txtEmail.text])
                                {
                                    if ([self validateZip:txtZip.text])
                                    {
                                         if (btnTerms.selected)
                                        {
                                            if([txtPassword.text isEqualToString:txtRepassword.text])
                                            {
                                                return isValid;
                                            }
                                            else
                                            {
                                                [appDelegate showAlertWithTitle:@"Alert" message:@"Password Does Not Match."];
                                                txtPassword.text=@"";
                                                txtRepassword.text=@"";
                                                [txtPassword becomeFirstResponder];
                                                isValid = FALSE;
                                                return isValid;
                                            }
                                        }
                                        else
                                        {
                                             [appDelegate showAlertWithTitle:@"Alert" message:@"Please accept Terms and Conditions"];
                                             isValid = FALSE;
                                             return isValid;
                                        }
                                    }
                                    else
                                    {
                                        [appDelegate showAlertWithTitle:@"Alert" message:@"Please Fill Up ZIP Correct"];
                                        txtZip.text=@"";
                                        [txtZip becomeFirstResponder];
                                        isValid = FALSE;
                                        return isValid;
                                    }
                                }
                                else
                                {
                                    [appDelegate showAlertWithTitle:@"Alert" message:@"Please Fill Up Email Correct"];
                                    txtEmail.text=@"";
                                    [txtEmail becomeFirstResponder];
                                    isValid = FALSE;
                                    return isValid;
                                }
                            }
                        }
                    else
                    {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"Password Should Not Be Blank"];
                        isValid = FALSE;
                        [txtPassword becomeFirstResponder];
                        return isValid;
                    }
                }
                else
                {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"Email Should Not Be Blank"];
                        isValid = FALSE;
                        [txtEmail becomeFirstResponder];
                        return isValid;
                }
            }
            else
            {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"Last Name Should Not Be Blank"];
                        isValid = FALSE;
                        [txtUserName becomeFirstResponder];
                        return isValid;
            }
        }
        else
        {
                        [appDelegate showAlertWithTitle:@"Alert" message:@"First Name Should Not Be Blank"];
                        isValid = FALSE;
                        [txtLastName becomeFirstResponder];
                        return isValid;
        }
    }
    else
    {
        [appDelegate showAlertWithTitle:@"Alert" message:@"User Name Should not Be Blank"];
        isValid = FALSE;
        [txtFirstName becomeFirstResponder];
        return isValid;
    }
    return YES;
}
-(void)GenderPickerData{
    
    isGender = YES;
    [arrPickerData removeAllObjects];
    
    [arrPickerData addObject:@"Male"];
    [arrPickerData addObject:@"Female"];
    
    [self selectPickerFirstElement];
    [picker reloadAllComponents];
}
-(void)DiseasePickerData{

    isDisease = YES;
    [arrPickerData removeAllObjects];
    
    [arrPickerData addObject:@"ADHD"];
    [arrPickerData addObject:@"Heart disease"];
    [arrPickerData addObject:@"Hyperlipidemia"];
    [arrPickerData addObject:@"Headaches"];
    [arrPickerData addObject:@"Arthritis"];
    [arrPickerData addObject:@"Osteoporosis"];
    [arrPickerData addObject:@"Insomnia"];
    [arrPickerData addObject:@"Diabetes"];
    [arrPickerData addObject:@"Hypertension - high blood pressure"];
    [arrPickerData addObject:@"Chronic Pain"];
    [arrPickerData addObject:@"GERD heartburn"];
    [arrPickerData addObject:@"BPH - enlarged prostate"];
    [arrPickerData addObject:@"Asthma"];
    [arrPickerData addObject:@"COPD"];
    [arrPickerData addObject:@"Seizures"];
    [arrPickerData addObject:@"Anxiety"];
    [arrPickerData addObject:@"Depression"];
    [arrPickerData addObject:@"Gout"];
    [arrPickerData addObject:@"Cancer"];
    [arrPickerData addObject:@"Seasonal allergies"];
    [arrPickerData addObject:@"Stroke"];
    [arrPickerData addObject:@"Thyroid disease"];
        
    
    [self selectPickerFirstElement];
    [picker reloadAllComponents];
}
-(void)selectPickerFirstElement{
    pickerTitle = [arrPickerData objectAtIndex:0];
    [picker selectRow:0 inComponent:0 animated:YES];
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    CGPoint offset = CGPointMake(0, 0);
    if (textField == txtUserName)
    {
        offset.y = txtUserName.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtFirstName)
    {
        offset.y = txtFirstName.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtLastName)
    {
        offset.y = txtLastName.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtGender)
    {
        isGender = YES;
        [self GenderPickerData];
        [self setPickerForTextField:txtGender
                             Target:self
                       DoneSelector:@selector(onDoneTxtGender)
                     CancelSelector:@selector(onCancelKeyboardToolbar)];
        offset.y = txtGender.frame.origin.y -50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtDateOfBirth)
    {
        isDateLoad = YES;
        [appDelegate setDatePickerForTextField:txtDateOfBirth
                                datePickerMode:UIDatePickerModeDate
                                        Target:self
                                  DoneSelector:nil
                                CancelSelector:nil];
        offset.y =txtDateOfBirth.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtDisease)
    {
        isDisease = YES;
        [self DiseasePickerData];
        [self setPickerForTextField:txtDisease
                             Target:self
                       DoneSelector:@selector(onDoneTxtDisease)
                     CancelSelector:@selector(onCancelKeyboardToolbar)];
        offset.y = txtDisease.frame.origin.y -50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtPassword)
    {
        offset.y = txtPassword.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtRepassword)
    {
        offset.y = txtRepassword.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField == txtEmail)
    {
        offset.y = txtEmail.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    else if (textField ==  txtZip)
    {
        offset.y = txtZip.frame.origin.y-50;
        [objScroll setContentOffset:offset animated:YES];
    }
    [self.keyboardControls setActiveField:textField];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    CGPoint bottomOffset = CGPointMake(0, 0);
    [objScroll setContentOffset:bottomOffset animated:YES];
    return YES;
}
-(void) hideKeyboard
{
    for (id aView in objScroll.subviews) {
        
        if([UITextField  class] == [aView class])
        {
            UITextField *tf = (UITextField *)aView;
            [tf resignFirstResponder];
        }
    }
}
-(void) onCancelKeyboardToolbar
{
    [self.view endEditing:YES];
}
-(void)doneForTextfield:(UITextField *)textField
{
    [textField resignFirstResponder];
    UIDatePicker *pic = (UIDatePicker *)textField.inputView;
    if(pic.datePickerMode == UIDatePickerModeDate)
        textField.text = [appDelegate stringFromDate:pic.date];
    else
        textField.text = [appDelegate timeStringFromDate:pic.date];
}
-(void)onDoneTxtGender
{
    [self doneForPickerTextfield:txtGender];
}
-(void)onDoneTxtDisease
{

    [self doneForPickerTextfield:txtDisease];
}
-(void)doneForPickerTextfield:(UITextField *)textField
{
    [textField resignFirstResponder];
    textField.text = pickerTitle;
}
-(void) setPickerForTextField:(UITextField *)textfield
                       Target:(id)target
                 DoneSelector:(SEL)doneSelector
               CancelSelector:(SEL)cancelSelector
{
    textfield.inputAccessoryView = [self getNumberKeyboardToolbarWithTarget:target DoneSelector:doneSelector CancelSelector:cancelSelector];
    textfield.inputView = picker;
}
#pragma mark Picker View Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {

    return [arrPickerData count];
    
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [arrPickerData objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    pickerTitle  = [arrPickerData objectAtIndex:row];
}
-(UIToolbar *)getNumberKeyboardToolbarWithTarget:(id)target
                                    DoneSelector:(SEL)doneSelector
                                  CancelSelector:(SEL)cancelSelector
{
    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    numberToolbar.barStyle = UIBarStyleBlackTranslucent;
    numberToolbar.items = [NSArray arrayWithObjects:
                           [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:target action:cancelSelector],
                           [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                           [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:target action:doneSelector],
                           nil];
    [numberToolbar sizeToFit];
    return numberToolbar;
}
- (BOOL)validateEmailWithString:(NSString*)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}
- (BOOL)validateZip:(NSString *)candidate {
   
      NSString *strZip =@"^[0-9]{5}(-[0-9]{4})?$";
   // NSString *strZip =@"^(\\d{5}(-\\d{4})$";
    NSPredicate *ZipTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", strZip];
    
    return [ZipTest evaluateWithObject:candidate];
}
#pragma mark Keyboard Controls Delegate

-(void) keyboardControls:(BSKeyboardControls *)keyboardControls selectedField:(UIView *)field inDirection:(BSKeyboardControlsDirection)direction
{
    CGPoint offset = field.frame.origin;
    offset.x = 0;
    offset.y -= 100;
    offset.y+=self.objScroll.frame.origin.y;
    [self.objScroll setContentOffset:offset animated:YES];
}
- (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls1
{
    if(isDateLoad){
        [self doneForTextfield:txtDateOfBirth];
    }
    if (isGender) {
         [self doneForPickerTextfield:txtGender];
    }
    if (isDisease){
        [self doneForPickerTextfield:txtDisease];
    }
    
    [self.objScroll setContentOffset:CGPointZero animated:YES];
    [keyboardControls.activeField resignFirstResponder];
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

No comments:

Post a Comment