Manos Chorianopoulos

add WalletViewController

Showing 31 changed files with 752 additions and 16 deletions
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key> 7 <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key>
8 <dict> 8 <dict>
9 <key>orderHint</key> 9 <key>orderHint</key>
10 - <integer>1</integer> 10 + <integer>0</integer>
11 </dict> 11 </dict>
12 </dict> 12 </dict>
13 </dict> 13 </dict>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key> 7 <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key>
8 <dict> 8 <dict>
9 <key>orderHint</key> 9 <key>orderHint</key>
10 - <integer>0</integer> 10 + <integer>1</integer>
11 </dict> 11 </dict>
12 </dict> 12 </dict>
13 </dict> 13 </dict>
......
...@@ -281,25 +281,423 @@ ...@@ -281,25 +281,423 @@
281 <scene sceneID="tSr-9x-GQW"> 281 <scene sceneID="tSr-9x-GQW">
282 <objects> 282 <objects>
283 <viewController storyboardIdentifier="WalletViewController" id="pKQ-52-a1r" customClass="WalletViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController"> 283 <viewController storyboardIdentifier="WalletViewController" id="pKQ-52-a1r" customClass="WalletViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController">
284 - <view key="view" contentMode="scaleToFill" id="e1e-Eg-v4q"> 284 + <view key="view" contentMode="scaleToFill" id="fsD-e8-hUb">
285 <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> 285 <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
286 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 286 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
287 <subviews> 287 <subviews>
288 - <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wmt-N1-Ts4"> 288 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VHx-uN-GE4" userLabel="Main View">
289 - <rect key="frame" x="140" y="242" width="136" height="31"/> 289 + <rect key="frame" x="0.0" y="44" width="414" height="852"/>
290 + <subviews>
291 + <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="jYz-96-Lp1">
292 + <rect key="frame" x="0.0" y="0.0" width="414" height="852"/>
293 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
294 + <color key="sectionIndexBackgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
295 + <view key="tableHeaderView" contentMode="scaleToFill" id="ICd-s2-mfF" userLabel="TableHeaderView">
296 + <rect key="frame" x="0.0" y="0.0" width="414" height="663"/>
290 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 297 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
298 + <subviews>
299 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Et1-y7-npI" userLabel="HeaderView">
300 + <rect key="frame" x="0.0" y="0.0" width="414" height="179"/>
301 + <subviews>
302 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_background_circle" translatesAutoresizingMaskIntoConstraints="NO" id="wP5-YG-vSP">
303 + <rect key="frame" x="0.0" y="0.0" width="414" height="179"/>
304 + </imageView>
305 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="wJv-NF-rMf">
306 + <rect key="frame" x="174.5" y="30" width="65" height="65"/>
307 + <constraints>
308 + <constraint firstAttribute="height" constant="65" id="5OC-RX-Njv"/>
309 + <constraint firstAttribute="width" constant="65" id="9aB-0n-nR8"/>
310 + </constraints>
311 + </imageView>
312 + <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="1XZ-NB-F8P">
313 + <rect key="frame" x="20" y="105" width="374" height="18"/>
314 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
315 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="0.84705882349999995" colorSpace="calibratedRGB"/>
316 + <nil key="highlightedColor"/>
317 + </label>
318 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UNL-Oh-sPV">
319 + <rect key="frame" x="175.5" y="133" width="63" height="26"/>
320 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
321 + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="13"/>
322 + <inset key="contentEdgeInsets" minX="10" minY="5" maxX="10" maxY="5"/>
323 + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
324 + <state key="normal" title="Button">
325 + <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
326 + </state>
327 + <connections>
328 + <action selector="qustionnaireButtonAction:" destination="pKQ-52-a1r" eventType="touchUpInside" id="Iro-Jh-eD9"/>
329 + </connections>
330 + </button>
331 + </subviews>
332 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
333 + <constraints>
334 + <constraint firstAttribute="trailing" secondItem="1XZ-NB-F8P" secondAttribute="trailing" constant="20" id="2Qd-Br-8jF"/>
335 + <constraint firstAttribute="bottom" secondItem="wP5-YG-vSP" secondAttribute="bottom" id="8QU-gc-Cf4"/>
336 + <constraint firstItem="UNL-Oh-sPV" firstAttribute="centerX" secondItem="Et1-y7-npI" secondAttribute="centerX" id="9qp-mK-ett"/>
337 + <constraint firstItem="wJv-NF-rMf" firstAttribute="top" secondItem="Et1-y7-npI" secondAttribute="top" constant="30" id="ADQ-Rt-XHp"/>
338 + <constraint firstItem="1XZ-NB-F8P" firstAttribute="leading" secondItem="Et1-y7-npI" secondAttribute="leading" constant="20" id="QAp-GR-8St"/>
339 + <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="UNL-Oh-sPV" secondAttribute="trailing" constant="20" id="Xng-LS-Uzp"/>
340 + <constraint firstItem="wP5-YG-vSP" firstAttribute="leading" secondItem="Et1-y7-npI" secondAttribute="leading" id="g2f-8d-5H4"/>
341 + <constraint firstAttribute="bottom" secondItem="UNL-Oh-sPV" secondAttribute="bottom" constant="20" id="m3Y-Ph-UoF"/>
342 + <constraint firstAttribute="trailing" secondItem="wP5-YG-vSP" secondAttribute="trailing" id="oop-ae-Ia8"/>
343 + <constraint firstItem="UNL-Oh-sPV" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Et1-y7-npI" secondAttribute="leading" constant="20" id="poc-QE-7eU"/>
344 + <constraint firstItem="UNL-Oh-sPV" firstAttribute="top" secondItem="1XZ-NB-F8P" secondAttribute="bottom" constant="10" id="s2n-QU-Jtw"/>
345 + <constraint firstItem="wJv-NF-rMf" firstAttribute="centerX" secondItem="Et1-y7-npI" secondAttribute="centerX" id="sQz-VS-1wS"/>
346 + <constraint firstItem="wP5-YG-vSP" firstAttribute="top" secondItem="Et1-y7-npI" secondAttribute="top" id="suQ-zX-PC0"/>
347 + <constraint firstItem="1XZ-NB-F8P" firstAttribute="top" secondItem="wJv-NF-rMf" secondAttribute="bottom" constant="10" id="zc1-69-P8k"/>
348 + </constraints>
349 + </view>
350 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hdz-dS-6jm">
351 + <rect key="frame" x="45" y="209" width="359" height="75"/>
352 + <subviews>
353 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EpZ-Qo-xby">
354 + <rect key="frame" x="-35" y="2.5" width="70" height="70"/>
355 + <subviews>
356 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wallet_dfy_earn" translatesAutoresizingMaskIntoConstraints="NO" id="3RL-2R-WXw">
357 + <rect key="frame" x="0.0" y="0.0" width="70" height="70"/>
358 + </imageView>
359 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="18,00€" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AIw-YV-t1D">
360 + <rect key="frame" x="5" y="41" width="60" height="12"/>
361 + <fontDescription key="fontDescription" type="system" weight="black" pointSize="10"/>
362 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/>
363 + <nil key="highlightedColor"/>
364 + </label>
365 + </subviews>
366 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
367 + <constraints>
368 + <constraint firstAttribute="trailing" secondItem="AIw-YV-t1D" secondAttribute="trailing" constant="5" id="G6d-Sk-jvZ"/>
369 + <constraint firstAttribute="trailing" secondItem="3RL-2R-WXw" secondAttribute="trailing" id="HL4-6q-hD6"/>
370 + <constraint firstItem="3RL-2R-WXw" firstAttribute="leading" secondItem="EpZ-Qo-xby" secondAttribute="leading" id="Qcq-sK-rss"/>
371 + <constraint firstAttribute="bottom" secondItem="AIw-YV-t1D" secondAttribute="bottom" constant="17" id="WfI-TH-Ji4"/>
372 + <constraint firstAttribute="height" constant="70" id="hHb-3c-W00"/>
373 + <constraint firstAttribute="bottom" secondItem="3RL-2R-WXw" secondAttribute="bottom" id="hZd-Uk-fPO"/>
374 + <constraint firstItem="AIw-YV-t1D" firstAttribute="leading" secondItem="EpZ-Qo-xby" secondAttribute="leading" constant="5" id="l48-hw-6O7"/>
375 + <constraint firstItem="3RL-2R-WXw" firstAttribute="top" secondItem="EpZ-Qo-xby" secondAttribute="top" id="x3l-B7-9AT"/>
376 + <constraint firstAttribute="width" constant="70" id="xdM-k6-9ga"/>
377 + </constraints>
378 + </view>
379 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Μέχρι τώρα έχεις κερδίσει 18,00€ με το DEALS for YOU!" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="h7B-UX-3wG">
380 + <rect key="frame" x="45" y="18.5" width="304" height="38.5"/>
381 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
382 + <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
383 + <nil key="highlightedColor"/>
384 + </label>
385 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Cbf-yt-CwN" userLabel="DfyEarnButton">
386 + <rect key="frame" x="-35" y="0.0" width="394" height="75"/>
387 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
291 <state key="normal" title="Button"/> 388 <state key="normal" title="Button"/>
292 - <buttonConfiguration key="configuration" style="plain" title="Go to Active gifts"/> 389 + <buttonConfiguration key="configuration" style="plain" title="Button">
390 + <color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
391 + </buttonConfiguration>
293 <connections> 392 <connections>
294 - <action selector="navigateToActiveGifts:" destination="pKQ-52-a1r" eventType="touchUpInside" id="QOB-ZM-rnM"/> 393 + <action selector="dfyEarnButtonAction:" destination="pKQ-52-a1r" eventType="touchUpInside" id="ayH-yn-tNT"/>
295 </connections> 394 </connections>
296 </button> 395 </button>
297 </subviews> 396 </subviews>
298 - <viewLayoutGuide key="safeArea" id="Jx1-b6-RBF"/> 397 + <color key="backgroundColor" red="0.32549019610000002" green="0.42352941179999998" blue="0.47450980390000003" alpha="1" colorSpace="calibratedRGB"/>
299 - <color key="backgroundColor" systemColor="systemBackgroundColor"/> 398 + <constraints>
399 + <constraint firstItem="Cbf-yt-CwN" firstAttribute="top" secondItem="hdz-dS-6jm" secondAttribute="top" id="0QG-zY-8fV"/>
400 + <constraint firstItem="Cbf-yt-CwN" firstAttribute="leading" secondItem="hdz-dS-6jm" secondAttribute="leading" constant="-35" id="0gP-fn-M1Y"/>
401 + <constraint firstAttribute="bottom" secondItem="Cbf-yt-CwN" secondAttribute="bottom" id="7WA-UN-yez"/>
402 + <constraint firstAttribute="height" constant="75" id="9d9-gP-1Kb"/>
403 + <constraint firstItem="EpZ-Qo-xby" firstAttribute="leading" secondItem="hdz-dS-6jm" secondAttribute="leading" constant="-35" id="A1f-Mr-DAg"/>
404 + <constraint firstItem="h7B-UX-3wG" firstAttribute="leading" secondItem="EpZ-Qo-xby" secondAttribute="trailing" constant="10" id="Ans-y1-fZ6"/>
405 + <constraint firstAttribute="trailing" secondItem="Cbf-yt-CwN" secondAttribute="trailing" id="CBe-IA-rE8"/>
406 + <constraint firstItem="EpZ-Qo-xby" firstAttribute="centerY" secondItem="hdz-dS-6jm" secondAttribute="centerY" id="Zd7-H7-4tp"/>
407 + <constraint firstItem="h7B-UX-3wG" firstAttribute="centerY" secondItem="hdz-dS-6jm" secondAttribute="centerY" id="aJG-e2-wnD"/>
408 + <constraint firstAttribute="trailing" secondItem="h7B-UX-3wG" secondAttribute="trailing" constant="10" id="v6n-48-DZo"/>
409 + </constraints>
410 + </view>
411 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Fef-hi-2VL">
412 + <rect key="frame" x="45" y="314" width="359" height="75"/>
413 + <subviews>
414 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LLM-FB-EYF">
415 + <rect key="frame" x="-35" y="2.5" width="70" height="70"/>
416 + <subviews>
417 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wallet_coupons" translatesAutoresizingMaskIntoConstraints="NO" id="Vfg-nm-Igo">
418 + <rect key="frame" x="0.0" y="0.0" width="70" height="70"/>
419 + </imageView>
420 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="20,00€" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cbA-fm-1uO">
421 + <rect key="frame" x="5" y="41" width="60" height="12"/>
422 + <fontDescription key="fontDescription" type="system" weight="black" pointSize="10"/>
423 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/>
424 + <nil key="highlightedColor"/>
425 + </label>
426 + </subviews>
427 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
428 + <constraints>
429 + <constraint firstAttribute="width" constant="70" id="1q3-Hk-lCS"/>
430 + <constraint firstAttribute="trailing" secondItem="cbA-fm-1uO" secondAttribute="trailing" constant="5" id="Csy-Vt-JD0"/>
431 + <constraint firstAttribute="trailing" secondItem="Vfg-nm-Igo" secondAttribute="trailing" id="GCn-AI-xSF"/>
432 + <constraint firstAttribute="height" constant="70" id="GZK-fu-Rdf"/>
433 + <constraint firstAttribute="bottom" secondItem="Vfg-nm-Igo" secondAttribute="bottom" id="OWH-uc-kdo"/>
434 + <constraint firstItem="Vfg-nm-Igo" firstAttribute="top" secondItem="LLM-FB-EYF" secondAttribute="top" id="Qhu-fj-DHh"/>
435 + <constraint firstItem="Vfg-nm-Igo" firstAttribute="leading" secondItem="LLM-FB-EYF" secondAttribute="leading" id="XGS-1M-h4w"/>
436 + <constraint firstAttribute="bottom" secondItem="cbA-fm-1uO" secondAttribute="bottom" constant="17" id="ZSH-8w-7hG"/>
437 + <constraint firstItem="cbA-fm-1uO" firstAttribute="leading" secondItem="LLM-FB-EYF" secondAttribute="leading" constant="5" id="oat-uW-XpJ"/>
438 + </constraints>
439 + </view>
440 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WdW-lP-g1v">
441 + <rect key="frame" x="45" y="18.5" width="304" height="38.5"/>
442 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
443 + <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
444 + <nil key="highlightedColor"/>
445 + </label>
446 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HAg-Jj-5fz" userLabel="CouponEarnButton">
447 + <rect key="frame" x="-35" y="0.0" width="394" height="75"/>
448 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
449 + <state key="normal" title="Button"/>
450 + <buttonConfiguration key="configuration" style="plain" title="Button">
451 + <color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
452 + </buttonConfiguration>
453 + <connections>
454 + <action selector="couponEarnButtonAction:" destination="pKQ-52-a1r" eventType="touchUpInside" id="RJe-LR-1DM"/>
455 + </connections>
456 + </button>
457 + </subviews>
458 + <color key="backgroundColor" red="0.32549019610000002" green="0.42352941179999998" blue="0.47450980390000003" alpha="1" colorSpace="calibratedRGB"/>
459 + <constraints>
460 + <constraint firstItem="WdW-lP-g1v" firstAttribute="leading" secondItem="LLM-FB-EYF" secondAttribute="trailing" constant="10" id="28E-Mx-dcn"/>
461 + <constraint firstItem="HAg-Jj-5fz" firstAttribute="top" secondItem="Fef-hi-2VL" secondAttribute="top" id="3rw-Wq-GPg"/>
462 + <constraint firstItem="HAg-Jj-5fz" firstAttribute="leading" secondItem="Fef-hi-2VL" secondAttribute="leading" constant="-35" id="4cG-mp-MS2"/>
463 + <constraint firstItem="LLM-FB-EYF" firstAttribute="centerY" secondItem="Fef-hi-2VL" secondAttribute="centerY" id="7yK-Xf-hpQ"/>
464 + <constraint firstAttribute="height" constant="75" id="9eX-HX-DsV"/>
465 + <constraint firstAttribute="bottom" secondItem="HAg-Jj-5fz" secondAttribute="bottom" id="Lw9-P9-D6Y"/>
466 + <constraint firstItem="WdW-lP-g1v" firstAttribute="centerY" secondItem="Fef-hi-2VL" secondAttribute="centerY" id="Tca-h6-G04"/>
467 + <constraint firstAttribute="trailing" secondItem="WdW-lP-g1v" secondAttribute="trailing" constant="10" id="bCT-af-jA9"/>
468 + <constraint firstAttribute="trailing" secondItem="HAg-Jj-5fz" secondAttribute="trailing" id="eIL-nS-2pn"/>
469 + <constraint firstItem="LLM-FB-EYF" firstAttribute="leading" secondItem="Fef-hi-2VL" secondAttribute="leading" constant="-35" id="hhM-v1-xKs"/>
470 + </constraints>
471 + </view>
472 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="dfy_logo_white" translatesAutoresizingMaskIntoConstraints="NO" id="gdf-s4-2CF">
473 + <rect key="frame" x="20" y="429" width="124" height="40"/>
474 + <constraints>
475 + <constraint firstAttribute="height" constant="40" id="Ch9-8X-FNJ"/>
476 + </constraints>
477 + </imageView>
478 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zFT-By-XHL">
479 + <rect key="frame" x="10" y="479" width="394" height="100"/>
480 + <subviews>
481 + <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="MCY-xv-vpg">
482 + <rect key="frame" x="20" y="20" width="254" height="60.5"/>
483 + <subviews>
484 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Ενεργός κωδικός:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucC-u4-AQL">
485 + <rect key="frame" x="0.0" y="0.0" width="254" height="21.5"/>
486 + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
487 + <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/>
488 + <nil key="highlightedColor"/>
489 + </label>
490 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="961544809" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qBe-Jw-QUx">
491 + <rect key="frame" x="0.0" y="23.5" width="254" height="21.5"/>
492 + <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="18"/>
493 + <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/>
494 + <nil key="highlightedColor"/>
495 + </label>
496 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Λήγει σε 4 ημέρες" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qL0-3b-eqA">
497 + <rect key="frame" x="0.0" y="47" width="254" height="13.5"/>
498 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
499 + <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
500 + <nil key="highlightedColor"/>
501 + </label>
502 + </subviews>
503 + </stackView>
504 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="active_code_logo" translatesAutoresizingMaskIntoConstraints="NO" id="xwu-AC-ij3">
505 + <rect key="frame" x="294" y="10" width="80" height="80"/>
506 + <constraints>
507 + <constraint firstAttribute="width" constant="80" id="1JD-65-dfQ"/>
508 + <constraint firstAttribute="height" constant="80" id="TBq-qC-qmK"/>
509 + </constraints>
510 + </imageView>
511 + </subviews>
512 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
513 + <constraints>
514 + <constraint firstItem="MCY-xv-vpg" firstAttribute="centerY" secondItem="zFT-By-XHL" secondAttribute="centerY" id="66I-ZK-UnP"/>
515 + <constraint firstAttribute="height" constant="100" id="7r0-fu-7H9"/>
516 + <constraint firstAttribute="trailing" secondItem="xwu-AC-ij3" secondAttribute="trailing" constant="20" id="hig-xS-w4D"/>
517 + <constraint firstItem="MCY-xv-vpg" firstAttribute="leading" secondItem="zFT-By-XHL" secondAttribute="leading" constant="20" id="mKy-hw-qMm"/>
518 + <constraint firstItem="xwu-AC-ij3" firstAttribute="centerY" secondItem="zFT-By-XHL" secondAttribute="centerY" id="rL7-sU-WdF"/>
519 + <constraint firstItem="xwu-AC-ij3" firstAttribute="leading" secondItem="MCY-xv-vpg" secondAttribute="trailing" constant="20" id="wp5-Po-R5O"/>
520 + </constraints>
521 + </view>
522 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Τα δώρα μου" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FiI-Ni-wy4">
523 + <rect key="frame" x="20" y="619" width="374" height="34"/>
524 + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="20"/>
525 + <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
526 + <nil key="highlightedColor"/>
527 + </label>
528 + </subviews>
529 + <color key="backgroundColor" red="0.21960784310000001" green="0.32156862749999998" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
530 + <constraints>
531 + <constraint firstItem="gdf-s4-2CF" firstAttribute="top" secondItem="Fef-hi-2VL" secondAttribute="bottom" constant="40" id="4FL-Zz-Okv"/>
532 + <constraint firstAttribute="trailing" secondItem="FiI-Ni-wy4" secondAttribute="trailing" constant="20" id="AF7-ZD-Nbs"/>
533 + <constraint firstAttribute="bottom" secondItem="FiI-Ni-wy4" secondAttribute="bottom" constant="10" id="Gep-UO-kv9"/>
534 + <constraint firstAttribute="trailing" secondItem="hdz-dS-6jm" secondAttribute="trailing" constant="10" id="LbO-mb-5Ny"/>
535 + <constraint firstItem="Et1-y7-npI" firstAttribute="top" secondItem="ICd-s2-mfF" secondAttribute="top" id="Mvn-7w-8l6"/>
536 + <constraint firstItem="Fef-hi-2VL" firstAttribute="top" secondItem="hdz-dS-6jm" secondAttribute="bottom" constant="30" id="Mwt-JX-Ol8"/>
537 + <constraint firstAttribute="trailing" secondItem="zFT-By-XHL" secondAttribute="trailing" constant="10" id="OaG-uT-OAu"/>
538 + <constraint firstItem="gdf-s4-2CF" firstAttribute="width" secondItem="ICd-s2-mfF" secondAttribute="width" multiplier="0.3" id="PI5-f4-hi8"/>
539 + <constraint firstItem="FiI-Ni-wy4" firstAttribute="leading" secondItem="ICd-s2-mfF" secondAttribute="leading" constant="20" id="Q3m-bV-ZdT"/>
540 + <constraint firstItem="gdf-s4-2CF" firstAttribute="leading" secondItem="ICd-s2-mfF" secondAttribute="leading" constant="20" id="SWS-EH-zD8"/>
541 + <constraint firstItem="zFT-By-XHL" firstAttribute="top" secondItem="gdf-s4-2CF" secondAttribute="bottom" constant="10" id="Tl8-j4-Nzm"/>
542 + <constraint firstAttribute="trailing" secondItem="Et1-y7-npI" secondAttribute="trailing" id="lWy-gI-QwR"/>
543 + <constraint firstAttribute="trailing" secondItem="Fef-hi-2VL" secondAttribute="trailing" constant="10" id="ntW-7w-mFL"/>
544 + <constraint firstItem="hdz-dS-6jm" firstAttribute="top" secondItem="Et1-y7-npI" secondAttribute="bottom" constant="30" id="o67-KC-ulO"/>
545 + <constraint firstItem="hdz-dS-6jm" firstAttribute="leading" secondItem="ICd-s2-mfF" secondAttribute="leading" constant="45" id="oyd-vQ-oDU"/>
546 + <constraint firstItem="Et1-y7-npI" firstAttribute="leading" secondItem="ICd-s2-mfF" secondAttribute="leading" id="rEU-Va-c6X"/>
547 + <constraint firstItem="Fef-hi-2VL" firstAttribute="leading" secondItem="ICd-s2-mfF" secondAttribute="leading" constant="45" id="t3B-PH-1J8"/>
548 + <constraint firstItem="zFT-By-XHL" firstAttribute="leading" secondItem="ICd-s2-mfF" secondAttribute="leading" constant="10" id="vNb-RY-jSD"/>
549 + <constraint firstItem="FiI-Ni-wy4" firstAttribute="top" secondItem="zFT-By-XHL" secondAttribute="bottom" constant="40" id="zZq-Yx-q9D"/>
550 + </constraints>
551 + </view>
552 + <prototypes>
553 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CouponsTableViewCellId" id="PUP-z1-zvb" customClass="CouponsTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
554 + <rect key="frame" x="0.0" y="707.5" width="414" height="115"/>
555 + <autoresizingMask key="autoresizingMask"/>
556 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="PUP-z1-zvb" id="dt2-2B-okP">
557 + <rect key="frame" x="0.0" y="0.0" width="414" height="115"/>
558 + <autoresizingMask key="autoresizingMask"/>
559 + <subviews>
560 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FsY-Dp-PUQ">
561 + <rect key="frame" x="10" y="0.0" width="394" height="115"/>
562 + <subviews>
563 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupon_bg" translatesAutoresizingMaskIntoConstraints="NO" id="vZ4-HF-lwK">
564 + <rect key="frame" x="0.0" y="0.0" width="394" height="115"/>
565 + </imageView>
566 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="f2f-Lm-to3">
567 + <rect key="frame" x="20" y="10" width="79" height="95"/>
568 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
569 + </imageView>
570 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zth-sP-rUI">
571 + <rect key="frame" x="104" y="5" width="10" height="105"/>
572 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
573 + <constraints>
574 + <constraint firstAttribute="width" constant="10" id="0jX-bF-I3k"/>
575 + </constraints>
576 + </view>
577 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BAb-kn-pw0">
578 + <rect key="frame" x="119" y="15" width="255" height="19.5"/>
579 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
580 + <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
581 + <nil key="highlightedColor"/>
582 + </label>
583 + <stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="RJe-Li-bx3">
584 + <rect key="frame" x="119" y="39.5" width="255" height="36"/>
585 + <subviews>
586 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wBw-w0-bGt">
587 + <rect key="frame" x="0.0" y="0.0" width="127.5" height="36"/>
588 + <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
589 + <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
590 + <nil key="highlightedColor"/>
591 + </label>
592 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yd2-ue-tBk">
593 + <rect key="frame" x="132.5" y="0.0" width="122.5" height="36"/>
594 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
595 + <color key="textColor" red="0.3803921569" green="0.4431372549" blue="0.50588235290000005" alpha="1" colorSpace="calibratedRGB"/>
596 + <nil key="highlightedColor"/>
597 + </label>
598 + </subviews>
599 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
600 + <constraints>
601 + <constraint firstItem="wBw-w0-bGt" firstAttribute="width" secondItem="RJe-Li-bx3" secondAttribute="width" multiplier="0.5" id="amQ-Xa-Dxm"/>
602 + </constraints>
603 + </stackView>
604 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EEj-3C-9Td">
605 + <rect key="frame" x="119" y="86.5" width="255" height="13.5"/>
606 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
607 + <color key="textColor" red="0.3803921569" green="0.4431372549" blue="0.50588235290000005" alpha="1" colorSpace="calibratedRGB"/>
608 + <nil key="highlightedColor"/>
609 + </label>
610 + </subviews>
611 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
612 + <constraints>
613 + <constraint firstAttribute="trailing" secondItem="BAb-kn-pw0" secondAttribute="trailing" constant="20" id="1wy-YZ-1QM"/>
614 + <constraint firstAttribute="bottom" secondItem="zth-sP-rUI" secondAttribute="bottom" constant="5" id="2Bk-P7-vqZ"/>
615 + <constraint firstItem="RJe-Li-bx3" firstAttribute="leading" secondItem="zth-sP-rUI" secondAttribute="trailing" constant="5" id="44O-pO-Gow"/>
616 + <constraint firstItem="EEj-3C-9Td" firstAttribute="leading" secondItem="zth-sP-rUI" secondAttribute="trailing" constant="5" id="5gC-oO-mvc"/>
617 + <constraint firstItem="vZ4-HF-lwK" firstAttribute="leading" secondItem="FsY-Dp-PUQ" secondAttribute="leading" id="5zH-Q8-HsV"/>
618 + <constraint firstAttribute="bottom" secondItem="vZ4-HF-lwK" secondAttribute="bottom" id="8eo-h4-Qj6"/>
619 + <constraint firstItem="f2f-Lm-to3" firstAttribute="width" secondItem="FsY-Dp-PUQ" secondAttribute="width" multiplier="0.2" id="HRY-vF-zWg"/>
620 + <constraint firstItem="BAb-kn-pw0" firstAttribute="top" secondItem="FsY-Dp-PUQ" secondAttribute="top" constant="15" id="NUQ-Nc-NYR"/>
621 + <constraint firstItem="zth-sP-rUI" firstAttribute="leading" secondItem="f2f-Lm-to3" secondAttribute="trailing" constant="5" id="WT1-xO-rY7"/>
622 + <constraint firstAttribute="bottom" secondItem="EEj-3C-9Td" secondAttribute="bottom" constant="15" id="XAX-q3-he4"/>
623 + <constraint firstItem="f2f-Lm-to3" firstAttribute="top" secondItem="FsY-Dp-PUQ" secondAttribute="top" constant="10" id="blg-R6-OfW"/>
624 + <constraint firstItem="EEj-3C-9Td" firstAttribute="top" relation="greaterThanOrEqual" secondItem="RJe-Li-bx3" secondAttribute="bottom" constant="5" id="fVV-hr-2Zm"/>
625 + <constraint firstItem="f2f-Lm-to3" firstAttribute="leading" secondItem="FsY-Dp-PUQ" secondAttribute="leading" constant="20" id="hyu-XF-i7o"/>
626 + <constraint firstItem="RJe-Li-bx3" firstAttribute="top" relation="greaterThanOrEqual" secondItem="BAb-kn-pw0" secondAttribute="bottom" constant="5" id="iBr-HU-lqb"/>
627 + <constraint firstAttribute="trailing" secondItem="vZ4-HF-lwK" secondAttribute="trailing" id="mNT-mP-5A5"/>
628 + <constraint firstAttribute="bottom" secondItem="f2f-Lm-to3" secondAttribute="bottom" constant="10" id="ngt-YA-MIZ"/>
629 + <constraint firstAttribute="trailing" secondItem="EEj-3C-9Td" secondAttribute="trailing" constant="20" id="oxZ-th-4YZ"/>
630 + <constraint firstItem="zth-sP-rUI" firstAttribute="top" secondItem="FsY-Dp-PUQ" secondAttribute="top" constant="5" id="riW-4f-1J9"/>
631 + <constraint firstItem="vZ4-HF-lwK" firstAttribute="top" secondItem="FsY-Dp-PUQ" secondAttribute="top" id="u5F-Ed-lvs"/>
632 + <constraint firstItem="BAb-kn-pw0" firstAttribute="leading" secondItem="zth-sP-rUI" secondAttribute="trailing" constant="5" id="uzd-ax-gWN"/>
633 + <constraint firstAttribute="trailing" secondItem="RJe-Li-bx3" secondAttribute="trailing" constant="20" id="wrL-Zn-xXy"/>
634 + <constraint firstItem="RJe-Li-bx3" firstAttribute="centerY" secondItem="FsY-Dp-PUQ" secondAttribute="centerY" id="y9e-ql-DCl"/>
635 + </constraints>
636 + </view>
637 + </subviews>
638 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
639 + <constraints>
640 + <constraint firstItem="FsY-Dp-PUQ" firstAttribute="top" secondItem="dt2-2B-okP" secondAttribute="top" id="3RV-eO-lEH"/>
641 + <constraint firstAttribute="bottom" secondItem="FsY-Dp-PUQ" secondAttribute="bottom" id="AUB-Hh-yX7"/>
642 + <constraint firstItem="FsY-Dp-PUQ" firstAttribute="leading" secondItem="dt2-2B-okP" secondAttribute="leading" constant="10" id="ffZ-hx-hbg"/>
643 + <constraint firstAttribute="trailing" secondItem="FsY-Dp-PUQ" secondAttribute="trailing" constant="10" id="hdj-QQ-eQh"/>
644 + </constraints>
645 + </tableViewCellContentView>
646 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
647 + <connections>
648 + <outlet property="borderView" destination="zth-sP-rUI" id="Hr3-qn-Res"/>
649 + <outlet property="couponBgImage" destination="vZ4-HF-lwK" id="ZMM-I4-7yv"/>
650 + <outlet property="couponImage" destination="f2f-Lm-to3" id="eq4-Xl-oMY"/>
651 + <outlet property="dicountLabel" destination="wBw-w0-bGt" id="sjF-hZ-GEv"/>
652 + <outlet property="discriptionLabel" destination="Yd2-ue-tBk" id="YbE-V4-2ZG"/>
653 + <outlet property="expirationLabel" destination="EEj-3C-9Td" id="CXX-YN-Qzc"/>
654 + <outlet property="nameLabel" destination="BAb-kn-pw0" id="acE-VM-nYj"/>
655 + </connections>
656 + </tableViewCell>
657 + </prototypes>
658 + <connections>
659 + <outlet property="dataSource" destination="pKQ-52-a1r" id="AvY-tV-KMr"/>
660 + <outlet property="delegate" destination="pKQ-52-a1r" id="4Ed-MP-kIa"/>
661 + </connections>
662 + </tableView>
663 + </subviews>
664 + <color key="backgroundColor" red="0.2196078431372549" green="0.32156862745098036" blue="0.40392156862745099" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
665 + <constraints>
666 + <constraint firstItem="jYz-96-Lp1" firstAttribute="leading" secondItem="VHx-uN-GE4" secondAttribute="leading" id="bfu-UW-7CF"/>
667 + <constraint firstAttribute="bottom" secondItem="jYz-96-Lp1" secondAttribute="bottom" id="fxz-oU-HVB"/>
668 + <constraint firstItem="jYz-96-Lp1" firstAttribute="top" secondItem="VHx-uN-GE4" secondAttribute="top" id="gJR-37-cDP"/>
669 + <constraint firstAttribute="trailing" secondItem="jYz-96-Lp1" secondAttribute="trailing" id="lQh-hI-Lzz"/>
670 + </constraints>
671 + </view>
672 + </subviews>
673 + <viewLayoutGuide key="safeArea" id="NAN-HJ-dic"/>
674 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
675 + <constraints>
676 + <constraint firstItem="VHx-uN-GE4" firstAttribute="top" secondItem="NAN-HJ-dic" secondAttribute="top" id="CnX-No-AwE"/>
677 + <constraint firstItem="VHx-uN-GE4" firstAttribute="leading" secondItem="fsD-e8-hUb" secondAttribute="leading" id="b6Z-AX-VU1"/>
678 + <constraint firstAttribute="trailing" secondItem="VHx-uN-GE4" secondAttribute="trailing" id="vj5-S2-oZA"/>
679 + <constraint firstAttribute="bottom" secondItem="VHx-uN-GE4" secondAttribute="bottom" id="xQa-ma-hEn"/>
680 + </constraints>
300 </view> 681 </view>
301 <connections> 682 <connections>
302 - <outlet property="activeGiftsButton" destination="wmt-N1-Ts4" id="tcQ-bY-4KA"/> 683 + <outlet property="activeCodeExpirationLabel" destination="qL0-3b-eqA" id="XjP-lI-UtJ"/>
684 + <outlet property="activeCodeImage" destination="xwu-AC-ij3" id="iU8-rU-Q07"/>
685 + <outlet property="activeCodeLabel" destination="qBe-Jw-QUx" id="mlj-zT-T0Z"/>
686 + <outlet property="activeCodeView" destination="zFT-By-XHL" id="M0w-Ln-iC9"/>
687 + <outlet property="couponEarnAmountLabel" destination="cbA-fm-1uO" id="o0w-tT-Etg"/>
688 + <outlet property="couponEarnImage" destination="Vfg-nm-Igo" id="iLu-eS-mW3"/>
689 + <outlet property="couponEarnLabel" destination="WdW-lP-g1v" id="GeT-9O-3ZD"/>
690 + <outlet property="couponEarnView" destination="Fef-hi-2VL" id="XXW-N6-ouW"/>
691 + <outlet property="dfyEarnAmountLabel" destination="AIw-YV-t1D" id="O7F-LB-2Kp"/>
692 + <outlet property="dfyEarnImage" destination="3RL-2R-WXw" id="OsP-nb-KTP"/>
693 + <outlet property="dfyEarnLabel" destination="h7B-UX-3wG" id="eW2-n0-5x5"/>
694 + <outlet property="dfyEarnView" destination="EpZ-Qo-xby" id="HjN-zQ-3at"/>
695 + <outlet property="dfyLogoImage" destination="gdf-s4-2CF" id="eGT-J8-7vO"/>
696 + <outlet property="headerImage" destination="wP5-YG-vSP" id="MFN-m3-6ou"/>
697 + <outlet property="profileImage" destination="wJv-NF-rMf" id="Ues-Ru-2p2"/>
698 + <outlet property="profileNameLabel" destination="1XZ-NB-F8P" id="C5F-WA-kOW"/>
699 + <outlet property="questionnaireButton" destination="UNL-Oh-sPV" id="EPs-OW-Oai"/>
700 + <outlet property="tableView" destination="jYz-96-Lp1" id="VZ8-9Y-cax"/>
303 </connections> 701 </connections>
304 </viewController> 702 </viewController>
305 <placeholder placeholderIdentifier="IBFirstResponder" id="IOg-BB-r5Q" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> 703 <placeholder placeholderIdentifier="IBFirstResponder" id="IOg-BB-r5Q" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
...@@ -793,10 +1191,15 @@ ...@@ -793,10 +1191,15 @@
793 </scene> 1191 </scene>
794 </scenes> 1192 </scenes>
795 <resources> 1193 <resources>
1194 + <image name="active_code_logo" width="69.5" height="69"/>
796 <image name="coupon_bg" width="196" height="64.5"/> 1195 <image name="coupon_bg" width="196" height="64.5"/>
797 <image name="coupons_scrollview_dark" width="214" height="462"/> 1196 <image name="coupons_scrollview_dark" width="214" height="462"/>
798 <image name="coupons_scrollview_white" width="214" height="462"/> 1197 <image name="coupons_scrollview_white" width="214" height="462"/>
1198 + <image name="dfy_logo_white" width="1611" height="395"/>
1199 + <image name="ic_background_circle" width="214" height="134"/>
799 <image name="ic_down_dark" width="22" height="11.5"/> 1200 <image name="ic_down_dark" width="22" height="11.5"/>
1201 + <image name="wallet_coupons" width="63" height="73"/>
1202 + <image name="wallet_dfy_earn" width="63" height="73"/>
800 <systemColor name="systemBackgroundColor"> 1203 <systemColor name="systemBackgroundColor">
801 <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 1204 <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
802 </systemColor> 1205 </systemColor>
......
1 +{
2 + "images" : [
3 + {
4 + "filename" : "active_code_logo.png",
5 + "idiom" : "universal",
6 + "scale" : "1x"
7 + },
8 + {
9 + "filename" : "active_code_logo-1.png",
10 + "idiom" : "universal",
11 + "scale" : "2x"
12 + },
13 + {
14 + "filename" : "active_code_logo-2.png",
15 + "idiom" : "universal",
16 + "scale" : "3x"
17 + }
18 + ],
19 + "info" : {
20 + "author" : "xcode",
21 + "version" : 1
22 + }
23 +}
1 +{
2 + "images" : [
3 + {
4 + "filename" : "dfy_logo_white.png",
5 + "idiom" : "universal",
6 + "scale" : "1x"
7 + },
8 + {
9 + "filename" : "dfy_logo_white-1.png",
10 + "idiom" : "universal",
11 + "scale" : "2x"
12 + },
13 + {
14 + "filename" : "dfy_logo_white-2.png",
15 + "idiom" : "universal",
16 + "scale" : "3x"
17 + }
18 + ],
19 + "info" : {
20 + "author" : "xcode",
21 + "version" : 1
22 + }
23 +}
1 +{
2 + "images" : [
3 + {
4 + "filename" : "heart.png",
5 + "idiom" : "universal",
6 + "scale" : "1x"
7 + },
8 + {
9 + "filename" : "heart-1.png",
10 + "idiom" : "universal",
11 + "scale" : "2x"
12 + },
13 + {
14 + "filename" : "heart-2.png",
15 + "idiom" : "universal",
16 + "scale" : "3x"
17 + }
18 + ],
19 + "info" : {
20 + "author" : "xcode",
21 + "version" : 1
22 + }
23 +}
1 +{
2 + "images" : [
3 + {
4 + "filename" : "ic_background_circle.png",
5 + "idiom" : "universal",
6 + "scale" : "1x"
7 + },
8 + {
9 + "filename" : "ic_background_circle-1.png",
10 + "idiom" : "universal",
11 + "scale" : "2x"
12 + },
13 + {
14 + "filename" : "ic_background_circle-2.png",
15 + "idiom" : "universal",
16 + "scale" : "3x"
17 + }
18 + ],
19 + "info" : {
20 + "author" : "xcode",
21 + "version" : 1
22 + }
23 +}
1 +{
2 + "images" : [
3 + {
4 + "filename" : "wallet_coupons.png",
5 + "idiom" : "universal",
6 + "scale" : "1x"
7 + },
8 + {
9 + "filename" : "wallet_coupons-1.png",
10 + "idiom" : "universal",
11 + "scale" : "2x"
12 + },
13 + {
14 + "filename" : "wallet_coupons-2.png",
15 + "idiom" : "universal",
16 + "scale" : "3x"
17 + }
18 + ],
19 + "info" : {
20 + "author" : "xcode",
21 + "version" : 1
22 + }
23 +}
1 +{
2 + "images" : [
3 + {
4 + "filename" : "wallet_dfy_earn.png",
5 + "idiom" : "universal",
6 + "scale" : "1x"
7 + },
8 + {
9 + "filename" : "wallet_dfy_earn-1.png",
10 + "idiom" : "universal",
11 + "scale" : "2x"
12 + },
13 + {
14 + "filename" : "wallet_dfy_earn-2.png",
15 + "idiom" : "universal",
16 + "scale" : "3x"
17 + }
18 + ],
19 + "info" : {
20 + "author" : "xcode",
21 + "version" : 1
22 + }
23 +}
...@@ -136,3 +136,55 @@ extension UIImageView { ...@@ -136,3 +136,55 @@ extension UIImageView {
136 } 136 }
137 } 137 }
138 } 138 }
139 +
140 +typealias GradientPoints = (startPoint: CGPoint, endPoint: CGPoint)
141 +
142 +enum GradientOrientation {
143 + case topRightBottomLeft
144 + case topLeftBottomRight
145 + case horizontal
146 + case vertical
147 +
148 + var startPoint : CGPoint {
149 + return points.startPoint
150 + }
151 +
152 + var endPoint : CGPoint {
153 + return points.endPoint
154 + }
155 +
156 + var points : GradientPoints {
157 + switch self {
158 + case .topRightBottomLeft:
159 + return (CGPoint(x: 0.0,y: 1.0), CGPoint(x: 1.0,y: 0.0))
160 + case .topLeftBottomRight:
161 + return (CGPoint(x: 0.0,y: 0.0), CGPoint(x: 1,y: 1))
162 + case .horizontal:
163 + return (CGPoint(x: 0.0,y: 0.5), CGPoint(x: 1.0,y: 0.5))
164 + case .vertical:
165 + return (CGPoint(x: 0.0,y: 0.0), CGPoint(x: 0.0,y: 1.0))
166 + }
167 + }
168 +}
169 +
170 +extension UIView {
171 +
172 + func applyGradient(colours: [UIColor], locations: [NSNumber]? = nil, cornerRadius: CGFloat) {
173 + let gradient = CAGradientLayer()
174 + gradient.frame = self.bounds
175 + gradient.colors = colours.map { $0.cgColor }
176 + gradient.locations = locations
177 + gradient.cornerRadius = cornerRadius
178 + self.layer.insertSublayer(gradient, at: 0)
179 + }
180 +
181 + func applyGradient(colours: [UIColor], gradient orientation: GradientOrientation, cornerRadius: CGFloat) {
182 + let gradient = CAGradientLayer()
183 + gradient.frame = self.bounds
184 + gradient.colors = colours.map { $0.cgColor }
185 + gradient.startPoint = orientation.startPoint
186 + gradient.endPoint = orientation.endPoint
187 + gradient.cornerRadius = cornerRadius
188 + self.layer.insertSublayer(gradient, at: 0)
189 + }
190 +}
......
...@@ -9,18 +9,161 @@ import Foundation ...@@ -9,18 +9,161 @@ import Foundation
9 import UIKit 9 import UIKit
10 10
11 @objc public class WalletViewController: UIViewController { 11 @objc public class WalletViewController: UIViewController {
12 + @IBOutlet weak var headerImage: UIImageView!
13 + @IBOutlet weak var profileImage: UIImageView!
14 + @IBOutlet weak var profileNameLabel: UILabel!
15 + @IBOutlet weak var questionnaireButton: UIButton!
16 + @IBOutlet weak var dfyEarnView: UIView!
17 + @IBOutlet weak var dfyEarnLabel: UILabel!
18 + @IBOutlet weak var dfyEarnAmountLabel: UILabel!
19 + @IBOutlet weak var dfyEarnImage: UIImageView!
20 + @IBOutlet weak var couponEarnView: UIView!
21 + @IBOutlet weak var couponEarnLabel: UILabel!
22 + @IBOutlet weak var couponEarnAmountLabel: UILabel!
23 + @IBOutlet weak var couponEarnImage: UIImageView!
24 + @IBOutlet weak var dfyLogoImage: UIImageView!
25 + @IBOutlet weak var activeCodeView: UIView!
26 + @IBOutlet weak var activeCodeLabel: UILabel!
27 + @IBOutlet weak var activeCodeExpirationLabel: UILabel!
28 + @IBOutlet weak var tableView: UITableView!
29 + @IBOutlet weak var activeCodeImage: UIImageView!
12 30
13 - @IBOutlet weak var activeGiftsButton: UIButton! 31 + public var coupons:Array<swiftApi.CouponItemModel> = []
32 +
33 + public override func viewDidLoad() {
34 + super.viewDidLoad()
35 +
36 + getCouponsRequest()
14 37
15 - public override func viewWillAppear(_ animated: Bool) {
16 - super.viewWillAppear(animated)
17 setBackButton() 38 setBackButton()
18 - setNavigationTitle("My loyalty wallet") 39 + setNavigationTitle("For You")
40 +
41 + tableView.delegate = self
42 + tableView.dataSource = self
43 +
44 + headerImage.image = UIImage(named: "ic_background_circle", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
45 + dfyEarnImage.image = UIImage(named: "wallet_dfy_earn", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
46 + couponEarnImage.image = UIImage(named: "wallet_coupons", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
47 + dfyLogoImage.image = UIImage(named: "dfy_logo_white", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
48 + activeCodeImage.image = UIImage(named: "active_code_logo", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
49 +
50 + profileImage.layer.cornerRadius = 32.5
51 + profileImage.layer.borderWidth = 1
52 + profileImage.layer.borderColor = UIColor(red: 0.13, green: 0.66, blue: 0.71, alpha: 1.00).cgColor
53 + // TODO: dynamic
54 +// profileImage.load(link: profile_image ?? "", placeholder: UIImage(), cache: URLCache())
55 + profileNameLabel.text = "Γιώργος Γεωργίου"
56 +
57 + // TODO: dynamic
58 + questionnaireButton.setTitle("Traveller", for: .normal)
59 + questionnaireButton.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .semibold)
60 +// questionnaireButton.sizeToFit()
61 + questionnaireButton.frame = CGRect(x: 0.0, y: 0.0, width: questionnaireButton.intrinsicContentSize.width, height: questionnaireButton.intrinsicContentSize.height)
62 + questionnaireButton.applyGradient(colours: [UIColor(red: 0.40, green: 0.77, blue: 0.28, alpha: 1.00), UIColor(red: 0.10, green: 0.66, blue: 0.72, alpha: 1.00)], gradient: GradientOrientation.horizontal, cornerRadius: 7.0)
63 + // Shadow Color and Radius
64 + questionnaireButton.layer.shadowColor = UIColor(red: 0.33, green: 0.38, blue: 0.43, alpha: 1.00).cgColor
65 + questionnaireButton.layer.shadowOffset = CGSize(width: 0.0, height: 2.0)
66 + questionnaireButton.layer.shadowOpacity = 1.0
67 + questionnaireButton.layer.shadowRadius = 0.0
68 + questionnaireButton.layer.masksToBounds = false
69 + questionnaireButton.layer.cornerRadius = 7.0
70 +
71 + dfyEarnView.layer.cornerRadius = 5.0
72 + dfyEarnView.layer.shadowColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.16).cgColor
73 + dfyEarnView.layer.shadowOffset = CGSize(width: 0.0, height: 3.0)
74 + dfyEarnView.layer.shadowOpacity = 1.0
75 + dfyEarnView.layer.shadowRadius = 3.0
76 +
77 + // TODO: dynamic
78 + dfyEarnLabel.text = "Μέχρι τώρα έχεις κερδίσει 18,00€ με το DEALS for YOU!"
79 + dfyEarnAmountLabel.text = "18,00€"
80 +
81 + couponEarnView.layer.cornerRadius = 5.0
82 + couponEarnView.layer.shadowColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.16).cgColor
83 + couponEarnView.layer.shadowOffset = CGSize(width: 0.0, height: 3.0)
84 + couponEarnView.layer.shadowOpacity = 1.0
85 + couponEarnView.layer.shadowRadius = 3.0
86 +
87 + // TODO: dynamic
88 + couponEarnLabel.text = "Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!"
89 + couponEarnAmountLabel.text = "20,00€"
90 +
91 + activeCodeView.layer.cornerRadius = 5.0
92 + activeCodeView.layer.shadowColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.16).cgColor
93 + activeCodeView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
94 + activeCodeView.layer.shadowOpacity = 1.0
95 + activeCodeView.layer.shadowRadius = 6.0
96 +
97 + // TODO: dynamic
98 + activeCodeLabel.text = "961544809"
99 + activeCodeExpirationLabel.text = "Λήγει σε 4 ημέρες"
100 + }
101 +
102 + // MARK: - API Functions
103 + func getCouponsRequest() {
104 + swiftApi().getCouponsAsync(getCouponsCallback)
105 + }
106 +
107 + func getCouponsCallback (_ couponsData: Array<swiftApi.CouponItemModel>?) -> Void {
108 + if (couponsData != nil) {
109 + let activeCouponData = swiftApi().filterActiveCoupons(couponsData ?? [])
110 +
111 + self.coupons = activeCouponData
112 +
113 + DispatchQueue.main.async {
114 + self.tableView.reloadData()
115 + }
116 + } else {
117 + self.coupons = []
118 + }
19 } 119 }
20 120
21 - @IBAction func navigateToActiveGifts(_ sender: Any) { 121 + // MARK: - Actions
122 + @IBAction func qustionnaireButtonAction(_ sender: Any) {
123 + swiftApi().openQuestionnaire(self);
124 + }
125 +
126 + @IBAction func dfyEarnButtonAction(_ sender: Any) {
127 + // TODO: dfyEarnButtonAction
128 + print("dfyEarnButtonAction Tapped!")
129 + }
130 + @IBAction func couponEarnButtonAction(_ sender: Any) {
131 + // TODO: couponEarnButtonAction
132 + print("couponEarnButtonAction Tapped!")
133 + }
134 +
135 +}
136 +
137 +// MARK: - TableView
138 +extension WalletViewController: UITableViewDelegate, UITableViewDataSource{
139 +
140 + public func numberOfSections(in tableView: UITableView) -> Int {
141 + return 1
142 + }
143 +
144 + public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
145 + return self.coupons.count
146 + }
147 +
148 + public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
149 + return 120.0 + 30.0
150 +// return UITableViewAutomaticDimension
151 + }
152 +
153 + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
154 + let cell = tableView.dequeueReusableCell(withIdentifier: "CouponsTableViewCellId", for: indexPath) as! CouponsTableViewCell
155 +
156 + cell.configureCell(coupon: coupons[indexPath.row])
157 +
158 + return cell
159 + }
160 +
161 + public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
162 +
22 let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) 163 let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self))
23 - let vc = storyboard.instantiateViewController(withIdentifier: "ActiveGiftsViewController") as UIViewController 164 + let vc = storyboard.instantiateViewController(withIdentifier: "CouponBarcodeViewController") as! CouponBarcodeViewController
165 + vc.coupon = coupons[indexPath.row]
24 self.navigationController?.pushViewController(vc, animated: true) 166 self.navigationController?.pushViewController(vc, animated: true)
167 +
25 } 168 }
26 } 169 }
......