Showing
5 changed files
with
175 additions
and
2 deletions
No preview for this file type
This diff is collapsed. Click to expand it.
| ... | @@ -10,6 +10,18 @@ import RSBarcodes_Swift | ... | @@ -10,6 +10,18 @@ import RSBarcodes_Swift |
| 10 | import AVFoundation | 10 | import AVFoundation |
| 11 | 11 | ||
| 12 | @objc public class MarketPassViewController: UIViewController { | 12 | @objc public class MarketPassViewController: UIViewController { |
| 13 | + @IBOutlet weak var passContainerView: UIView! | ||
| 14 | + @IBOutlet weak var passTitleLabel: UILabel! | ||
| 15 | + @IBOutlet weak var passSubtitleLabel: UILabel! | ||
| 16 | + @IBOutlet weak var barcodeView: UIView! | ||
| 17 | + @IBOutlet weak var barcodeImage: UIImageView! | ||
| 18 | + @IBOutlet weak var barcodeImageHeight: NSLayoutConstraint! | ||
| 19 | + @IBOutlet weak var barcodeLabel: UILabel! | ||
| 20 | + @IBOutlet weak var couponsValueLabel: UILabel! | ||
| 21 | + @IBOutlet weak var smLogosView: UIView! | ||
| 22 | + @IBOutlet weak var mapButton: UIButton! | ||
| 23 | + | ||
| 24 | + let uiscreen: CGRect = UIScreen.main.bounds | ||
| 13 | 25 | ||
| 14 | public override func viewDidLoad() { | 26 | public override func viewDidLoad() { |
| 15 | super.viewDidLoad() | 27 | super.viewDidLoad() |
| ... | @@ -21,8 +33,13 @@ import AVFoundation | ... | @@ -21,8 +33,13 @@ import AVFoundation |
| 21 | // Setup the info button with an action | 33 | // Setup the info button with an action |
| 22 | setNavBarRightInfoButton() { | 34 | setNavBarRightInfoButton() { |
| 23 | // This closure is the action that will be executed when the info button is tapped | 35 | // This closure is the action that will be executed when the info button is tapped |
| 24 | -// self.presentInfoPopup() | 36 | + |
| 37 | + let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) | ||
| 38 | + let vc = storyboard.instantiateViewController(withIdentifier: "MarketPassInfoViewController") as! SwiftWarplyFramework.MarketPassInfoViewController | ||
| 39 | + self.navigationController?.pushViewController(vc, animated: true) | ||
| 25 | } | 40 | } |
| 41 | + | ||
| 42 | + setupUI() | ||
| 26 | } | 43 | } |
| 27 | 44 | ||
| 28 | public override func viewWillAppear(_ animated: Bool) { | 45 | public override func viewWillAppear(_ animated: Bool) { |
| ... | @@ -33,4 +50,151 @@ import AVFoundation | ... | @@ -33,4 +50,151 @@ import AVFoundation |
| 33 | self.navigationController?.hideHairline() | 50 | self.navigationController?.hideHairline() |
| 34 | } | 51 | } |
| 35 | 52 | ||
| 53 | + // MARK: - Functions | ||
| 54 | + func setupUI() { | ||
| 55 | + passContainerView.backgroundColor = UIColor(rgb: 0x36B32B) | ||
| 56 | + passContainerView.layer.cornerRadius = 16.0 | ||
| 57 | + // Add shadow | ||
| 58 | + passContainerView.layer.shadowColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.31).cgColor | ||
| 59 | + passContainerView.layer.shadowOffset = CGSize(width: 0.0, height: 1.0) | ||
| 60 | + passContainerView.layer.shadowOpacity = 1.0 | ||
| 61 | + passContainerView.layer.shadowRadius = 3.0 | ||
| 62 | + | ||
| 63 | + passTitleLabel.text = "SUPERMARKET DEALS CARD" | ||
| 64 | +// passTitleLabel.font = UIFont(name: "BTCosmo-Bold", size: 23) | ||
| 65 | + passTitleLabel.font = UIFont(name: "BTCosmo-Bold", size: 22) | ||
| 66 | + passTitleLabel.textColor = .white | ||
| 67 | + | ||
| 68 | + passSubtitleLabel.text = "Χρησιμοποίησε τον κωδικό σου και κέρδισε έκπτωση στις αγορές σου!" | ||
| 69 | + passSubtitleLabel.font = UIFont(name: "PeridotPE-Regular", size: 17.0) | ||
| 70 | + passSubtitleLabel.textColor = .white | ||
| 71 | + | ||
| 72 | + barcodeView.backgroundColor = .white | ||
| 73 | + barcodeView.layer.cornerRadius = 16.0 | ||
| 74 | + barcodeView.layer.borderWidth = 2 | ||
| 75 | + barcodeView.layer.borderColor = UIColor(rgb: 0xDADDE4).cgColor | ||
| 76 | + | ||
| 77 | + //TODO: FIX | ||
| 78 | +// let barcodeString = constructBarcode(coupon: coupon) ?? "" | ||
| 79 | +// let barcodeString = coupon?._barcode ?? "" | ||
| 80 | + let barcodeString = "4006381333931" | ||
| 81 | + barcodeLabel.text = barcodeString | ||
| 82 | + barcodeLabel.font = UIFont(name: "PeridotPE-Regular", size: 19.0) | ||
| 83 | + barcodeLabel.textColor = UIColor(rgb: 0x212121) | ||
| 84 | + | ||
| 85 | + if let barcodeUIImage = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObject.ObjectType.ean13.rawValue, targetSize: CGSize(width: self.uiscreen.width * 0.8, height: self.uiscreen.height * 0.12)) { | ||
| 86 | +// if let barcodeUIImage = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObject.ObjectType.ean13.rawValue, targetSize: CGSize(width: 110, height: 83)) { | ||
| 87 | + barcodeImage.image = barcodeUIImage | ||
| 88 | + | ||
| 89 | + barcodeImageHeight.constant = self.uiscreen.height * 0.12 | ||
| 90 | +// barcodeImageHeight.constant = 83 | ||
| 91 | + | ||
| 92 | + } else { | ||
| 93 | + barcodeImageHeight.constant = 0 | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + // TODO: FIX | ||
| 97 | + let couponsValueString = "30" | ||
| 98 | + let attrRegular = [NSAttributedString.Key.font : UIFont(name: "PeridotPE-Regular", size: 17) ?? UIFont.systemFont(ofSize: 16), NSAttributedString.Key.foregroundColor: UIColor.white] | ||
| 99 | + let attrBold = [NSAttributedString.Key.font : UIFont(name: "PeridotPE-Bold", size: 17) ?? UIFont.boldSystemFont(ofSize: 16), NSAttributedString.Key.foregroundColor: UIColor.white] | ||
| 100 | + | ||
| 101 | + let couponsValueNormalText1 = "Έχεις κουπόνια συνολικής αξίας " | ||
| 102 | + let couponsValueBoldText = couponsValueString + "€" | ||
| 103 | + | ||
| 104 | + let couponsValueAttributedString = NSMutableAttributedString(string:couponsValueNormalText1, attributes:attrRegular) | ||
| 105 | + let couponsValueBoldString = NSMutableAttributedString(string: couponsValueBoldText, attributes:attrBold) | ||
| 106 | + | ||
| 107 | + couponsValueAttributedString.append(couponsValueBoldString) | ||
| 108 | + couponsValueLabel.attributedText = couponsValueAttributedString | ||
| 109 | + | ||
| 110 | + mapButton.titleLabel?.font = UIFont(name: "PeridotPE-SBold", size: 16) | ||
| 111 | + mapButton.setTitle("Δες στο χάρτη", for: .normal) | ||
| 112 | + mapButton.setTitleColor(UIColor(rgb: 0x006D26), for: .normal) | ||
| 113 | + mapButton.layer.cornerRadius = 10.0 | ||
| 114 | + mapButton.frame = CGRect(x: 0.0, y: 0.0, width: 148, height: 48) | ||
| 115 | +// mapButton.frame = CGRect(x: 0.0, y: 0.0, width: mapButton.intrinsicContentSize.width, height: 55) | ||
| 116 | +// mapButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 25, bottom: 0, right: 25) | ||
| 117 | + mapButton.backgroundColor = .clear | ||
| 118 | + mapButton.layer.borderWidth = 2 | ||
| 119 | + mapButton.layer.borderColor = UIColor(rgb: 0x006D26).cgColor | ||
| 120 | + | ||
| 121 | + smLogosView.layer.cornerRadius = 16.0 | ||
| 122 | + smLogosView.layer.maskedCorners = [ .layerMinXMaxYCorner, .layerMaxXMaxYCorner] // Bottom left, right corner radius | ||
| 123 | + | ||
| 124 | + // TODO: FIX - Replace with dynamic images | ||
| 125 | + let imageNames = ["active_code_logo_2", "active_code_logo_2", "active_code_logo_2"] | ||
| 126 | +// let images = imageNames.compactMap { UIImage(named: $0) } | ||
| 127 | + let images = imageNames.compactMap { UIImage(named: $0, in: MyEmptyClass.resourceBundle(), compatibleWith: nil) } | ||
| 128 | + | ||
| 129 | + // Create a horizontal stack view | ||
| 130 | + let stackView = UIStackView() | ||
| 131 | + stackView.axis = .horizontal | ||
| 132 | + stackView.spacing = 15 // Spacing between images | ||
| 133 | + stackView.alignment = .center | ||
| 134 | + stackView.distribution = .equalSpacing | ||
| 135 | + | ||
| 136 | + // Add UIImageViews to the stack view | ||
| 137 | + for image in images { | ||
| 138 | + let imageView = UIImageView(image: image) | ||
| 139 | + imageView.contentMode = .scaleAspectFit | ||
| 140 | + imageView.widthAnchor.constraint(equalToConstant: 40).isActive = true // Set a width | ||
| 141 | + imageView.heightAnchor.constraint(equalToConstant: 40).isActive = true // Set a height | ||
| 142 | + stackView.addArrangedSubview(imageView) | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + // Add the stack view to your main view | ||
| 146 | + smLogosView.addSubview(stackView) | ||
| 147 | + | ||
| 148 | + // Set up constraints for the stack view | ||
| 149 | + stackView.translatesAutoresizingMaskIntoConstraints = false | ||
| 150 | + NSLayoutConstraint.activate([ | ||
| 151 | + stackView.leadingAnchor.constraint(equalTo: smLogosView.leadingAnchor, constant: 25), | ||
| 152 | + stackView.centerYAnchor.constraint(equalTo: smLogosView.centerYAnchor), | ||
| 153 | + ]) | ||
| 154 | + } | ||
| 155 | + | ||
| 156 | + func constructBarcode() -> String? { | ||
| 157 | + // EAN 13 barcode construction | ||
| 158 | + //TODO: FIX | ||
| 159 | +// let couponString = coupon?._barcode ?? "" | ||
| 160 | + let couponString = "123456789101112" | ||
| 161 | + | ||
| 162 | + if (!couponString.isEmpty) { | ||
| 163 | + var checkDigit = 0; | ||
| 164 | + var result = 0; | ||
| 165 | + | ||
| 166 | + var fixedCouponCode = couponString; | ||
| 167 | + if (fixedCouponCode.count < 12) { | ||
| 168 | + let loops = 12 - fixedCouponCode.count; | ||
| 169 | + var zerosStr = ""; | ||
| 170 | + for i in 0 ..< loops { | ||
| 171 | + zerosStr += "0" | ||
| 172 | + } | ||
| 173 | + // fixedCouponCode = zerosStr + fixedCouponCode; | ||
| 174 | + fixedCouponCode = fixedCouponCode + zerosStr; | ||
| 175 | + } | ||
| 176 | + | ||
| 177 | + var multiplier = 3; | ||
| 178 | + for idx in (0 ... (fixedCouponCode.count - 1)).reversed() { | ||
| 179 | + let curChar = fixedCouponCode[idx]; | ||
| 180 | + result += (Int(curChar) ?? 0) * multiplier; | ||
| 181 | + multiplier = multiplier == 3 ? 1 : 3; | ||
| 182 | + } | ||
| 183 | + checkDigit = 10 - (result % 10); | ||
| 184 | + | ||
| 185 | + let barcodeStr = fixedCouponCode + String(checkDigit); | ||
| 186 | + return barcodeStr; | ||
| 187 | + } | ||
| 188 | + | ||
| 189 | + return "" | ||
| 190 | + } | ||
| 191 | + | ||
| 192 | + // MARK: - Actions | ||
| 193 | + @IBAction func mapButtonAction(_ sender: Any) { | ||
| 194 | + let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) | ||
| 195 | + let vc = storyboard.instantiateViewController(withIdentifier: "CampaignViewController") as! SwiftWarplyFramework.CampaignViewController | ||
| 196 | + vc.campaignUrl = swiftApi().getMarketPassMapUrl() | ||
| 197 | + self.navigationController?.pushViewController(vc, animated: true) | ||
| 198 | + } | ||
| 199 | + | ||
| 36 | } | 200 | } | ... | ... |
| ... | @@ -170,7 +170,8 @@ extension WalletActiveCouponsScrollTableViewCell: UICollectionViewDataSource,UIC | ... | @@ -170,7 +170,8 @@ extension WalletActiveCouponsScrollTableViewCell: UICollectionViewDataSource,UIC |
| 170 | swiftApi().logTrackersEvent("click", ("LoyaltyWalletScreen:" + "ActiveMarketBanner")) | 170 | swiftApi().logTrackersEvent("click", ("LoyaltyWalletScreen:" + "ActiveMarketBanner")) |
| 171 | 171 | ||
| 172 | let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) | 172 | let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) |
| 173 | - let vc = storyboard.instantiateViewController(withIdentifier: "UnifiedCouponsViewController") as! SwiftWarplyFramework.UnifiedCouponsViewController | 173 | + // let vc = storyboard.instantiateViewController(withIdentifier: "UnifiedCouponsViewController") as! SwiftWarplyFramework.UnifiedCouponsViewController |
| 174 | + let vc = storyboard.instantiateViewController(withIdentifier: "MarketPassViewController") as! SwiftWarplyFramework.MarketPassViewController | ||
| 174 | parent?.navigationController?.pushViewController(vc, animated: true) | 175 | parent?.navigationController?.pushViewController(vc, animated: true) |
| 175 | 176 | ||
| 176 | } else if (badgeId == "gfy") { | 177 | } else if (badgeId == "gfy") { | ... | ... |
| ... | @@ -9357,5 +9357,13 @@ public class swiftApi { | ... | @@ -9357,5 +9357,13 @@ public class swiftApi { |
| 9357 | } | 9357 | } |
| 9358 | } | 9358 | } |
| 9359 | 9359 | ||
| 9360 | + public func getMarketPassMapUrl() -> String { | ||
| 9361 | + let appUuid = swiftApi().getAppUuid() | ||
| 9362 | + if (appUuid == "f83dfde1145e4c2da69793abb2f579af") { | ||
| 9363 | + return "https://dev.supermarketdeals.eu/map" | ||
| 9364 | + } else { | ||
| 9365 | + return "https://supermarketdeals.eu/map" | ||
| 9366 | + } | ||
| 9367 | + } | ||
| 9360 | 9368 | ||
| 9361 | } | 9369 | } | ... | ... |
-
Please register or login to post a comment