Blame view
App/commons/CellMucChupWithCamera.swift
6.38 KB
|
1341bf603
|
1 2 3 |
import Foundation import UIKit import GeneralUtils |
|
defd9642e
|
4 |
import Alamofire |
|
1341bf603
|
5 6 7 |
class CellMucChupWithCamera: BaseTableViewCellUI {
var tvTitle: UILabel!, imv: UIImageView!
|
|
defd9642e
|
8 |
var shootItem: ShootItem! |
|
1341bf603
|
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
static func registerClass(tableView: UITableView, forCellReuseIdentifier: String) {
tableView.register(CellMucChupWithCamera.self, forCellReuseIdentifier: forCellReuseIdentifier)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
initView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initView()
}
private func initView() {
let stackView = UIStackView()
stackView.axis = UILayoutConstraintAxis.horizontal
stackView.translatesAutoresizingMaskIntoConstraints = false
self.contentView.addSubview(stackView)
NSLayoutConstraint.activate([stackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 8),
stackView.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: 8),
stackView.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -8),
stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -8)])
tvTitle = UILabel()
tvTitle.numberOfLines = 0
stackView.addArrangedSubview(tvTitle)
tvTitle.isUserInteractionEnabled = true
let tapTitle = UITapGestureRecognizer(target: self, action: #selector(CellMucChupWithCamera.titleClick))
tvTitle.addGestureRecognizer(tapTitle)
imv = UIImageView()
imv.contentMode = .scaleAspectFit
imv.isUserInteractionEnabled = true
stackView.addArrangedSubview(imv)
imv.widthAnchor.constraint(equalToConstant: 80).isActive = true
imv.heightAnchor.constraint(equalToConstant: 60).isActive = true
imv.image = #imageLiteral(resourceName:"camera_black_ic").imageWithInsets(insetDimen: 10) ?? #imageLiteral(resourceName:"camera_black_ic")
let tap = UITapGestureRecognizer(target: self, action: #selector(CellMucChupWithCamera.btnImvClick))
imv.addGestureRecognizer(tap)
}
func titleClick() {
guard let viewController = self.viewController else { return }
if viewController is VCConfirmMucDaChon { return }
|
|
defd9642e
|
54 55 56 |
if let imgs = shootItem.imgs, imgs.count > 0 {
VCPageImgs.openController(viewController, imgObjs: imgs)
}
|
|
1341bf603
|
57 58 59 60 61 |
}
func btnImvClick() {
guard let viewController = self.viewController else { return }
if viewController is VCConfirmMucDaChon { return }
|
|
defd9642e
|
62 63 |
let cameraViewController = CameraViewController(croppingEnabled: false, allowsLibraryAccess: true) { image, asset in
viewController.dismiss(animated: true, completion: nil)
|
|
1341bf603
|
64 |
guard let image = image else { return }
|
|
defd9642e
|
65 66 67 68 69 |
self.imv?.image = image
guard let id = self.shootItem.id, let data = UIImageJPEGRepresentation(image, 1.0) else { return }
let signboard = self.shootItem?.signboard ?? 1
self.uploadImage(id: id, signboard: signboard, data: data)
|
|
1341bf603
|
70 71 72 73 74 75 76 |
}
viewController.present(cameraViewController, animated: true, completion: nil)
}
override func configCellWithData(baseObj: Any, index: Int) {
super.configCellWithData(baseObj: baseObj, index: index)
|
|
defd9642e
|
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
shootItem = baseObj as! ShootItem
tvTitle.text = shootItem.name
if let imgs = shootItem.imgs, imgs.count > 0, let imgUrl = imgs[0].url {
setImageUrl(imv: imv, imageUrl: imgUrl)
} else {
imv.image = #imageLiteral(resourceName:"camera_black_ic").imageWithInsets(insetDimen: 10) ?? #imageLiteral(resourceName:"camera_black_ic")
}
}
//region upload =======
fileprivate func uploadImage(id: Int, signboard: Int, data: Data) {
let tvProgress = SwiftOverlays.showBlockingWaitOverlayWithText(LocalizedString("Uploading") + ".....")
Alamofire.upload(multipartFormData: { (multipartFormData: MultipartFormData) in
multipartFormData.append(data, withName: "file", fileName: "file_\(DataTypeUtils.getCurrentTimeSecond()).jpg", mimeType: "image/jpeg")
multipartFormData.append("\(id)".data(using: String.Encoding.utf8)!, withName: "idShooting")
multipartFormData.append("\(signboard)".data(using: String.Encoding.utf8)!, withName: "signboard")
// if let note = self.shootItem. {
//multipartFormData.append("\(note)".data(using: String.Encoding.utf8)!, withName: "note")
// }
}, to: Constants.PathManager.ROOT_SERVER + "api/board/store", method: .post, encodingCompletion: { (encodingResult: SessionManager.MultipartFormDataEncodingResult) in
switch encodingResult {
case .success(let upload, _, _):
upload.uploadProgress(closure: { progress in
CommonUtils.excuteOnMainThread({tvProgress.text = (LocalizedString("Uploading") + " \(Int(progress.fractionCompleted * 100))%")})
})
.responseString { response in
SwiftOverlays.removeAllBlockingOverlays()
debugPrint("SUCCESS RESPONSE: \(response.result.value)")
if let value = response.result.value{
let json = JSON.parse(value)
if let isSuccess = json["isSuccess"].bool, isSuccess, let url = json["url"].string{
self.shootItem.addImg(img: ImgObj(url: url, signboard: signboard, date: nil, note: nil))
CommonUtils.showToastLong(text: LocalizedString("successful"))
return
}
}
self.handleError()
}
case .failure(let encodingError):
SwiftOverlays.removeAllBlockingOverlays()
self.handleError()
print("ERROR RESPONSE: \(encodingError)")
}
})
}
fileprivate func handleError() {
//DialogUtils.showQuestion(messageParam: <#T##String?##Swift.String?#>, yesAction: <#T##@escaping () -> Void##@escaping () -> Swift.Void#>)
|
|
1341bf603
|
125 |
} |
|
defd9642e
|
126 |
//endregion |
|
1341bf603
|
127 |
} |