Advertisement
Guest User

Untitled

a guest
Aug 29th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.95 KB | None | 0 0
  1. //
  2. // AllgemeinViewController.swift
  3. // PCMobile
  4. //
  5. // Created by SITF Pr on 7/3/18.
  6. // Copyright © 2018 SITF Pr. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10. import Eureka
  11. import Alamofire
  12. import SwiftyJSON
  13. import Whisper
  14.  
  15. class AllgemeinViewController: FormViewController {
  16.  
  17.  
  18. var editedRowTags = Set<String>()
  19. var lblPRCTRFooter:UILabel!
  20. var lblBUKRSFooter:UILabel!
  21. var lblVWNRFooter:UILabel!
  22. var lblKalkulatorFooter:UILabel!
  23.  
  24. var btnBUKRS:UIButton = UIButton(size: CGSize(width: 23, height: 23), image: #imageLiteral(resourceName: "arrowRight"))
  25. var btnPRCTR:UIButton = UIButton(size: CGSize(width: 23, height: 23), image: #imageLiteral(resourceName: "arrowRight"))
  26. var btnStatusNR:UIButton = UIButton(size: CGSize(width: 23, height: 23), image: #imageLiteral(resourceName: "arrowRight"))
  27. var btnPSP:UIButton = UIButton(size: CGSize(width: 23, height: 23), image: #imageLiteral(resourceName: "arrowRight"))
  28. var btnVWNR:UIButton = UIButton(size: CGSize(width: 23, height: 23), image: #imageLiteral(resourceName: "arrowRight"))
  29. var btnKalkulator:UIButton = UIButton(size: CGSize(width: 23, height: 23), image: #imageLiteral(resourceName: "arrowRight"))
  30.  
  31. var currentCell: UITableViewCell!
  32. var fieldType:PCOFieldType!
  33.  
  34. let localTablesURL = "http://212.4.68.34:50002/sitf/values/?url=http://sitfsed.sitf.local:8000/mobile/pco/loctables"
  35.  
  36. var prctrArray:[PRCTR] = [PRCTR]()
  37. var bukrsArray:[BUKRS] = [BUKRS]()
  38. var statusNrArray:[STATUS]=[STATUS]()
  39.  
  40. override func viewDidLoad() {
  41. super.viewDidLoad()
  42. // [btnBUKRS, btnPRCTR, btnStatusNR, btnPSP, btnVWNR, btnKalkulator].forEach { button in
  43. // button.tintColor = .tintColor
  44. // }
  45. login(withUsername: "SHAXHIJA", andPassword: "sitfsw1ss")
  46.  
  47. form +++ Section("PROJEKT COCKPIT - PROJEKTDATEN BEARBEITEN")
  48.  
  49.  
  50. <<< TextRow() {
  51. $0.title = "Projekt ID:"
  52. $0.tag = "txtProjectID"
  53. $0.value = myProject.getValue(for: "txtProjectID")
  54. $0.add(rule: RuleRequired())
  55. $0.validationOptions = .validatesOnChange
  56. }
  57. .cellUpdate { cell, row in
  58. if (row.value == "") || (!row.isValid) {
  59. cell.titleLabel?.textColor = .red
  60. }
  61. }
  62. .onChange { [weak self] row in
  63. self?.editedRowTags.insert(row.tag!)
  64. }
  65.  
  66. <<< LabelRow() {
  67. $0.title = "Projektbescheibung:"
  68. $0.tag = "Projektbescheibung"
  69. }
  70. .cellUpdate({ (cell, row) in
  71. cell.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 1000)
  72. if let myRow: TextAreaRow = self.form.rowBy(tag: "txtProjectDesc") {
  73.  
  74. cell.textLabel?.textColor = myRow.value == "" || !myRow.isValid ? .red : .black
  75. }
  76. })
  77.  
  78.  
  79.  
  80. <<< TextAreaRow() {
  81. $0.tag = "txtProjectDesc"
  82. $0.value = myProject.getValue(for: "txtProjectDesc")
  83. $0.textAreaHeight = .dynamic(initialTextViewHeight: 50)
  84. $0.add(rule: RuleRequired())
  85. $0.validationOptions = .validatesOnChange
  86.  
  87. }
  88. .cellUpdate { cell, row in
  89. if let myRow: LabelRow = self.form.rowBy(tag: "Projektbescheibung") {
  90. myRow.cell.textLabel?.textColor = row.value == "" || !row.isValid ? .red : .black
  91. }
  92. }
  93.  
  94. .onChange { [weak self] row in
  95. self?.editedRowTags.insert(row.tag!)
  96. }
  97.  
  98.  
  99.  
  100.  
  101. <<< LabelRow() {
  102. $0.title = "PSP-Element"
  103. //$0.placeholder = ""
  104. $0.tag = "txtPSPElement"
  105. $0.baseCell.accessoryView = btnPSP
  106. $0.value = myProject.getValue(for: "txtPSPElement")
  107. btnPSP.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -10)
  108. btnPSP.addTarget(self, action: #selector(pspPressed), for: .touchUpInside)
  109.  
  110. }
  111. .onChange { [weak self] row in
  112. self?.editedRowTags.insert(row.tag!)
  113. }
  114.  
  115. <<< LabelRow() {
  116. $0.title = "Statusnr. Projekt"
  117. $0.tag = "txtStatusNr"
  118. // $0.baseCell.accessoryView = UIButton(type: UIButtonType.infoLight)
  119. // LabelRow.defaultCellUpdate = { cell, row in cell.detailTextLabel?.textColor = .lightGray }
  120. $0.value = myProject.getValue(for: "txtStatusNr")
  121. $0.cell.accessoryView = btnStatusNR
  122. btnStatusNR.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -10)
  123. btnStatusNR.addTarget(self, action: #selector(statusNrPressed), for: .touchUpInside)
  124. }
  125. .onChange { [weak self] row in
  126. self?.editedRowTags.insert(row.tag!)
  127. }
  128.  
  129.  
  130. +++ Section(){ section in
  131. section.footer =
  132. {
  133. var footer = HeaderFooterView<UIView>(.callback({
  134. let view = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 40))
  135. self.lblVWNRFooter = UILabel(frame: CGRect(x: view.frame.minX, y: 0, width: view.frame.width-16, height: view.frame.height))
  136.  
  137. self.lblVWNRFooter.text = myProject.getValue(for: "lblNameResponsible").removeLeadingZeros()
  138. self.lblVWNRFooter.font = self.lblVWNRFooter.font.withSize(14)
  139. self.lblVWNRFooter.textColor = .gray
  140. self.lblVWNRFooter.textAlignment = .right
  141. view.addSubview(self.lblVWNRFooter)
  142. // view.backgroundColor = .red
  143. return view
  144. }))
  145. footer.height = { 45 }
  146. return footer
  147. }()
  148.  
  149. section.header = HeaderFooterView(title: "")
  150. }
  151.  
  152.  
  153.  
  154. <<< LabelRow() {
  155. $0.title = "Verantwortlich Nr"
  156. $0.tag = "txtResponsibleNr"
  157. $0.value = myProject.getValue(for: "txtResponsibleNr").removeLeadingZeros()
  158. $0.cell.accessoryView = btnVWNR
  159. btnVWNR.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -10)
  160. btnVWNR.addTarget(self, action: #selector(verantworlitchNrPressed), for: .touchUpInside)
  161. }
  162. .onChange { [weak self] row in
  163. self?.editedRowTags.insert(row.tag!)
  164. }
  165.  
  166. +++ Section(){ section in
  167. section.footer =
  168. {
  169. var footer = HeaderFooterView<UIView>(.callback({
  170. let view = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 40))
  171. self.lblKalkulatorFooter = UILabel(frame: CGRect(x: view.frame.minX, y: 0, width: view.frame.width-16, height: view.frame.height))
  172. self.lblKalkulatorFooter.text = myProject.getValue(for: "txtCalculatorName")
  173. self.lblKalkulatorFooter.font = self.lblKalkulatorFooter.font.withSize(14)
  174. self.lblKalkulatorFooter.textColor = .gray
  175. self.lblKalkulatorFooter.textAlignment = .right
  176. view.addSubview(self.lblKalkulatorFooter)
  177. // view.backgroundColor = .red
  178. return view
  179. }))
  180. footer.height = { 55 }
  181. return footer
  182. }()
  183.  
  184. section.header = HeaderFooterView(title: "")
  185. }
  186.  
  187.  
  188.  
  189. <<< LabelRow() {
  190. $0.title = "Kalkulator Nr"
  191. $0.tag = "txtCalculatorNr"
  192. // $0.baseCell.accessoryView = UIButton(type: UIButtonType.infoLight)
  193. // LabelRow.defaultCellUpdate = { cell, row in cell.detailTextLabel?.textColor = .lightGray }
  194. $0.value = myProject.getValue(for: "txtCalculatorNr").removeLeadingZeros()
  195. $0.cell.accessoryView = btnKalkulator
  196. btnKalkulator.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -10)
  197. btnKalkulator.addTarget(self, action: #selector(kalkulatorPressed), for: .touchUpInside)
  198. }
  199. .onChange { [weak self] row in
  200. self?.editedRowTags.insert(row.tag!)
  201. }
  202.  
  203.  
  204. +++ Section("PROJEKT ADRESSE")
  205.  
  206. <<< LabelRow() {
  207. $0.title = "Strasse:"
  208. $0.value = ""
  209.  
  210. }
  211. .cellUpdate({ (cell, row) in
  212. cell.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 1000)
  213.  
  214. })
  215.  
  216.  
  217. <<< TextAreaRow() {
  218. $0.tag = "txtStrasse"
  219. $0.value = myProject.getValue(for: "txtStrasse")
  220. $0.textAreaHeight = .dynamic(initialTextViewHeight: 25)
  221.  
  222. }
  223. .onChange { [weak self] row in
  224. self?.editedRowTags.insert(row.tag!)
  225. }
  226.  
  227. <<< TextRow() {
  228. $0.title = "Postleitzahl"
  229. $0.tag = "txtPLZ"
  230. $0.value = myProject.getValue(for: "txtPLZ")
  231.  
  232. }
  233. .onChange { [weak self] row in
  234. self?.editedRowTags.insert(row.tag!)
  235. }
  236.  
  237. <<< TextRow() {
  238. $0.title = "Ort"
  239. $0.tag = "txtOrt"
  240. $0.value = myProject.getValue(for: "txtOrt")
  241.  
  242. }
  243. .onChange { [weak self] row in
  244. self?.editedRowTags.insert(row.tag!)
  245. }
  246.  
  247. <<< TextRow() {
  248. $0.title = "Land"
  249. $0.tag = "txtLand"
  250. $0.value = myProject.getValue(for: "txtLand")
  251.  
  252. }
  253. .onChange { [weak self] row in
  254. self?.editedRowTags.insert(row.tag!)
  255. }
  256.  
  257.  
  258. <<< TextRow() {
  259. $0.title = "Region"
  260. $0.tag = "txtRegion"
  261. $0.value = myProject.getValue(for: "txtLand")
  262. }
  263. .onChange { [weak self] row in
  264. self?.editedRowTags.insert(row.tag!)
  265. }
  266.  
  267.  
  268.  
  269. +++ Section(){ section in
  270. section.tag = "bukrsSection"
  271. section.footer =
  272. {
  273. var footer = HeaderFooterView<UIView>(.callback({
  274. let view = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 40))
  275. self.lblBUKRSFooter = UILabel(frame: CGRect(x: view.frame.minX, y: 0, width: view.frame.width-16, height: view.frame.height))
  276. self.lblBUKRSFooter.text = myProject.getValue(for: "lblBuchungskreis")
  277. self.lblBUKRSFooter.font = self.lblBUKRSFooter.font.withSize(14)
  278. self.lblBUKRSFooter.textColor = .gray
  279. self.lblBUKRSFooter.textAlignment = .right
  280. view.addSubview(self.lblBUKRSFooter)
  281. // view.backgroundColor = .red
  282. return view
  283. }))
  284. footer.height = { 40 }
  285. return footer
  286. }()
  287.  
  288. section.header = HeaderFooterView(title: "ORGANISATION")
  289. }
  290.  
  291.  
  292.  
  293. <<< LabelRow () {
  294.  
  295. // LabelRow.defaultCellUpdate = { cell, row in cell.detailTextLabel?.textColor = .lightGray }
  296. currentCell = $0.cell
  297. $0.tag = "txtBuchungskreis"
  298. $0.title = "Buchungskreiss"
  299. $0.value = myProject.getValue(for: "txtBuchungskreis").removeLeadingZeros()
  300. $0.cell.accessoryView = btnBUKRS
  301. btnBUKRS.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -10)
  302. btnBUKRS.addTarget(self, action: #selector(bukrsPressed), for: .touchUpInside)
  303. $0.add(rule: RuleRequired())
  304. $0.validationOptions = .validatesOnChange
  305. }
  306. .cellUpdate { cell, row in
  307. //
  308. if (row.value == "") || (!row.isValid) {
  309. cell.textLabel?.textColor = .red
  310. }
  311.  
  312. }
  313. .onChange { [weak self] row in
  314. self?.editedRowTags.insert(row.tag!)
  315. }
  316.  
  317.  
  318.  
  319.  
  320. +++ Section() { section in
  321. section.tag = "prctrSection"
  322. section.footer =
  323. {
  324. var footer = HeaderFooterView<UIView>(.callback({
  325. let view = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 40))
  326. self.lblPRCTRFooter = UILabel(frame: CGRect(x: view.frame.minX, y: 0, width: view.frame.width-16, height: view.frame.height))
  327. self.lblPRCTRFooter.text = myProject.getValue(for: "lblPRCTR")
  328. self.lblPRCTRFooter.font = self.lblPRCTRFooter.font.withSize(14)
  329. self.lblPRCTRFooter.textColor = .gray
  330. self.lblPRCTRFooter.textAlignment = .right
  331. view.addSubview(self.lblPRCTRFooter)
  332. return view
  333. }))
  334. footer.height = { 70 }
  335. return footer
  336. }()
  337.  
  338. section.header = HeaderFooterView(title: "")
  339. }
  340.  
  341.  
  342. <<< LabelRow () {
  343.  
  344. // LabelRow.defaultCellUpdate = { cell, row in cell.detailTextLabel?.textColor = .lightGray }
  345.  
  346. $0.title = "Profitcenter"
  347. $0.tag = "txtPRCTR"
  348. $0.value = myProject.getValue(for: "txtPRCTR").removeLeadingZeros()
  349. $0.cell.accessoryView = btnPRCTR
  350. btnPRCTR.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -10)
  351. btnPRCTR.addTarget(self, action: #selector(profitCenterPressed), for: .touchUpInside)
  352. $0.add(rule: RuleRequired())
  353. $0.validationOptions = .validatesOnChange
  354. }
  355. .cellUpdate { cell, row in
  356. //
  357. if (row.value == "") || (!row.isValid) {
  358. cell.textLabel?.textColor = .red
  359. }
  360. }
  361. .onChange { [weak self] row in
  362. self?.editedRowTags.insert(row.tag!)
  363. }
  364.  
  365. }
  366.  
  367.  
  368.  
  369.  
  370.  
  371. @objc func bukrsPressed() {
  372.  
  373. fieldType = .bukrs
  374. self.performSegue(withIdentifier: "showSearchHelp", sender: nil)
  375. }
  376.  
  377.  
  378. @objc func profitCenterPressed() {
  379.  
  380. fieldType = .prctr
  381. self.performSegue(withIdentifier: "showSearchHelp", sender: nil)
  382.  
  383.  
  384. //printoma vleren qe e ka bukrs-ja ne cell print(vleraBUKRS)
  385.  
  386. //
  387. // let textRow: TextAreaRow? = form.rowBy(tag: "notes")
  388. // let value = textRow?.value
  389.  
  390. // print(value!)
  391.  
  392. // fieldType = .prctr
  393. // self.performSegue(withIdentifier: "segue", sender: nil)
  394. }
  395.  
  396. @objc func statusNrPressed() {
  397.  
  398. fieldType = .statusNr
  399. self.performSegue(withIdentifier: "showSearchHelp", sender: nil)
  400. }
  401.  
  402.  
  403.  
  404. @objc func verantworlitchNrPressed() {
  405.  
  406. fieldType = .verantwortlich
  407. self.performSegue(withIdentifier: "showPersons", sender: nil)
  408. }
  409.  
  410. @objc func kalkulatorPressed() {
  411.  
  412. fieldType = .kalkulator
  413. self.performSegue(withIdentifier: "showPersons", sender: nil)
  414. }
  415.  
  416. @objc func pspPressed(){
  417. fieldType = .psp
  418. self.performSegue(withIdentifier: "showPSP", sender: nil)
  419. }
  420.  
  421.  
  422.  
  423.  
  424.  
  425. //MARK: Login
  426. func login(withUsername username: String, andPassword password: String) {
  427. // startLoading()
  428. let credentials: String! = "Basic \("\(username):\(password)".data(using: String.Encoding.utf8)?.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0)) ?? "")"
  429.  
  430.  
  431. //Base64 Authorization Header
  432. let loginHeaders = [
  433. "Authorization": "\(credentials!)"
  434. ]
  435.  
  436. Alamofire.request(localTablesURL, method: .get, parameters: [:], headers: loginHeaders).responseJSON { response in
  437. if response.response?.statusCode == 200 {
  438. do {
  439. let json = try JSON(data: response.data!) //SwiftJSON
  440. let localTablesBase = LOCALTABLESBase(json: json)
  441. // let localTables = localTablesBase.lOCALTABLES
  442.  
  443. if let arrayPRCTR = localTablesBase.lOCALTABLES?.pRCTR {
  444. self.prctrArray = arrayPRCTR
  445. }
  446.  
  447. if let arrayBUKRS = localTablesBase.lOCALTABLES?.bUKRS {
  448. self
  449. .bukrsArray = arrayBUKRS
  450. }
  451.  
  452. if let arrayStatusNr = localTablesBase.lOCALTABLES?.sTATUS {
  453. self.statusNrArray = arrayStatusNr
  454. }
  455.  
  456.  
  457.  
  458. //here you reload table, stop loading or whatever you want to do with the data after received them
  459. self.tableView.reloadData()
  460. //stopLoading
  461.  
  462. } catch {
  463. print("diqka nuk o n'rregëll")
  464. }
  465. } else {
  466. print("error with code \(response.response?.statusCode ?? 0)")
  467. }
  468.  
  469. }
  470.  
  471. }
  472.  
  473. //MARK: - Prepare For Segue
  474.  
  475.  
  476. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  477.  
  478. if segue.identifier == "showSearchHelp" {
  479. let vc:AllgemeinTblViewController = segue.destination as! AllgemeinTblViewController
  480. vc.delegate = self
  481. vc.hidesBottomBarWhenPushed = true
  482. vc.fieldType = fieldType
  483. vc.prctrArray = prctrArray
  484. vc.bukrsArray = bukrsArray
  485. vc.statusNrArray = statusNrArray
  486. }
  487.  
  488. else if segue.identifier == "showPersons" {
  489. let vc:PersonViewController = segue.destination as! PersonViewController
  490. vc.hidesBottomBarWhenPushed = true
  491. vc.fieldType = fieldType
  492. vc.delegate = self
  493. }
  494.  
  495. else if segue.identifier == "showPSP" {
  496. let vc:PSPViewController = segue.destination as! PSPViewController
  497. vc.delegate = self
  498. vc.fieldType = fieldType
  499. vc.hidesBottomBarWhenPushed = true
  500. }
  501.  
  502.  
  503. }
  504.  
  505. // MARK: Save Project
  506.  
  507. @IBAction func saveRaport(_ sender: Any) {
  508. saveProject()
  509. }
  510.  
  511. func saveProject() {
  512.  
  513. //Allgemein View Controller
  514. let txtProjectIDRow: TextRow? = form.rowBy(tag: "txtProjectID")!
  515. let txtProjectDescRow: TextAreaRow? = form.rowBy(tag: "txtProjectDesc")!
  516. let txtBuchungskreisRow: LabelRow? = form.rowBy(tag: "txtBuchungskreis")!
  517. let txtPRCTRRow: LabelRow? = form.rowBy(tag: "txtPRCTR")!
  518.  
  519. if ((txtProjectIDRow?.value?.count == 0 || txtProjectIDRow?.value == nil) || (txtProjectDescRow?.value?.count == 0 || txtProjectDescRow?.value == nil) || (txtBuchungskreisRow?.value?.count == 0 || txtBuchungskreisRow?.value == nil) || (txtPRCTRRow?.value?.count == 0 || txtPRCTRRow?.value == nil )) {
  520.  
  521. var murmur = Murmur(title: "Please fill required fields...")
  522. murmur.font = UIFont.systemFont(ofSize: 15)
  523. murmur.backgroundColor = .groupTableViewBackground
  524. Whisper.show(whistle: murmur, action: .show(1.9))
  525. Whisper.hide(whistleAfter: 2)
  526. return;
  527. }
  528.  
  529. for tag in editedRowTags {
  530. let row = form.rowBy(tag: tag)
  531. requestsArray.addRequest(withValue: row?.baseValue as! String, forFieldName:tag)
  532. }
  533.  
  534.  
  535. //Milestones View Controller
  536.  
  537. if let meilensteineVC:MeilensteineViewController = self.tabBarController?.childViewControllers[1].childViewControllers.first as? MeilensteineViewController {
  538.  
  539. let bauBegin: DateInlineRow? = meilensteineVC.form.rowBy(tag: "txtBaubegin")!
  540.  
  541. if bauBegin?.value?.compare(meilensteineVC.bauendeDate) == .orderedDescending {
  542. var murmur = Murmur(title: "Please check the baubegin field...")
  543. murmur.font = UIFont.systemFont(ofSize: 15)
  544. murmur.backgroundColor = .groupTableViewBackground
  545. Whisper.show(whistle: murmur, action: .show(1.9))
  546. Whisper.hide(whistleAfter: 2)
  547. return;
  548. }
  549.  
  550.  
  551. for tag in meilensteineVC.editedRowTags {
  552. let row = meilensteineVC.form.rowBy(tag: tag)
  553.  
  554. if tag == "txtErfassung" || tag == "txtBegehung" || tag == "txtFristFragen" || tag == "txtAngebots" || tag == "txtAuftrag" || tag == "txtVertrag" {
  555. requestsArray.dateRequest(withValue: row?.baseValue as! Date, forFieldName:tag)
  556. }
  557. else if tag == "txtBegehungUhr" || tag == "txtFristFragenUhr" || tag == "txtEingabeUhr" || tag == "txtAngebotsUhr" {
  558. requestsArray.timeRequest(withValue: row?.baseValue as! Date, forFieldName: tag)
  559. }
  560. else if tag == "txtBegehungOrt" || tag == "txtBegehungBemerkung" || tag == "txtFristFragenBemerkung" || tag == "txtEingabeBemerkung" || tag == "txtAngebotsOrt" || tag == "txtAngebotsBemerkung" || tag == "txtAuftragBemerkung" || tag == "txtVertragBemerkung" ||
  561. tag == "txtBaubeginBemerkung" || tag == "txtBauendBemerkung" {
  562. requestsArray.addRequest(withValue: row?.baseValue as! String, forFieldName: tag)
  563. }
  564. else if tag == "txtBaubegin"{
  565. let year = Calendar.current.component(.year, from: row?.baseValue as! Date)
  566. let month = Calendar.current.component(.month, from: row?.baseValue as! Date)
  567. let day = Calendar.current.component(.day, from: row?.baseValue as! Date)
  568.  
  569. requestsArray.addRequest(withValue: "\(year)", forFieldName: "txtBaubeginYear")
  570. requestsArray.addRequest(withValue: "\(month)", forFieldName: "txtBaubeginMonth")
  571. requestsArray.addRequest(withValue: "\(day)", forFieldName: "txtBaubeginDay")
  572. }
  573. else if tag == "txtBauende"{
  574. let endeYear = Calendar.current.component(.year, from: row?.baseValue as! Date)
  575. let endeMonth = Calendar.current.component(.month, from: row?.baseValue as! Date)
  576. let endeDay = Calendar.current.component(.day, from: row?.baseValue as! Date)
  577.  
  578. requestsArray.addRequest(withValue: "\(endeYear)", forFieldName: "txtBauendeYear")
  579. requestsArray.addRequest(withValue: "\(endeMonth)", forFieldName: "txtBauendeMonth")
  580. requestsArray.addRequest(withValue: "\(endeDay)", forFieldName: "txtBauendeDay")
  581. }
  582.  
  583. }
  584. }
  585.  
  586. //Details View Controller
  587. if let detailsVC:DetailsViewController = self.tabBarController?.childViewControllers[2].childViewControllers.first as? DetailsViewController {
  588.  
  589. for tag in detailsVC.editedRowTags {
  590. let row = detailsVC.form.rowBy(tag: tag)
  591. if tag != "txtAuftrag" {
  592. requestsArray.addRequest(withValue: row?.baseValue as! String, forFieldName: tag)
  593. } else {
  594. requestsArray.dateRequest(withValue: row?.baseValue as! Date, forFieldName:tag)
  595. }
  596. }
  597. }
  598.  
  599.  
  600. //Kalkulation View Controller
  601. if let kalkulationVC:KalkulationViewController = self.tabBarController?.childViewControllers.last?.childViewControllers.first as? KalkulationViewController {
  602. let rowTage: KalkulationRow? = kalkulationVC.form.rowBy(tag: "tage")
  603. let rowSkonto: KalkulationRow? = kalkulationVC.form.rowBy(tag:"skonto")
  604. let skontto = rowSkonto?.cell.percentageField.text?.count == 0 ? 0.00 : Double(rowSkonto?.cell.percentageField.text?.digits ?? "0")
  605.  
  606. if (rowSkonto?.cell.percentageField.text!.count != 0 || rowSkonto?.cell.valueField.text!.count != 0){
  607. if skontto! > 10.00 && ( rowTage?.cell.valueField.text!.count == 0) {
  608. var murmur = Murmur(title: "Bitte füllen Sie die markierten Felder richtig aus")
  609. murmur.font = UIFont.systemFont(ofSize: 15)
  610. murmur.backgroundColor = .red
  611. murmur.titleColor = .white
  612. Whisper.show(whistle: murmur, action: .show(1.9))
  613. Whisper.hide(whistleAfter: 2)
  614. return;
  615. } else if (skontto! > 10) {
  616. var murmur = Murmur(title: "Skonto % - Satz zu hoch")
  617.  
  618. murmur.font = UIFont.systemFont(ofSize: 15)
  619. murmur.backgroundColor = .red
  620. murmur.titleColor = .white
  621. Whisper.show(whistle: murmur, action: .show(1.9))
  622. Whisper.hide(whistleAfter: 2)
  623. return;
  624. } else if ( rowTage?.cell.valueField.text!.count == 0) {
  625. var murmur = Murmur(title: "Bitte füllen Sie die markierten Felder")
  626. murmur.font = UIFont.systemFont(ofSize: 15)
  627. murmur.backgroundColor = .red
  628. murmur.titleColor = .white
  629. Whisper.show(whistle: murmur, action: .show(1.9))
  630. Whisper.hide(whistleAfter: 2)
  631. return;
  632. }
  633. }
  634.  
  635. for tag in kalkulationVC.editedRowTags{
  636. if tag == "eingabessumeBrutto" {
  637. let rowEingabessumeBrutto: KalkulationRow = kalkulationVC.form.rowBy(tag: "eingabessumeBrutto")!
  638. requestsArray.addRequest(withValue: (rowEingabessumeBrutto.cell.valueField.text)!, forFieldName: "txtEingabesummA")
  639.  
  640. } else if tag == "zielBrutto" {
  641. let rowZielBrutto: KalkulationRow = kalkulationVC.form.rowBy(tag:"zielBrutto")!
  642. requestsArray.addRequest(withValue: (rowZielBrutto.cell.valueField.text)!, forFieldName: "txtZielA")
  643.  
  644. } else if tag == "rabatt" {
  645. let rowRabatt: KalkulationRow = kalkulationVC.form.rowBy(tag:"rabatt")!
  646. requestsArray.addRequest(withValue: (rowRabatt.cell.valueField.text)!, forFieldName: "txtRabattA")
  647. requestsArray.addRequest(withValue: (rowRabatt.cell.percentageField.text?.digits)!, forFieldName: "txtRabattProcentA")
  648.  
  649. } else if tag == "tage" {
  650. let rowTage: KalkulationRow = kalkulationVC.form.rowBy(tag: "tage")!
  651. requestsArray.addRequest(withValue: (rowTage.cell.valueField.text)!, forFieldName: "txtSkontoTage")
  652.  
  653. } else if tag == "skonto" {
  654. let rowSkonto: KalkulationRow = kalkulationVC.form.rowBy(tag:"skonto")!
  655. requestsArray.addRequest(withValue: (rowSkonto.cell.valueField.text)!, forFieldName: "txtSkontoA")
  656. requestsArray.addRequest(withValue: (rowSkonto.cell.percentageField.text?.digits)!, forFieldName: "txtSkontoProcentA")
  657.  
  658. }else if tag == "diverse" {
  659. let rowDiverse: KalkulationRow = kalkulationVC.form.rowBy(tag:"diverse")!
  660. requestsArray.addRequest(withValue: (rowDiverse.cell.valueField.text)!, forFieldName: "txtDiverseA")
  661.  
  662. }else if tag == "zielNetto" {
  663. let rowZielNetto: KalkulationRow = kalkulationVC.form.rowBy(tag:"zielNetto")!
  664. requestsArray.addRequest(withValue: (rowZielNetto.cell.valueField.text)!, forFieldName: "txtZielNettoA")
  665. }
  666. }
  667.  
  668. }
  669.  
  670. //Save whole project after array is filled with data
  671. API.PCO.saveProject(withID: selectedProject, completionHandler: { message in
  672. print(message)
  673. })
  674.  
  675.  
  676.  
  677. }
  678.  
  679.  
  680. }
  681.  
  682.  
  683. //MARK: - Allgemein Table Delegate
  684. extension AllgemeinViewController: AllgemeinTableDelegate {
  685.  
  686. func getValue(value: String, description: String, forType type: PCOFieldType) {
  687. if type == .bukrs {
  688. if let myRow: LabelRow = form.rowBy(tag: "txtBuchungskreis") {
  689. myRow.value = value.removeLeadingZeros()
  690. lblBUKRSFooter.text = description
  691. myRow.reload()
  692. }
  693.  
  694.  
  695. } else if type == .prctr {
  696. if let myRow: LabelRow = form.rowBy(tag: "txtPRCTR") {
  697. myRow.value = value.removeLeadingZeros()
  698. lblPRCTRFooter.text = description
  699. myRow.reload()
  700. }
  701.  
  702.  
  703. } else if type == .statusNr {
  704.  
  705. if let myRow: LabelRow = form.rowBy(tag: "txtStatusNr") {
  706. myRow.value = value.removeLeadingZeros()
  707. myRow.reload()
  708.  
  709. }
  710. }
  711. }
  712.  
  713. }
  714.  
  715. extension AllgemeinViewController: PersonDelegate {
  716. func selectedPerson(person: F4PERNR, forType type: PCOFieldType) {
  717. if type == .verantwortlich {
  718. if let myRow: LabelRow = form.rowBy(tag: "txtResponsibleNr") {
  719. myRow.value = person.pERNR?.removeLeadingZeros() ?? ""
  720. lblVWNRFooter.text = "\(person.vNAMC ?? "") \(person.nACHN ?? "")"
  721. myRow.reload()
  722. }
  723. }
  724.  
  725. if type == .kalkulator {
  726. if let myRow: LabelRow = form.rowBy(tag: "txtCalculatorNr") {
  727. myRow.value = person.pERNR?.removeLeadingZeros() ?? ""
  728. lblVWNRFooter.text = "\(person.vNAMC ?? "") \(person.nACHN ?? "")"
  729. myRow.reload()
  730. }
  731. }
  732.  
  733.  
  734. }
  735.  
  736.  
  737.  
  738. }
  739.  
  740. extension AllgemeinViewController: pspDelegate {
  741. func selectedPSP(person: F4WBS, forType type: PCOFieldType) {
  742. if type == .psp {
  743. if let myRow: LabelRow = form.rowBy(tag: "txtPSPElement") {
  744. myRow.value = person.pOSID?.removeLeadingZeros() ?? ""
  745. myRow.reload()
  746. }
  747. }
  748. }
  749. }
  750.  
  751. extension String {
  752. func removeLeadingZeros() -> String {
  753. var newString = self
  754. let prefix = "0"
  755. while newString.hasPrefix(prefix) {
  756. newString.remove(at: newString.startIndex)
  757. }
  758. return newString
  759. }
  760.  
  761. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement