123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- //
- // OOContactViewModel.swift
- // o2app
- //
- // Created by 刘振兴 on 2017/11/20.
- // Copyright © 2017年 zone. All rights reserved.
- //
- import UIKit
- import Promises
- class OOContactViewModel: NSObject {
- //分组
- private let sectionNums = 4
- //数据
- private var contactDatas:[OOContactGroupHeaderType:[DataModel]] = [:]
-
- private let contactAPI = OOMoyaProvider<OOContactAPI>()
-
- typealias AddBlock = (_ msg:String?) -> Void
-
- var updateBlock:AddBlock?
-
- override init() {
- super.init()
- initData()
- }
-
- func initData(){
- contactDatas[.department] = []
- contactDatas[.company] = []
- contactDatas[.linkman] = []
- contactDatas[.group] = []
- }
- }
- // MARK: - 读取公司、部门及群组和常用联系人
- extension OOContactViewModel {
-
- func refreshData() {
- let currentAccount = O2AuthSDK.shared.myInfo()!
- self.initData()
- //请求当前帐号的所有个人信息
- contactAPI.request(.getPerson(currentAccount.id!)) { (result) in
- let myResult = OOResult<BaseModelClass<OOPersonModel>>(result)
- if myResult.isResultSuccess() {
- //数据处理 增加我的部门 从我的身份中取到部门信息
- if let model = myResult.model?.data {
- model.woIdentityList?.forEach({ (iModel) in
- if let unit = iModel.woUnit {
- self.contactDatas[.department]?.append(unit)
- }
- })
-
- //我的群组
- model.woGroupList?.forEach({ (gModel) in
- self.contactDatas[.group]?.append(gModel)
- })
- }
- }
- guard let block = self.updateBlock else {
- return
- }
- if myResult.isResultSuccess() {
- block(nil)
- }else{
- block(myResult.error.debugDescription)
- }
-
-
- }
- //请求顶层组织
- contactAPI.request(.listTop) { (result) in
- let myResult = OOResult<BaseModelClass<[OOUnitModel]>>(result)
- if myResult.isResultSuccess() {
- if let model = myResult.model?.data {
- model.forEach({ (uModel) in
- self.contactDatas[.company]?.append(uModel)
- })
- }
- }
-
- guard let block = self.updateBlock else {
- return
- }
- if myResult.isResultSuccess() {
- block(nil)
- }else{
- block(myResult.error.debugDescription)
- }
- }
- }
-
-
- }
- extension OOContactViewModel {
-
- func numberOfSections() -> Int {
- return contactDatas.count
- }
-
- func numberOfRowsInSection(_ section: Int) -> Int {
- return contactDatas[OOContactGroupHeaderType(rawValue:section)!]!.count
- }
-
- func nodeForIndexPath(_ indexPath:IndexPath) -> DataModel? {
- let type = OOContactGroupHeaderType(rawValue: indexPath.section)
- let item = contactDatas[type!]![indexPath.row]
- return item
- }
-
-
- func headerHeightOfSection(_ section:Int) -> CGFloat {
- return 40.0
- }
-
- func footerHeightOfSection(_ section:Int) -> CGFloat {
- return 10.0
- }
-
- func headerTypeOfSection(_ section:Int) -> OOContactGroupHeaderType {
- return OOContactGroupHeaderType(rawValue: section)!
- }
-
- }
|