Manos Chorianopoulos

UnifiedCouponBarcodeVC refactor

...@@ -92,4 +92,36 @@ import UIKit ...@@ -92,4 +92,36 @@ import UIKit
92 expirationLabel.text = "Ισχύει έως "+(coupon.expiration ?? "") 92 expirationLabel.text = "Ισχύει έως "+(coupon.expiration ?? "")
93 } 93 }
94 94
95 + func configureCell(coupon: swiftApi.CouponItemModel, isMarket: Bool) {
96 +// COUPONSET: desc, img_preview, name, terms, merchant_uuid
97 +// COUPON: coupon, expiration, discount, status
98 +// MERCHANT: _img_preview,_admin_name
99 +
100 + let merchantList:Array<swiftApi.MerchantModel> = swiftApi().getMerchantList()
101 +
102 + nameLabel.text = ""
103 +
104 + for merchant in merchantList {
105 + if (merchant._uuid == coupon.merchant_uuid) {
106 + // couponImage.load(link: merchant._img_preview, placeholder: UIImage(), cache: URLCache())
107 + self.postImageURL = merchant._img_preview
108 + nameLabel.text = merchant._admin_name
109 + break;
110 + }
111 + }
112 +
113 +// let priceFloat = Float(round(100 * (Float(coupon.discount ?? "0.0") ?? 0.0 )) / 100)
114 +// var priceString = "0"
115 +// priceString = String(format: "%.2f", priceFloat).replacingOccurrences(of: ".", with: ",", options: .literal, range: nil)
116 +// dicountLabel.text = priceString + "€"
117 +
118 + dicountLabel.text = (coupon.discount ?? "").replacingOccurrences(of: ".", with: ",", options: .literal, range: nil) + "€"
119 +
120 + let htmlText = coupon.inner_text ?? ""
121 + discriptionLabel.text = htmlText.htmlToString
122 +// discriptionLabel.text = coupon.inner_text ?? ""
123 + expirationLabel.text = "Ισχύει έως "+(coupon.expiration ?? "")
124 +
125 + }
126 +
95 } 127 }
......
...@@ -2395,7 +2395,415 @@ ...@@ -2395,7 +2395,415 @@
2395 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupons_scrollview_white" translatesAutoresizingMaskIntoConstraints="NO" id="Leh-kL-DF1"> 2395 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupons_scrollview_white" translatesAutoresizingMaskIntoConstraints="NO" id="Leh-kL-DF1">
2396 <rect key="frame" x="0.0" y="0.0" width="414" height="852"/> 2396 <rect key="frame" x="0.0" y="0.0" width="414" height="852"/>
2397 </imageView> 2397 </imageView>
2398 - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F2x-ch-ng3"> 2398 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="Jsn-Je-71G">
2399 + <rect key="frame" x="0.0" y="0.0" width="414" height="848"/>
2400 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2401 + <color key="sectionIndexBackgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2402 + <prototypes>
2403 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="UnifiedCouponBCHeaderTableViewCell" id="1eX-19-ysb" customClass="UnifiedCouponBCHeaderTableViewCell" customModule="SwiftWarplyFramework">
2404 + <rect key="frame" x="0.0" y="50" width="414" height="847.5"/>
2405 + <autoresizingMask key="autoresizingMask"/>
2406 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="1eX-19-ysb" id="izt-1Z-wey">
2407 + <rect key="frame" x="0.0" y="0.0" width="414" height="847.5"/>
2408 + <autoresizingMask key="autoresizingMask"/>
2409 + <subviews>
2410 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zYD-ey-wun">
2411 + <rect key="frame" x="0.0" y="0.0" width="414" height="847.5"/>
2412 + <subviews>
2413 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="4Aj-WZ-M9m">
2414 + <rect key="frame" x="0.0" y="0.0" width="414" height="200"/>
2415 + <constraints>
2416 + <constraint firstAttribute="height" constant="200" id="Rry-Lx-vaT"/>
2417 + </constraints>
2418 + </imageView>
2419 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Πάρε δωρεάν μηνιαία πακέτα με πάνες στα supermarket Σκλαβενίτης!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KgC-mB-kHF">
2420 + <rect key="frame" x="20" y="220" width="374" height="34"/>
2421 + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="17"/>
2422 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2423 + <nil key="highlightedColor"/>
2424 + </label>
2425 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Χρησιμοποίησε τον παρακάτω κωδικό και πάρε δωρεάν πακέτο πάνες Pampers αποκλειστικά στα Supermarket Σκλαβενίτης" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7Ha-h1-G5Y">
2426 + <rect key="frame" x="20" y="269" width="374" height="51"/>
2427 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="17"/>
2428 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2429 + <nil key="highlightedColor"/>
2430 + </label>
2431 + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="luU-pw-7jY" customClass="UnselectableTappableTextView" customModule="SwiftWarplyFramework">
2432 + <rect key="frame" x="20" y="335" width="374" height="0.0"/>
2433 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
2434 + <constraints>
2435 + <constraint firstAttribute="height" id="39U-OF-0bK"/>
2436 + </constraints>
2437 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/>
2438 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="15"/>
2439 + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
2440 + </textView>
2441 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Κωδικός Κουπονιού" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tPn-a8-bAr">
2442 + <rect key="frame" x="20" y="370" width="374" height="17"/>
2443 + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="17"/>
2444 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2445 + <nil key="highlightedColor"/>
2446 + </label>
2447 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="M7m-4Y-3sb" userLabel="Coupon View">
2448 + <rect key="frame" x="152.5" y="397" width="109.5" height="55"/>
2449 + <subviews>
2450 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MZf-Ul-AV4" customClass="CopyableLabel" customModule="SwiftWarplyFramework" customModuleProvider="target">
2451 + <rect key="frame" x="20" y="13.5" width="69.5" height="28"/>
2452 + <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="28"/>
2453 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/>
2454 + <nil key="highlightedColor"/>
2455 + </label>
2456 + </subviews>
2457 + <color key="backgroundColor" red="0.95686274510000002" green="0.95686274510000002" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/>
2458 + <constraints>
2459 + <constraint firstAttribute="trailing" secondItem="MZf-Ul-AV4" secondAttribute="trailing" constant="20" id="9Ig-hZ-g1z"/>
2460 + <constraint firstAttribute="height" constant="55" id="Tda-JD-yaT"/>
2461 + <constraint firstItem="MZf-Ul-AV4" firstAttribute="centerY" secondItem="M7m-4Y-3sb" secondAttribute="centerY" id="Ukq-Rq-TJY"/>
2462 + <constraint firstItem="MZf-Ul-AV4" firstAttribute="leading" secondItem="M7m-4Y-3sb" secondAttribute="leading" constant="20" id="jwe-fF-Ccc"/>
2463 + </constraints>
2464 + </view>
2465 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="buX-G2-IsB" userLabel="Border View">
2466 + <rect key="frame" x="20" y="472" width="374" height="1"/>
2467 + <color key="backgroundColor" red="0.90196078430000004" green="0.90196078430000004" blue="0.90196078430000004" alpha="1" colorSpace="calibratedRGB"/>
2468 + <constraints>
2469 + <constraint firstAttribute="height" constant="1" id="gkk-5l-4a7"/>
2470 + </constraints>
2471 + </view>
2472 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="9Cx-1R-FqG">
2473 + <rect key="frame" x="30" y="483" width="354" height="110"/>
2474 + <constraints>
2475 + <constraint firstAttribute="height" constant="110" id="mj2-dJ-YJB"/>
2476 + </constraints>
2477 + </imageView>
2478 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789101112" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iDt-Pz-bkd">
2479 + <rect key="frame" x="20" y="603" width="374" height="26.5"/>
2480 + <constraints>
2481 + <constraint firstAttribute="height" constant="26.5" id="QYZ-L4-ggJ"/>
2482 + </constraints>
2483 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="23"/>
2484 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2485 + <nil key="highlightedColor"/>
2486 + </label>
2487 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="33M-UT-Ysb" userLabel="Border 2 View">
2488 + <rect key="frame" x="20" y="644.5" width="374" height="1"/>
2489 + <color key="backgroundColor" red="0.90196078430000004" green="0.90196078430000004" blue="0.90196078430000004" alpha="1" colorSpace="calibratedRGB"/>
2490 + <constraints>
2491 + <constraint firstAttribute="height" constant="1" id="6LJ-d0-AsC"/>
2492 + </constraints>
2493 + </view>
2494 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UR2-dr-Wbn">
2495 + <rect key="frame" x="103.5" y="655.5" width="207" height="50"/>
2496 + <constraints>
2497 + <constraint firstAttribute="height" constant="50" id="AMS-Hv-WqS"/>
2498 + </constraints>
2499 + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="16"/>
2500 + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="5" maxY="0.0"/>
2501 + <state key="normal" title="Εμφάνιση barcode" image="ic_down_dark">
2502 + <color key="titleColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2503 + <preferredSymbolConfiguration key="preferredSymbolConfiguration"/>
2504 + </state>
2505 + <connections>
2506 + <action selector="showBarcodeAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="fUw-PO-Fvb"/>
2507 + </connections>
2508 + </button>
2509 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Το κουπόνι ισχύει έως 05/12/2022" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SPU-J6-4re">
2510 + <rect key="frame" x="20" y="740.5" width="374" height="15"/>
2511 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="15"/>
2512 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2513 + <nil key="highlightedColor"/>
2514 + </label>
2515 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="52P-0b-ua5">
2516 + <rect key="frame" x="103.5" y="790.5" width="207" height="50"/>
2517 + <constraints>
2518 + <constraint firstAttribute="height" constant="50" id="W45-Tv-hXa"/>
2519 + </constraints>
2520 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="16"/>
2521 + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="5" maxY="0.0"/>
2522 + <state key="normal" title="Εμφάνιση κουπονιών" image="ic_down_dark">
2523 + <color key="titleColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2524 + <preferredSymbolConfiguration key="preferredSymbolConfiguration"/>
2525 + </state>
2526 + <connections>
2527 + <action selector="showCouponsButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="gop-Nw-AmG"/>
2528 + </connections>
2529 + </button>
2530 + </subviews>
2531 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2532 + <constraints>
2533 + <constraint firstAttribute="trailing" secondItem="9Cx-1R-FqG" secondAttribute="trailing" constant="30" id="0jS-yz-vb2"/>
2534 + <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="M7m-4Y-3sb" secondAttribute="trailing" constant="25" id="1VR-NJ-TLh"/>
2535 + <constraint firstItem="52P-0b-ua5" firstAttribute="centerX" secondItem="zYD-ey-wun" secondAttribute="centerX" id="26g-TF-9LY"/>
2536 + <constraint firstItem="9Cx-1R-FqG" firstAttribute="top" secondItem="buX-G2-IsB" secondAttribute="bottom" constant="10" id="5io-Ff-7sM"/>
2537 + <constraint firstItem="52P-0b-ua5" firstAttribute="top" secondItem="SPU-J6-4re" secondAttribute="bottom" constant="35" id="8b4-N3-C1R"/>
2538 + <constraint firstItem="4Aj-WZ-M9m" firstAttribute="top" secondItem="zYD-ey-wun" secondAttribute="top" id="Ayu-ib-gjs"/>
2539 + <constraint firstItem="UR2-dr-Wbn" firstAttribute="centerX" secondItem="zYD-ey-wun" secondAttribute="centerX" id="FMI-DW-GAW"/>
2540 + <constraint firstItem="buX-G2-IsB" firstAttribute="top" secondItem="M7m-4Y-3sb" secondAttribute="bottom" constant="20" id="Iw4-aA-F5T"/>
2541 + <constraint firstAttribute="trailing" secondItem="7Ha-h1-G5Y" secondAttribute="trailing" constant="20" id="JCb-Z3-NVb"/>
2542 + <constraint firstItem="33M-UT-Ysb" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="Oe2-NA-u35"/>
2543 + <constraint firstItem="7Ha-h1-G5Y" firstAttribute="top" secondItem="KgC-mB-kHF" secondAttribute="bottom" constant="15" id="OkX-gf-S8Z"/>
2544 + <constraint firstItem="52P-0b-ua5" firstAttribute="width" secondItem="zYD-ey-wun" secondAttribute="width" multiplier="0.5" id="OpZ-1t-VZF"/>
2545 + <constraint firstItem="9Cx-1R-FqG" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="30" id="RS0-3d-Ahq"/>
2546 + <constraint firstAttribute="trailing" secondItem="luU-pw-7jY" secondAttribute="trailing" constant="20" id="TVb-zK-d3G"/>
2547 + <constraint firstAttribute="trailing" secondItem="SPU-J6-4re" secondAttribute="trailing" constant="20" id="Trv-gg-FoN"/>
2548 + <constraint firstItem="KgC-mB-kHF" firstAttribute="top" secondItem="4Aj-WZ-M9m" secondAttribute="bottom" constant="20" id="WZ7-DH-nM7"/>
2549 + <constraint firstItem="tPn-a8-bAr" firstAttribute="top" secondItem="luU-pw-7jY" secondAttribute="bottom" constant="35" id="YS0-hx-VrC"/>
2550 + <constraint firstAttribute="bottom" secondItem="52P-0b-ua5" secondAttribute="bottom" constant="7" id="aGR-AH-Q5m"/>
2551 + <constraint firstItem="iDt-Pz-bkd" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="bia-J6-azS"/>
2552 + <constraint firstAttribute="trailing" secondItem="iDt-Pz-bkd" secondAttribute="trailing" constant="20" id="bvX-10-VV2"/>
2553 + <constraint firstItem="luU-pw-7jY" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="clz-47-TRg"/>
2554 + <constraint firstItem="M7m-4Y-3sb" firstAttribute="top" secondItem="tPn-a8-bAr" secondAttribute="bottom" constant="10" id="cq6-gd-84K"/>
2555 + <constraint firstAttribute="trailing" secondItem="KgC-mB-kHF" secondAttribute="trailing" constant="20" id="cri-UB-euq"/>
2556 + <constraint firstItem="buX-G2-IsB" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="dQG-Iv-2mF"/>
2557 + <constraint firstAttribute="trailing" secondItem="tPn-a8-bAr" secondAttribute="trailing" constant="20" id="flp-1C-pQq"/>
2558 + <constraint firstAttribute="trailing" secondItem="33M-UT-Ysb" secondAttribute="trailing" constant="20" id="g4k-tb-QBS"/>
2559 + <constraint firstItem="M7m-4Y-3sb" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="zYD-ey-wun" secondAttribute="leading" constant="25" id="g5Z-C9-qAx"/>
2560 + <constraint firstAttribute="trailing" secondItem="4Aj-WZ-M9m" secondAttribute="trailing" id="gLk-cl-axe"/>
2561 + <constraint firstItem="SPU-J6-4re" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="hCc-Tr-Qp1"/>
2562 + <constraint firstItem="SPU-J6-4re" firstAttribute="top" secondItem="UR2-dr-Wbn" secondAttribute="bottom" constant="35" id="jHO-Hi-OWu"/>
2563 + <constraint firstItem="tPn-a8-bAr" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="jb4-Tg-SNY"/>
2564 + <constraint firstItem="7Ha-h1-G5Y" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="k8g-e4-O7U"/>
2565 + <constraint firstAttribute="trailing" secondItem="buX-G2-IsB" secondAttribute="trailing" constant="20" id="kST-Yk-neW"/>
2566 + <constraint firstItem="UR2-dr-Wbn" firstAttribute="top" secondItem="33M-UT-Ysb" secondAttribute="bottom" constant="10" id="nN5-wY-oJP"/>
2567 + <constraint firstItem="UR2-dr-Wbn" firstAttribute="width" secondItem="zYD-ey-wun" secondAttribute="width" multiplier="0.5" id="o1b-zQ-HTX"/>
2568 + <constraint firstItem="luU-pw-7jY" firstAttribute="top" secondItem="7Ha-h1-G5Y" secondAttribute="bottom" constant="15" id="ojv-Ev-sPj"/>
2569 + <constraint firstItem="iDt-Pz-bkd" firstAttribute="top" secondItem="9Cx-1R-FqG" secondAttribute="bottom" constant="10" id="pxJ-dc-Duf"/>
2570 + <constraint firstItem="4Aj-WZ-M9m" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" id="rdH-Q3-LPg"/>
2571 + <constraint firstItem="M7m-4Y-3sb" firstAttribute="centerX" secondItem="zYD-ey-wun" secondAttribute="centerX" id="u6h-Gd-lQ0"/>
2572 + <constraint firstItem="KgC-mB-kHF" firstAttribute="leading" secondItem="zYD-ey-wun" secondAttribute="leading" constant="20" id="w4n-nG-Bmg"/>
2573 + <constraint firstItem="33M-UT-Ysb" firstAttribute="top" secondItem="iDt-Pz-bkd" secondAttribute="bottom" constant="15" id="z2q-JF-fHL"/>
2574 + </constraints>
2575 + </view>
2576 + </subviews>
2577 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2578 + <constraints>
2579 + <constraint firstItem="zYD-ey-wun" firstAttribute="leading" secondItem="izt-1Z-wey" secondAttribute="leading" id="c1U-Ne-oBC"/>
2580 + <constraint firstItem="zYD-ey-wun" firstAttribute="top" secondItem="izt-1Z-wey" secondAttribute="top" id="hfh-0q-qBS"/>
2581 + <constraint firstAttribute="bottom" secondItem="zYD-ey-wun" secondAttribute="bottom" id="i6X-4x-Ejn"/>
2582 + <constraint firstAttribute="trailing" secondItem="zYD-ey-wun" secondAttribute="trailing" id="t9Z-Nr-dbd"/>
2583 + </constraints>
2584 + </tableViewCellContentView>
2585 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2586 + <connections>
2587 + <outlet property="barcodeImage" destination="9Cx-1R-FqG" id="kFy-op-2Za"/>
2588 + <outlet property="barcodeImageHeight" destination="mj2-dJ-YJB" id="EQd-n6-P5M"/>
2589 + <outlet property="barcodeImageTopSpace" destination="5io-Ff-7sM" id="lzh-3v-M7r"/>
2590 + <outlet property="barcodeLabel" destination="iDt-Pz-bkd" id="lwj-xv-Bd6"/>
2591 + <outlet property="barcodeLabelHeight" destination="QYZ-L4-ggJ" id="BBe-OE-z8O"/>
2592 + <outlet property="barcodeLabelTopSpace" destination="pxJ-dc-Duf" id="lun-u9-sCh"/>
2593 + <outlet property="border1TopSpace" destination="Iw4-aA-F5T" id="O7z-2F-IWN"/>
2594 + <outlet property="border2TopSpace" destination="z2q-JF-fHL" id="z8h-Ne-JVG"/>
2595 + <outlet property="borderView2Height" destination="6LJ-d0-AsC" id="nsp-Jf-KCE"/>
2596 + <outlet property="borderViewHeight" destination="gkk-5l-4a7" id="ON5-ad-VUv"/>
2597 + <outlet property="couponImage" destination="4Aj-WZ-M9m" id="285-ot-S5h"/>
2598 + <outlet property="couponImageHeight" destination="Rry-Lx-vaT" id="bYq-PP-ITF"/>
2599 + <outlet property="couponNumberLabel" destination="MZf-Ul-AV4" id="ah0-eX-b1a"/>
2600 + <outlet property="couponView" destination="M7m-4Y-3sb" id="20v-0s-SfW"/>
2601 + <outlet property="discriptionLabel" destination="7Ha-h1-G5Y" id="oNw-pp-qnj"/>
2602 + <outlet property="expirationLabel" destination="SPU-J6-4re" id="ZIy-s4-3DR"/>
2603 + <outlet property="merchantDescrTextView" destination="luU-pw-7jY" id="mkD-Hy-1NP"/>
2604 + <outlet property="merchantDescrTextViewHeight" destination="39U-OF-0bK" id="Gbd-EF-Mcs"/>
2605 + <outlet property="merchantDescrTextViewTopSpace" destination="ojv-Ev-sPj" id="D23-Yk-943"/>
2606 + <outlet property="nameLabel" destination="KgC-mB-kHF" id="ePH-La-hzB"/>
2607 + <outlet property="showBarcodeButton" destination="UR2-dr-Wbn" id="cig-Mm-XUP"/>
2608 + <outlet property="showBarcodeButtonHeight" destination="AMS-Hv-WqS" id="XWW-LD-FBz"/>
2609 + <outlet property="showBarcodeButtonTopSpace" destination="nN5-wY-oJP" id="lrD-fJ-0MP"/>
2610 + <outlet property="showCouponsButton" destination="52P-0b-ua5" id="0RA-aj-lED"/>
2611 + </connections>
2612 + </tableViewCell>
2613 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CouponsTableViewCellId" id="TAK-Ug-AzU" customClass="CouponsTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
2614 + <rect key="frame" x="0.0" y="897.5" width="414" height="110"/>
2615 + <autoresizingMask key="autoresizingMask"/>
2616 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="TAK-Ug-AzU" id="LFe-Vj-kjJ">
2617 + <rect key="frame" x="0.0" y="0.0" width="414" height="110"/>
2618 + <autoresizingMask key="autoresizingMask"/>
2619 + <subviews>
2620 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="35i-Iq-TId">
2621 + <rect key="frame" x="10" y="5" width="394" height="105"/>
2622 + <subviews>
2623 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupon_bg" translatesAutoresizingMaskIntoConstraints="NO" id="58G-jP-FMr">
2624 + <rect key="frame" x="0.0" y="0.0" width="394" height="105"/>
2625 + </imageView>
2626 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="jcR-bh-Fhz">
2627 + <rect key="frame" x="20" y="10" width="79" height="85"/>
2628 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2629 + </imageView>
2630 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZDK-3b-8MQ">
2631 + <rect key="frame" x="104" y="5" width="10" height="95"/>
2632 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2633 + <constraints>
2634 + <constraint firstAttribute="width" constant="10" id="sq7-pL-kd5"/>
2635 + </constraints>
2636 + </view>
2637 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mOO-dc-RyS">
2638 + <rect key="frame" x="119" y="15" width="255" height="17"/>
2639 + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="17"/>
2640 + <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
2641 + <nil key="highlightedColor"/>
2642 + </label>
2643 + <stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="NmF-B8-BxN">
2644 + <rect key="frame" x="119" y="37" width="255" height="31"/>
2645 + <subviews>
2646 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9CO-TF-h6H">
2647 + <rect key="frame" x="0.0" y="0.0" width="127.5" height="31"/>
2648 + <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="31"/>
2649 + <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
2650 + <nil key="highlightedColor"/>
2651 + </label>
2652 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XTf-q6-vau">
2653 + <rect key="frame" x="132.5" y="0.0" width="122.5" height="31"/>
2654 + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="12"/>
2655 + <color key="textColor" red="0.3803921569" green="0.4431372549" blue="0.50588235290000005" alpha="1" colorSpace="calibratedRGB"/>
2656 + <nil key="highlightedColor"/>
2657 + </label>
2658 + </subviews>
2659 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2660 + <constraints>
2661 + <constraint firstItem="9CO-TF-h6H" firstAttribute="width" secondItem="NmF-B8-BxN" secondAttribute="width" multiplier="0.5" id="U9S-Wy-bJ2"/>
2662 + </constraints>
2663 + </stackView>
2664 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u51-sv-YiH">
2665 + <rect key="frame" x="119" y="78" width="255" height="12"/>
2666 + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="12"/>
2667 + <color key="textColor" red="0.3803921569" green="0.4431372549" blue="0.50588235290000005" alpha="1" colorSpace="calibratedRGB"/>
2668 + <nil key="highlightedColor"/>
2669 + </label>
2670 + </subviews>
2671 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2672 + <constraints>
2673 + <constraint firstItem="NmF-B8-BxN" firstAttribute="centerY" secondItem="35i-Iq-TId" secondAttribute="centerY" id="2Ed-Nj-f6h"/>
2674 + <constraint firstAttribute="trailing" secondItem="mOO-dc-RyS" secondAttribute="trailing" constant="20" id="8Zl-md-YUY"/>
2675 + <constraint firstItem="jcR-bh-Fhz" firstAttribute="width" secondItem="35i-Iq-TId" secondAttribute="width" multiplier="0.2" id="8n1-lF-UlM"/>
2676 + <constraint firstItem="u51-sv-YiH" firstAttribute="leading" secondItem="ZDK-3b-8MQ" secondAttribute="trailing" constant="5" id="9pb-2H-f1h"/>
2677 + <constraint firstItem="ZDK-3b-8MQ" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" constant="5" id="EEP-lx-N0t"/>
2678 + <constraint firstAttribute="bottom" secondItem="ZDK-3b-8MQ" secondAttribute="bottom" constant="5" id="FYp-0E-Uw0"/>
2679 + <constraint firstAttribute="bottom" secondItem="u51-sv-YiH" secondAttribute="bottom" constant="15" id="Flf-tQ-WhD"/>
2680 + <constraint firstAttribute="bottom" secondItem="58G-jP-FMr" secondAttribute="bottom" id="GSk-WB-Iet"/>
2681 + <constraint firstItem="58G-jP-FMr" firstAttribute="leading" secondItem="35i-Iq-TId" secondAttribute="leading" id="JCp-aq-cPq"/>
2682 + <constraint firstItem="jcR-bh-Fhz" firstAttribute="leading" secondItem="35i-Iq-TId" secondAttribute="leading" constant="20" id="L9F-dG-daa"/>
2683 + <constraint firstItem="58G-jP-FMr" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" id="NDb-ma-RxF"/>
2684 + <constraint firstItem="ZDK-3b-8MQ" firstAttribute="leading" secondItem="jcR-bh-Fhz" secondAttribute="trailing" constant="5" id="NFe-FK-tFF"/>
2685 + <constraint firstItem="NmF-B8-BxN" firstAttribute="leading" secondItem="ZDK-3b-8MQ" secondAttribute="trailing" constant="5" id="QzX-xe-Gmc"/>
2686 + <constraint firstItem="u51-sv-YiH" firstAttribute="top" relation="greaterThanOrEqual" secondItem="NmF-B8-BxN" secondAttribute="bottom" constant="5" id="RUi-pY-M3y"/>
2687 + <constraint firstItem="jcR-bh-Fhz" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" constant="10" id="W7a-RI-eFK"/>
2688 + <constraint firstAttribute="trailing" secondItem="NmF-B8-BxN" secondAttribute="trailing" constant="20" id="WXz-rG-ZBX"/>
2689 + <constraint firstItem="mOO-dc-RyS" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" constant="15" id="bB4-81-G6R"/>
2690 + <constraint firstItem="mOO-dc-RyS" firstAttribute="leading" secondItem="ZDK-3b-8MQ" secondAttribute="trailing" constant="5" id="dfS-C5-yrS"/>
2691 + <constraint firstItem="NmF-B8-BxN" firstAttribute="top" relation="greaterThanOrEqual" secondItem="mOO-dc-RyS" secondAttribute="bottom" constant="5" id="hwb-y3-RPk"/>
2692 + <constraint firstAttribute="bottom" secondItem="jcR-bh-Fhz" secondAttribute="bottom" constant="10" id="jGC-H8-LPk"/>
2693 + <constraint firstAttribute="trailing" secondItem="58G-jP-FMr" secondAttribute="trailing" id="ndw-7x-qT3"/>
2694 + <constraint firstAttribute="trailing" secondItem="u51-sv-YiH" secondAttribute="trailing" constant="20" id="vZk-48-uaD"/>
2695 + </constraints>
2696 + </view>
2697 + </subviews>
2698 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2699 + <constraints>
2700 + <constraint firstItem="35i-Iq-TId" firstAttribute="leading" secondItem="LFe-Vj-kjJ" secondAttribute="leading" constant="10" id="3hq-3Z-4i8"/>
2701 + <constraint firstItem="35i-Iq-TId" firstAttribute="top" secondItem="LFe-Vj-kjJ" secondAttribute="top" constant="5" id="Ex4-yD-ujb"/>
2702 + <constraint firstAttribute="trailing" secondItem="35i-Iq-TId" secondAttribute="trailing" constant="10" id="GdO-6L-lwn"/>
2703 + <constraint firstAttribute="bottom" secondItem="35i-Iq-TId" secondAttribute="bottom" id="Qim-cz-Ryu"/>
2704 + </constraints>
2705 + </tableViewCellContentView>
2706 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2707 + <connections>
2708 + <outlet property="borderView" destination="ZDK-3b-8MQ" id="qma-5l-a6k"/>
2709 + <outlet property="couponBgImage" destination="58G-jP-FMr" id="ax7-k5-OVV"/>
2710 + <outlet property="couponImage" destination="jcR-bh-Fhz" id="OSo-eQ-p6a"/>
2711 + <outlet property="dicountLabel" destination="9CO-TF-h6H" id="n8h-DI-pzv"/>
2712 + <outlet property="discriptionLabel" destination="XTf-q6-vau" id="0th-ti-mlx"/>
2713 + <outlet property="expirationLabel" destination="u51-sv-YiH" id="SLL-Xy-SY4"/>
2714 + <outlet property="nameLabel" destination="mOO-dc-RyS" id="zZp-my-uZI"/>
2715 + </connections>
2716 + </tableViewCell>
2717 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="UnifiedCouponBCFooterTableViewCell" id="LD5-ES-J67" customClass="UnifiedCouponBCFooterTableViewCell" customModule="SwiftWarplyFramework">
2718 + <rect key="frame" x="0.0" y="1007.5" width="414" height="189"/>
2719 + <autoresizingMask key="autoresizingMask"/>
2720 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="LD5-ES-J67" id="DmN-AA-8n5">
2721 + <rect key="frame" x="0.0" y="0.0" width="414" height="189"/>
2722 + <autoresizingMask key="autoresizingMask"/>
2723 + <subviews>
2724 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="L4W-1e-9fQ">
2725 + <rect key="frame" x="0.0" y="0.0" width="414" height="189"/>
2726 + <subviews>
2727 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kdi-w7-eKZ">
2728 + <rect key="frame" x="139.5" y="35" width="135" height="44"/>
2729 + <constraints>
2730 + <constraint firstAttribute="height" constant="44" id="SUG-HC-XQH"/>
2731 + </constraints>
2732 + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="16"/>
2733 + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
2734 + <state key="normal" title="Δες τα καταστήματα">
2735 + <color key="titleColor" red="0.31372549020000001" green="0.61960784310000006" blue="0.1843137255" alpha="1" colorSpace="calibratedRGB"/>
2736 + </state>
2737 + <connections>
2738 + <action selector="mapButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="jm9-HG-8Sd"/>
2739 + </connections>
2740 + </button>
2741 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Sq7-ea-Nx2">
2742 + <rect key="frame" x="103.5" y="99" width="207" height="50"/>
2743 + <constraints>
2744 + <constraint firstAttribute="height" constant="50" id="UgG-aB-OOw"/>
2745 + </constraints>
2746 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="16"/>
2747 + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="5" maxY="0.0"/>
2748 + <state key="normal" title="Όροι χρήσης" image="ic_down_dark">
2749 + <color key="titleColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2750 + <preferredSymbolConfiguration key="preferredSymbolConfiguration"/>
2751 + </state>
2752 + <connections>
2753 + <action selector="termsButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="uVR-we-dTL"/>
2754 + </connections>
2755 + </button>
2756 + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kkr-9H-ZSx" customClass="UnselectableTappableTextView" customModule="SwiftWarplyFramework">
2757 + <rect key="frame" x="20" y="159" width="374" height="0.0"/>
2758 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
2759 + <constraints>
2760 + <constraint firstAttribute="height" id="oLt-F6-WA7"/>
2761 + </constraints>
2762 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/>
2763 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="15"/>
2764 + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
2765 + </textView>
2766 + </subviews>
2767 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2768 + <constraints>
2769 + <constraint firstItem="Kdi-w7-eKZ" firstAttribute="top" secondItem="L4W-1e-9fQ" secondAttribute="top" constant="35" id="1IM-rZ-u2k"/>
2770 + <constraint firstItem="Sq7-ea-Nx2" firstAttribute="top" secondItem="Kdi-w7-eKZ" secondAttribute="bottom" constant="20" id="1Qv-cX-6D8"/>
2771 + <constraint firstItem="Kkr-9H-ZSx" firstAttribute="leading" secondItem="L4W-1e-9fQ" secondAttribute="leading" constant="20" id="7pl-xk-jHX"/>
2772 + <constraint firstAttribute="trailing" secondItem="Kkr-9H-ZSx" secondAttribute="trailing" constant="20" id="VBo-Kj-h0s"/>
2773 + <constraint firstItem="Kkr-9H-ZSx" firstAttribute="top" secondItem="Sq7-ea-Nx2" secondAttribute="bottom" constant="10" id="jsT-BU-52c"/>
2774 + <constraint firstItem="Sq7-ea-Nx2" firstAttribute="width" secondItem="L4W-1e-9fQ" secondAttribute="width" multiplier="0.5" id="ljh-1k-pkA"/>
2775 + <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="Sq7-ea-Nx2" secondAttribute="bottom" constant="30" id="nmp-6u-Pr6"/>
2776 + <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="Kkr-9H-ZSx" secondAttribute="bottom" constant="30" id="ocv-GL-D9I"/>
2777 + <constraint firstItem="Sq7-ea-Nx2" firstAttribute="centerX" secondItem="L4W-1e-9fQ" secondAttribute="centerX" id="oiI-gL-Abw"/>
2778 + <constraint firstItem="Kdi-w7-eKZ" firstAttribute="centerX" secondItem="L4W-1e-9fQ" secondAttribute="centerX" id="rYZ-ny-Q3u"/>
2779 + </constraints>
2780 + </view>
2781 + </subviews>
2782 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2783 + <constraints>
2784 + <constraint firstAttribute="trailing" secondItem="L4W-1e-9fQ" secondAttribute="trailing" id="NuR-2I-6QL"/>
2785 + <constraint firstAttribute="bottom" secondItem="L4W-1e-9fQ" secondAttribute="bottom" id="UKr-8J-bMe"/>
2786 + <constraint firstItem="L4W-1e-9fQ" firstAttribute="leading" secondItem="DmN-AA-8n5" secondAttribute="leading" id="aDO-dT-wAe"/>
2787 + <constraint firstItem="L4W-1e-9fQ" firstAttribute="top" secondItem="DmN-AA-8n5" secondAttribute="top" id="kKo-Pp-dmW"/>
2788 + </constraints>
2789 + </tableViewCellContentView>
2790 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2791 + <connections>
2792 + <outlet property="mapButton" destination="Kdi-w7-eKZ" id="DIH-nr-baa"/>
2793 + <outlet property="mapButtonHeight" destination="SUG-HC-XQH" id="GRr-Cz-ZUP"/>
2794 + <outlet property="mapButtonTopSpace" destination="1IM-rZ-u2k" id="Maj-hs-eqg"/>
2795 + <outlet property="termsButton" destination="Sq7-ea-Nx2" id="f8P-rg-tmQ"/>
2796 + <outlet property="termsTextView" destination="Kkr-9H-ZSx" id="f1r-xJ-Q7O"/>
2797 + <outlet property="termsTextViewHeight" destination="oLt-F6-WA7" id="QBF-CX-6AP"/>
2798 + </connections>
2799 + </tableViewCell>
2800 + </prototypes>
2801 + <connections>
2802 + <outlet property="dataSource" destination="kZo-uj-MVp" id="l5z-oz-swz"/>
2803 + <outlet property="delegate" destination="kZo-uj-MVp" id="Gfo-Do-Bkw"/>
2804 + </connections>
2805 + </tableView>
2806 + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F2x-ch-ng3">
2399 <rect key="frame" x="0.0" y="5" width="414" height="847"/> 2807 <rect key="frame" x="0.0" y="5" width="414" height="847"/>
2400 <subviews> 2808 <subviews>
2401 <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="h6B-3P-USu"> 2809 <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="h6B-3P-USu">
...@@ -2518,126 +2926,8 @@ ...@@ -2518,126 +2926,8 @@
2518 <action selector="showCouponsButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="tU8-LY-Jau"/> 2926 <action selector="showCouponsButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="tU8-LY-Jau"/>
2519 </connections> 2927 </connections>
2520 </button> 2928 </button>
2521 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="Jsn-Je-71G" customClass="ContentSizedTableView" customModule="SwiftWarplyFramework"> 2929 + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NYi-ps-hZw">
2522 - <rect key="frame" x="0.0" y="855.5" width="414" height="200"/> 2930 + <rect key="frame" x="139.5" y="1110.5" width="135" height="44"/>
2523 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2524 - <constraints>
2525 - <constraint firstAttribute="height" constant="200" id="Xet-4I-j1J"/>
2526 - </constraints>
2527 - <color key="sectionIndexBackgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2528 - <prototypes>
2529 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CouponsTableViewCellId" id="TAK-Ug-AzU" customClass="CouponsTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
2530 - <rect key="frame" x="0.0" y="50" width="414" height="105"/>
2531 - <autoresizingMask key="autoresizingMask"/>
2532 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="TAK-Ug-AzU" id="LFe-Vj-kjJ">
2533 - <rect key="frame" x="0.0" y="0.0" width="414" height="105"/>
2534 - <autoresizingMask key="autoresizingMask"/>
2535 - <subviews>
2536 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="35i-Iq-TId">
2537 - <rect key="frame" x="10" y="0.0" width="394" height="105"/>
2538 - <subviews>
2539 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupon_bg" translatesAutoresizingMaskIntoConstraints="NO" id="58G-jP-FMr">
2540 - <rect key="frame" x="0.0" y="0.0" width="394" height="105"/>
2541 - </imageView>
2542 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="jcR-bh-Fhz">
2543 - <rect key="frame" x="20" y="10" width="79" height="85"/>
2544 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2545 - </imageView>
2546 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZDK-3b-8MQ">
2547 - <rect key="frame" x="104" y="5" width="10" height="95"/>
2548 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2549 - <constraints>
2550 - <constraint firstAttribute="width" constant="10" id="sq7-pL-kd5"/>
2551 - </constraints>
2552 - </view>
2553 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mOO-dc-RyS">
2554 - <rect key="frame" x="119" y="15" width="255" height="17"/>
2555 - <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="17"/>
2556 - <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
2557 - <nil key="highlightedColor"/>
2558 - </label>
2559 - <stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="NmF-B8-BxN">
2560 - <rect key="frame" x="119" y="37" width="255" height="31"/>
2561 - <subviews>
2562 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9CO-TF-h6H">
2563 - <rect key="frame" x="0.0" y="0.0" width="127.5" height="31"/>
2564 - <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="31"/>
2565 - <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
2566 - <nil key="highlightedColor"/>
2567 - </label>
2568 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XTf-q6-vau">
2569 - <rect key="frame" x="132.5" y="0.0" width="122.5" height="31"/>
2570 - <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="12"/>
2571 - <color key="textColor" red="0.3803921569" green="0.4431372549" blue="0.50588235290000005" alpha="1" colorSpace="calibratedRGB"/>
2572 - <nil key="highlightedColor"/>
2573 - </label>
2574 - </subviews>
2575 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2576 - <constraints>
2577 - <constraint firstItem="9CO-TF-h6H" firstAttribute="width" secondItem="NmF-B8-BxN" secondAttribute="width" multiplier="0.5" id="U9S-Wy-bJ2"/>
2578 - </constraints>
2579 - </stackView>
2580 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u51-sv-YiH">
2581 - <rect key="frame" x="119" y="78" width="255" height="12"/>
2582 - <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="12"/>
2583 - <color key="textColor" red="0.3803921569" green="0.4431372549" blue="0.50588235290000005" alpha="1" colorSpace="calibratedRGB"/>
2584 - <nil key="highlightedColor"/>
2585 - </label>
2586 - </subviews>
2587 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2588 - <constraints>
2589 - <constraint firstItem="NmF-B8-BxN" firstAttribute="centerY" secondItem="35i-Iq-TId" secondAttribute="centerY" id="2Ed-Nj-f6h"/>
2590 - <constraint firstAttribute="trailing" secondItem="mOO-dc-RyS" secondAttribute="trailing" constant="20" id="8Zl-md-YUY"/>
2591 - <constraint firstItem="jcR-bh-Fhz" firstAttribute="width" secondItem="35i-Iq-TId" secondAttribute="width" multiplier="0.2" id="8n1-lF-UlM"/>
2592 - <constraint firstItem="u51-sv-YiH" firstAttribute="leading" secondItem="ZDK-3b-8MQ" secondAttribute="trailing" constant="5" id="9pb-2H-f1h"/>
2593 - <constraint firstItem="ZDK-3b-8MQ" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" constant="5" id="EEP-lx-N0t"/>
2594 - <constraint firstAttribute="bottom" secondItem="ZDK-3b-8MQ" secondAttribute="bottom" constant="5" id="FYp-0E-Uw0"/>
2595 - <constraint firstAttribute="bottom" secondItem="u51-sv-YiH" secondAttribute="bottom" constant="15" id="Flf-tQ-WhD"/>
2596 - <constraint firstAttribute="bottom" secondItem="58G-jP-FMr" secondAttribute="bottom" id="GSk-WB-Iet"/>
2597 - <constraint firstItem="58G-jP-FMr" firstAttribute="leading" secondItem="35i-Iq-TId" secondAttribute="leading" id="JCp-aq-cPq"/>
2598 - <constraint firstItem="jcR-bh-Fhz" firstAttribute="leading" secondItem="35i-Iq-TId" secondAttribute="leading" constant="20" id="L9F-dG-daa"/>
2599 - <constraint firstItem="58G-jP-FMr" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" id="NDb-ma-RxF"/>
2600 - <constraint firstItem="ZDK-3b-8MQ" firstAttribute="leading" secondItem="jcR-bh-Fhz" secondAttribute="trailing" constant="5" id="NFe-FK-tFF"/>
2601 - <constraint firstItem="NmF-B8-BxN" firstAttribute="leading" secondItem="ZDK-3b-8MQ" secondAttribute="trailing" constant="5" id="QzX-xe-Gmc"/>
2602 - <constraint firstItem="u51-sv-YiH" firstAttribute="top" relation="greaterThanOrEqual" secondItem="NmF-B8-BxN" secondAttribute="bottom" constant="5" id="RUi-pY-M3y"/>
2603 - <constraint firstItem="jcR-bh-Fhz" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" constant="10" id="W7a-RI-eFK"/>
2604 - <constraint firstAttribute="trailing" secondItem="NmF-B8-BxN" secondAttribute="trailing" constant="20" id="WXz-rG-ZBX"/>
2605 - <constraint firstItem="mOO-dc-RyS" firstAttribute="top" secondItem="35i-Iq-TId" secondAttribute="top" constant="15" id="bB4-81-G6R"/>
2606 - <constraint firstItem="mOO-dc-RyS" firstAttribute="leading" secondItem="ZDK-3b-8MQ" secondAttribute="trailing" constant="5" id="dfS-C5-yrS"/>
2607 - <constraint firstItem="NmF-B8-BxN" firstAttribute="top" relation="greaterThanOrEqual" secondItem="mOO-dc-RyS" secondAttribute="bottom" constant="5" id="hwb-y3-RPk"/>
2608 - <constraint firstAttribute="bottom" secondItem="jcR-bh-Fhz" secondAttribute="bottom" constant="10" id="jGC-H8-LPk"/>
2609 - <constraint firstAttribute="trailing" secondItem="58G-jP-FMr" secondAttribute="trailing" id="ndw-7x-qT3"/>
2610 - <constraint firstAttribute="trailing" secondItem="u51-sv-YiH" secondAttribute="trailing" constant="20" id="vZk-48-uaD"/>
2611 - </constraints>
2612 - </view>
2613 - </subviews>
2614 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2615 - <constraints>
2616 - <constraint firstItem="35i-Iq-TId" firstAttribute="leading" secondItem="LFe-Vj-kjJ" secondAttribute="leading" constant="10" id="3hq-3Z-4i8"/>
2617 - <constraint firstItem="35i-Iq-TId" firstAttribute="top" secondItem="LFe-Vj-kjJ" secondAttribute="top" id="Ex4-yD-ujb"/>
2618 - <constraint firstAttribute="trailing" secondItem="35i-Iq-TId" secondAttribute="trailing" constant="10" id="GdO-6L-lwn"/>
2619 - <constraint firstAttribute="bottom" secondItem="35i-Iq-TId" secondAttribute="bottom" id="Qim-cz-Ryu"/>
2620 - </constraints>
2621 - </tableViewCellContentView>
2622 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
2623 - <connections>
2624 - <outlet property="borderView" destination="ZDK-3b-8MQ" id="qma-5l-a6k"/>
2625 - <outlet property="couponBgImage" destination="58G-jP-FMr" id="ax7-k5-OVV"/>
2626 - <outlet property="couponImage" destination="jcR-bh-Fhz" id="OSo-eQ-p6a"/>
2627 - <outlet property="dicountLabel" destination="9CO-TF-h6H" id="n8h-DI-pzv"/>
2628 - <outlet property="discriptionLabel" destination="XTf-q6-vau" id="0th-ti-mlx"/>
2629 - <outlet property="expirationLabel" destination="u51-sv-YiH" id="SLL-Xy-SY4"/>
2630 - <outlet property="nameLabel" destination="mOO-dc-RyS" id="zZp-my-uZI"/>
2631 - </connections>
2632 - </tableViewCell>
2633 - </prototypes>
2634 - <connections>
2635 - <outlet property="dataSource" destination="kZo-uj-MVp" id="l5z-oz-swz"/>
2636 - <outlet property="delegate" destination="kZo-uj-MVp" id="Gfo-Do-Bkw"/>
2637 - </connections>
2638 - </tableView>
2639 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NYi-ps-hZw">
2640 - <rect key="frame" x="139.5" y="1090.5" width="135" height="44"/>
2641 <constraints> 2931 <constraints>
2642 <constraint firstAttribute="height" constant="44" id="ERH-et-F0E"/> 2932 <constraint firstAttribute="height" constant="44" id="ERH-et-F0E"/>
2643 </constraints> 2933 </constraints>
...@@ -2650,8 +2940,8 @@ ...@@ -2650,8 +2940,8 @@
2650 <action selector="mapButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="LNC-9q-ejl"/> 2940 <action selector="mapButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="LNC-9q-ejl"/>
2651 </connections> 2941 </connections>
2652 </button> 2942 </button>
2653 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qEo-pP-n0h"> 2943 + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qEo-pP-n0h">
2654 - <rect key="frame" x="103.5" y="1154.5" width="207" height="50"/> 2944 + <rect key="frame" x="103.5" y="1174.5" width="207" height="50"/>
2655 <constraints> 2945 <constraints>
2656 <constraint firstAttribute="height" constant="50" id="Noz-pm-Rmy"/> 2946 <constraint firstAttribute="height" constant="50" id="Noz-pm-Rmy"/>
2657 </constraints> 2947 </constraints>
...@@ -2665,8 +2955,8 @@ ...@@ -2665,8 +2955,8 @@
2665 <action selector="termsButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="jTa-Ty-qFn"/> 2955 <action selector="termsButtonAction:" destination="kZo-uj-MVp" eventType="touchUpInside" id="jTa-Ty-qFn"/>
2666 </connections> 2956 </connections>
2667 </button> 2957 </button>
2668 - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XRd-W8-YCf" customClass="UnselectableTappableTextView" customModule="SwiftWarplyFramework"> 2958 + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XRd-W8-YCf" customClass="UnselectableTappableTextView" customModule="SwiftWarplyFramework">
2669 - <rect key="frame" x="20" y="1214.5" width="374" height="0.0"/> 2959 + <rect key="frame" x="20" y="1234.5" width="374" height="0.0"/>
2670 <color key="backgroundColor" systemColor="systemBackgroundColor"/> 2960 <color key="backgroundColor" systemColor="systemBackgroundColor"/>
2671 <constraints> 2961 <constraints>
2672 <constraint firstAttribute="height" id="kUA-53-MNE"/> 2962 <constraint firstAttribute="height" id="kUA-53-MNE"/>
...@@ -2700,19 +2990,16 @@ ...@@ -2700,19 +2990,16 @@
2700 <constraint firstItem="Bmm-wl-752" firstAttribute="top" secondItem="l3Z-rd-1se" secondAttribute="bottom" constant="35" id="HbV-nu-Hpt"/> 2990 <constraint firstItem="Bmm-wl-752" firstAttribute="top" secondItem="l3Z-rd-1se" secondAttribute="bottom" constant="35" id="HbV-nu-Hpt"/>
2701 <constraint firstAttribute="trailing" secondItem="0e4-jR-gJ2" secondAttribute="trailing" constant="30" id="HxT-Ci-qXC"/> 2991 <constraint firstAttribute="trailing" secondItem="0e4-jR-gJ2" secondAttribute="trailing" constant="30" id="HxT-Ci-qXC"/>
2702 <constraint firstItem="zaj-yW-yxb" firstAttribute="width" secondItem="h6B-3P-USu" secondAttribute="width" multiplier="0.5" id="Jak-kG-SlN"/> 2992 <constraint firstItem="zaj-yW-yxb" firstAttribute="width" secondItem="h6B-3P-USu" secondAttribute="width" multiplier="0.5" id="Jak-kG-SlN"/>
2703 - <constraint firstItem="NYi-ps-hZw" firstAttribute="top" secondItem="Jsn-Je-71G" secondAttribute="bottom" constant="35" id="Jsa-kb-xSz"/>
2704 <constraint firstItem="l3Z-rd-1se" firstAttribute="top" secondItem="HK5-Qt-OFZ" secondAttribute="bottom" constant="10" id="LiN-pJ-pjN"/> 2993 <constraint firstItem="l3Z-rd-1se" firstAttribute="top" secondItem="HK5-Qt-OFZ" secondAttribute="bottom" constant="10" id="LiN-pJ-pjN"/>
2705 <constraint firstAttribute="trailing" secondItem="KcC-nd-UJt" secondAttribute="trailing" constant="20" id="Mfx-q9-cuK"/> 2994 <constraint firstAttribute="trailing" secondItem="KcC-nd-UJt" secondAttribute="trailing" constant="20" id="Mfx-q9-cuK"/>
2706 <constraint firstItem="XRd-W8-YCf" firstAttribute="top" secondItem="qEo-pP-n0h" secondAttribute="bottom" constant="10" id="Nd4-Gg-uk1"/> 2995 <constraint firstItem="XRd-W8-YCf" firstAttribute="top" secondItem="qEo-pP-n0h" secondAttribute="bottom" constant="10" id="Nd4-Gg-uk1"/>
2707 <constraint firstItem="HK5-Qt-OFZ" firstAttribute="leading" secondItem="h6B-3P-USu" secondAttribute="leading" constant="20" id="Nt2-qa-UoE"/> 2996 <constraint firstItem="HK5-Qt-OFZ" firstAttribute="leading" secondItem="h6B-3P-USu" secondAttribute="leading" constant="20" id="Nt2-qa-UoE"/>
2708 - <constraint firstItem="Jsn-Je-71G" firstAttribute="leading" secondItem="h6B-3P-USu" secondAttribute="leading" id="O6Y-XK-nnc"/>
2709 <constraint firstItem="z1U-JG-k4U" firstAttribute="top" secondItem="XEh-1k-bk7" secondAttribute="bottom" constant="15" id="OK6-wa-Ybp"/> 2997 <constraint firstItem="z1U-JG-k4U" firstAttribute="top" secondItem="XEh-1k-bk7" secondAttribute="bottom" constant="15" id="OK6-wa-Ybp"/>
2710 <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="XRd-W8-YCf" secondAttribute="bottom" constant="30" id="PqJ-aK-gFO"/> 2998 <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="XRd-W8-YCf" secondAttribute="bottom" constant="30" id="PqJ-aK-gFO"/>
2711 <constraint firstItem="zaj-yW-yxb" firstAttribute="top" secondItem="Bmm-wl-752" secondAttribute="bottom" constant="35" id="QYD-3G-JMi"/> 2999 <constraint firstItem="zaj-yW-yxb" firstAttribute="top" secondItem="Bmm-wl-752" secondAttribute="bottom" constant="35" id="QYD-3G-JMi"/>
2712 <constraint firstAttribute="trailing" secondItem="wB5-TH-zF6" secondAttribute="trailing" constant="20" id="RUA-zf-2M5"/> 3000 <constraint firstAttribute="trailing" secondItem="wB5-TH-zF6" secondAttribute="trailing" constant="20" id="RUA-zf-2M5"/>
2713 <constraint firstItem="p9P-ZR-ZC2" firstAttribute="centerX" secondItem="h6B-3P-USu" secondAttribute="centerX" id="Roj-dQ-hYS"/> 3001 <constraint firstItem="p9P-ZR-ZC2" firstAttribute="centerX" secondItem="h6B-3P-USu" secondAttribute="centerX" id="Roj-dQ-hYS"/>
2714 <constraint firstItem="KcC-nd-UJt" firstAttribute="top" secondItem="0e4-jR-gJ2" secondAttribute="bottom" constant="10" id="SH6-4R-cCp"/> 3002 <constraint firstItem="KcC-nd-UJt" firstAttribute="top" secondItem="0e4-jR-gJ2" secondAttribute="bottom" constant="10" id="SH6-4R-cCp"/>
2715 - <constraint firstAttribute="trailing" secondItem="Jsn-Je-71G" secondAttribute="trailing" id="SMG-d4-tot"/>
2716 <constraint firstAttribute="trailing" secondItem="XEh-1k-bk7" secondAttribute="trailing" constant="20" id="XIz-C7-XrD"/> 3003 <constraint firstAttribute="trailing" secondItem="XEh-1k-bk7" secondAttribute="trailing" constant="20" id="XIz-C7-XrD"/>
2717 <constraint firstItem="l3Z-rd-1se" firstAttribute="centerX" secondItem="h6B-3P-USu" secondAttribute="centerX" id="YD9-GP-0ms"/> 3004 <constraint firstItem="l3Z-rd-1se" firstAttribute="centerX" secondItem="h6B-3P-USu" secondAttribute="centerX" id="YD9-GP-0ms"/>
2718 <constraint firstItem="qEo-pP-n0h" firstAttribute="top" secondItem="NYi-ps-hZw" secondAttribute="bottom" constant="20" id="Zt9-R1-mr2"/> 3005 <constraint firstItem="qEo-pP-n0h" firstAttribute="top" secondItem="NYi-ps-hZw" secondAttribute="bottom" constant="20" id="Zt9-R1-mr2"/>
...@@ -2729,7 +3016,6 @@ ...@@ -2729,7 +3016,6 @@
2729 <constraint firstItem="l3Z-rd-1se" firstAttribute="width" secondItem="h6B-3P-USu" secondAttribute="width" multiplier="0.5" id="pBD-ac-8QV"/> 3016 <constraint firstItem="l3Z-rd-1se" firstAttribute="width" secondItem="h6B-3P-USu" secondAttribute="width" multiplier="0.5" id="pBD-ac-8QV"/>
2730 <constraint firstItem="HK5-Qt-OFZ" firstAttribute="top" secondItem="KcC-nd-UJt" secondAttribute="bottom" constant="15" id="sjJ-5g-cKb"/> 3017 <constraint firstItem="HK5-Qt-OFZ" firstAttribute="top" secondItem="KcC-nd-UJt" secondAttribute="bottom" constant="15" id="sjJ-5g-cKb"/>
2731 <constraint firstItem="0e4-jR-gJ2" firstAttribute="leading" secondItem="h6B-3P-USu" secondAttribute="leading" constant="30" id="t1y-43-ggS"/> 3018 <constraint firstItem="0e4-jR-gJ2" firstAttribute="leading" secondItem="h6B-3P-USu" secondAttribute="leading" constant="30" id="t1y-43-ggS"/>
2732 - <constraint firstItem="Jsn-Je-71G" firstAttribute="top" secondItem="zaj-yW-yxb" secondAttribute="bottom" constant="15" id="tP4-IY-o5w"/>
2733 <constraint firstItem="b5L-BJ-bRd" firstAttribute="top" secondItem="z1U-JG-k4U" secondAttribute="bottom" constant="15" id="xxC-cP-Rv9"/> 3019 <constraint firstItem="b5L-BJ-bRd" firstAttribute="top" secondItem="z1U-JG-k4U" secondAttribute="bottom" constant="15" id="xxC-cP-Rv9"/>
2734 </constraints> 3020 </constraints>
2735 </view> 3021 </view>
...@@ -2753,9 +3039,13 @@ ...@@ -2753,9 +3039,13 @@
2753 <constraint firstAttribute="bottom" secondItem="F2x-ch-ng3" secondAttribute="bottom" id="Bxi-Lf-m8N"/> 3039 <constraint firstAttribute="bottom" secondItem="F2x-ch-ng3" secondAttribute="bottom" id="Bxi-Lf-m8N"/>
2754 <constraint firstItem="h6B-3P-USu" firstAttribute="height" relation="greaterThanOrEqual" secondItem="1tN-9F-yxg" secondAttribute="height" id="JTm-bV-cw8"/> 3040 <constraint firstItem="h6B-3P-USu" firstAttribute="height" relation="greaterThanOrEqual" secondItem="1tN-9F-yxg" secondAttribute="height" id="JTm-bV-cw8"/>
2755 <constraint firstItem="F2x-ch-ng3" firstAttribute="top" secondItem="1tN-9F-yxg" secondAttribute="top" id="Jos-cl-7VR"/> 3041 <constraint firstItem="F2x-ch-ng3" firstAttribute="top" secondItem="1tN-9F-yxg" secondAttribute="top" id="Jos-cl-7VR"/>
3042 + <constraint firstItem="Jsn-Je-71G" firstAttribute="top" secondItem="1tN-9F-yxg" secondAttribute="top" id="KbP-p7-cQj"/>
2756 <constraint firstItem="k6Y-8d-5AX" firstAttribute="leading" secondItem="1tN-9F-yxg" secondAttribute="leading" id="SIr-Hi-Dyx"/> 3043 <constraint firstItem="k6Y-8d-5AX" firstAttribute="leading" secondItem="1tN-9F-yxg" secondAttribute="leading" id="SIr-Hi-Dyx"/>
2757 <constraint firstItem="F2x-ch-ng3" firstAttribute="leading" secondItem="1tN-9F-yxg" secondAttribute="leading" id="U0W-zW-DaZ"/> 3044 <constraint firstItem="F2x-ch-ng3" firstAttribute="leading" secondItem="1tN-9F-yxg" secondAttribute="leading" id="U0W-zW-DaZ"/>
3045 + <constraint firstItem="Jsn-Je-71G" firstAttribute="leading" secondItem="1tN-9F-yxg" secondAttribute="leading" id="UYc-62-g5M"/>
3046 + <constraint firstAttribute="trailing" secondItem="Jsn-Je-71G" secondAttribute="trailing" id="Vqx-91-Gax"/>
2758 <constraint firstAttribute="trailing" secondItem="F2x-ch-ng3" secondAttribute="trailing" id="fiO-e6-Uyi"/> 3047 <constraint firstAttribute="trailing" secondItem="F2x-ch-ng3" secondAttribute="trailing" id="fiO-e6-Uyi"/>
3048 + <constraint firstAttribute="bottom" secondItem="Jsn-Je-71G" secondAttribute="bottom" id="hCl-yM-7aq"/>
2759 <constraint firstItem="Leh-kL-DF1" firstAttribute="top" secondItem="1tN-9F-yxg" secondAttribute="top" id="i78-sg-xrF"/> 3049 <constraint firstItem="Leh-kL-DF1" firstAttribute="top" secondItem="1tN-9F-yxg" secondAttribute="top" id="i78-sg-xrF"/>
2760 <constraint firstAttribute="trailing" secondItem="k6Y-8d-5AX" secondAttribute="trailing" id="iXg-hc-zBk"/> 3050 <constraint firstAttribute="trailing" secondItem="k6Y-8d-5AX" secondAttribute="trailing" id="iXg-hc-zBk"/>
2761 <constraint firstItem="Leh-kL-DF1" firstAttribute="leading" secondItem="1tN-9F-yxg" secondAttribute="leading" id="mcD-r4-3uU"/> 3051 <constraint firstItem="Leh-kL-DF1" firstAttribute="leading" secondItem="1tN-9F-yxg" secondAttribute="leading" id="mcD-r4-3uU"/>
...@@ -2766,6 +3056,7 @@ ...@@ -2766,6 +3056,7 @@
2766 <variation key="default"> 3056 <variation key="default">
2767 <mask key="subviews"> 3057 <mask key="subviews">
2768 <exclude reference="Leh-kL-DF1"/> 3058 <exclude reference="Leh-kL-DF1"/>
3059 + <exclude reference="F2x-ch-ng3"/>
2769 </mask> 3060 </mask>
2770 </variation> 3061 </variation>
2771 </view> 3062 </view>
...@@ -2800,7 +3091,6 @@ ...@@ -2800,7 +3091,6 @@
2800 <outlet property="mainView" destination="1tN-9F-yxg" id="57p-Ru-90A"/> 3091 <outlet property="mainView" destination="1tN-9F-yxg" id="57p-Ru-90A"/>
2801 <outlet property="mapButton" destination="NYi-ps-hZw" id="IgR-mN-HJO"/> 3092 <outlet property="mapButton" destination="NYi-ps-hZw" id="IgR-mN-HJO"/>
2802 <outlet property="mapButtonHeight" destination="ERH-et-F0E" id="IrJ-ng-0OU"/> 3093 <outlet property="mapButtonHeight" destination="ERH-et-F0E" id="IrJ-ng-0OU"/>
2803 - <outlet property="mapButtonTopSpace" destination="Jsa-kb-xSz" id="a9I-wA-tqZ"/>
2804 <outlet property="merchantDescrTextView" destination="b5L-BJ-bRd" id="FyS-oQ-cm4"/> 3094 <outlet property="merchantDescrTextView" destination="b5L-BJ-bRd" id="FyS-oQ-cm4"/>
2805 <outlet property="merchantDescrTextViewHeight" destination="Vf5-mh-mYl" id="FMX-nf-Q5b"/> 3095 <outlet property="merchantDescrTextViewHeight" destination="Vf5-mh-mYl" id="FMX-nf-Q5b"/>
2806 <outlet property="merchantDescrTextViewTopSpace" destination="xxC-cP-Rv9" id="2oC-LP-Qih"/> 3096 <outlet property="merchantDescrTextViewTopSpace" destination="xxC-cP-Rv9" id="2oC-LP-Qih"/>
...@@ -2812,7 +3102,6 @@ ...@@ -2812,7 +3102,6 @@
2812 <outlet property="showBarcodeButtonTopSpace" destination="LiN-pJ-pjN" id="aXh-ZZ-cWO"/> 3102 <outlet property="showBarcodeButtonTopSpace" destination="LiN-pJ-pjN" id="aXh-ZZ-cWO"/>
2813 <outlet property="showCouponsButton" destination="zaj-yW-yxb" id="gVY-xH-aMw"/> 3103 <outlet property="showCouponsButton" destination="zaj-yW-yxb" id="gVY-xH-aMw"/>
2814 <outlet property="tableView" destination="Jsn-Je-71G" id="mZF-SD-0R2"/> 3104 <outlet property="tableView" destination="Jsn-Je-71G" id="mZF-SD-0R2"/>
2815 - <outlet property="tableViewHeight" destination="Xet-4I-j1J" id="4Ti-cu-FbZ"/>
2816 <outlet property="termsButton" destination="qEo-pP-n0h" id="1QS-vK-40s"/> 3105 <outlet property="termsButton" destination="qEo-pP-n0h" id="1QS-vK-40s"/>
2817 <outlet property="termsTextView" destination="XRd-W8-YCf" id="Lad-5v-1WT"/> 3106 <outlet property="termsTextView" destination="XRd-W8-YCf" id="Lad-5v-1WT"/>
2818 <outlet property="termsTextViewHeight" destination="kUA-53-MNE" id="R1h-wF-gA7"/> 3107 <outlet property="termsTextViewHeight" destination="kUA-53-MNE" id="R1h-wF-gA7"/>
......
...@@ -6,12 +6,102 @@ ...@@ -6,12 +6,102 @@
6 // 6 //
7 7
8 import UIKit 8 import UIKit
9 +//import RSBarcodes_Swift
10 +import AVFoundation
11 +// import SwiftEventBus
9 12
10 -@objc public class UnifiedCouponBCFooterTableViewCell: UITableViewCell { 13 +@objc public class UnifiedCouponBCFooterTableViewCell: UITableViewCell, UITextViewDelegate {
14 + @IBOutlet weak var termsButton: UIButton!
15 + @IBOutlet weak var termsTextView: UnselectableTappableTextView!
16 + @IBOutlet weak var termsTextViewHeight: NSLayoutConstraint!
17 + @IBOutlet weak var mapButton: UIButton!
18 + @IBOutlet weak var mapButtonHeight: NSLayoutConstraint!
19 + @IBOutlet weak var mapButtonTopSpace: NSLayoutConstraint!
11 20
12 public override func awakeFromNib() { 21 public override func awakeFromNib() {
13 super.awakeFromNib() 22 super.awakeFromNib()
14 // Initialization code 23 // Initialization code
24 +
25 + termsTextView.delegate = self
26 +
27 + mapButton.titleLabel?.font = UIFont(name: "PFSquareSansPro-Medium", size: 18)
28 + mapButton.setTitle("Δες τα supermarket", for: .normal)
29 + mapButton.setTitleColor(UIColor(red: 1.00, green: 1.00, blue: 1.00, alpha: 1.00), for: .normal)
30 + mapButton.backgroundColor = UIColor(red: 0.47, green: 0.75, blue: 0.08, alpha: 1.00)
31 + mapButton.layer.cornerRadius = 8.0
32 + mapButton.frame = CGRect(x: 0.0, y: 0.0, width: mapButton.intrinsicContentSize.width, height: 44)
33 + mapButton.contentEdgeInsets = UIEdgeInsets(top: 1, left: 16, bottom: 0, right: 16)
34 +
35 + // mapButton.isHidden = true
36 + // mapButtonHeight.constant = 0
37 + // mapButtonTopSpace.constant = 0
38 +
39 + // let merchantList:Array<swiftApi.MerchantModel> = swiftApi().getMerchantList()
40 +
41 + // for merchant in merchantList {
42 + // if (merchant._uuid == couponSetData?.merchant_uuid) {
43 + // if (merchant._show_map == true) {
44 + // mapButton.setTitle("Δες τα καταστήματα", for: .normal)
45 + // mapButton.frame = CGRect(x: 0.0, y: 0.0, width: mapButton.intrinsicContentSize.width, height: 44)
46 + // mapButton.contentEdgeInsets = UIEdgeInsets(top: 1, left: 16, bottom: 0, right: 16)
47 + // mapButton.isHidden = false
48 + // mapBtnVisible = true
49 + // eshopBtnVisible = false
50 + // mapButtonHeight.constant = 44
51 + // mapButtonTopSpace.constant = 10
52 + // } else if (merchant._eshop == true) {
53 + // mapButton.setTitle("Δες το eshop", for: .normal)
54 + // mapButton.frame = CGRect(x: 0.0, y: 0.0, width: mapButton.intrinsicContentSize.width, height: 44)
55 + // mapButton.contentEdgeInsets = UIEdgeInsets(top: 1, left: 16, bottom: 0, right: 16)
56 + // mapButton.isHidden = false
57 + // mapBtnVisible = false
58 + // eshopBtnVisible = true
59 + // mapButtonHeight.constant = 44
60 + // mapButtonTopSpace.constant = 10
61 + // } else {
62 + // mapButton.isHidden = true
63 + // mapBtnVisible = false
64 + // eshopBtnVisible = false
65 + // mapButtonHeight.constant = 0
66 + // mapButtonTopSpace.constant = 0
67 + // }
68 + // eshopWebsite = merchant._website
69 + // break;
70 + // }
71 + // }
72 +
73 + // Fix width for ipad
74 +// if UIDevice.current.userInterfaceIdiom == .pad {
75 +// // iPad
76 +// mapButton.widthAnchor.constraint(equalToConstant: 250).isActive = true
77 +// } else {
78 +// // not iPad (iPhone, mac, tv, carPlay, unspecified)
79 +// mapButton.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.6).isActive = true
80 +// }
81 +
82 + termsButton.titleLabel?.font = UIFont(name: "PFSquareSansPro-Regular", size: 16)
83 +// termsButton.imageView?.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.5)
84 + termsButton.setTitle("Όροι χρήσης", for: .normal)
85 + termsButton.setTitleColor(UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00), for: .normal)
86 + termsButton.setImage(UIImage(named: "ic_down_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
87 + termsButton.semanticContentAttribute = .forceRightToLeft
88 + termsButton.tintColor = UIColor(red: 0.21, green: 0.32, blue: 0.41, alpha: 1.00)
89 + termsButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 0);
90 + termsButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5);
91 + termsButton.imageView?.layer.transform = CATransform3DMakeScale(0.8, 0.8, 0.8)
92 +
93 + let termsText = "1. Το εκπτωτικό κουπόνι ισχύει έως την ημερομηνία που αναφέρεται παραπάνω\n2. To εκπτωτικό κουπόνι αφορά στα ενεργά κουπόνια προσφορών όπως αναφέρονται παραπάνω.\n3. Το εκπτωτικό κουπόνι μπορεί να χρησιμοποιηθεί σε μια μόνο συναλλαγή.\n4. Εάν δεν γίνει χρήση ενός επιμέρους κουπονιού προσφοράς από το εκπτωτικό κουπόνι, το κουπόνι προσφοράς επιστρέφει στο καλάθι στην ενότητα COSMOTE SuperMarket Deals"
94 + termsTextView.attributedText = NSAttributedString(string: termsText)
95 + termsTextView.font = UIFont(name: "PFSquareSansPro-Regular", size: 15)
96 + termsTextView.textColor = UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00)
97 + termsTextView.textAlignment = .center
98 + termsTextView.isScrollEnabled = false
99 +
100 + termsTextView.isUserInteractionEnabled = true
101 + termsTextView.isEditable = false
102 + termsTextView.isSelectable = true
103 + termsTextView.dataDetectorTypes = [.link]
104 +
15 } 105 }
16 106
17 public override func setSelected(_ selected: Bool, animated: Bool) { 107 public override func setSelected(_ selected: Bool, animated: Bool) {
...@@ -19,5 +109,31 @@ import UIKit ...@@ -19,5 +109,31 @@ import UIKit
19 109
20 // Configure the view for the selected state 110 // Configure the view for the selected state
21 } 111 }
112 +
113 + public func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
114 + UIApplication.shared.open(URL)
115 +
116 + // Disable `.preview` by 3D Touch and other interactions
117 + return false
118 + }
119 +
120 + func configureCell(termsVisible: Bool) {
121 + toggleTerms(termsVisible: termsVisible)
122 + }
123 +
124 + func toggleTerms(termsVisible: Bool) {
125 + if (termsVisible) {
126 + termsTextView.isHidden = false
127 + let targetSize = CGSize(width: termsTextView.frame.width, height: CGFloat(MAXFLOAT))
128 + termsTextViewHeight.constant = termsTextView.sizeThatFits(targetSize).height
129 +
130 + termsButton.setImage(UIImage(named: "ic_up_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
131 + } else {
132 + termsTextView.isHidden = true
133 + termsTextViewHeight.constant = CGFloat(0)
134 +
135 + termsButton.setImage(UIImage(named: "ic_down_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
136 + }
137 + }
22 138
23 } 139 }
......
...@@ -6,12 +6,111 @@ ...@@ -6,12 +6,111 @@
6 // 6 //
7 7
8 import UIKit 8 import UIKit
9 +import RSBarcodes_Swift
10 +import AVFoundation
11 +// import SwiftEventBus
9 12
10 -@objc public class UnifiedCouponBCHeaderTableViewCell: UITableViewCell { 13 +@objc public class UnifiedCouponBCHeaderTableViewCell: UITableViewCell, UITextViewDelegate {
14 + @IBOutlet weak var couponImage: UIImageView!
15 + @IBOutlet weak var couponImageHeight: NSLayoutConstraint!
16 + @IBOutlet weak var nameLabel: UILabel!
17 + @IBOutlet weak var discriptionLabel: UILabel!
18 + @IBOutlet weak var merchantDescrTextView: UnselectableTappableTextView!
19 + @IBOutlet weak var merchantDescrTextViewHeight: NSLayoutConstraint!
20 + @IBOutlet weak var merchantDescrTextViewTopSpace: NSLayoutConstraint!
21 + @IBOutlet weak var couponView: UIView!
22 + @IBOutlet weak var couponNumberLabel: CopyableLabel!
23 + @IBOutlet weak var barcodeImage: UIImageView!
24 + @IBOutlet weak var barcodeImageHeight: NSLayoutConstraint!
25 + @IBOutlet weak var barcodeLabel: UILabel!
26 + @IBOutlet weak var barcodeLabelHeight: NSLayoutConstraint!
27 + @IBOutlet weak var showBarcodeButton: UIButton!
28 + @IBOutlet weak var expirationLabel: UILabel!
29 + @IBOutlet weak var borderViewHeight: NSLayoutConstraint!
30 + @IBOutlet weak var borderView2Height: NSLayoutConstraint!
31 + @IBOutlet weak var border1TopSpace: NSLayoutConstraint!
32 + @IBOutlet weak var barcodeImageTopSpace: NSLayoutConstraint!
33 + @IBOutlet weak var barcodeLabelTopSpace: NSLayoutConstraint!
34 + @IBOutlet weak var border2TopSpace: NSLayoutConstraint!
35 + @IBOutlet weak var showBarcodeButtonHeight: NSLayoutConstraint!
36 + @IBOutlet weak var showBarcodeButtonTopSpace: NSLayoutConstraint!
37 + @IBOutlet weak var showCouponsButton: UIButton!
38 +
39 + let uiscreen: CGRect = UIScreen.main.bounds
11 40
12 public override func awakeFromNib() { 41 public override func awakeFromNib() {
13 super.awakeFromNib() 42 super.awakeFromNib()
14 // Initialization code 43 // Initialization code
44 +
45 + merchantDescrTextView.delegate = self
46 +
47 + // COUPONSET: desc, img_preview, name, terms
48 + // COUPON: coupon, expiration, discount, status
49 +
50 +// let couponSetData: swiftApi.CouponSetItemModel? = coupon?.couponset_data
51 +
52 +// couponImage.load(link: couponSetData?.img_preview ?? "", placeholder: UIImage(), cache: URLCache())
53 + couponImage.image = UIImage(named: "market_bg", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
54 + couponImage.contentMode = .scaleAspectFill
55 + couponImageHeight.constant = 230 // 253 // self.uiscreen.height * 0.25
56 +
57 + nameLabel.text = "Εκπτωτικό κουπόνι COSMOTE SuperMarket Deals!"
58 + discriptionLabel.text = "Χρησιμοποίησε τον παρακάτω κωδικό και πάρε έκπτωση στα ενεργά κουπόνια προσφορών."
59 +
60 + merchantDescrTextView.text = ""
61 + merchantDescrTextViewTopSpace.constant = CGFloat(0)
62 + merchantDescrTextViewHeight.constant = CGFloat(0)
63 + merchantDescrTextView.isHidden = true
64 +
65 +// let merchantList:Array<swiftApi.MerchantModel> = swiftApi().getMerchantList()
66 +
67 +// for merchant in merchantList {
68 +// if (merchant._uuid == couponSetData?.merchant_uuid) {
69 +// let htmlMerchDescrText = merchant._body
70 +//
71 +// if (htmlMerchDescrText != "") {
72 +// merchantDescrTextView.attributedText = htmlMerchDescrText.htmlToAttributedString
73 +// merchantDescrTextView.font = UIFont(name: "PFSquareSansPro-Regular", size: 17)
74 +// merchantDescrTextView.textColor = UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00)
75 +// merchantDescrTextView.textAlignment = .center
76 +// merchantDescrTextView.isScrollEnabled = false
77 +// merchantDescrTextView.isUserInteractionEnabled = true
78 +// merchantDescrTextView.isEditable = false
79 +// merchantDescrTextView.isSelectable = true
80 +// merchantDescrTextView.dataDetectorTypes = [.link]
81 +//
82 +// merchantDescrTextView.isHidden = false
83 +// merchantDescrTextViewTopSpace.constant = CGFloat(15)
84 +// let targetSize = CGSize(width: merchantDescrTextView.frame.width, height: CGFloat(MAXFLOAT))
85 +// merchantDescrTextViewHeight.constant = merchantDescrTextView.sizeThatFits(targetSize).height
86 +// }
87 +//
88 +// break;
89 +// }
90 +// }
91 +
92 +
93 + showBarcodeButton.titleLabel?.font = UIFont(name: "PFSquareSansPro-Medium", size: 16)
94 + showBarcodeButton.setTitle("Εμφάνιση barcode", for: .normal)
95 + showBarcodeButton.setTitleColor(UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00), for: .normal)
96 + showBarcodeButton.setImage(UIImage(named: "ic_down_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
97 + showBarcodeButton.semanticContentAttribute = .forceRightToLeft
98 + showBarcodeButton.tintColor = UIColor(red: 0.21, green: 0.32, blue: 0.41, alpha: 1.00)
99 + showBarcodeButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 0);
100 + showBarcodeButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5);
101 + showBarcodeButton.imageView?.layer.transform = CATransform3DMakeScale(0.8, 0.8, 0.8)
102 +
103 + showCouponsButton.titleLabel?.font = UIFont(name: "PFSquareSansPro-Regular", size: 16)
104 +// termsButton.imageView?.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.5)
105 + showCouponsButton.setTitle("Εμφάνιση κουπονιών", for: .normal)
106 + showCouponsButton.setTitleColor(UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00), for: .normal)
107 + showCouponsButton.setImage(UIImage(named: "ic_down_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
108 + showCouponsButton.semanticContentAttribute = .forceRightToLeft
109 + showCouponsButton.tintColor = UIColor(red: 0.21, green: 0.32, blue: 0.41, alpha: 1.00)
110 + showCouponsButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 0);
111 + showCouponsButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5);
112 + showCouponsButton.imageView?.layer.transform = CATransform3DMakeScale(0.8, 0.8, 0.8)
113 +
15 } 114 }
16 115
17 public override func setSelected(_ selected: Bool, animated: Bool) { 116 public override func setSelected(_ selected: Bool, animated: Bool) {
...@@ -19,5 +118,154 @@ import UIKit ...@@ -19,5 +118,154 @@ import UIKit
19 118
20 // Configure the view for the selected state 119 // Configure the view for the selected state
21 } 120 }
121 +
122 + func configureCell(coupon: swiftApi.UnifiedCouponModel?, couponsVisible: Bool) {
123 +
124 + couponView.layer.cornerRadius = 8
125 + couponNumberLabel.text = ((coupon?._code != 0) ? String(coupon?._code ?? 0) : "")
126 + couponView.frame = CGRect(x: 0.0, y: 0.0, width: couponView.intrinsicContentSize.width, height: 55)
127 +
128 + let barcodeString = constructBarcode(coupon: coupon) ?? ""
129 + barcodeLabel.text = barcodeString
130 +
131 + // Uncomment if Barcode Section is active again
132 + 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.1)) {
133 + barcodeImage.image = barcodeUIImage
134 +
135 + barcodeImageHeight.constant = self.uiscreen.height * 0.1
136 +
137 + showBarcodeButton.isHidden = false
138 + showBarcodeButtonHeight.constant = 50
139 + showBarcodeButtonTopSpace.constant = 10
140 +
141 + } else {
142 + barcodeImageHeight.constant = 0
143 +
144 + showBarcodeButton.isHidden = true
145 + showBarcodeButtonHeight.constant = 0
146 + showBarcodeButtonTopSpace.constant = 0
147 + }
148 + // ===
149 +
150 + // === Hide Barcode Section
151 +// barcodeImage.isHidden = true
152 +// barcodeImageHeight.constant = CGFloat(0)
153 +// barcodeLabel.isHidden = true
154 +// barcodeLabelHeight.constant = CGFloat(0)
155 +//
156 +// borderViewHeight.constant = CGFloat(0)
157 +// borderView2Height.constant = CGFloat(0)
158 +//
159 +// border1TopSpace.constant = CGFloat(0) // 20
160 +// barcodeImageTopSpace.constant = CGFloat(0) // 10
161 +// barcodeLabelTopSpace.constant = CGFloat(0) // 10
162 +// border2TopSpace.constant = CGFloat(0) // 15
163 +//
164 + showBarcodeButton.isHidden = true
165 + showBarcodeButtonHeight.constant = 0
166 + showBarcodeButtonTopSpace.constant = 0
167 + // ===
168 +
169 + if let earliestExpiration = coupon?._coupons.min(by: { ($0.expiration ?? "") < ($1.expiration ?? "") }) {
170 + expirationLabel.text = "Το κουπόνι ισχύει έως " + (earliestExpiration.expiration ?? "")
171 + } else {
172 + expirationLabel.text = ""
173 + }
174 +
175 + toggleCoupons(couponsVisible: couponsVisible)
176 +
177 + }
178 +
179 + func constructBarcode(coupon: swiftApi.UnifiedCouponModel?) -> String? {
180 + // EAN 13 barcode construction
181 +// let couponData = coupon?.couponset_data
182 + let couponString = coupon?._barcode ?? ""
183 +
184 + if (!couponString.isEmpty) {
185 + var checkDigit = 0;
186 + var result = 0;
187 +
188 + var fixedCouponCode = couponString;
189 + if (fixedCouponCode.count < 12) {
190 + let loops = 12 - fixedCouponCode.count;
191 + var zerosStr = "";
192 + for i in 0 ..< loops {
193 + zerosStr += "0"
194 + }
195 + // fixedCouponCode = zerosStr + fixedCouponCode;
196 + fixedCouponCode = fixedCouponCode + zerosStr;
197 + }
198 +
199 + var multiplier = 3;
200 + for idx in (0 ... (fixedCouponCode.count - 1)).reversed() {
201 + let curChar = fixedCouponCode[idx];
202 + result += (Int(curChar) ?? 0) * multiplier;
203 + multiplier = multiplier == 3 ? 1 : 3;
204 + }
205 + checkDigit = 10 - (result % 10);
206 +
207 + let barcodeStr = fixedCouponCode + String(checkDigit);
208 + return barcodeStr;
209 + }
210 +
211 + return ""
212 + }
213 +
214 + public func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
215 + UIApplication.shared.open(URL)
216 +
217 + // Disable `.preview` by 3D Touch and other interactions
218 + return false
219 + }
220 +
221 + func toggleBarcode(barcodeVisible: Bool) {
222 + if (barcodeVisible) {
223 + barcodeImage.isHidden = false
224 + if (barcodeImage.image == nil) {
225 + barcodeImageHeight.constant = CGFloat(0)
226 + } else {
227 + barcodeImageHeight.constant = self.uiscreen.height * 0.1
228 + }
229 + barcodeLabel.isHidden = false
230 + let targetSize = CGSize(width: barcodeLabel.frame.width, height: CGFloat(MAXFLOAT))
231 + barcodeLabelHeight.constant = barcodeLabel.sizeThatFits(targetSize).height
232 +
233 + borderViewHeight.constant = CGFloat(1)
234 + borderView2Height.constant = CGFloat(1)
235 +
236 + border1TopSpace.constant = CGFloat(20) // 20
237 + barcodeImageTopSpace.constant = CGFloat(10) // 10
238 + barcodeLabelTopSpace.constant = CGFloat(10) // 10
239 + border2TopSpace.constant = CGFloat(15) // 15
240 +
241 + showBarcodeButton.setTitle("Απόκρυψη barcode", for: .normal)
242 + showBarcodeButton.setImage(UIImage(named: "ic_up_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
243 +
244 + } else {
245 + barcodeImage.isHidden = true
246 + barcodeImageHeight.constant = CGFloat(0)
247 + barcodeLabel.isHidden = true
248 + barcodeLabelHeight.constant = CGFloat(0)
249 +
250 + borderViewHeight.constant = CGFloat(0)
251 + borderView2Height.constant = CGFloat(0)
252 +
253 + border1TopSpace.constant = CGFloat(0) // 20
254 + barcodeImageTopSpace.constant = CGFloat(0) // 10
255 + barcodeLabelTopSpace.constant = CGFloat(0) // 10
256 + border2TopSpace.constant = CGFloat(0) // 15
257 +
258 + showBarcodeButton.setTitle("Εμφάνιση barcode", for: .normal)
259 + showBarcodeButton.setImage(UIImage(named: "ic_down_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
260 + }
261 + }
262 +
263 + func toggleCoupons(couponsVisible: Bool) {
264 + if (couponsVisible) {
265 + showCouponsButton.setImage(UIImage(named: "ic_up_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
266 + } else {
267 + showCouponsButton.setImage(UIImage(named: "ic_down_dark.png", in: MyEmptyClass.resourceBundle(), compatibleWith: nil), for: .normal)
268 + }
269 + }
22 270
23 } 271 }
......
...@@ -70,7 +70,7 @@ extension UITableView { ...@@ -70,7 +70,7 @@ extension UITableView {
70 @IBOutlet weak var mapButtonTopSpace: NSLayoutConstraint! 70 @IBOutlet weak var mapButtonTopSpace: NSLayoutConstraint!
71 @IBOutlet weak var showBarcodeButtonHeight: NSLayoutConstraint! 71 @IBOutlet weak var showBarcodeButtonHeight: NSLayoutConstraint!
72 @IBOutlet weak var showBarcodeButtonTopSpace: NSLayoutConstraint! 72 @IBOutlet weak var showBarcodeButtonTopSpace: NSLayoutConstraint!
73 - @IBOutlet weak var tableView: ContentSizedTableView! 73 + @IBOutlet weak var tableView: UITableView!
74 @IBOutlet weak var tableViewHeight: NSLayoutConstraint! 74 @IBOutlet weak var tableViewHeight: NSLayoutConstraint!
75 @IBOutlet weak var showCouponsButton: UIButton! 75 @IBOutlet weak var showCouponsButton: UIButton!
76 76
...@@ -296,9 +296,9 @@ extension UITableView { ...@@ -296,9 +296,9 @@ extension UITableView {
296 showCouponsButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5); 296 showCouponsButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 5);
297 showCouponsButton.imageView?.layer.transform = CATransform3DMakeScale(0.8, 0.8, 0.8) 297 showCouponsButton.imageView?.layer.transform = CATransform3DMakeScale(0.8, 0.8, 0.8)
298 298
299 - tableView.isScrollEnabled = false 299 +// tableView.isScrollEnabled = false
300 - tableView.isHidden = true 300 +// tableView.isHidden = true
301 - tableViewHeight.constant = CGFloat(0) 301 +// tableViewHeight.constant = CGFloat(0)
302 302
303 // tableView.isHidden = false 303 // tableView.isHidden = false
304 // let targetSize = CGSize(width: tableView.frame.width, height: CGFloat(MAXFLOAT)) 304 // let targetSize = CGSize(width: tableView.frame.width, height: CGFloat(MAXFLOAT))
...@@ -476,17 +476,23 @@ extension UITableView { ...@@ -476,17 +476,23 @@ extension UITableView {
476 // MARK: - Actions 476 // MARK: - Actions
477 @IBAction func showCouponsButtonAction(_ sender: Any) { 477 @IBAction func showCouponsButtonAction(_ sender: Any) {
478 couponsVisible = !couponsVisible 478 couponsVisible = !couponsVisible
479 - toggleCoupons() 479 +// self.tableView.reloadSections(IndexSet(0..<2), with: .none)
480 + self.tableView.reloadData()
481 +// toggleCoupons()
480 } 482 }
481 483
482 @IBAction func showBarcodeAction(_ sender: Any) { 484 @IBAction func showBarcodeAction(_ sender: Any) {
483 barcodeVisible = !barcodeVisible 485 barcodeVisible = !barcodeVisible
484 - toggleBarcode() 486 +// self.tableView.reloadSections(IndexSet(integer: 0), with: .none)
487 + self.tableView.reloadData()
488 +// toggleBarcode()
485 } 489 }
486 490
487 @IBAction func termsButtonAction(_ sender: Any) { 491 @IBAction func termsButtonAction(_ sender: Any) {
488 termsVisible = !termsVisible 492 termsVisible = !termsVisible
489 - toggleTerms() 493 +// self.tableView.reloadSections(IndexSet(integer: 2), with: .none)
494 + self.tableView.reloadData()
495 +// toggleTerms()
490 } 496 }
491 497
492 @IBAction func mapButtonAction(_ sender: Any) { 498 @IBAction func mapButtonAction(_ sender: Any) {
...@@ -526,24 +532,73 @@ extension UITableView { ...@@ -526,24 +532,73 @@ extension UITableView {
526 extension UnifiedCouponBarcodeViewController: UITableViewDelegate, UITableViewDataSource{ 532 extension UnifiedCouponBarcodeViewController: UITableViewDelegate, UITableViewDataSource{
527 533
528 public func numberOfSections(in tableView: UITableView) -> Int { 534 public func numberOfSections(in tableView: UITableView) -> Int {
529 - return 1 535 + return 3
530 } 536 }
531 537
532 public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 538 public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
533 - return self.coupon?._coupons.count ?? 0 539 + if (section == 0) {
540 + return 1
541 + } else if (section == 1) {
542 + if (couponsVisible == true) {
543 + return self.coupon?._coupons.count ?? 0
544 + } else {
545 + return 0
546 + }
547 +
548 + } else if (section == 2) {
549 + return 1
550 + } else {
551 + return 0
552 + }
553 +
534 } 554 }
535 555
536 public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 556 public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
537 - return 120.0 + 8.0 557 + if (indexPath.section == 0) {
538 -// return UITableViewAutomaticDimension 558 + return UITableView.automaticDimension
559 + } else if (indexPath.section == 1) {
560 + if (couponsVisible == true) {
561 + return 120.0 + 8.0
562 + } else {
563 + return 0.0
564 + }
565 +
566 + } else if (indexPath.section == 2) {
567 + return UITableView.automaticDimension
568 + } else {
569 + return 0.0
570 + }
539 } 571 }
540 572
541 public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 573 public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
542 - let cell = tableView.dequeueReusableCell(withIdentifier: "CouponsTableViewCellId", for: indexPath) as! CouponsTableViewCell 574 + if (indexPath.section == 0) {
543 - 575 + let cell = tableView.dequeueReusableCell(withIdentifier: "UnifiedCouponBCHeaderTableViewCell", for: indexPath) as! UnifiedCouponBCHeaderTableViewCell
544 - cell.configureCell(coupon: (self.coupon?._coupons[indexPath.row])!) 576 +
545 - 577 + cell.configureCell(coupon: self.coupon, couponsVisible: couponsVisible)
546 - return cell 578 +
579 + return cell
580 +
581 + } else if (indexPath.section == 1) {
582 + let cell = tableView.dequeueReusableCell(withIdentifier: "CouponsTableViewCellId", for: indexPath) as! CouponsTableViewCell
583 +
584 + cell.configureCell(coupon: (self.coupon?._coupons[indexPath.row])!, isMarket: true)
585 +
586 +// cell.couponBgImage.image = UIImage(named: "coupon_bg_shadow", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
587 +
588 + cell.layer.shadowColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.16).cgColor
589 + cell.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
590 + cell.layer.shadowOpacity = 1.0
591 + cell.layer.shadowRadius = 6.0
592 +
593 + return cell
594 +
595 + } else {
596 + let cell = tableView.dequeueReusableCell(withIdentifier: "UnifiedCouponBCFooterTableViewCell", for: indexPath) as! UnifiedCouponBCFooterTableViewCell
597 +
598 + cell.configureCell(termsVisible: termsVisible)
599 +
600 + return cell
601 + }
547 } 602 }
548 603
549 public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 604 public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
......