You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.4 KiB

5 years ago
  1. //
  2. // CouponCell.swift
  3. // GME Remit
  4. //
  5. // Created by InKwon Devik Kim on 30/05/2019.
  6. // Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class CouponCell: UITableViewCell {
  10. @IBOutlet private weak var couponCellBackgroundView: UIView!
  11. @IBOutlet private weak var checkImageView: UIImageView!
  12. @IBOutlet private weak var couponNameLabel: UILabel!
  13. @IBOutlet private weak var discountLabel: UILabel!
  14. @IBOutlet private weak var remindDayLabel: UILabel!
  15. @IBOutlet private weak var expireDateLabel: UILabel!
  16. var isSelectedCoupon: Bool = false {
  17. didSet {
  18. if isSelectedCoupon {
  19. checkImageView.image = UIImage(named: "right")
  20. couponCellBackgroundView.layer.cornerRadius = 5
  21. couponCellBackgroundView.layer.borderWidth = 1
  22. couponCellBackgroundView.layer.borderColor = UIColor.themeRed.cgColor
  23. } else {
  24. checkImageView.image = nil
  25. couponCellBackgroundView.layer.borderColor = UIColor.white.cgColor
  26. }
  27. }
  28. }
  29. override func awakeFromNib() {
  30. super.awakeFromNib()
  31. couponCellBackgroundView.layer.cornerRadius = 5
  32. }
  33. func setModel(_ model: Coupon?) {
  34. couponNameLabel.text = model?.couponName?.uppercased()
  35. let discount =
  36. model?.discountType == "1" ? "\(model?.discountPercent ?? "0")%" : "\(model?.discountValue ?? "0") KRW"
  37. discountLabel.text = "(\(discount))"
  38. guard let remindDay = calculateRemindDay(expireDate: model?.expireDate) else {
  39. remindDayLabel.text = "N/A"
  40. return
  41. }
  42. switch remindDay {
  43. case 0:
  44. remindDayLabel.text = "Today"
  45. remindDayLabel.textColor = .themeRed
  46. case remindDay where remindDay > 0:
  47. remindDayLabel.text = "\(remindDay) day"
  48. default:
  49. remindDayLabel.text = "N/A"
  50. }
  51. expireDateLabel.text = "(\(model?.expireDate ?? "N/A"))"
  52. }
  53. private func calculateRemindDay(expireDate: String?) -> Int? {
  54. let dateFormatter = DateFormatter()
  55. dateFormatter.dateFormat = "yyyy-MM-dd"
  56. guard
  57. let expireDate = expireDate,
  58. let expireDay = dateFormatter.date(from: expireDate)
  59. else {
  60. return nil
  61. }
  62. let calendar = Calendar.current
  63. let date1 = calendar.startOfDay(for: Date())
  64. let date2 = calendar.startOfDay(for: expireDay)
  65. return calendar.dateComponents([.day], from: date1, to: date2).day
  66. }
  67. }