MeetingUpdateViewController.swift 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. //
  2. // MeetingUpdateViewController.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 16/9/11.
  6. // Copyright © 2016年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import Alamofire
  10. import AlamofireImage
  11. import AlamofireObjectMapper
  12. import SwiftyJSON
  13. import ObjectMapper
  14. import SwiftyUserDefaults
  15. import Eureka
  16. import CocoaLumberjack
  17. class MeetingUpdateViewController: FormViewController {
  18. var persons:[PersonV2] = []
  19. var sRoom:Room?
  20. var meetingForm = MeetingForm()
  21. var meeting:Meeting?
  22. override func viewDidLoad() {
  23. super.viewDidLoad()
  24. //设置form
  25. self.meetingForm.subject = self.meeting?.subject
  26. self.meetingForm.desc = self.meeting?.desc
  27. self.meetingForm.meetingDate = SharedDateUtil.dateFromString(string:(self.meeting?.startTime)!, withFormat: SharedDateUtil.kNSDateHelperFormatSQLDateWithTime) as Date
  28. self.meetingForm.startTime = SharedDateUtil.dateFromString(string:(self.meeting?.startTime)!, withFormat: SharedDateUtil.kNSDateHelperFormatSQLDateWithTime) as Date
  29. self.meetingForm.completedTime = SharedDateUtil.dateFromString(string:(self.meeting?.completedTime)!, withFormat: SharedDateUtil.kNSDateHelperFormatSQLDateWithTime) as Date
  30. //读取会议室及名称
  31. self.loadRoomInfo((self.meeting?.room)!)
  32. //读取人员信息
  33. self.loadPersonInfo((self.meeting?.invitePersonList)!)
  34. self.meetingForm.invitePersonList = (meeting?.invitePersonList)!
  35. //初始化UI
  36. self.setupUI()
  37. }
  38. func loadRoomInfo(_ roomId:String){
  39. let url = AppDelegate.o2Collect.generateURLWithAppContextKey(MeetingContext.meetingContextKey, query: MeetingContext.roomItemIdQuery, parameter: ["##id##":roomId as AnyObject])
  40. Alamofire.request(url!).responseObject(queue: nil, keyPath: "data", mapToObject: nil, context: nil, completionHandler: { (resp:DataResponse<Room>) in
  41. switch resp.result {
  42. case .success(let room):
  43. self.sRoom = room
  44. self.meetingForm.room = room.id
  45. self.meetingForm.roomName = room.name
  46. let row:RowOf<String> = self.form.rowBy(tag:"showRoomName")!
  47. row.value = room.name
  48. row.title = ""
  49. //row.hidden = false
  50. row.updateCell()
  51. case .failure(let err):
  52. DDLogError(err.localizedDescription)
  53. }
  54. })
  55. }
  56. func loadPersonInfo(_ names:[String]){
  57. names.forEachEnumerated { (index,name) in
  58. let url = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personInfoByNameQuery, parameter: ["##name##":name as AnyObject])
  59. Alamofire.request(url!).responseObject(queue: nil,keyPath:"data", completionHandler: { (resp:DataResponse<PersonV2>) in
  60. switch resp.result {
  61. case .success(let person):
  62. self.persons.append(person)
  63. case .failure(let err):
  64. DDLogError(err.localizedDescription)
  65. }
  66. })
  67. }
  68. }
  69. func setupUI(){
  70. ImageRow.defaultCellUpdate = { cell, row in
  71. cell.accessoryView?.layer.cornerRadius = 17
  72. cell.accessoryView?.frame = CGRect(x: 0, y: 0, width: 34, height: 34)
  73. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  74. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  75. }
  76. TextRow.defaultCellUpdate = {
  77. cell,row in
  78. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  79. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  80. cell.accessoryType = .disclosureIndicator
  81. }
  82. LabelRow.defaultCellUpdate = {
  83. cell,row in
  84. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  85. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  86. cell.accessoryType = .disclosureIndicator
  87. }
  88. ButtonRow.defaultCellUpdate = {
  89. cell,row in
  90. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  91. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  92. cell.accessoryType = .disclosureIndicator
  93. }
  94. TextAreaRow.defaultCellUpdate = {
  95. cell,row in
  96. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  97. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  98. //cell.accessoryType = .disclosureIndicator
  99. }
  100. EmailRow.defaultCellUpdate = {
  101. cell,row in
  102. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  103. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  104. cell.accessoryType = .disclosureIndicator
  105. }
  106. DateRow.defaultCellUpdate = {
  107. cell,row in
  108. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  109. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  110. //cell.accessoryType = .disclosureIndicator
  111. }
  112. TimeRow.defaultCellUpdate = {
  113. cell,row in
  114. cell.textLabel?.font = UIFont(name: "PingFangSC-Light", size: 12.0)
  115. cell.textLabel?.textColor = RGB(155, g: 155, b: 155)
  116. //cell.accessoryType = .disclosureIndicator
  117. }
  118. form +++ Section("会议内容")
  119. <<< TextRow("subject"){ row in
  120. row.title = "会议主题"
  121. row.placeholder = "请输入主题"
  122. row.value = self.meetingForm.subject
  123. }.onChange({ row in
  124. self.meetingForm.subject = row.value
  125. })
  126. <<< DateRow("startDate"){ row in
  127. row.title = "会议日期"
  128. row.value = self.meetingForm.meetingDate
  129. }.onChange({ row in
  130. self.meetingForm.meetingDate = row.value!
  131. })
  132. <<< TimeRow("startTime"){ row in
  133. row.title = "开始时间"
  134. row.value = self.meetingForm.startTime
  135. }.onChange({ row in
  136. self.meetingForm.startTime = row.value!
  137. })
  138. <<< TimeRow("completeTime") { row in
  139. row.title = "完成时间"
  140. row.value = self.meetingForm.completedTime
  141. }.onChange({ row in
  142. self.meetingForm.completedTime = row.value!
  143. })
  144. <<< ButtonRow("roomName") { row in
  145. row.title = "选择会议室"
  146. row.presentationMode = .segueName(segueName: "showUpdateMeetingRoomSegue",onDismiss:nil)
  147. }
  148. <<< LabelRow("showRoomName"){ row in
  149. row.title = "请选择会议室"
  150. }.cellSetup({ (cell, row) in
  151. cell.detailTextLabel?.textColor = UIColor.blue
  152. cell.detailTextLabel?.font = UIFont.italicSystemFont(ofSize: 10)
  153. })
  154. <<< ButtonRow("invitePersonList") { row in
  155. row.title = "选择人员"
  156. row.presentationMode = .segueName(segueName:"showUpdatePersonListSegue",onDismiss:nil)
  157. }
  158. <<< LabelRow("showPersonList"){ row in
  159. row.title = "请选择参会人员"
  160. var pShow:[String] = []
  161. for p in self.meetingForm.invitePersonList {
  162. pShow.append(p.split("@")[0])
  163. }
  164. row.value = pShow.joined(separator: ",")
  165. }
  166. +++ Section("会议说明")
  167. <<< TextAreaRow("desc") { row in
  168. row.title = "会议说明"
  169. row.value = self.meetingForm.desc
  170. }.onChange({ row in
  171. self.meetingForm.desc = row.value
  172. })
  173. }
  174. override func didReceiveMemoryWarning() {
  175. super.didReceiveMemoryWarning()
  176. // Dispose of any resources that can be recreated.
  177. }
  178. //push前执行
  179. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  180. //选择会议室执行
  181. if segue.identifier == "showUpdateMeetingRoomSegue" {
  182. let navVC = segue.destination as! UINavigationController
  183. let destVC = navVC.topViewController as! MeetingRoomListViewController
  184. destVC.delegate = self
  185. if let room = sRoom {
  186. destVC.selectRoom = room
  187. }
  188. }else if segue.identifier == "showUpdatePersonListSegue" {
  189. //选择人员前执行
  190. let destVC = segue.destination as! MeetingPersonListViewController
  191. destVC.delegate = self
  192. destVC.selectPersons = persons
  193. //
  194. // if let ps = persons {
  195. // destVC.selectPersons = ps
  196. // }
  197. }
  198. }
  199. @IBAction func submitMeetingAction(_ sender: UIBarButtonItem) {
  200. let meetingFormBean = MeetingFormBean(meetingForm: self.meetingForm)
  201. self.meeting?.subject = meetingFormBean.subject
  202. self.meeting?.desc = meetingFormBean.description
  203. self.meeting?.startTime = meetingFormBean.startTime
  204. self.meeting?.completedTime = meetingFormBean.completedTime
  205. self.meeting?.invitePersonList = meetingFormBean.invitePersonList
  206. self.meeting?.room = meetingFormBean.room
  207. let url = AppDelegate.o2Collect.generateURLWithAppContextKey(MeetingContext.meetingContextKey, query: MeetingContext.meetingItemIdQuery, parameter: ["##id##":(meeting?.id)! as AnyObject])
  208. ProgressHUD.show("更新会议中...")
  209. Alamofire.request(url!,method:.put, parameters: meeting?.toJSON(), encoding: JSONEncoding.default, headers: nil).responseJSON { response in
  210. switch response.result {
  211. case .success(let val):
  212. let json = JSON(val)
  213. if json["type"] == "success" {
  214. DDLogDebug(json.description)
  215. ProgressHUD.showSuccess("更新成功")
  216. self.performSegue(withIdentifier: "updateBackMainSegue", sender: nil)
  217. }else {
  218. DDLogError(json.description)
  219. ProgressHUD.showError("更新失败")
  220. }
  221. case .failure(let err):
  222. DDLogError(err.localizedDescription)
  223. ProgressHUD.showError("更新失败")
  224. }
  225. }
  226. }
  227. }
  228. extension MeetingUpdateViewController:MeetingRoomPassValueDelegate,MeetingPersonListPassValue{
  229. //选择的会议室
  230. func selectRoom(_ room: Room) {
  231. self.sRoom = room
  232. self.meetingForm.room = room.id
  233. self.meetingForm.roomName = room.name
  234. let row:RowOf<String> = self.form.rowBy(tag:"showRoomName")!
  235. row.value = room.name
  236. row.title = ""
  237. //row.hidden = false
  238. row.updateCell()
  239. }
  240. //选择的参会人员
  241. func selectPersonPassValue(_ persons: [PersonV2]) {
  242. self.persons = persons
  243. self.meetingForm.invitePersonList.removeAll(keepingCapacity: true)
  244. self.persons.forEach({ (p:PersonV2) in
  245. self.meetingForm.invitePersonList.append(p.distinguishedName!)
  246. })
  247. let row:RowOf<String> = self.form.rowBy(tag: "showPersonList")!
  248. var pShow:[String] = []
  249. for p in self.meetingForm.invitePersonList {
  250. pShow.append(p.split("@")[0])
  251. }
  252. row.value = pShow.joined(separator: ",")
  253. if persons.isEmpty {
  254. row.title = "请选择参会人员"
  255. }else {
  256. row.title = ""
  257. }
  258. row.updateCell()
  259. }
  260. }