LogIn with CoreData

//  LoginViewController.swift
//  coreDataPractice11


import UIKit
import CoreData

class ViewController: UIViewController {

    @IBOutlet var lblTitle: UILabel!
    
    @IBOutlet var txtemail: UITextField!
    
    var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
    var temp = true
    
    var emp = [Employee]()
    
    @IBOutlet var txtpassword: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    override func viewWillAppear(_ animated: Bool) {
        
        do {
           emp = try context.fetch(Employee.fetchRequest())
            
        }catch{
            print("faild")
        }
        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func btnregister(_ sender: UIButton) {
        
        let SignupVc : SignUPViewController = self.storyboard?.instantiateViewController(withIdentifier: "SignUPViewController") as! SignUPViewController
        self.navigationController?.pushViewController(SignupVc, animated: true)
    }

    @IBAction func btnlogin(_ sender: UIButton) {
        
        print(emp.count)
        
        for i in 0...emp.count - 1
        {
        print(emp[i].name!)
        print(emp[i].email!)
        print(emp[i].password!)
            
            if txtemail.text == emp[i].email && txtpassword.text == emp[i].name
            {
                temp = true
                break
            }
            else
            {
                temp = false
            }
        }
        
        
        if temp == false {
            
            
            
            let alert = UIAlertController(title: "invalid" , message: "invalid User email and password", preferredStyle: .alert)
            
            let okalert =  UIAlertAction(title: "OK", style: .default)
            {
                (action) in
                
                self.resignFirstResponder()
                
            }
            
            
            alert.addAction(okalert)
            self.present(alert, animated: true, completion: nil)
            
            

           
        }
        
     else
        {
            print("done")
        }
        
        let HomeVc : HomeViewController = self.storyboard?.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
        self.navigationController?.pushViewController(HomeVc, animated: true)
        

    }
}




//  SignUPViewController.swift
//  coreDataPractice11

import UIKit
import CoreData

class SignUPViewController: UIViewController {

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
    @IBOutlet var lblTitle: UILabel!
    @IBOutlet var txtName: UITextField!
    @IBOutlet var txtEmail: UITextField!
    @IBOutlet var password: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        
        

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

       @IBAction func btnSignUp(_ sender: UIButton) {
        let emp = Employee(context: context)
        
        emp.name = txtName.text
        emp.email = txtEmail.text
        emp.password = password.text
        
        (UIApplication.shared.delegate as! AppDelegate).saveContext()
        

        self.navigationController?.popViewController(animated: true)
        
    }

}



//  HomeViewController.swift
//  coreDataPractice11


import UIKit
import CoreData

class HomeViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    @IBOutlet var tblView: UITableView!
    
    var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
    var emp = [Employee]()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    
    override func viewWillAppear(_ animated: Bool) {
        do{
            emp = try context.fetch(Employee.fetchRequest())
        }catch{
            print("faild")
        }
      self.tblView.reloadData()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return emp.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell : HomeTableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! HomeTableViewCell
        
        cell.lblName.text = emp[indexPath.row].name
        cell.lblEmail.text = emp[indexPath.row].email
        
        return cell
        
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let row1 = indexPath.row
        print("row= \(row1)")
        
        let EditVc : EditViewController = self.storyboard?.instantiateViewController(withIdentifier: "EditViewController") as! EditViewController
        EditVc.ab = row1
        self.navigationController?.pushViewController(EditVc, animated: true)
        
    }
    
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        
        let dataRow = self.emp[indexPath.row]
        
        if editingStyle == .delete
        {
           self.emp.remove(at: indexPath.row)
            self.context.delete(dataRow)
            
            do{
                try self.context.save()
            }catch
            {
                print(error.localizedDescription)
            }
            self.tblView.reloadData()
     
            
        }
    }
    
}





//  EditViewController.swift
//  coreDataPractice11


import UIKit
import CoreData

class EditViewController: UIViewController {

    @IBOutlet var lbltitle: UILabel!
    
    @IBOutlet var txtName: UITextField!
    
    @IBOutlet var txtPassword: UITextField!
    @IBOutlet var txtEmail: UITextField!
    
    var context  = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
    var ab = Int()
    
    var emp = [Employee]()
      
    override func viewDidLoad() {
        super.viewDidLoad()
        
        do{
            emp = try context.fetch(Employee.fetchRequest())
        }catch
        {
            print("failed")
        }

        
        
        
print("ab= \(ab)")
        txtName.text = emp[ab].name
        txtEmail.text = emp[ab].email
        txtPassword.text = emp[ab].password
        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

   
    @IBAction func btnDone(_ sender: UIButton) {
        
        emp[ab].name =  txtName.text
        emp[ab].email =  txtEmail.text
        emp[ab].password =  txtPassword.text
        
        (UIApplication.shared.delegate as! AppDelegate).saveContext()
        
        self.navigationController?.popViewController(animated: true)
        
        
    }
}


Comments