| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- //
- // LoginPresenter.swift
- // Sirani
- //
- // Created by Anhar Solehudin on 07/04/19.
- // Copyright © 2019 Anhar Solehudin. All rights reserved.
- //
- import Foundation
- import SwiftyJSON
- import Firebase
- class LoginPresenter {
-
- private let STATUS_SUCCESS = "ok"
- private let FAILED_LOGIN_MESSAGE = "Login Gagal, Silahkan Ulangi Kembali"
- private let siraniApiServices: SiraniApiServices
- weak private var view: LoginViewDelegate?
-
- init(siraniApiServices: SiraniApiServices) {
- self.siraniApiServices = siraniApiServices
- }
-
- func attachView(view: LoginViewDelegate?) {
- self.view = view
- }
-
- func detachView() {
- self.view = nil
- }
-
- func login(username: String, password: String) {
- self.view?.showLoading()
-
- siraniApiServices.postAuthLogin(username: username, password: password).responseJSON { response in
- if response.error == nil {
- guard let data = response.data else { return }
- if let json = try? JSON(data: data) {
- let status = json["status_login"].stringValue
- if status == self.STATUS_SUCCESS {
- let user = User(
- username: json["username"].stringValue,
- userid: json["user_id"].intValue,
- roleid: json["role_id"].stringValue,
- rolename: json["role_name"].stringValue,
- custid: json["cust_id"].intValue,
- fullname: json["fullname"].stringValue,
- roles: json["roles"].stringValue
- )
- self.loginSucces(user: user)
- } else {
- let message = json["message"].stringValue
- self.loginFailed(message: message)
- }
- } else {
- self.loginFailed(message: self.FAILED_LOGIN_MESSAGE)
- }
- } else {
- self.loginFailed(message: self.FAILED_LOGIN_MESSAGE)
- }
- }
- }
-
- // other functions
- private func loginSucces(user: User) {
- let userSaved = UserState.instance.userDataSaved(user: user)
-
- if userSaved {
- Messaging.messaging().token { token, error in
- if let error = error {
- print("LOGIN : Error fetching FCM registration token: \(error)")
- } else if let token = token {
- print("LOGIN : FCM registration token: \(token)")
- self.postFcmToken(fcmToken: token)
- }
- }
-
-
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.6) {
- self.view?.hideLoading()
- self.view?.onSuccessLogin(user: user)
- }
- } else {
- self.loginFailed(message: self.FAILED_LOGIN_MESSAGE)
- }
- }
-
- private func postFcmToken(fcmToken: String) {
- let isLogin = UserState.instance.isLoggedIn()
-
- if isLogin {
- let userId = UserState.instance.getUserId()
- let roleId = UserState.instance.getRoleId()
-
- print("POST FCM TOKEN AFTER LOGIN")
- siraniApiServices.postFcmToken(user_id: userId, role_id: roleId, fcmToken: fcmToken).responseJSON { response in
- if response.error == nil {
- print("LOGIN : FCM User Token Updated To Server : \(fcmToken)")
- }
- }
- }
- }
-
- private func loginFailed(message: String) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
- self.view?.onFailedLogin(message: message)
- self.view?.hideLoading()
- }
- }
- }
|