//
//  RookUsersManager.swift
//  Plugin
//
//  Created by Francisco Guerrero Escamilla on 13/09/24.
//  Copyright © 2024 Max Lynch. All rights reserved.
//

import Foundation
import RookSDK
import Capacitor

@objc public class RookUsersManager: NSObject {

  // MARK: Properties

  private let userManager: UserManager = UserManager()

  // MARK: Methods

  @objc public func updateUserId(call: CAPPluginCall) {
    guard let userId: String = call.getString("userId") else {
      call.reject("Invalid user id")
      return
    }
    guard !userId.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
      call.reject("User id empty")
      return
    }
    userManager.updateUserId(userId) { result in
      switch result {
      case .success(let result):
        call.resolve(["result": result])
      case .failure(let error):
        call.reject(error.localizedDescription)
      }
    }
  }

  public func getUserId(call: CAPPluginCall) {
    userManager.getUserId { result in
      switch result {
      case .success(let id):
        call.resolve(["userId" : id])
      case .failure(let error):
        call.reject(error.localizedDescription)
      }
    }
  }

  public func removeUserFromRook(call: CAPPluginCall) {
    userManager.removeUserFromRook { result in
      switch result {
      case .success(let result):
        call.resolve(["result": result])
      case .failure(let error):
        call.reject(error.localizedDescription)
      }
    }
  }

  public func syncUserTimeZone(call: CAPPluginCall) {
    userManager.syncUserTimeZone { result in
      switch result {
      case .success(let result):
        call.resolve(["result": result])
      case .failure(let error):
        call.reject(error.localizedDescription)
      }
    }
  }
}
