RegisterViewController.swift 9.24 KB
//
//  RegisterViewController.swift
//  YouerLiveVideo
//
//  Created by 左丞 on 16/11/9.
//  Copyright © 2016年 左丞. All rights reserved.
//

import UIKit

class RegisterViewController: UIViewController,UIAlertViewDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UITextFieldDelegate{
    

    @IBOutlet weak var sendVerificationCode: UIButton!
    @IBOutlet var nikeNameTextFiled: UITextField! //昵称
    @IBOutlet var passwordTextField: UITextField! //输入密码
    @IBOutlet var confirmPasswordTextField: UITextField!//确认密码
    @IBOutlet weak var phoneNumber: UITextField!
    @IBOutlet weak var inputVerificationCode: UITextField!//验证码
    @IBOutlet weak var registerBtn: UIButton!
    @IBOutlet weak var nickNameLabel: UILabel!
    @IBOutlet weak var sendPhotoImage: UIImageView!
    var iconImage: UIImage?
    var name: String=""
    var timer :Timer!
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func touchAction(_ sender: AnyObject) {
        self.view.endEditing(true)//回收键盘
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        if timer != nil{
            timer.invalidate()
            timer = nil
        }
    }
    
    @IBAction func sendVerificationCodeClickAction(_ sender: AnyObject) {//发验证码
        self.view.endEditing(true)
        if nikeNameTextFiled.text!.characters.count<11{
            if passwordTextField.text!.characters.count>=6 && passwordTextField.text!.characters.count<=8 && confirmPasswordTextField.text!.characters.count>=6 && confirmPasswordTextField.text!.characters.count<=8{
                if passwordTextField.text!==confirmPasswordTextField.text!{
                    if (phoneNumber.text?.isMobilePhoneNumber())! {
                        SVProgressHUD.show(withStatus: "获取验证码...")
                        SVProgressHUD.setDefaultMaskType(.black)

                        AppDelegate.instance().httpServer.getChangePhoneCaptcha(mobile: phoneNumber.text!, completionHandler: { (str, error) in
                            SVProgressHUD.dismiss()
                            if error==nil {
                                if JSON.fromString(jsonString: str)!["status"].intValue == 1{
                                    httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
                                        self.view.makeToast("验证码发送成功")
                                        self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(RegisterViewController.timerFire), userInfo: sender, repeats: true)

                                        self.nikeNameTextFiled.isUserInteractionEnabled=false
                                        self.phoneNumber.isUserInteractionEnabled=false
                                        self.passwordTextField.isUserInteractionEnabled=false
                                        self.confirmPasswordTextField.isUserInteractionEnabled=false
                                        }, failHandler: { (error) in
                                            self.view.makeToast("验证码发送失败:\(error.localizedDescription)")
                                    })
                                }else{
                                    self.view.makeToast("验证码发送失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
                                }
                            }else{
                                self.view.makeToast("验证码发送失败:\(error!.description)")
                            }
                        })
                    }else{
                        self.view.makeToast("请输入正确手机号")
                    }
                }else{
                    self.view.makeToast("两次输入密码不一致")
                }
            }else{
                self.view.makeToast("密码必须为6-8位字符或者数字")
            }
        }else{
            self.view.makeToast("昵称必须小于11位")
        }
    }
    
    @IBAction func registerBtnAction(_ sender: AnyObject) {//注册
        if inputVerificationCode.text!.characters.count == 4{
            SVProgressHUD.show(withStatus: "注册...")
            SVProgressHUD.setDefaultMaskType(.black)
            let parameters:Dictionary<String,AnyObject>=["account":phoneNumber.text! as AnyObject,"password":passwordTextField.text!.md5() as AnyObject,"vercode":inputVerificationCode.text! as AnyObject,"nickname": (nikeNameTextFiled.text!=="" ? phoneNumber.text! : nikeNameTextFiled.text!) as AnyObject]
            AppDelegate.instance().httpServer.getCreateUser(parameters: parameters) { (str, error) in
                SVProgressHUD.dismiss()
                self.nikeNameTextFiled.isUserInteractionEnabled=true
                self.phoneNumber.isUserInteractionEnabled=true
                self.passwordTextField.isUserInteractionEnabled=true
                self.confirmPasswordTextField.isUserInteractionEnabled=true
                if error==nil {
                    if JSON.fromString(jsonString: str)!["status"].intValue == 1{
                        httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
                            self.navigationController!.popViewController(animated: true)
                            AppDelegate.instance().window?.makeToast("注册成功")
                            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "refreshLoginUser"), object: self.phoneNumber.text!)
                            //是否登录
                            }, failHandler: { (error) in
                                self.view.makeToast("注册失败:\(error.localizedDescription)")
                        })
                    }else{
                        self.view.makeToast("注册失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
                    }
                }else{
                    self.view.makeToast("注册失败:\(error!.description)")
                }
            }
        }else{
            self.view.makeToast("验证码必须是四位数字")
        }
    }
    
    var num:Int = 0
    func timerFire(){
        let btn = timer.userInfo as! UIButton
        if num == 60{
            btn.setTitle("重新获取(\(60-num))", for: .normal)
            btn.isUserInteractionEnabled = true
            btn.backgroundColor = UIColorFromRGB(0x007aff)
            self.timer.invalidate()
            return
        }
        btn.setTitle("重新获取(\(60-num))", for: .normal)
        btn.isUserInteractionEnabled = false
        btn.backgroundColor = UIColor.lightGray
        num += 1
        
    }
    
    @IBAction func loginBtnClickAction(_ sender: AnyObject) {
        self.navigationController!.popViewController(animated: true)
    }

    @IBAction func nickNameSetTapAction(_ sender: AnyObject) {
        let alert = UIAlertController(title: "设置昵称", message: "", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil))
        alert.addAction(UIAlertAction(title: "确定", style: .default, handler: { (action) in
            if alert.textFields![0].text == ""{
                return
            }
            self.name = alert.textFields![0].text!
            self.nickNameLabel.text = alert.textFields![0].text
        }))

        alert.addTextField { (text) in
            text.placeholder = "请输入昵称"
        }
        self.present(alert, animated: true, completion: nil)
    }
    
    @IBAction func sendPhotoImageTapAction(_ sender: AnyObject) {
        if cameraOrPhotPermissions(0, view: self.view){
            let vc = UIImagePickerController()
            vc.delegate = self
            vc.sourceType = .photoLibrary
            self.present(vc, animated: true, completion: nil)
        }else{
            
        }
    }
    
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        picker.dismiss(animated: true, completion: { () -> Void in
            var oimage = info[UIImagePickerControllerOriginalImage] as? UIImage
            oimage = oimage!.imageScaledToScale()
            let filePath=FilesManager.imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))
            try? UIImageJPEGRepresentation(oimage!,0.5)!.write(to: URL(fileURLWithPath: filePath), options: [.atomic])
            self.sendPhotoImage.layer.masksToBounds = true
            self.sendPhotoImage.layer.cornerRadius = 25
            self.sendPhotoImage.image = oimage
            self.iconImage = oimage
        })
    }
    
    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}