VcEdit.swift 7.63 KB
import UIKit
import Foundation
import GeneralUtils
import Alamofire

class VcEdit: BaseViewControllerShowTransculent {
    @IBOutlet weak var root: UIView!
    @IBOutlet weak var tvTenCty: UILabel!
    @IBOutlet weak var tvTenCtruong: UILabel!
    @IBOutlet weak var tvListShootItem: UILabel!
    @IBOutlet weak var tvListWillShoot: UILabel!
    @IBOutlet weak var tvSignboard: UILabel!
    weak var tableViewListCtruong: UITableViewLoadDataFromUIThread?
    weak var vcShootItemList: VCShootItemList?

    var cTruong: CongTruong!;
    var isChangedCompany = false, isChangedConstruction = false, isChangedSignboard = false, isChangedshoot = false;

    static func openController(_ viewController: UIViewController, cTruong: CongTruong, tableViewListCtruong: UITableViewLoadDataFromUIThread?,
                               vcShootItemList: VCShootItemList?) {
        BaseViewControllerShowTransculent.showTransculent(viewController, storyboardName: "Main", viewControllerIdentifier: "VcEdit",
                isDismisWhenTapOutSide: true, initBeforeLoad: { vc in
            if let vc = vc as? VcEdit {
                vc.cTruong = cTruong;
                vc.tableViewListCtruong = tableViewListCtruong;
                vc.vcShootItemList = vcShootItemList;
            }
        })
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let tap = UITapGestureRecognizer.init(target: self, action: #selector(VcEdit.bgClick))
        root.isUserInteractionEnabled = true
        root.addGestureRecognizer(tap)
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.updateState()
    }

    func updateState() {
        tvTenCty.text = cTruong.companyName
        tvTenCtruong.text = cTruong.constructionName
        if let signboard = cTruong.signboard, signboard > 0 {
            tvSignboard.text = "ON"
        } else {
            tvSignboard.text = "OFF"
        }
        tvListShootItem.text = cTruong.getShootItemsName(isWillshoot: false)
        tvListWillShoot.text = cTruong.getShootItemsName(isWillshoot: true)
    }

    @IBAction func tvTenCtyClick(_ sender: Any) {
        let dialog = DialogUtils.builderDialog(showCloseButton: false, showTitle: false)
        let edt = dialog.addTextField()
        edt.text = cTruong.companyName
        dialog.addButton(LocalizedString("OK"), action: {
            let result = (edt.text ?? "");
            self.cTruong.companyName = result;
            self.isChangedCompany = true;
            self.updateState();
        })
        dialog.showTitle("", subTitle: "施工会社名", style: .edit)
        edt.becomeFirstResponder()
    }

    @IBAction func deleteClick(_ sender: Any) {
        let dialog = DialogUtils.builderDialog()
        dialog.addButton("消去する", action: {
            guard let id = self.cTruong.id else { return }
            let parameters: Parameters = [
                    "id": id,
            ]
            NetWorkUtils.excutePostTypeRawJSONEncoding(parameters: parameters, url: Constants.PathManager.ROOT_SERVER + "api/regulations/delete",
                    isShowProgress: true, vc: self, responseStringParam: { response in
                guard let value = response.value else { return }
                println(response.value)
                let json = JSON.parse(value)
                if let isSuccess = json["isSuccess"].bool, isSuccess {
                    guard let itemsData = self.tableViewListCtruong?.itemsData else { return }
                    var count = 0;
                    var indexFind = -1;
                    for e in itemsData {
                        if let ctr = e as? CongTruong, ObjectIdentifier(ctr) == ObjectIdentifier(self.cTruong) {
                            indexFind = count;
                            break;
                        }
                        count += 1;
                    }
                    if indexFind >= 0 {
                        self.tableViewListCtruong?.itemsData.remove(at: indexFind);
                        println("delete success: \(self.tableViewListCtruong != nil)")
                        self.tableViewListCtruong?.reloadDataTableView();
                        self.dismiss(animated: false, completion: {
                            UIApplication.topViewController()?.dismiss(animated: true)
                        })
                    }
                    return
                } else {
                    CommonUtils.showToastLong(text: LocalizedString("Has_Error_occurred"))
                }
            })
        })
        dialog.showTitle("リスト消去", subTitle: "リストを消去すると全ての項目が消去されます",
                style: .warning, closeButtonTitle: "戻る")
    }

    @IBAction func boardSettingClick(_ sender: Any) {
        if cTruong.signboard == 1 {
            cTruong.signboard = 0
        } else {
            cTruong.signboard = 1
        }
        isChangedSignboard = true;
        updateState()
    }

    @IBAction func listWillShootClick(_ sender: Any) {
        VCChonMucChup.openControllerFromEdit(self, cTruong: self.cTruong);
        isChangedshoot = true;
    }

    @IBAction func listShootClick(_ sender: Any) {
        VCNhapMucChup.openControllerFromEdit(self, cTruong: self.cTruong);
        isChangedshoot = true;
    }

    @IBAction func cTruongClick(_ sender: Any) {
        let dialog = DialogUtils.builderDialog(showCloseButton: false, showTitle: false)
        let edt = dialog.addTextField()
        edt.text = cTruong.constructionName
        dialog.addButton(LocalizedString("OK"), action: {
            let result = (edt.text ?? "");
            self.cTruong.constructionName = result;
            self.isChangedConstruction = true;
            self.updateState();
        })
        dialog.showTitle("", subTitle: "工事件名", style: .edit)
        edt.becomeFirstResponder()
    }

    override func getHeightContent() -> CGFloat {
        return self.view.bounds.height
    }

    override func isFullWidth() -> Bool {
        return true
    }

    @IBAction func whiteClick(_ sender: Any) {
    }

    func bgClick() {
        dismiss(animated: true)
        guard let id = self.cTruong.id else { return }
        if isChangedshoot {
            if let vcShootItemList = self.vcShootItemList {
                vcShootItemList.tableView.initAndLoadData(vcShootItemList)
            }
            var shootingItems = [Any]()
            if let shootItems = cTruong.shootItems {
                for item in shootItems {
                    shootingItems.append(item.toDic())
                }
            }

            let parameters: Parameters = [
                    "idRegulation": id,
                    "shootingItems": shootingItems
            ]
            NetWorkUtils.excutePostTypeRawJSONEncoding(parameters: parameters, url: Constants.PathManager.ROOT_SERVER + "api/regulations/update/shooting",
                    responseStringParam: { response in
                    });
        }

        var parameters: Parameters = [
                "id": id
        ]
        if isChangedConstruction || isChangedCompany || isChangedSignboard {
            if isChangedConstruction{
                parameters["constructionName"] = self.cTruong.constructionName!;
            }
            if isChangedCompany{
                parameters["companyName"] = self.cTruong.companyName!;
            }
            if isChangedSignboard{
                parameters["signboard"] = self.cTruong.signboard!;
            }
            NetWorkUtils.excutePostTypeRawJSONEncoding(parameters: parameters, url: Constants.PathManager.ROOT_SERVER + "api/regulations/update",
                    responseStringParam: { response in
                    });
        }
    }
}