Files
OrderScheduling/OrderScheduling/Global/User/UserPermission.swift

96 lines
3.8 KiB
Swift

//
// UserPermission.swift
// OrderScheduling
//
// Created by on 2023/9/6.
//
import Foundation
import RxSwift
import RxRelay
public let USERP = UserPermission.default
open class UserPermission {
public static let `default` = UserPermission()
public let relay = ReplayRelay<Any?>.create(bufferSize: 1)
public let disposeBag = DisposeBag()
public var userPermissionRelay = ReplayRelay<Array<String>?>.create(bufferSize: 1)
public var canRejectDispatchHandle : Bool = false
public var canAcceptDispatchHandle : Bool = false
public var canWaitdispatchBtn : Bool = false
public var canWaitModifyDispatchBtn : Bool = false
public var canDealWith : Bool = false
public var canSupplierRemarkBtn : Bool = false
public var canSupplierAuditEditCostBtn : Bool = false
public var canSupplierAuditUploadPhotoBtn : Bool = false
init() {
Observable.combineLatest(relay, USER.refreshTokenSub)
.flatMapLatest { (_,_) in
return RQ.userOperationPermissions()
}
.subscribe(onNext: {[weak self] response in
self?.canRejectDispatchHandle = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.rejectDispatchHandle.rawValue
}) == true {
self?.canRejectDispatchHandle = true
}
self?.canAcceptDispatchHandle = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.acceptDispatchHandle.rawValue
}) == true {
self?.canAcceptDispatchHandle = true
}
self?.canWaitdispatchBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.waitdispatchBtn.rawValue
}) == true {
self?.canWaitdispatchBtn = true
}
self?.canWaitModifyDispatchBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.waitModifyDispatchBtn.rawValue
}) == true {
self?.canWaitModifyDispatchBtn = true
}
self?.canDealWith = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.dealWith.rawValue
}) == true {
self?.canDealWith = true
}
self?.canSupplierRemarkBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.supplierRemarkBtn.rawValue
}) == true {
self?.canSupplierRemarkBtn = true
}
self?.canSupplierAuditEditCostBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.supplierAuditEditCostBtn.rawValue
}) == true {
self?.canSupplierAuditEditCostBtn = true
}
self?.canSupplierAuditUploadPhotoBtn = false
if response?.data?.contains(where: { value in
value == UserOperationPermissionsDataModel.DataEnum.supplierAuditUploadPhotoBtn.rawValue
}) == true {
self?.canSupplierAuditUploadPhotoBtn = true
}
self?.userPermissionRelay.accept(response?.data)
})
.disposed(by: disposeBag)
}
}