Manos Chorianopoulos

coupons changes

...@@ -124,8 +124,8 @@ extension CouponBarcodeView { ...@@ -124,8 +124,8 @@ extension CouponBarcodeView {
124 124
125 func constructBarcode() -> String? { 125 func constructBarcode() -> String? {
126 // EAN 13 barcode construction 126 // EAN 13 barcode construction
127 - // let couponData = coupon["coupon_data"] as? [String: Any] ?? ["":""] 127 + let couponData = coupon["coupon_data"] as? [String: Any] ?? ["":""]
128 - let couponString = coupon["coupon"] as? String ?? "" 128 + let couponString = couponData["coupon"] as? String ?? ""
129 129
130 if (!couponString.isEmpty) { 130 if (!couponString.isEmpty) {
131 var checkDigit = 0; 131 var checkDigit = 0;
...@@ -158,6 +158,7 @@ extension CouponBarcodeView { ...@@ -158,6 +158,7 @@ extension CouponBarcodeView {
158 158
159 159
160 var body: some View { 160 var body: some View {
161 + let couponData = coupon["coupon_data"] as? [String: Any] ?? ["":""]
161 let barcodeString = constructBarcode() ?? "" 162 let barcodeString = constructBarcode() ?? ""
162 163
163 GeometryReader { geometry in 164 GeometryReader { geometry in
...@@ -194,7 +195,7 @@ extension CouponBarcodeView { ...@@ -194,7 +195,7 @@ extension CouponBarcodeView {
194 195
195 VStack(alignment: .center) { 196 VStack(alignment: .center) {
196 VStack { 197 VStack {
197 - Text(coupon["coupon"] as? String ?? "") 198 + Text(couponData["coupon"] as? String ?? "")
198 .fontWeight(.bold) 199 .fontWeight(.bold)
199 .font(.system(size: 27)) 200 .font(.system(size: 27))
200 .foregroundColor(Color(red: 0.2549019607843137, green: 0.3333333333333333, blue: 0.39215686274509803)) 201 .foregroundColor(Color(red: 0.2549019607843137, green: 0.3333333333333333, blue: 0.39215686274509803))
...@@ -209,7 +210,7 @@ extension CouponBarcodeView { ...@@ -209,7 +210,7 @@ extension CouponBarcodeView {
209 } 210 }
210 .frame(maxWidth: .infinity) 211 .frame(maxWidth: .infinity)
211 212
212 - if (CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: coupon["coupon"] as? String ?? ""))) { 213 + if (CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: couponData["coupon"] as? String ?? ""))) {
213 VStack(alignment: .center) { 214 VStack(alignment: .center) {
214 VStack {} 215 VStack {}
215 .frame(height: 1) 216 .frame(height: 1)
...@@ -284,7 +285,7 @@ extension CouponBarcodeView { ...@@ -284,7 +285,7 @@ extension CouponBarcodeView {
284 285
285 286
286 287
287 - Text("Το κουπόνι ισχύει έως " + CouponBarcodeView.couponContainer.convertDateFormat(inputDate: coupon["expiration"] as? String ?? "")) 288 + Text("Το κουπόνι ισχύει έως " + CouponBarcodeView.couponContainer.convertDateFormat(inputDate: couponData["expiration"] as? String ?? ""))
288 .fontWeight(.medium) 289 .fontWeight(.medium)
289 .font(.system(size: 14)) 290 .font(.system(size: 14))
290 .foregroundColor(Color(red: 0.2549019607843137, green: 0.3333333333333333, blue: 0.39215686274509803)) 291 .foregroundColor(Color(red: 0.2549019607843137, green: 0.3333333333333333, blue: 0.39215686274509803))
...@@ -378,7 +379,7 @@ extension CouponBarcodeView { ...@@ -378,7 +379,7 @@ extension CouponBarcodeView {
378 // couponset = CouponSetItemModel(dictionary: coupon) 379 // couponset = CouponSetItemModel(dictionary: coupon)
379 380
380 print("==================") 381 print("==================")
381 - print(coupon["coupon"] as? String ?? "") 382 + print(couponData["coupon"] as? String ?? "")
382 print("==================") 383 print("==================")
383 384
384 print("========constructBarcode()==========") 385 print("========constructBarcode()==========")
......
...@@ -4,16 +4,13 @@ ...@@ -4,16 +4,13 @@
4 // 4 //
5 // Created by Βασιλης Σκουρας on 13/1/22. 5 // Created by Βασιλης Σκουρας on 13/1/22.
6 // 6 //
7 -
8 #if canImport(SwiftUI) 7 #if canImport(SwiftUI)
9 import SwiftUI 8 import SwiftUI
10 import Combine 9 import Combine
11 import Foundation 10 import Foundation
12 import UIKit 11 import UIKit
13 -
14 class DataModel { 12 class DataModel {
15 var data: Array<NSDictionary> = [] 13 var data: Array<NSDictionary> = []
16 -
17 init() { //initializer method 14 init() { //initializer method
18 let instanceOfMyApi = MyApi() 15 let instanceOfMyApi = MyApi()
19 let couponSets = instanceOfMyApi.getCouponSets(withActive: true, andVisible: true, andUuids: nil) 16 let couponSets = instanceOfMyApi.getCouponSets(withActive: true, andVisible: true, andUuids: nil)
...@@ -32,7 +29,9 @@ class DataModel { ...@@ -32,7 +29,9 @@ class DataModel {
32 // var temp = NSMutableDictionary(dictionary: s); 29 // var temp = NSMutableDictionary(dictionary: s);
33 if c["couponset_uuid"] as! String == s["uuid"] as! String { 30 if c["couponset_uuid"] as! String == s["uuid"] as! String {
34 var temp = NSMutableDictionary(dictionary: s); 31 var temp = NSMutableDictionary(dictionary: s);
35 - temp.addEntries(from: c as! [AnyHashable : Any]) 32 +// temp.addEntries(from: c as! [AnyHashable : Any])
33 +
34 + temp.setValue(c as! [AnyHashable : Any],forKey: "coupon_data")
36 35
37 self.data.append(temp as NSDictionary) 36 self.data.append(temp as NSDictionary)
38 } 37 }
...@@ -45,14 +44,15 @@ class DataModel { ...@@ -45,14 +44,15 @@ class DataModel {
45 } 44 }
46 } 45 }
47 } 46 }
48 -
49 var getData: Array<NSDictionary> { 47 var getData: Array<NSDictionary> {
50 get { // getter 48 get { // getter
51 - return data 49 + return data.filter({
50 + let couponData = $0["coupon_data"] as? [String: Any] ?? ["":""]
51 + return couponData["status"] as? Int == 1
52 + })
52 } 53 }
53 } 54 }
54 } 55 }
55 -
56 class ImageLoader: ObservableObject { 56 class ImageLoader: ObservableObject {
57 var didChange = PassthroughSubject<Data, Never>() 57 var didChange = PassthroughSubject<Data, Never>()
58 var data = Data() { 58 var data = Data() {
...@@ -60,7 +60,6 @@ class ImageLoader: ObservableObject { ...@@ -60,7 +60,6 @@ class ImageLoader: ObservableObject {
60 didChange.send(data) 60 didChange.send(data)
61 } 61 }
62 } 62 }
63 -
64 init(urlString:String) { 63 init(urlString:String) {
65 guard let url = URL(string: urlString) else { return } 64 guard let url = URL(string: urlString) else { return }
66 let task = URLSession.shared.dataTask(with: url) { data, response, error in 65 let task = URLSession.shared.dataTask(with: url) { data, response, error in
...@@ -72,15 +71,12 @@ class ImageLoader: ObservableObject { ...@@ -72,15 +71,12 @@ class ImageLoader: ObservableObject {
72 task.resume() 71 task.resume()
73 } 72 }
74 } 73 }
75 -
76 struct ImageView: View { 74 struct ImageView: View {
77 @ObservedObject var imageLoader:ImageLoader 75 @ObservedObject var imageLoader:ImageLoader
78 @State var image:UIImage = UIImage() 76 @State var image:UIImage = UIImage()
79 -
80 init(withURL url:String) { 77 init(withURL url:String) {
81 imageLoader = ImageLoader(urlString:url) 78 imageLoader = ImageLoader(urlString:url)
82 } 79 }
83 -
84 var body: some View { 80 var body: some View {
85 81
86 Image(uiImage: image) 82 Image(uiImage: image)
...@@ -91,7 +87,6 @@ struct ImageView: View { ...@@ -91,7 +87,6 @@ struct ImageView: View {
91 } 87 }
92 } 88 }
93 } 89 }
94 -
95 struct VLine: Shape { 90 struct VLine: Shape {
96 func path(in rect: CGRect) -> Path { 91 func path(in rect: CGRect) -> Path {
97 Path { path in 92 Path { path in
...@@ -100,7 +95,6 @@ struct VLine: Shape { ...@@ -100,7 +95,6 @@ struct VLine: Shape {
100 } 95 }
101 } 96 }
102 } 97 }
103 -
104 extension CouponsView { 98 extension CouponsView {
105 struct headerView: View { 99 struct headerView: View {
106 var goBack: () -> () 100 var goBack: () -> ()
...@@ -118,6 +112,8 @@ extension CouponsView { ...@@ -118,6 +112,8 @@ extension CouponsView {
118 } 112 }
119 } 113 }
120 Text("Όλα τα κουπόνια μου") 114 Text("Όλα τα κουπόνια μου")
115 + .fontWeight(.medium)
116 + .foregroundColor(Color(red: 0.20784313725490197, green: 0.3176470588235294, blue: 0.40784313725490196))
121 .frame(width: self.uiscreen.width * 0.8, height: self.uiscreen.height * 0.025, alignment: .center) 117 .frame(width: self.uiscreen.width * 0.8, height: self.uiscreen.height * 0.025, alignment: .center)
122 .offset( y: self.uiscreen.height * 0.02) 118 .offset( y: self.uiscreen.height * 0.02)
123 .font(.system(size: 15)) 119 .font(.system(size: 15))
...@@ -129,9 +125,9 @@ extension CouponsView { ...@@ -129,9 +125,9 @@ extension CouponsView {
129 struct couponView: View { 125 struct couponView: View {
130 var result: NSDictionary 126 var result: NSDictionary
131 var index: Int 127 var index: Int
128 + var parentView: UIView
132 129
133 var uiscreen = UIScreen.main.bounds 130 var uiscreen = UIScreen.main.bounds
134 -
135 static func localizedWithParameter(parameter: String) -> LocalizedStringKey { 131 static func localizedWithParameter(parameter: String) -> LocalizedStringKey {
136 return "\(parameter)" 132 return "\(parameter)"
137 } 133 }
...@@ -139,19 +135,27 @@ extension CouponsView { ...@@ -139,19 +135,27 @@ extension CouponsView {
139 static func convertDateFormat(inputDate: String) -> String { 135 static func convertDateFormat(inputDate: String) -> String {
140 let olDateFormatter = DateFormatter() 136 let olDateFormatter = DateFormatter()
141 olDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" 137 olDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
142 -
143 let oldDate = olDateFormatter.date(from: inputDate) 138 let oldDate = olDateFormatter.date(from: inputDate)
144 -
145 let convertDateFormatter = DateFormatter() 139 let convertDateFormatter = DateFormatter()
146 convertDateFormatter.dateFormat = "dd/MM/yyyy" 140 convertDateFormatter.dateFormat = "dd/MM/yyyy"
147 -
148 return convertDateFormatter.string(from: oldDate!) 141 return convertDateFormatter.string(from: oldDate!)
149 } 142 }
150 143
151 var body: some View { 144 var body: some View {
145 + let couponData = result["coupon_data"] as? [String: Any] ?? ["":""]
152 146
153 147
154 VStack(alignment: .leading) { 148 VStack(alignment: .leading) {
149 + Button {
150 + // GiftItem Action
151 + let instanceOfMyApi = MyApi()
152 + let couponBarcodeViewController = instanceOfMyApi.openCouponBarcode(parentView, coupon: result as! [String : Any])!
153 + couponBarcodeViewController.view.tag = 7
154 + // addChild(couponsViewController)
155 + couponBarcodeViewController.view.frame = parentView.frame
156 + parentView.addSubview(couponBarcodeViewController.view)
157 + couponBarcodeViewController.didMove(toParent: UIHostingController(rootView: self))
158 + } label: {
155 HStack(alignment: .center) { 159 HStack(alignment: .center) {
156 ImageView(withURL: result["img_preview"] as! String) 160 ImageView(withURL: result["img_preview"] as! String)
157 .frame(maxWidth: self.uiscreen.width * 0.15) 161 .frame(maxWidth: self.uiscreen.width * 0.15)
...@@ -165,13 +169,19 @@ extension CouponsView { ...@@ -165,13 +169,19 @@ extension CouponsView {
165 .padding(.bottom, self.uiscreen.height * 0.0075) 169 .padding(.bottom, self.uiscreen.height * 0.0075)
166 Spacer() 170 Spacer()
167 VStack { 171 VStack {
168 - Text(CouponsView.couponView.localizedWithParameter(parameter: result["admin_name"] as? String ?? "")) 172 + Text(CouponsView.couponView.localizedWithParameter(parameter: result["name"] as? String ?? ""))
173 + .fontWeight(.medium)
174 + .foregroundColor(Color(red: 0.22745098039215686, green: 0.3215686274509804, blue: 0.4))
169 .frame(maxWidth: self.uiscreen.width * 0.35, maxHeight: .infinity, alignment: .leading) 175 .frame(maxWidth: self.uiscreen.width * 0.35, maxHeight: .infinity, alignment: .leading)
170 .font(.system(size: 15)) 176 .font(.system(size: 15))
171 - Text(CouponsView.couponView.localizedWithParameter(parameter: result["discount"] as? String ?? "")) 177 + Text(CouponsView.couponView.localizedWithParameter(parameter: couponData["discount"] as? String ?? ""))
178 + .fontWeight(.bold)
179 + .foregroundColor(Color(red: 0.22745098039215686, green: 0.3215686274509804, blue: 0.4))
172 .frame(maxWidth: self.uiscreen.width * 0.35, maxHeight: self.uiscreen.height * 0.05, alignment: .leading) 180 .frame(maxWidth: self.uiscreen.width * 0.35, maxHeight: self.uiscreen.height * 0.05, alignment: .leading)
173 .font(.system(size: 47)) 181 .font(.system(size: 47))
174 - Text(CouponsView.couponView.localizedWithParameter(parameter: "Ισχύει εώς " + CouponsView.couponView.convertDateFormat(inputDate: result["expiration"] as? String ?? ""))) 182 + Text(CouponsView.couponView.localizedWithParameter(parameter: "Ισχύει εώς " + CouponsView.couponView.convertDateFormat(inputDate: couponData["expiration"] as? String ?? "")))
183 + .fontWeight(.medium)
184 + .foregroundColor(Color(red: 0.3803921568627451, green: 0.44313725490196076, blue: 0.5058823529411764))
175 .frame(maxWidth: self.uiscreen.width * 0.35, maxHeight: .infinity, alignment: .leading) 185 .frame(maxWidth: self.uiscreen.width * 0.35, maxHeight: .infinity, alignment: .leading)
176 .font(.system(size: 10)) 186 .font(.system(size: 10))
177 } 187 }
...@@ -180,6 +190,8 @@ extension CouponsView { ...@@ -180,6 +190,8 @@ extension CouponsView {
180 .padding(.bottom, self.uiscreen.height * 0.03) 190 .padding(.bottom, self.uiscreen.height * 0.03)
181 VStack { 191 VStack {
182 Text(CouponsView.couponView.localizedWithParameter(parameter: result["short_description"] as! String)) 192 Text(CouponsView.couponView.localizedWithParameter(parameter: result["short_description"] as! String))
193 + .fontWeight(.medium)
194 + .foregroundColor(Color(red: 0.3803921568627451, green: 0.44313725490196076, blue: 0.5058823529411764))
183 .frame(maxWidth: self.uiscreen.width * 0.22, maxHeight: self.uiscreen.height * 0.10) 195 .frame(maxWidth: self.uiscreen.width * 0.22, maxHeight: self.uiscreen.height * 0.10)
184 .font(.system(size: 10)) 196 .font(.system(size: 10))
185 } 197 }
...@@ -187,6 +199,7 @@ extension CouponsView { ...@@ -187,6 +199,7 @@ extension CouponsView {
187 Spacer() 199 Spacer()
188 } 200 }
189 } 201 }
202 + }
190 .frame(width: self.uiscreen.width * 0.95, height: self.uiscreen.height * 0.13) 203 .frame(width: self.uiscreen.width * 0.95, height: self.uiscreen.height * 0.13)
191 .background( 204 .background(
192 Image("coupons_container", bundle: Bundle(for: MyEmptyClass.self)) 205 Image("coupons_container", bundle: Bundle(for: MyEmptyClass.self))
...@@ -198,10 +211,8 @@ extension CouponsView { ...@@ -198,10 +211,8 @@ extension CouponsView {
198 } 211 }
199 212
200 } 213 }
201 -
202 @available(iOS 13.0.0, *) 214 @available(iOS 13.0.0, *)
203 struct CouponsView: View { 215 struct CouponsView: View {
204 -
205 var data:Array<NSDictionary> = DataModel().getData 216 var data:Array<NSDictionary> = DataModel().getData
206 217
207 var parentView: UIView 218 var parentView: UIView
...@@ -219,11 +230,12 @@ struct CouponsView: View { ...@@ -219,11 +230,12 @@ struct CouponsView: View {
219 var body: some View { 230 var body: some View {
220 VStack { 231 VStack {
221 headerView(goBack: goBack) 232 headerView(goBack: goBack)
222 - ScrollView { 233 + ScrollView(showsIndicators: false) {
223 VStack { 234 VStack {
224 if (data.count) > 0 { 235 if (data.count) > 0 {
225 ForEach(Array(zip(data.indices, data)), id: \.0) { index, result in 236 ForEach(Array(zip(data.indices, data)), id: \.0) { index, result in
226 - couponView(result: result, index: index) } 237 + couponView(result: result, index: index, parentView: parentView)
238 + }
227 } 239 }
228 } 240 }
229 .padding(.top, self.uiscreen.height * 0.05) 241 .padding(.top, self.uiscreen.height * 0.05)
...@@ -239,7 +251,6 @@ struct CouponsView: View { ...@@ -239,7 +251,6 @@ struct CouponsView: View {
239 } 251 }
240 } 252 }
241 #endif 253 #endif
242 -
243 @available(iOS 13.0.0, *) 254 @available(iOS 13.0.0, *)
244 struct Previews_CouponsView_Previews: PreviewProvider { 255 struct Previews_CouponsView_Previews: PreviewProvider {
245 static var uiscreen = UIScreen.main.bounds 256 static var uiscreen = UIScreen.main.bounds
...@@ -253,6 +264,5 @@ struct Previews_CouponsView_Previews: PreviewProvider { ...@@ -253,6 +264,5 @@ struct Previews_CouponsView_Previews: PreviewProvider {
253 .frame(width: self.uiscreen.width * 0.8, height: self.uiscreen.height * 0.025, alignment: .center) 264 .frame(width: self.uiscreen.width * 0.8, height: self.uiscreen.height * 0.025, alignment: .center)
254 .offset( y: self.uiscreen.height * 0.07) 265 .offset( y: self.uiscreen.height * 0.07)
255 } 266 }
256 -
257 } 267 }
258 } 268 }
...\ No newline at end of file ...\ No newline at end of file
......