Panagiotis Triantafyllou

deh part2

Showing 54 changed files with 1109 additions and 102 deletions

40.5 KB | W: | H:

21.4 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
No preview for this file type
No preview for this file type
No preview for this file type
...@@ -39,6 +39,12 @@ ...@@ -39,6 +39,12 @@
39 android:theme="@style/SDKAppTheme" /> 39 android:theme="@style/SDKAppTheme" />
40 40
41 <activity 41 <activity
42 + android:name=".activities.SingleCouponActivity"
43 + android:exported="false"
44 + android:screenOrientation="portrait"
45 + android:theme="@style/SDKAppTheme" />
46 +
47 + <activity
42 android:name=".dexter.PermissionsActivity" 48 android:name=".dexter.PermissionsActivity"
43 android:exported="false" 49 android:exported="false"
44 android:launchMode="singleInstance" 50 android:launchMode="singleInstance"
......
1 package ly.warp.sdk.activities; 1 package ly.warp.sdk.activities;
2 2
3 import android.app.Activity; 3 import android.app.Activity;
4 +import android.content.Intent;
4 import android.os.Bundle; 5 import android.os.Bundle;
5 import android.util.TypedValue; 6 import android.util.TypedValue;
6 import android.view.View; 7 import android.view.View;
7 import android.widget.ImageView; 8 import android.widget.ImageView;
8 import android.widget.TextView; 9 import android.widget.TextView;
9 -import android.widget.Toast;
10 10
11 import androidx.recyclerview.widget.LinearLayoutManager; 11 import androidx.recyclerview.widget.LinearLayoutManager;
12 import androidx.recyclerview.widget.RecyclerView; 12 import androidx.recyclerview.widget.RecyclerView;
...@@ -17,7 +17,6 @@ import ly.warp.sdk.io.models.DummyDataProvider; ...@@ -17,7 +17,6 @@ import ly.warp.sdk.io.models.DummyDataProvider;
17 import ly.warp.sdk.io.models.OfferCategory; 17 import ly.warp.sdk.io.models.OfferCategory;
18 import ly.warp.sdk.io.models.OfferItem; 18 import ly.warp.sdk.io.models.OfferItem;
19 import ly.warp.sdk.utils.WarplyManagerHelper; 19 import ly.warp.sdk.utils.WarplyManagerHelper;
20 -import ly.warp.sdk.utils.managers.WarplyManager;
21 import ly.warp.sdk.views.HorizontalSpaceItemDecoration; 20 import ly.warp.sdk.views.HorizontalSpaceItemDecoration;
22 21
23 public class HomeActivity extends Activity implements View.OnClickListener, OfferAdapter.OnOfferClickListener { 22 public class HomeActivity extends Activity implements View.OnClickListener, OfferAdapter.OnOfferClickListener {
...@@ -72,8 +71,6 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe ...@@ -72,8 +71,6 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe
72 super.onCreate(savedInstanceState); 71 super.onCreate(savedInstanceState);
73 setContentView(R.layout.activity_home); 72 setContentView(R.layout.activity_home);
74 73
75 - mIvBanner = findViewById(R.id.banner_icon);
76 -
77 initViews(); 74 initViews();
78 75
79 // Setup all category sections 76 // Setup all category sections
...@@ -92,12 +89,32 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe ...@@ -92,12 +89,32 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe
92 super.onResume(); 89 super.onResume();
93 } 90 }
94 91
92 + @Override
93 + public void onClick(View v) {
94 + if (v.getId() == R.id.banner_icon) {
95 + WarplyManagerHelper.openContest(this);
96 + }
97 + }
98 +
99 + @Override
100 + public void onOfferClick(OfferItem offerItem, int position) {
101 + Intent myIntent = new Intent(HomeActivity.this, SingleCouponActivity.class);
102 + myIntent.putExtra(SingleCouponActivity.EXTRA_OFFER_ITEM, offerItem);
103 + startActivity(myIntent);
104 + }
105 +
106 + @Override
107 + public void onFavoriteClick(OfferItem offerItem, int position) {
108 +// Toast.makeText(this, "Favorite clicked for: " + offerItem.getTitle(), Toast.LENGTH_SHORT).show();
109 + }
110 +
95 // =========================================================== 111 // ===========================================================
96 // Methods 112 // Methods
97 // =========================================================== 113 // ===========================================================
98 114
99 private void initViews() { 115 private void initViews() {
100 // Initialize banner 116 // Initialize banner
117 + mIvBanner = findViewById(R.id.banner_icon);
101 mIvBanner.setOnClickListener(this); 118 mIvBanner.setOnClickListener(this);
102 119
103 // Initialize Top Offers section 120 // Initialize Top Offers section
...@@ -341,23 +358,6 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe ...@@ -341,23 +358,6 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe
341 mRvPurchases.setAdapter(mPurchasesAdapter); 358 mRvPurchases.setAdapter(mPurchasesAdapter);
342 } 359 }
343 360
344 - @Override
345 - public void onClick(View v) {
346 - if (v.getId() == R.id.banner_icon) {
347 - WarplyManagerHelper.openContest(this);
348 - }
349 - }
350 -
351 - @Override
352 - public void onOfferClick(OfferItem offerItem, int position) {
353 -// Toast.makeText(this, "Offer clicked: " + offerItem.getTitle(), Toast.LENGTH_SHORT).show();
354 - }
355 -
356 - @Override
357 - public void onFavoriteClick(OfferItem offerItem, int position) {
358 -// Toast.makeText(this, "Favorite clicked for: " + offerItem.getTitle(), Toast.LENGTH_SHORT).show();
359 - }
360 -
361 // =========================================================== 361 // ===========================================================
362 // Inner and Anonymous Classes 362 // Inner and Anonymous Classes
363 // =========================================================== 363 // ===========================================================
......
1 +package ly.warp.sdk.activities;
2 +
3 +import android.app.Activity;
4 +import android.content.ClipData;
5 +import android.content.ClipboardManager;
6 +import android.content.Context;
7 +import android.content.Intent;
8 +import android.os.Bundle;
9 +import android.view.View;
10 +import android.widget.ImageView;
11 +import android.widget.LinearLayout;
12 +import android.widget.TextView;
13 +import android.widget.Toast;
14 +
15 +import ly.warp.sdk.R;
16 +import ly.warp.sdk.io.models.OfferItem;
17 +
18 +public class SingleCouponActivity extends Activity implements View.OnClickListener {
19 + // ===========================================================
20 + // Constants
21 + // ===========================================================
22 + public static final String EXTRA_OFFER_ITEM = "offer_item";
23 +
24 + // ===========================================================
25 + // Fields
26 + // ===========================================================
27 +
28 + private ImageView mIvBack;
29 + private OfferItem mOfferItem;
30 + private TextView mTvTitle, mTvSmallDescription;
31 + private TextView mTvDescription;
32 + private TextView mTvFullDescription;
33 + private TextView mTvEndDate;
34 + private TextView mTvValue;
35 + private TextView mTvMoreButton;
36 + private ImageView mIvImage;
37 +
38 + private String mFullDescriptionText;
39 + private boolean mIsDescriptionExpanded = false;
40 +
41 + // Coupon code section
42 + private LinearLayout mCouponCodeContainer;
43 + private LinearLayout mCouponCodeHeader;
44 + private LinearLayout mCouponCodeContent;
45 + private ImageView mIvCouponArrow;
46 + private ImageView mIvCopyCode;
47 + private TextView mTvCouponCode;
48 + private boolean mIsCouponCodeExpanded = false;
49 +
50 + // QR code section
51 + private LinearLayout mQrCodeContainer;
52 + private LinearLayout mQrCodeHeader;
53 + private LinearLayout mQrCodeContent;
54 + private ImageView mIvQrArrow;
55 + private ImageView mIvQrCode;
56 + private boolean mIsQrCodeExpanded = false;
57 +
58 + // Terms of Use section
59 + private LinearLayout mTermsContainer;
60 + private LinearLayout mTermsHeader;
61 + private LinearLayout mTermsContent;
62 + private ImageView mIvTermsArrow;
63 + private TextView mTvTermsText;
64 + private boolean mIsTermsExpanded = false;
65 +
66 +
67 + // ===========================================================
68 + // Methods for/from SuperClass/Interfaces
69 + // ===========================================================
70 +
71 + @Override
72 + public void onCreate(Bundle savedInstanceState) {
73 + super.onCreate(savedInstanceState);
74 + setContentView(R.layout.activity_single_coupon);
75 +
76 + // Get offer item from intent
77 + Intent intent = getIntent();
78 + if (intent != null && intent.hasExtra(EXTRA_OFFER_ITEM)) {
79 + mOfferItem = (OfferItem) intent.getSerializableExtra(EXTRA_OFFER_ITEM);
80 + }
81 +
82 + initViews();
83 + }
84 +
85 + @Override
86 + public void onResume() {
87 + super.onResume();
88 + }
89 +
90 + // ===========================================================
91 + // Methods
92 + // ===========================================================
93 +
94 + private void initViews() {
95 + mIvBack = findViewById(R.id.iv_back);
96 + mIvBack.setOnClickListener(this);
97 +
98 + // Initialize views
99 + mTvSmallDescription = findViewById(R.id.tv_coupon_small_description);
100 + mTvFullDescription = findViewById(R.id.tv_coupon_full_description);
101 + mTvEndDate = findViewById(R.id.tv_coupon_end_date);
102 + mTvValue = findViewById(R.id.tv_coupon_value);
103 + mIvImage = findViewById(R.id.iv_coupon_image);
104 + mTvMoreButton = findViewById(R.id.tv_more_button);
105 +
106 + // Initialize coupon code section
107 + mCouponCodeContainer = findViewById(R.id.coupon_code_container);
108 + mCouponCodeHeader = findViewById(R.id.coupon_code_header);
109 + mCouponCodeContent = findViewById(R.id.coupon_code_content);
110 + mIvCouponArrow = findViewById(R.id.iv_coupon_arrow);
111 + mIvCopyCode = findViewById(R.id.iv_copy_code);
112 + mTvCouponCode = findViewById(R.id.tv_coupon_code);
113 +
114 + // Initialize QR code section
115 + mQrCodeContainer = findViewById(R.id.qr_code_container);
116 + mQrCodeHeader = findViewById(R.id.qr_code_header);
117 + mQrCodeContent = findViewById(R.id.qr_code_content);
118 + mIvQrArrow = findViewById(R.id.iv_qr_arrow);
119 + mIvQrCode = findViewById(R.id.iv_qr_code);
120 +
121 + // Initialize Terms of Use section
122 + mTermsContainer = findViewById(R.id.terms_container);
123 + mTermsHeader = findViewById(R.id.terms_header);
124 + mTermsContent = findViewById(R.id.terms_content);
125 + mIvTermsArrow = findViewById(R.id.iv_terms_arrow);
126 + mTvTermsText = findViewById(R.id.tv_terms_text);
127 +
128 + // Populate views with offer data
129 + if (mOfferItem != null) {
130 + mTvValue.setText(mOfferItem.getValue());
131 + mTvSmallDescription.setText(mOfferItem.getDescription());
132 +
133 + // Store the full description text
134 + mFullDescriptionText = mOfferItem.getFullDescription();
135 + mTvFullDescription.setText(mFullDescriptionText);
136 +
137 + // Format and set the end date
138 + String endDate = mOfferItem.getEndDate();
139 + if (endDate != null && !endDate.isEmpty()) {
140 + // Convert from DD/MM/YYYY to DD-MM-YYYY
141 + String formattedDate = endDate.replace("/", "-");
142 + mTvEndDate.setText(getString(R.string.demo_valid_until, formattedDate));
143 + }
144 +
145 + // Load image (in a real app, you would use an image loading library)
146 + // For demo purposes, we'll use a placeholder
147 + int imageResId = getResources().getIdentifier(
148 + mOfferItem.getImageUrl().replace(".png", ""),
149 + "drawable",
150 + getPackageName());
151 +
152 + if (imageResId != 0) {
153 + mIvImage.setImageResource(imageResId);
154 + }
155 +
156 + // Setup the More button
157 + setupMoreButton();
158 +
159 + // Setup coupon code section
160 + setupCouponCodeSection();
161 +
162 + // Setup QR code section
163 + setupQrCodeSection();
164 +
165 + // Setup Terms of Use section
166 + setupTermsSection();
167 + }
168 + }
169 +
170 + /**
171 + * Sets up the coupon code expandable section
172 + */
173 + private void setupCouponCodeSection() {
174 + // Set coupon code - using a hardcoded value for demo purposes
175 + // In a real app, this would come from the offer item
176 + String couponCode = "coupons_ab";
177 + if (mOfferItem != null && mOfferItem.getId() != null) {
178 + // Use offer ID as part of the coupon code for demo purposes
179 + couponCode = "coupon_" + mOfferItem.getId().toLowerCase();
180 + }
181 + mTvCouponCode.setText(couponCode);
182 +
183 + // Set click listener for the header to expand/collapse
184 + mCouponCodeHeader.setOnClickListener(new View.OnClickListener() {
185 + @Override
186 + public void onClick(View v) {
187 + toggleCouponCodeExpansion();
188 + }
189 + });
190 +
191 + // Set click listener for the entire container as well
192 + mCouponCodeContainer.setOnClickListener(new View.OnClickListener() {
193 + @Override
194 + public void onClick(View v) {
195 + toggleCouponCodeExpansion();
196 + }
197 + });
198 +
199 + // Set click listener for the copy button
200 + mIvCopyCode.setOnClickListener(new View.OnClickListener() {
201 + @Override
202 + public void onClick(View v) {
203 + copyCouponCodeToClipboard();
204 + }
205 + });
206 + }
207 +
208 + /**
209 + * Toggles between expanded and collapsed states for the coupon code section
210 + */
211 + private void toggleCouponCodeExpansion() {
212 + if (mIsCouponCodeExpanded) {
213 + // Collapse the content
214 + mCouponCodeContent.setVisibility(View.GONE);
215 + mIvCouponArrow.setImageResource(R.drawable.ic_arrow_down);
216 + mIsCouponCodeExpanded = false;
217 + } else {
218 + // Expand the content
219 + mCouponCodeContent.setVisibility(View.VISIBLE);
220 + mIvCouponArrow.setImageResource(R.drawable.ic_arrow_up);
221 + mIsCouponCodeExpanded = true;
222 + }
223 + }
224 +
225 + /**
226 + * Copies the coupon code to the clipboard
227 + */
228 + private void copyCouponCodeToClipboard() {
229 + String couponCode = mTvCouponCode.getText().toString();
230 +
231 + // Get clipboard manager
232 + ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
233 +
234 + // Create clip
235 + ClipData clip = ClipData.newPlainText("Coupon Code", couponCode);
236 +
237 + // Set the clipboard's primary clip
238 + clipboard.setPrimaryClip(clip);
239 +
240 + // Show toast message
241 + Toast.makeText(this, R.string.demo_copy_success, Toast.LENGTH_SHORT).show();
242 + }
243 +
244 + /**
245 + * Sets up the "More" button for expanding/collapsing the description text
246 + */
247 + private void setupMoreButton() {
248 + // Wait for layout to be ready to check if text is truncated
249 + mTvFullDescription.post(new Runnable() {
250 + @Override
251 + public void run() {
252 + // Check if text is truncated (more than 4 lines)
253 + if (mTvFullDescription.getLineCount() > 3) {
254 + // Show the More button
255 + mTvMoreButton.setVisibility(View.VISIBLE);
256 +
257 + // Set click listener for the More button
258 + mTvMoreButton.setOnClickListener(new View.OnClickListener() {
259 + @Override
260 + public void onClick(View v) {
261 + toggleDescriptionExpansion();
262 + }
263 + });
264 + }
265 + }
266 + });
267 + }
268 +
269 + /**
270 + * Toggles between expanded and collapsed states for the description text
271 + */
272 + private void toggleDescriptionExpansion() {
273 + if (mIsDescriptionExpanded) {
274 + // Collapse the text
275 + mTvFullDescription.setMaxLines(4);
276 + mTvMoreButton.setText(R.string.demo_more);
277 + mIsDescriptionExpanded = false;
278 + } else {
279 + // Expand the text
280 + mTvFullDescription.setMaxLines(Integer.MAX_VALUE);
281 + mTvMoreButton.setText(R.string.demo_less);
282 + mIsDescriptionExpanded = true;
283 + }
284 + }
285 +
286 + /**
287 + * Sets up the QR code expandable section
288 + */
289 + private void setupQrCodeSection() {
290 + // Set click listener for the header to expand/collapse
291 + mQrCodeHeader.setOnClickListener(new View.OnClickListener() {
292 + @Override
293 + public void onClick(View v) {
294 + toggleQrCodeExpansion();
295 + }
296 + });
297 +
298 + // Set click listener for the entire container as well
299 + mQrCodeContainer.setOnClickListener(new View.OnClickListener() {
300 + @Override
301 + public void onClick(View v) {
302 + toggleQrCodeExpansion();
303 + }
304 + });
305 + }
306 +
307 + /**
308 + * Toggles between expanded and collapsed states for the QR code section
309 + */
310 + private void toggleQrCodeExpansion() {
311 + if (mIsQrCodeExpanded) {
312 + // Collapse the content
313 + mQrCodeContent.setVisibility(View.GONE);
314 + mIvQrArrow.setImageResource(R.drawable.ic_arrow_down);
315 + mIsQrCodeExpanded = false;
316 + } else {
317 + // Expand the content
318 + mQrCodeContent.setVisibility(View.VISIBLE);
319 + mIvQrArrow.setImageResource(R.drawable.ic_arrow_up);
320 + mIsQrCodeExpanded = true;
321 + }
322 + }
323 +
324 + /**
325 + * Sets up the Terms of Use expandable section
326 + */
327 + private void setupTermsSection() {
328 + // Set click listener for the header to expand/collapse
329 + mTermsHeader.setOnClickListener(new View.OnClickListener() {
330 + @Override
331 + public void onClick(View v) {
332 + toggleTermsExpansion();
333 + }
334 + });
335 +
336 + // Set click listener for the entire container as well
337 + mTermsContainer.setOnClickListener(new View.OnClickListener() {
338 + @Override
339 + public void onClick(View v) {
340 + toggleTermsExpansion();
341 + }
342 + });
343 + }
344 +
345 + /**
346 + * Toggles between expanded and collapsed states for the Terms of Use section
347 + */
348 + private void toggleTermsExpansion() {
349 + if (mIsTermsExpanded) {
350 + // Collapse the content
351 + mTermsContent.setVisibility(View.GONE);
352 + mIvTermsArrow.setImageResource(R.drawable.ic_arrow_down);
353 + mIsTermsExpanded = false;
354 + } else {
355 + // Expand the content
356 + mTermsContent.setVisibility(View.VISIBLE);
357 + mIvTermsArrow.setImageResource(R.drawable.ic_arrow_up);
358 + mIsTermsExpanded = true;
359 + }
360 + }
361 +
362 + @Override
363 + public void onClick(View v) {
364 + if (v.getId() == R.id.iv_back) {
365 + onBackPressed();
366 + }
367 + }
368 +
369 + // ===========================================================
370 + // Inner and Anonymous Classes
371 + // ===========================================================
372 +}
...@@ -14,7 +14,11 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -14,7 +14,11 @@ import androidx.recyclerview.widget.RecyclerView;
14 import com.bumptech.glide.Glide; 14 import com.bumptech.glide.Glide;
15 import com.bumptech.glide.load.resource.bitmap.CenterCrop; 15 import com.bumptech.glide.load.resource.bitmap.CenterCrop;
16 16
17 +import java.text.ParseException;
18 +import java.text.SimpleDateFormat;
19 +import java.util.Date;
17 import java.util.List; 20 import java.util.List;
21 +import java.util.Locale;
18 22
19 import ly.warp.sdk.R; 23 import ly.warp.sdk.R;
20 import ly.warp.sdk.io.models.DummyDataProvider; 24 import ly.warp.sdk.io.models.DummyDataProvider;
...@@ -99,12 +103,12 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol ...@@ -99,12 +103,12 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol
99 tvValidity = itemView.findViewById(R.id.tv_validity); 103 tvValidity = itemView.findViewById(R.id.tv_validity);
100 104
101 // Set click listeners 105 // Set click listeners
102 -// itemView.setOnClickListener(v -> { 106 + itemView.setOnClickListener(v -> {
103 -// int position = getAdapterPosition(); 107 + int position = getAdapterPosition();
104 -// if (listener != null && position != RecyclerView.NO_POSITION) { 108 + if (listener != null && position != RecyclerView.NO_POSITION) {
105 -// listener.onOfferClick(offerItems.get(position), position); 109 + listener.onOfferClick(offerItems.get(position), position);
106 -// } 110 + }
107 -// }); 111 + });
108 112
109 // ivFavorite.setOnClickListener(v -> { 113 // ivFavorite.setOnClickListener(v -> {
110 // int position = getAdapterPosition(); 114 // int position = getAdapterPosition();
...@@ -119,7 +123,7 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol ...@@ -119,7 +123,7 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol
119 tvTitle.setText(offerItem.getTitle()); 123 tvTitle.setText(offerItem.getTitle());
120 tvDescription.setText(offerItem.getDescription()); 124 tvDescription.setText(offerItem.getDescription());
121 tvPrice.setText(offerItem.getValue()); 125 tvPrice.setText(offerItem.getValue());
122 - tvValidity.setText(offerItem.getEndDate()); 126 + tvValidity.setText(formatValidityDate(offerItem.getEndDate()));
123 127
124 // Set heart icon based on category 128 // Set heart icon based on category
125 if (DummyDataProvider.CATEGORY_FAVORITES.equals(offerItem.getCategory())) { 129 if (DummyDataProvider.CATEGORY_FAVORITES.equals(offerItem.getCategory())) {
...@@ -136,6 +140,26 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol ...@@ -136,6 +140,26 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol
136 } 140 }
137 141
138 /** 142 /**
143 + * Format the end date to "έως dd-MM" format
144 + *
145 + * @param endDate The end date in "dd/MM/yyyy" format
146 + * @return Formatted date string
147 + */
148 + private String formatValidityDate(String endDate) {
149 + try {
150 + SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
151 + Date date = inputFormat.parse(endDate);
152 +
153 + SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM", Locale.getDefault());
154 + return "έως " + outputFormat.format(date);
155 +
156 + } catch (ParseException e) {
157 + // Fallback to original if parsing fails
158 + return endDate;
159 + }
160 + }
161 +
162 + /**
139 * Load offer image with rounded top corners using Glide 163 * Load offer image with rounded top corners using Glide
140 * 164 *
141 * @param imageName The image resource name 165 * @param imageName The image resource name
......
...@@ -98,42 +98,52 @@ public class DummyDataProvider { ...@@ -98,42 +98,52 @@ public class DummyDataProvider {
98 98
99 category.addItem(new OfferItem("to1", "50% Έκπτωση σε Πακέτα Κινητής", 99 category.addItem(new OfferItem("to1", "50% Έκπτωση σε Πακέτα Κινητής",
100 "Πάρτε τα πακέτα κινητής στη μισή τιμή μόνο αυτό το μήνα", 100 "Πάρτε τα πακέτα κινητής στη μισή τιμή μόνο αυτό το μήνα",
101 + "Πάρτε τα πακέτα κινητής στη μισή τιμή μόνο αυτό το μήνα. Απεριόριστα λεπτά προς όλα τα δίκτυα, SMS και 50GB δεδομένα υψηλής ταχύτητας. Ισχύει για νέους συνδρομητές και ανανεώσεις συμβολαίων. Δωρεάν ενεργοποίηση και τεχνική υποστήριξη.",
101 "30/06/2025", "50%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 102 "30/06/2025", "50%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
102 103
103 category.addItem(new OfferItem("to2", "Δωρεάν Εγκατάσταση Τηλεόρασης", 104 category.addItem(new OfferItem("to2", "Δωρεάν Εγκατάσταση Τηλεόρασης",
104 "Επαγγελματική εγκατάσταση με κάθε αγορά νέας τηλεόρασης", 105 "Επαγγελματική εγκατάσταση με κάθε αγορά νέας τηλεόρασης",
106 + "Επαγγελματική εγκατάσταση τηλεόρασης με πλήρη ρύθμιση και παραμετροποίηση. Περιλαμβάνει ασφαλή τοποθέτηση σε τοίχο, σύνδεση όλων των καλωδίων, ρύθμιση καναλιών και εκπαίδευση χρήσης. Εγγύηση 2 ετών για την εγκατάσταση.",
105 "15/07/2025", "€0", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 107 "15/07/2025", "€0", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
106 108
107 category.addItem(new OfferItem("to3", "Αγοράζεις 1 Παίρνεις 1 Δώρο", 109 category.addItem(new OfferItem("to3", "Αγοράζεις 1 Παίρνεις 1 Δώρο",
108 "Σε όλα τα είδη ρουχισμού της καλοκαιρινής μας συλλογής", 110 "Σε όλα τα είδη ρουχισμού της καλοκαιρινής μας συλλογής",
111 + "Αποκτήστε διπλάσια ρούχα με την ίδια τιμή! Αγοράστε οποιοδήποτε είδος από την καλοκαιρινή μας συλλογή και πάρτε ένα δεύτερο δωρεάν. Ισχύει για μπλούζες, παντελόνια, φορέματα και αξεσουάρ. Συνδυάστε χρώματα και σχέδια για το τέλειο καλοκαιρινό στυλ.",
109 "31/08/2025", "100%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 112 "31/08/2025", "100%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
110 113
111 category.addItem(new OfferItem("to4", "30% Έκπτωση στα Τρόφιμα", 114 category.addItem(new OfferItem("to4", "30% Έκπτωση στα Τρόφιμα",
112 "Έκπτωση στην πρώτη σας online παραγγελία τροφίμων", 115 "Έκπτωση στην πρώτη σας online παραγγελία τροφίμων",
116 + "Εξοικονομήστε 30% στην πρώτη σας online παραγγελία τροφίμων. Η προσφορά περιλαμβάνει όλες τις κατηγορίες προϊόντων: φρέσκα φρούτα και λαχανικά, γαλακτοκομικά, κρέατα, κατεψυγμένα και είδη παντοπωλείου. Ελάχιστη παραγγελία €40. Δωρεάν παράδοση.",
113 "10/06/2025", "30%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 117 "10/06/2025", "30%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
114 118
115 category.addItem(new OfferItem("to5", "Κουπόνι Εστιατορίου €20", 119 category.addItem(new OfferItem("to5", "Κουπόνι Εστιατορίου €20",
116 "Με ελάχιστη κατανάλωση €50 σε συνεργαζόμενα εστιατόρια", 120 "Με ελάχιστη κατανάλωση €50 σε συνεργαζόμενα εστιατόρια",
121 + "Απολαύστε εξαιρετικά γεύματα με έκπτωση €20 σε κάθε λογαριασμό άνω των €50. Το κουπόνι ισχύει σε όλα τα συνεργαζόμενα εστιατόρια της πόλης. Περιλαμβάνει πρωτοποριακή κουζίνα, φρέσκα υλικά και εξαιρετική εξυπηρέτηση. Κράτηση απαραίτητη.",
117 "31/07/2025", "€20", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 122 "31/07/2025", "€20", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
118 123
119 category.addItem(new OfferItem("to6", "25% Έκπτωση σε Κρατήσεις Ξενοδοχείων", 124 category.addItem(new OfferItem("to6", "25% Έκπτωση σε Κρατήσεις Ξενοδοχείων",
120 "Για διαμονές Σαββατοκύριακου κατά τους καλοκαιρινούς μήνες", 125 "Για διαμονές Σαββατοκύριακου κατά τους καλοκαιρινούς μήνες",
126 + "Εξασφαλίστε 25% έκπτωση σε κρατήσεις ξενοδοχείων για διαμονές Σαββατοκύριακου κατά τους καλοκαιρινούς μήνες. Η προσφορά ισχύει για όλα τα συνεργαζόμενα ξενοδοχεία και περιλαμβάνει δωρεάν πρωινό και late check-out. Απαραίτητη η κράτηση 14 ημέρες νωρίτερα.",
121 "30/09/2025", "25%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 127 "30/09/2025", "25%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
122 128
123 category.addItem(new OfferItem("to7", "Δωρεάν Παράδοση", 129 category.addItem(new OfferItem("to7", "Δωρεάν Παράδοση",
124 "Σε όλες τις online παραγγελίες άνω των €30", 130 "Σε όλες τις online παραγγελίες άνω των €30",
125 - "Ongoing", "€0", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 131 + "Απολαύστε δωρεάν παράδοση σε όλες τις online παραγγελίες άνω των €30. Η προσφορά ισχύει για παραδόσεις εντός πόλης και περιλαμβάνει όλες τις κατηγορίες προϊόντων. Επιλέξτε από χιλιάδες προϊόντα και παραλάβετε την παραγγελία σας στην πόρτα σας χωρίς επιπλέον χρέωση.",
132 + "31/12/2025", "€0", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
126 133
127 category.addItem(new OfferItem("to8", "40% Έκπτωση σε Συνδρομή Γυμναστηρίου", 134 category.addItem(new OfferItem("to8", "40% Έκπτωση σε Συνδρομή Γυμναστηρίου",
128 "Πρώτοι 3 μήνες με μειωμένη τιμή για νέα μέλη", 135 "Πρώτοι 3 μήνες με μειωμένη τιμή για νέα μέλη",
136 + "Ξεκινήστε τη γυμναστική σας με 40% έκπτωση στη συνδρομή για τους πρώτους 3 μήνες. Η προσφορά ισχύει για νέα μέλη και περιλαμβάνει πλήρη πρόσβαση σε όλες τις εγκαταστάσεις, ομαδικά προγράμματα και μία δωρεάν συνεδρία με προσωπικό γυμναστή.",
129 "31/08/2025", "40%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 137 "31/08/2025", "40%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
130 138
131 category.addItem(new OfferItem("to9", "Εισιτήρια Κινηματογράφου €10", 139 category.addItem(new OfferItem("to9", "Εισιτήρια Κινηματογράφου €10",
132 "Ειδική τιμή για όλες τις προβολές Δευτέρα έως Πέμπτη", 140 "Ειδική τιμή για όλες τις προβολές Δευτέρα έως Πέμπτη",
141 + "Απολαύστε τις αγαπημένες σας ταινίες με μειωμένη τιμή εισιτηρίου στα €10 για όλες τις προβολές από Δευτέρα έως Πέμπτη. Η προσφορά ισχύει για όλες τις αίθουσες, συμπεριλαμβανομένων των προβολών 3D και IMAX. Δεν ισχύει για πρεμιέρες και ειδικές προβολές.",
133 "31/12/2025", "€10", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 142 "31/12/2025", "€10", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
134 143
135 category.addItem(new OfferItem("to10", "75% Έκπτωση στο Δεύτερο Είδος", 144 category.addItem(new OfferItem("to10", "75% Έκπτωση στο Δεύτερο Είδος",
136 "Αγοράστε ένα είδος σε πλήρη τιμή, πάρτε το δεύτερο με 75% έκπτωση", 145 "Αγοράστε ένα είδος σε πλήρη τιμή, πάρτε το δεύτερο με 75% έκπτωση",
146 + "Μοναδική προσφορά! Αγοράστε οποιοδήποτε είδος σε πλήρη τιμή και αποκτήστε ένα δεύτερο με έκπτωση 75%. Η προσφορά ισχύει για όλες τις κατηγορίες προϊόντων και μπορείτε να συνδυάσετε διαφορετικά είδη. Το είδος με τη χαμηλότερη τιμή θα λάβει την έκπτωση.",
137 "15/06/2025", "75%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS)); 147 "15/06/2025", "75%", "demo_image_dominos.png", "demo_dominos.png", CATEGORY_TOP_OFFERS));
138 148
139 return category; 149 return category;
...@@ -149,23 +159,28 @@ public class DummyDataProvider { ...@@ -149,23 +159,28 @@ public class DummyDataProvider {
149 159
150 category.addItem(new OfferItem("fav1", "Αγαπημένο Καφέ", 160 category.addItem(new OfferItem("fav1", "Αγαπημένο Καφέ",
151 "15% έκπτωση στον αγαπημένο σας καφέ κάθε μέρα", 161 "15% έκπτωση στον αγαπημένο σας καφέ κάθε μέρα",
152 - "Ongoing", "15%", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES)); 162 + "Απολαύστε τον αγαπημένο σας καφέ με 15% έκπτωση κάθε μέρα. Η προσφορά ισχύει για όλα τα είδη καφέ, ζεστά και κρύα ροφήματα. Μπορείτε να χρησιμοποιήσετε την έκπτωση απεριόριστες φορές μέσα στην ημέρα. Απλά δείξτε την εφαρμογή στο ταμείο.",
163 + "31/12/2025", "15%", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES));
153 164
154 category.addItem(new OfferItem("fav2", "Εβδομαδιαία Έκπτωση Σούπερ Μάρκετ", 165 category.addItem(new OfferItem("fav2", "Εβδομαδιαία Έκπτωση Σούπερ Μάρκετ",
155 "10% έκπτωση στα εβδομαδιαία ψώνια σας", 166 "10% έκπτωση στα εβδομαδιαία ψώνια σας",
156 - "Recurring", "10%", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES)); 167 + "Εξοικονομήστε 10% στα εβδομαδιαία ψώνια σας στο σούπερ μάρκετ. Η προσφορά ισχύει για αγορές άνω των €50 και μπορεί να χρησιμοποιηθεί μία φορά την εβδομάδα. Περιλαμβάνει όλες τις κατηγορίες προϊόντων εκτός από αλκοολούχα ποτά και προϊόντα καπνού.",
168 + "31/12/2025", "10%", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES));
157 169
158 category.addItem(new OfferItem("fav3", "Αγαπημένο Εστιατόριο", 170 category.addItem(new OfferItem("fav3", "Αγαπημένο Εστιατόριο",
159 "Δωρεάν επιδόρπιο με κάθε κυρίως πιάτο", 171 "Δωρεάν επιδόρπιο με κάθε κυρίως πιάτο",
172 + "Απολαύστε ένα δωρεάν επιδόρπιο της επιλογής σας με κάθε κυρίως πιάτο στο αγαπημένο σας εστιατόριο. Η προσφορά ισχύει για όλα τα επιδόρπια του μενού, συμπεριλαμβανομένων των ειδικών επιλογών του σεφ. Ισχύει για γεύμα ή δείπνο, όλες τις ημέρες της εβδομάδας.",
160 "31/12/2025", "€0", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES)); 173 "31/12/2025", "€0", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES));
161 174
162 category.addItem(new OfferItem("fav4", "Συνδρομή Βιβλιοπωλείου", 175 category.addItem(new OfferItem("fav4", "Συνδρομή Βιβλιοπωλείου",
163 "20% έκπτωση σε όλες τις αγορές με την κάρτα μέλους", 176 "20% έκπτωση σε όλες τις αγορές με την κάρτα μέλους",
164 - "Ongoing", "20%", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES)); 177 + "Αποκτήστε την κάρτα μέλους του βιβλιοπωλείου και απολαύστε 20% έκπτωση σε όλες σας τις αγορές. Η έκπτωση ισχύει για βιβλία, χαρτικά, είδη γραφείου και δώρα. Επιπλέον, ως μέλος θα έχετε πρόσβαση σε αποκλειστικές εκδηλώσεις και προσφορές καθ' όλη τη διάρκεια του έτους.",
178 + "31/12/2025", "20%", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES));
165 179
166 category.addItem(new OfferItem("fav5", "Συνδρομή Γυμναστηρίου", 180 category.addItem(new OfferItem("fav5", "Συνδρομή Γυμναστηρίου",
167 "€45 μηνιαίως για απεριόριστη πρόσβαση", 181 "€45 μηνιαίως για απεριόριστη πρόσβαση",
168 - "Auto-renews", "€45", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES)); 182 + "Αποκτήστε απεριόριστη πρόσβαση στο γυμναστήριο για μόνο €45 το μήνα. Η συνδρομή περιλαμβάνει χρήση όλων των οργάνων, συμμετοχή σε ομαδικά προγράμματα και πρόσβαση στις εγκαταστάσεις σάουνας και χαμάμ. Δεν απαιτείται μακροχρόνια δέσμευση, ακυρώστε οποιαδήποτε στιγμή.",
183 + "31/12/2025", "€45", "demo_image_avis.png", "demo_avis.png", CATEGORY_FAVORITES));
169 184
170 // Only keeping 5 items for Favorites category 185 // Only keeping 5 items for Favorites category
171 186
...@@ -182,30 +197,37 @@ public class DummyDataProvider { ...@@ -182,30 +197,37 @@ public class DummyDataProvider {
182 197
183 category.addItem(new OfferItem("via1", "Έκπτωση Ανανεώσιμης Ενέργειας", 198 category.addItem(new OfferItem("via1", "Έκπτωση Ανανεώσιμης Ενέργειας",
184 "20% έκπτωση όταν αλλάζετε σε πράσινα ενεργειακά προγράμματα", 199 "20% έκπτωση όταν αλλάζετε σε πράσινα ενεργειακά προγράμματα",
200 + "Εξοικονομήστε 20% στους λογαριασμούς ενέργειας όταν μεταβείτε σε πράσινα ενεργειακά προγράμματα. Η προσφορά περιλαμβάνει ηλιακή, αιολική και άλλες ανανεώσιμες πηγές ενέργειας. Επιπλέον, λάβετε δωρεάν ενεργειακή αξιολόγηση του σπιτιού σας και εξατομικευμένες συμβουλές εξοικονόμησης.",
185 "31/12/2025", "20%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY)); 201 "31/12/2025", "20%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY));
186 202
187 category.addItem(new OfferItem("via2", "Φόρτιση Ηλεκτρικών Οχημάτων", 203 category.addItem(new OfferItem("via2", "Φόρτιση Ηλεκτρικών Οχημάτων",
188 "50% έκπτωση στη φόρτιση σε συνεργαζόμενους σταθμούς", 204 "50% έκπτωση στη φόρτιση σε συνεργαζόμενους σταθμούς",
205 + "Φορτίστε το ηλεκτρικό σας όχημα με 50% έκπτωση σε όλους τους συνεργαζόμενους σταθμούς φόρτισης. Η προσφορά ισχύει για όλους τους τύπους ηλεκτρικών οχημάτων και περιλαμβάνει τόσο γρήγορη όσο και κανονική φόρτιση. Αποκτήστε πρόσβαση μέσω της εφαρμογής ή με την κάρτα μέλους.",
189 "30/06/2026", "50%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY)); 206 "30/06/2026", "50%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY));
190 207
191 category.addItem(new OfferItem("via3", "Οικολογικά Προϊόντα", 208 category.addItem(new OfferItem("via3", "Οικολογικά Προϊόντα",
192 "Αγοράστε βιώσιμα προϊόντα και κερδίστε €10 έκπτωση", 209 "Αγοράστε βιώσιμα προϊόντα και κερδίστε €10 έκπτωση",
193 - "Ongoing", "€10", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY)); 210 + "Στηρίξτε το περιβάλλον αγοράζοντας βιώσιμα προϊόντα και κερδίστε €10 έκπτωση σε αγορές άνω των €50. Η προσφορά ισχύει για προϊόντα με πιστοποίηση βιωσιμότητας, συμπεριλαμβανομένων οργανικών τροφίμων, οικολογικών καθαριστικών και ανακυκλώσιμων ειδών οικιακής χρήσης.",
211 + "31/12/2025", "€10", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY));
194 212
195 category.addItem(new OfferItem("via4", "Κάρτα Μέσων Μαζικής Μεταφοράς", 213 category.addItem(new OfferItem("via4", "Κάρτα Μέσων Μαζικής Μεταφοράς",
196 "Μηνιαία κάρτα σε μειωμένη τιμή €30", 214 "Μηνιαία κάρτα σε μειωμένη τιμή €30",
197 - "Monthly", "€30", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY)); 215 + "Μετακινηθείτε οικολογικά με τη μηνιαία κάρτα μέσων μαζικής μεταφοράς σε μειωμένη τιμή €30. Η κάρτα παρέχει απεριόριστες διαδρομές με λεωφορεία, τραμ, μετρό και προαστιακό σιδηρόδρομο. Συμβάλλετε στη μείωση των εκπομπών άνθρακα και απολαύστε άνετες μετακινήσεις.",
216 + "31/12/2025", "€30", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY));
198 217
199 category.addItem(new OfferItem("via5", "Ανταμοιβές Ανακύκλωσης", 218 category.addItem(new OfferItem("via5", "Ανταμοιβές Ανακύκλωσης",
200 "Κερδίστε πόντους για ανακύκλωση που μετατρέπονται σε εκπτώσεις", 219 "Κερδίστε πόντους για ανακύκλωση που μετατρέπονται σε εκπτώσεις",
201 - "Ongoing", "5%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY)); 220 + "Ανακυκλώστε και ανταμειφθείτε! Κερδίστε πόντους για κάθε κιλό ανακυκλώσιμων υλικών που παραδίδετε στα συνεργαζόμενα σημεία. Οι πόντοι μετατρέπονται σε εκπτώσεις έως και 5% σε συνεργαζόμενα καταστήματα. Συμβάλλετε στην προστασία του περιβάλλοντος και εξοικονομήστε χρήματα.",
221 + "31/12/2025", "5%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY));
202 222
203 category.addItem(new OfferItem("via6", "Συνδρομή Κοινόχρηστων Ποδηλάτων", 223 category.addItem(new OfferItem("via6", "Συνδρομή Κοινόχρηστων Ποδηλάτων",
204 "Ετήσια συνδρομή με 40% έκπτωση", 224 "Ετήσια συνδρομή με 40% έκπτωση",
225 + "Μετακινηθείτε οικολογικά με την ετήσια συνδρομή κοινόχρηστων ποδηλάτων με 40% έκπτωση. Η συνδρομή παρέχει απεριόριστες διαδρομές 30 λεπτών σε όλο το δίκτυο της πόλης. Συμβάλλετε στη μείωση της κυκλοφοριακής συμφόρησης και των εκπομπών ρύπων, ενώ βελτιώνετε την υγεία σας.",
205 "31/08/2025", "40%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY)); 226 "31/08/2025", "40%", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY));
206 227
207 category.addItem(new OfferItem("via7", "Ενεργειακά Αποδοτικές Συσκευές", 228 category.addItem(new OfferItem("via7", "Ενεργειακά Αποδοτικές Συσκευές",
208 "€50 επιστροφή χρημάτων σε συσκευές με βαθμολογία A+++", 229 "€50 επιστροφή χρημάτων σε συσκευές με βαθμολογία A+++",
230 + "Αναβαθμίστε το σπίτι σας με ενεργειακά αποδοτικές συσκευές και λάβετε €50 επιστροφή χρημάτων για κάθε συσκευή με βαθμολογία A+++. Η προσφορά ισχύει για ψυγεία, πλυντήρια, κλιματιστικά και άλλες μεγάλες οικιακές συσκευές. Εξοικονομήστε ενέργεια και χρήματα μακροπρόθεσμα.",
209 "31/07/2025", "€50", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY)); 231 "31/07/2025", "€50", "demo_image_musa.png", "demo_musa.png", CATEGORY_VIABILITY));
210 232
211 // Only keeping 7 items for Viability category 233 // Only keeping 7 items for Viability category
...@@ -223,52 +245,64 @@ public class DummyDataProvider { ...@@ -223,52 +245,64 @@ public class DummyDataProvider {
223 245
224 category.addItem(new OfferItem("fam1", "Οικογενειακό Πακέτο Κινητής", 246 category.addItem(new OfferItem("fam1", "Οικογενειακό Πακέτο Κινητής",
225 "Μοιραστείτε δεδομένα σε 4 γραμμές για €60/μήνα", 247 "Μοιραστείτε δεδομένα σε 4 γραμμές για €60/μήνα",
226 - "Ongoing", "€60", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 248 + "Συνδέστε όλη την οικογένεια με το οικογενειακό πακέτο κινητής για μόνο €60/μήνα. Το πακέτο περιλαμβάνει 4 γραμμές με κοινόχρηστα δεδομένα 100GB, απεριόριστες κλήσεις και μηνύματα. Προσθέστε επιπλέον γραμμές με €10/μήνα η καθεμία. Δωρεάν αναβάθμιση συσκευής κάθε 2 χρόνια για όλα τα μέλη.",
249 + "31/12/2025", "€60", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
227 250
228 category.addItem(new OfferItem("fam2", "Εισιτήρια Οικογενειακού Πάρκου", 251 category.addItem(new OfferItem("fam2", "Εισιτήρια Οικογενειακού Πάρκου",
229 "30% έκπτωση όταν αγοράζετε 4+ εισιτήρια", 252 "30% έκπτωση όταν αγοράζετε 4+ εισιτήρια",
253 + "Απολαύστε μια οικογενειακή μέρα στο πάρκο ψυχαγωγίας με 30% έκπτωση όταν αγοράζετε 4 ή περισσότερα εισιτήρια. Η προσφορά περιλαμβάνει απεριόριστη πρόσβαση σε όλα τα παιχνίδια και τις εκδηλώσεις του πάρκου. Δωρεάν στάθμευση και 10% έκπτωση στα καταστήματα φαγητού εντός του πάρκου.",
230 "31/08/2025", "30%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 254 "31/08/2025", "30%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
231 255
232 category.addItem(new OfferItem("fam3", "Παιδιά Τρώνε Δωρεάν", 256 category.addItem(new OfferItem("fam3", "Παιδιά Τρώνε Δωρεάν",
233 "Ένα δωρεάν παιδικό γεύμα με κάθε κυρίως πιάτο ενηλίκου", 257 "Ένα δωρεάν παιδικό γεύμα με κάθε κυρίως πιάτο ενηλίκου",
234 - "Weekdays only", "€0", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 258 + "Απολαύστε οικογενειακά γεύματα με την προσφορά «Παιδιά Τρώνε Δωρεάν». Λάβετε ένα δωρεάν παιδικό γεύμα με κάθε κυρίως πιάτο ενηλίκου που αγοράζετε. Η προσφορά ισχύει για παιδιά έως 12 ετών και περιλαμβάνει κυρίως πιάτο, επιδόρπιο και αναψυκτικό από το παιδικό μενού.",
259 + "31/07/2025", "€0", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
235 260
236 category.addItem(new OfferItem("fam4", "Οικογενειακό Πακέτο Σινεμά", 261 category.addItem(new OfferItem("fam4", "Οικογενειακό Πακέτο Σινεμά",
237 "4 εισιτήρια + ποπκόρν + αναψυκτικά για €35", 262 "4 εισιτήρια + ποπκόρν + αναψυκτικά για €35",
238 - "Weekends", "€35", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 263 + "Απολαύστε μια οικογενειακή έξοδο στον κινηματογράφο με το ειδικό πακέτο των €35. Περιλαμβάνει 4 εισιτήρια για οποιαδήποτε προβολή, 2 μεγάλα ποπκόρν και 4 αναψυκτικά. Ισχύει για όλες τις ημέρες της εβδομάδας, συμπεριλαμβανομένων των Σαββατοκύριακων και των αργιών.",
264 + "31/08/2025", "€35", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
239 265
240 category.addItem(new OfferItem("fam5", "Οικογενειακή Συνδρομή Γυμναστηρίου", 266 category.addItem(new OfferItem("fam5", "Οικογενειακή Συνδρομή Γυμναστηρίου",
241 "50% έκπτωση για επιπλέον μέλη της οικογένειας", 267 "50% έκπτωση για επιπλέον μέλη της οικογένειας",
242 - "Annual", "50%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 268 + "Διατηρήστε την οικογένειά σας σε φόρμα με την οικογενειακή συνδρομή γυμναστηρίου. Το πρώτο μέλος πληρώνει κανονική τιμή και όλα τα επιπλέον μέλη λαμβάνουν 50% έκπτωση. Η συνδρομή περιλαμβάνει πλήρη πρόσβαση σε όλες τις εγκαταστάσεις και τα ομαδικά προγράμματα.",
269 + "31/12/2025", "50%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
243 270
244 category.addItem(new OfferItem("fam6", "Οικογενειακή Φωτογράφιση", 271 category.addItem(new OfferItem("fam6", "Οικογενειακή Φωτογράφιση",
245 "Επαγγελματική φωτογράφιση για €75", 272 "Επαγγελματική φωτογράφιση για €75",
273 + "Απαθανατίστε τις οικογενειακές σας στιγμές με επαγγελματική φωτογράφιση για μόνο €75. Η συνεδρία διαρκεί 1 ώρα και περιλαμβάνει απεριόριστες λήψεις, 10 επεξεργασμένες ψηφιακές φωτογραφίες και 5 εκτυπώσεις μεγέθους 20x30cm. Επιλέξτε μεταξύ στούντιο ή εξωτερικού χώρου.",
246 "31/07/2025", "€75", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 274 "31/07/2025", "€75", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
247 275
248 category.addItem(new OfferItem("fam7", "Οικογενειακό Πακέτο Ασφάλισης", 276 category.addItem(new OfferItem("fam7", "Οικογενειακό Πακέτο Ασφάλισης",
249 "Εξοικονομήστε 25% συνδυάζοντας ασφάλεια σπιτιού και αυτοκινήτου", 277 "Εξοικονομήστε 25% συνδυάζοντας ασφάλεια σπιτιού και αυτοκινήτου",
278 + "Προστατέψτε την οικογένεια και την περιουσία σας εξοικονομώντας 25% στα ασφάλιστρα όταν συνδυάζετε ασφάλεια σπιτιού και αυτοκινήτου. Το πακέτο περιλαμβάνει πλήρη κάλυψη για το σπίτι σας, τα περιεχόμενά του και έως 2 οχήματα. Επιπλέον, λάβετε δωρεάν οδική βοήθεια.",
250 "31/12/2025", "25%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 279 "31/12/2025", "25%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
251 280
252 category.addItem(new OfferItem("fam8", "Οικογενειακό Πακέτο Διακοπών", 281 category.addItem(new OfferItem("fam8", "Οικογενειακό Πακέτο Διακοπών",
253 "All-inclusive διαμονή με δωρεάν διαμονή για παιδιά", 282 "All-inclusive διαμονή με δωρεάν διαμονή για παιδιά",
283 + "Απολαύστε οικογενειακές διακοπές με το all-inclusive πακέτο που προσφέρει δωρεάν διαμονή για παιδιά έως 12 ετών. Το πακέτο περιλαμβάνει διαμονή, όλα τα γεύματα, ποτά, σνακ και πρόσβαση σε όλες τις εγκαταστάσεις του ξενοδοχείου. Επιπλέον, δωρεάν συμμετοχή στο παιδικό κλαμπ.",
254 "30/09/2025", "€0", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 284 "30/09/2025", "€0", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
255 285
256 category.addItem(new OfferItem("fam9", "Οικογενειακό Πακέτο Streaming", 286 category.addItem(new OfferItem("fam9", "Οικογενειακό Πακέτο Streaming",
257 "Πολλαπλές υπηρεσίες streaming για €20/μήνα", 287 "Πολλαπλές υπηρεσίες streaming για €20/μήνα",
258 - "12-month contract", "€20", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 288 + "Αποκτήστε πρόσβαση σε πολλαπλές υπηρεσίες streaming για όλη την οικογένεια με μόνο €20/μήνα. Το πακέτο περιλαμβάνει 4 δημοφιλείς πλατφόρμες με ταινίες, σειρές, ντοκιμαντέρ και παιδικό περιεχόμενο. Δημιουργήστε έως 5 προφίλ και παρακολουθήστε ταυτόχρονα σε 4 συσκευές.",
289 + "31/12/2025", "€20", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
259 290
260 category.addItem(new OfferItem("fam10", "Πακέτο Επιστροφής στο Σχολείο", 291 category.addItem(new OfferItem("fam10", "Πακέτο Επιστροφής στο Σχολείο",
261 "40% έκπτωση σε σχολικά είδη με αγορές άνω των €100", 292 "40% έκπτωση σε σχολικά είδη με αγορές άνω των €100",
293 + "Προετοιμαστείτε για τη νέα σχολική χρονιά με 40% έκπτωση σε σχολικά είδη όταν ξοδεύετε πάνω από €100. Η προσφορά περιλαμβάνει τσάντες, γραφική ύλη, τετράδια, βιβλία και ρούχα. Επιπλέον, λάβετε δωρεάν εξατομικευμένες ετικέτες για όλα τα σχολικά είδη του παιδιού σας.",
262 "31/08/2025", "40%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 294 "31/08/2025", "40%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
263 295
264 // Adding 2 more items for Family category (12 total) 296 // Adding 2 more items for Family category (12 total)
265 category.addItem(new OfferItem("fam11", "Οικογενειακό Οδοντιατρικό Πρόγραμμα", 297 category.addItem(new OfferItem("fam11", "Οικογενειακό Οδοντιατρικό Πρόγραμμα",
266 "Ετήσιοι έλεγχοι για όλη την οικογένεια με 30% έκπτωση", 298 "Ετήσιοι έλεγχοι για όλη την οικογένεια με 30% έκπτωση",
299 + "Φροντίστε την οδοντική υγεία όλης της οικογένειας με το ειδικό πρόγραμμα που προσφέρει 30% έκπτωση σε ετήσιους ελέγχους. Το πρόγραμμα περιλαμβάνει καθαρισμό, ακτινογραφίες και συμβουλές στοματικής υγιεινής για όλα τα μέλη της οικογένειας. Επιπλέον 15% έκπτωση σε θεραπείες.",
267 "31/12/2025", "30%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 300 "31/12/2025", "30%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
268 301
269 category.addItem(new OfferItem("fam12", "Οικογενειακή Βραδιά Παιχνιδιών", 302 category.addItem(new OfferItem("fam12", "Οικογενειακή Βραδιά Παιχνιδιών",
270 "Αγοράστε 2 επιτραπέζια παιχνίδια και πάρτε 1 δωρεάν", 303 "Αγοράστε 2 επιτραπέζια παιχνίδια και πάρτε 1 δωρεάν",
271 - "Weekend offer", "100%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY)); 304 + "Διασκεδάστε με την οικογένειά σας με την προσφορά επιτραπέζιων παιχνιδιών. Αγοράστε 2 επιτραπέζια παιχνίδια και πάρτε 1 δωρεάν. Επιλέξτε από μεγάλη ποικιλία παιχνιδιών για όλες τις ηλικίες, από κλασικά παιχνίδια μέχρι τις τελευταίες κυκλοφορίες. Ιδανικό για οικογενειακές βραδιές.",
305 + "31/07/2025", "100%", "demo_image_ranch.png", "demo_ranch.png", CATEGORY_FAMILY));
272 306
273 return category; 307 return category;
274 } 308 }
...@@ -283,100 +317,124 @@ public class DummyDataProvider { ...@@ -283,100 +317,124 @@ public class DummyDataProvider {
283 317
284 category.addItem(new OfferItem("fc1", "Συνδρομή Καφέ", 318 category.addItem(new OfferItem("fc1", "Συνδρομή Καφέ",
285 "Καθημερινός καφές για €2 με μηνιαία συνδρομή", 319 "Καθημερινός καφές για €2 με μηνιαία συνδρομή",
286 - "Monthly", "€2", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 320 + "Απολαύστε τον αγαπημένο σας καφέ κάθε μέρα με μόνο €2 με την ειδική μηνιαία συνδρομή. Η προσφορά περιλαμβάνει έναν καφέ της επιλογής σας (espresso, cappuccino, latte ή φίλτρου) ημερησίως σε οποιοδήποτε από τα συνεργαζόμενα καταστήματα. Η συνδρομή ανανεώνεται αυτόματα κάθε μήνα.",
321 + "31/12/2025", "€2", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
287 322
288 category.addItem(new OfferItem("fc2", "Προσφορά Μεσημεριανού", 323 category.addItem(new OfferItem("fc2", "Προσφορά Μεσημεριανού",
289 "25% έκπτωση στο μενού μεσημεριανού μεταξύ 12-3μμ", 324 "25% έκπτωση στο μενού μεσημεριανού μεταξύ 12-3μμ",
290 - "Weekdays", "25%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 325 + "Απολαύστε το μεσημεριανό σας γεύμα με 25% έκπτωση στο πλήρες μενού καθημερινά μεταξύ 12-3μμ. Η προσφορά ισχύει για όλα τα πιάτα, συμπεριλαμβανομένων των ημερήσιων προτάσεων του σεφ και των σπεσιαλιτέ του καταστήματος. Δεν συνδυάζεται με άλλες προσφορές ή εκπτώσεις.",
326 + "31/07/2025", "25%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
291 327
292 category.addItem(new OfferItem("fc3", "Κάρτα Επιβράβευσης Φούρνου", 328 category.addItem(new OfferItem("fc3", "Κάρτα Επιβράβευσης Φούρνου",
293 "10ο γλυκό δωρεάν με την κάρτα επιβράβευσης", 329 "10ο γλυκό δωρεάν με την κάρτα επιβράβευσης",
294 - "Ongoing", "100%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 330 + "Αποκτήστε την κάρτα επιβράβευσης του φούρνου μας και κερδίστε το 10ο γλυκό εντελώς δωρεάν. Με κάθε αγορά γλυκού, συλλέγετε μία σφραγίδα στην κάρτα σας. Συμπληρώστε 9 σφραγίδες και απολαύστε οποιοδήποτε γλυκό της επιλογής σας δωρεάν, ανεξαρτήτως τιμής.",
331 + "31/12/2025", "100%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
295 332
296 category.addItem(new OfferItem("fc4", "Δείπνο για Δύο", 333 category.addItem(new OfferItem("fc4", "Δείπνο για Δύο",
297 "Γεύμα 3 πιάτων με κρασί για €60", 334 "Γεύμα 3 πιάτων με κρασί για €60",
335 + "Απολαύστε ένα ρομαντικό δείπνο για δύο με μόνο €60. Το πακέτο περιλαμβάνει ορεκτικό, κυρίως πιάτο και επιδόρπιο για δύο άτομα, συνοδευόμενα από ένα μπουκάλι εκλεκτό κρασί. Επιλέξτε από το ειδικό μενού με πιάτα εμπνευσμένα από τη μεσογειακή και διεθνή κουζίνα.",
298 "31/07/2025", "€60", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 336 "31/07/2025", "€60", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
299 337
300 category.addItem(new OfferItem("fc5", "Παράδοση Φαγητού", 338 category.addItem(new OfferItem("fc5", "Παράδοση Φαγητού",
301 "Δωρεάν παράδοση για παραγγελίες άνω των €20", 339 "Δωρεάν παράδοση για παραγγελίες άνω των €20",
302 - "Ongoing", "€0", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 340 + "Απολαύστε το αγαπημένο σας φαγητό στο σπίτι ή το γραφείο με δωρεάν παράδοση για παραγγελίες άνω των €20. Η προσφορά ισχύει για όλο το μενού, συμπεριλαμβανομένων των ειδικών προσφορών και των νέων πιάτων. Ο μέσος χρόνος παράδοσης είναι 30-45 λεπτά, ανάλογα με την απόσταση.",
341 + "31/12/2025", "€0", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
303 342
304 category.addItem(new OfferItem("fc6", "Εκλεκτοί Κόκκοι Καφέ", 343 category.addItem(new OfferItem("fc6", "Εκλεκτοί Κόκκοι Καφέ",
305 "20% έκπτωση σε premium κόκκους καφέ", 344 "20% έκπτωση σε premium κόκκους καφέ",
345 + "Απολαύστε την πλούσια γεύση των premium κόκκων καφέ με 20% έκπτωση. Η προσφορά περιλαμβάνει μοναδικές ποικιλίες από όλο τον κόσμο, φρεσκοκομμένες ή ολόκληρες. Ιδανικοί για espresso, φίλτρου ή cold brew. Επωφεληθείτε της έκπτωσης για να ανακαλύψετε νέες γεύσεις και αρώματα.",
306 "30/06/2025", "20%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 346 "30/06/2025", "20%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
307 347
308 category.addItem(new OfferItem("fc7", "Προσφορά Πρωινού", 348 category.addItem(new OfferItem("fc7", "Προσφορά Πρωινού",
309 "Καφές και γλυκό για €5", 349 "Καφές και γλυκό για €5",
310 - "Daily until 11am", "€5", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 350 + "Ξεκινήστε τη μέρα σας με ενέργεια με την προσφορά πρωινού μας. Μόνο €5 για έναν καφέ της επιλογής σας (espresso, cappuccino, latte ή φίλτρου) και ένα γλυκό από την ημερήσια επιλογή μας. Η προσφορά ισχύει καθημερινά έως τις 11:00 π.μ. Ιδανικό για γρήγορο πρωινό στο δρόμο για τη δουλειά.",
351 + "31/12/2025", "€5", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
311 352
312 category.addItem(new OfferItem("fc8", "Gourmet Burger Γεύμα", 353 category.addItem(new OfferItem("fc8", "Gourmet Burger Γεύμα",
313 "Burger, πατάτες και αναψυκτικό για €12", 354 "Burger, πατάτες και αναψυκτικό για €12",
314 - "Ongoing", "€12", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 355 + "Απολαύστε ένα πλήρες gourmet burger γεύμα για μόνο €12. Το πακέτο περιλαμβάνει ένα χειροποίητο burger 200γρ με μοσχαρίσιο κιμά Black Angus, φρέσκιες τηγανητές πατάτες και αναψυκτικό της επιλογής σας. Επιλέξτε ανάμεσα σε 5 διαφορετικά είδη burger με μοναδικούς συνδυασμούς υλικών.",
356 + "31/12/2025", "€12", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
315 357
316 category.addItem(new OfferItem("fc9", "Γευσιγνωσία Κρασιού", 358 category.addItem(new OfferItem("fc9", "Γευσιγνωσία Κρασιού",
317 "50% έκπτωση σε συνεδρίες γευσιγνωσίας κρασιού", 359 "50% έκπτωση σε συνεδρίες γευσιγνωσίας κρασιού",
318 - "Thursdays", "50%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 360 + "Ανακαλύψτε τον κόσμο του κρασιού με 50% έκπτωση σε συνεδρίες γευσιγνωσίας. Κάθε συνεδρία περιλαμβάνει δοκιμή 6 διαφορετικών κρασιών, συνοδευόμενα από πλατό τυριών και αλλαντικών. Ο έμπειρος οινολόγος μας θα σας μυήσει στα μυστικά της γευσιγνωσίας και θα απαντήσει σε όλες τις ερωτήσεις σας.",
361 + "31/12/2025", "50%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
319 362
320 category.addItem(new OfferItem("fc10", "Πακέτο Παγωτού", 363 category.addItem(new OfferItem("fc10", "Πακέτο Παγωτού",
321 "Αγοράστε 2 μπάλες και πάρτε 1 δωρεάν", 364 "Αγοράστε 2 μπάλες και πάρτε 1 δωρεάν",
322 - "Summer offer", "100%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 365 + "Δροσιστείτε με την προσφορά παγωτού μας! Αγοράστε 2 μπάλες παγωτού και πάρτε την 3η εντελώς δωρεάν. Επιλέξτε από 24 διαφορετικές γεύσεις, από κλασικές όπως βανίλια και σοκολάτα, μέχρι πιο εξωτικές όπως λεμόνι-βασιλικός και σοκολάτα-τσίλι. Όλα τα παγωτά μας είναι χειροποίητα με αγνά υλικά.",
366 + "31/08/2025", "100%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
323 367
324 // Adding 14 more items for Food & Coffee category (24 total) 368 // Adding 14 more items for Food & Coffee category (24 total)
325 category.addItem(new OfferItem("fc11", "Εστιατόριο Sushi", 369 category.addItem(new OfferItem("fc11", "Εστιατόριο Sushi",
326 "Φάτε όσο sushi θέλετε για €25", 370 "Φάτε όσο sushi θέλετε για €25",
327 - "Tuesday & Thursday", "€25", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 371 + "Απολαύστε απεριόριστο sushi για μόνο €25 ανά άτομο. Η προσφορά περιλαμβάνει όλους τους τύπους sushi του μενού μας: maki, nigiri, sashimi, temaki και ειδικά rolls. Κάθε παραγγελία ετοιμάζεται τη στιγμή που τη ζητάτε από τους έμπειρους σεφ μας, εξασφαλίζοντας φρεσκάδα και ποιότητα.",
372 + "31/12/2025", "€25", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
328 373
329 category.addItem(new OfferItem("fc12", "Χειροποίητο Ψωμί", 374 category.addItem(new OfferItem("fc12", "Χειροποίητο Ψωμί",
330 "Αγοράστε ένα καρβέλι και πάρτε το δεύτερο στη μισή τιμή", 375 "Αγοράστε ένα καρβέλι και πάρτε το δεύτερο στη μισή τιμή",
331 - "Weekends", "50%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 376 + "Απολαύστε το αρωματικό, χειροποίητο ψωμί μας με ειδική προσφορά: αγοράστε ένα καρβέλι και πάρτε το δεύτερο στη μισή τιμή. Το ψωμί μας παρασκευάζεται καθημερινά με παραδοσιακές μεθόδους και προζύμι, χωρίς πρόσθετα ή συντηρητικά. Επιλέξτε ανάμεσα σε διάφορες γεύσεις όπως χωριάτικο, ολικής άλεσης και πολύσπορο.",
377 + "31/08/2025", "50%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
332 378
333 category.addItem(new OfferItem("fc13", "Κόκκοι Καφέ", 379 category.addItem(new OfferItem("fc13", "Κόκκοι Καφέ",
334 "15% έκπτωση σε premium κόκκους μονής προέλευσης", 380 "15% έκπτωση σε premium κόκκους μονής προέλευσης",
335 - "Limited stock", "15%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 381 + "Ανακαλύψτε τον πλούτο των γεύσεων με 15% έκπτωση σε premium κόκκους καφέ μονής προέλευσης. Κάθε ποικιλία προέρχεται από συγκεκριμένη περιοχή και φάρμα, εξασφαλίζοντας μοναδικά χαρακτηριστικά και γευστικό προφίλ. Διαθέσιμες ποικιλίες από Αιθιοπία, Κολομβία, Γουατεμάλα, Κένυα και άλλες χώρες.",
382 + "30/08/2025", "15%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
336 383
337 category.addItem(new OfferItem("fc14", "Βραδιά Πίτσας", 384 category.addItem(new OfferItem("fc14", "Βραδιά Πίτσας",
338 "Οικογενειακή πίτσα με 2 υλικά για €12", 385 "Οικογενειακή πίτσα με 2 υλικά για €12",
339 - "Every Wednesday", "€12", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 386 + "Απολαύστε μια γευστική βραδιά με την οικογένεια με την προσφορά μας: οικογενειακή πίτσα (40cm) με 2 υλικά της επιλογής σας για μόνο €12. Η πίτσα μας παρασκευάζεται με φρέσκια ζύμη που ωριμάζει για 24 ώρες, σάλτσα από ιταλικές τομάτες και 100% mozzarella. Προσθέστε επιπλέον υλικά με €1 το καθένα.",
387 + "31/12/2025", "€12", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
340 388
341 category.addItem(new OfferItem("fc15", "Μπαρ με Smoothies", 389 category.addItem(new OfferItem("fc15", "Μπαρ με Smoothies",
342 "Αγοράστε ένα smoothie και πάρτε το δεύτερο στη μισή τιμή", 390 "Αγοράστε ένα smoothie και πάρτε το δεύτερο στη μισή τιμή",
343 - "Morning hours", "50%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 391 + "Δροσιστείτε με τα φρέσκα και υγιεινά smoothies μας! Αγοράστε ένα smoothie και πάρτε το δεύτερο με 50% έκπτωση. Όλα τα smoothies μας παρασκευάζονται με φρέσκα φρούτα, χωρίς πρόσθετη ζάχαρη ή συντηρητικά. Επιλέξτε από 15 διαφορετικούς συνδυασμούς ή δημιουργήστε το δικό σας με τα αγαπημένα σας συστατικά.",
392 + "31/12/2025", "50%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
344 393
345 category.addItem(new OfferItem("fc16", "Προσφορά Ζυμαρικών", 394 category.addItem(new OfferItem("fc16", "Προσφορά Ζυμαρικών",
346 "Όλα τα πιάτα ζυμαρικών €10 με δωρεάν ψωμί", 395 "Όλα τα πιάτα ζυμαρικών €10 με δωρεάν ψωμί",
347 - "Monday-Thursday", "€10", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 396 + "Απολαύστε τα αγαπημένα σας ζυμαρικά σε ειδική τιμή! Όλα τα πιάτα ζυμαρικών μόνο €10, συνοδευόμενα από δωρεάν φρεσκοψημένο ψωμί με σκορδοβούτυρο. Επιλέξτε ανάμεσα σε 12 διαφορετικές συνταγές, από κλασικά carbonara και bolognese μέχρι gourmet επιλογές με θαλασσινά και τρούφα.",
397 + "31/12/2025", "€10", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
348 398
349 category.addItem(new OfferItem("fc17", "Πιατέλα Επιδορπίων", 399 category.addItem(new OfferItem("fc17", "Πιατέλα Επιδορπίων",
350 "Επιλογή από 5 επιδόρπια για μοίρασμα για €15", 400 "Επιλογή από 5 επιδόρπια για μοίρασμα για €15",
351 - "After 8pm", "€15", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 401 + "Ικανοποιήστε τη γλυκιά σας επιθυμία με την πιατέλα επιδορπίων μας! Μόνο €15 για μια επιλογή 5 διαφορετικών επιδορπίων ιδανικά για μοίρασμα. Περιλαμβάνει μικρές μερίδες από σοκολατόπιτα, cheesecake, τιραμισού, παγωτό και φρέσκα φρούτα. Ιδανικό για παρέες 2-4 ατόμων.",
402 + "31/12/2025", "€15", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
352 403
353 category.addItem(new OfferItem("fc18", "Μπουφές Πρωινού", 404 category.addItem(new OfferItem("fc18", "Μπουφές Πρωινού",
354 "Πρωινό όσο θέλετε για €12.99", 405 "Πρωινό όσο θέλετε για €12.99",
355 - "7am-10am daily", "€12.99", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 406 + "Ξεκινήστε τη μέρα σας με τον πλούσιο μπουφέ πρωινού μας για μόνο €12.99 ανά άτομο. Απολαύστε απεριόριστες επιλογές από φρέσκα αρτοσκευάσματα, αυγά μαγειρεμένα κατά παραγγελία, φρέσκα φρούτα, γιαούρτι, δημητριακά, κρύα κρεατικά και τυριά. Περιλαμβάνει απεριόριστο καφέ, τσάι και χυμούς.",
407 + "31/12/2025", "€12.99", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
356 408
357 category.addItem(new OfferItem("fc19", "Εξειδικευμένα Τσάγια", 409 category.addItem(new OfferItem("fc19", "Εξειδικευμένα Τσάγια",
358 "Αγοράστε οποιοδήποτε τσάι και πάρτε ένα γλυκό δωρεάν", 410 "Αγοράστε οποιοδήποτε τσάι και πάρτε ένα γλυκό δωρεάν",
359 - "Afternoon tea time", "€0", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 411 + "Ανακαλύψτε τον κόσμο των εξειδικευμένων τσαγιών και απολαύστε ένα δωρεάν γλυκό με κάθε παραγγελία. Επιλέξτε από περισσότερες από 30 ποικιλίες τσαγιού από όλο τον κόσμο, συμπεριλαμβανομένων βοτανικών, πράσινων, μαύρων και αρωματικών τσαγιών. Το δωρεάν γλυκό περιλαμβάνει επιλογές όπως μπισκότα, κέικ ή μάφιν.",
412 + "31/12/2025", "€0", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
360 413
361 category.addItem(new OfferItem("fc20", "Χορτοφαγικό Μενού", 414 category.addItem(new OfferItem("fc20", "Χορτοφαγικό Μενού",
362 "20% έκπτωση σε όλα τα χορτοφαγικά κυρίως πιάτα", 415 "20% έκπτωση σε όλα τα χορτοφαγικά κυρίως πιάτα",
363 - "All week", "20%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 416 + "Απολαύστε υγιεινά και νόστιμα χορτοφαγικά πιάτα με 20% έκπτωση. Το μενού μας περιλαμβάνει μια ποικιλία από δημιουργικά πιάτα με φρέσκα, εποχιακά υλικά και μοναδικούς συνδυασμούς γεύσεων. Από πλούσιες σαλάτες και σούπες μέχρι κυρίως πιάτα εμπνευσμένα από διεθνείς κουζίνες. Κατάλληλο για χορτοφάγους και vegan.",
417 + "31/12/2025", "20%", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
364 418
365 category.addItem(new OfferItem("fc21", "Γευσιγνωσία Μπύρας", 419 category.addItem(new OfferItem("fc21", "Γευσιγνωσία Μπύρας",
366 "Δοκιμή 4 χειροποίητων μπυρών για €8", 420 "Δοκιμή 4 χειροποίητων μπυρών για €8",
367 - "Happy hour", "€8", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 421 + "Ανακαλύψτε τον κόσμο της χειροποίητης μπύρας με τη γευσιγνωσία μας για μόνο €8. Δοκιμάστε 4 διαφορετικές μπύρες από τοπικά ζυθοποιεία, συνοδευόμενες από ένα πιάτο με αλμυρά σνακ. Ο έμπειρος ζυθοποιός μας θα σας εξηγήσει τη διαδικασία παρασκευής και τα ιδιαίτερα χαρακτηριστικά κάθε μπύρας.",
422 + "31/12/2025", "€8", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
368 423
369 category.addItem(new OfferItem("fc22", "Πιατέλα Θαλασσινών", 424 category.addItem(new OfferItem("fc22", "Πιατέλα Θαλασσινών",
370 "Πιατέλα θαλασσινών για δύο με κρασί €45", 425 "Πιατέλα θαλασσινών για δύο με κρασί €45",
371 - "Friday & Saturday", "€45", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 426 + "Απολαύστε μια πλούσια πιατέλα θαλασσινών για δύο άτομα με ένα μπουκάλι λευκό κρασί για μόνο €45. Η πιατέλα περιλαμβάνει φρέσκα στρείδια, γαρίδες, μύδια, καλαμάρι και ψάρι ημέρας, όλα μαγειρεμένα με παραδοσιακές μεσογειακές συνταγές. Συνοδεύεται από φρέσκο ψωμί και σάλτσες.",
427 + "31/12/2025", "€45", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
372 428
373 category.addItem(new OfferItem("fc23", "Προσφορά Brunch", 429 category.addItem(new OfferItem("fc23", "Προσφορά Brunch",
374 "Brunch με mimosa για €18", 430 "Brunch με mimosa για €18",
375 - "Weekends 11am-3pm", "€18", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 431 + "Απολαύστε ένα πλούσιο brunch με ένα ποτήρι mimosa για μόνο €18. Το μενού περιλαμβάνει αυγά μαγειρεμένα κατά προτίμηση, φρέσκα αρτοσκευάσματα, φρούτα εποχής, γιαούρτι με μέλι και ξηρούς καρπούς, και μια επιλογή από τυριά και αλλαντικά. Διαθέσιμο κάθε Σαββατοκύριακο από τις 10:00 έως τις 15:00.",
432 + "31/12/2025", "€18", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
376 433
377 category.addItem(new OfferItem("fc24", "Gourmet Σάντουιτς", 434 category.addItem(new OfferItem("fc24", "Gourmet Σάντουιτς",
378 "Gourmet σάντουιτς με συνδυασμό σούπας €9.50", 435 "Gourmet σάντουιτς με συνδυασμό σούπας €9.50",
379 - "Lunch special", "€9.50", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE)); 436 + "Απολαύστε ένα χειροποίητο gourmet σάντουιτς με μια μικρή σούπα της ημέρας για μόνο €9.50. Επιλέξτε ανάμεσα σε 8 διαφορετικά σάντουιτς με premium υλικά όπως προσούτο, καπνιστό σολομό, ψητά λαχανικά και χειροποίητες σάλτσες. Όλα τα σάντουιτς σερβίρονται σε φρεσκοψημένο ψωμί από το φούρνο μας.",
437 + "31/12/2025", "€9.50", "demo_image_coffee.png", "demo_coffee.png", CATEGORY_FOOD_COFFEE));
380 438
381 return category; 439 return category;
382 } 440 }
...@@ -391,38 +449,47 @@ public class DummyDataProvider { ...@@ -391,38 +449,47 @@ public class DummyDataProvider {
391 449
392 category.addItem(new OfferItem("tr1", "Έκπτωση Αεροπορικών", 450 category.addItem(new OfferItem("tr1", "Έκπτωση Αεροπορικών",
393 "15% έκπτωση σε διεθνείς πτήσεις", 451 "15% έκπτωση σε διεθνείς πτήσεις",
452 + "Εξοικονομήστε 15% σε διεθνείς πτήσεις με κορυφαίες αεροπορικές εταιρείες. Η προσφορά ισχύει για απευθείας κρατήσεις και περιλαμβάνει όλες τις κατηγορίες θέσεων. Δεν υπάρχουν περιορισμοί στους προορισμούς ή στις ημερομηνίες, εκτός από περιόδους αιχμής. Απαιτείται κράτηση τουλάχιστον 21 ημέρες πριν την αναχώρηση.",
394 "31/08/2025", "15%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 453 "31/08/2025", "15%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
395 454
396 category.addItem(new OfferItem("tr2", "Διαμονή σε Ξενοδοχείο", 455 category.addItem(new OfferItem("tr2", "Διαμονή σε Ξενοδοχείο",
397 "3 νύχτες στην τιμή των 2 σε συνεργαζόμενα ξενοδοχεία", 456 "3 νύχτες στην τιμή των 2 σε συνεργαζόμενα ξενοδοχεία",
457 + "Απολαύστε μια επιπλέον νύχτα διαμονής εντελώς δωρεάν όταν κάνετε κράτηση για 2 νύχτες σε οποιοδήποτε από τα συνεργαζόμενα ξενοδοχεία μας. Η προσφορά ισχύει για όλους τους τύπους δωματίων και περιλαμβάνει πρωινό. Ιδανικό για μεγαλύτερες αποδράσεις Σαββατοκύριακου ή μίνι διακοπές.",
398 "30/09/2025", "33%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 458 "30/09/2025", "33%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
399 459
400 category.addItem(new OfferItem("tr3", "Ενοικίαση Αυτοκινήτου", 460 category.addItem(new OfferItem("tr3", "Ενοικίαση Αυτοκινήτου",
401 "€25 έκπτωση σε εβδομαδιαίες ενοικιάσεις αυτοκινήτων", 461 "€25 έκπτωση σε εβδομαδιαίες ενοικιάσεις αυτοκινήτων",
462 + "Εξοικονομήστε €25 σε εβδομαδιαίες ενοικιάσεις αυτοκινήτων σε όλους τους προορισμούς. Η προσφορά ισχύει για όλες τις κατηγορίες οχημάτων, από οικονομικά μέχρι πολυτελή. Περιλαμβάνει απεριόριστα χιλιόμετρα και βασική ασφάλεια. Δωρεάν ακύρωση έως 48 ώρες πριν την παραλαβή.",
402 "31/12/2025", "€25", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 463 "31/12/2025", "€25", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
403 464
404 category.addItem(new OfferItem("tr4", "Ταξιδιωτική Ασφάλεια", 465 category.addItem(new OfferItem("tr4", "Ταξιδιωτική Ασφάλεια",
405 "20% έκπτωση σε ετήσια ταξιδιωτική ασφάλεια", 466 "20% έκπτωση σε ετήσια ταξιδιωτική ασφάλεια",
467 + "Ταξιδέψτε με ασφάλεια και εξοικονομήστε 20% σε ετήσια ταξιδιωτική ασφάλεια. Το πακέτο περιλαμβάνει ιατρική κάλυψη, ακύρωση ταξιδιού, απώλεια αποσκευών και προσωπικών αντικειμένων, καθυστέρηση πτήσης και 24ωρη βοήθεια. Ισχύει για απεριόριστο αριθμό ταξιδιών εντός ενός έτους.",
406 "30/06/2025", "20%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 468 "30/06/2025", "20%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
407 469
408 category.addItem(new OfferItem("tr5", "Ξενάγηση Πόλης", 470 category.addItem(new OfferItem("tr5", "Ξενάγηση Πόλης",
409 "Αγοράστε ένα εισιτήριο και πάρτε ένα δωρεάν", 471 "Αγοράστε ένα εισιτήριο και πάρτε ένα δωρεάν",
472 + "Ανακαλύψτε τα αξιοθέατα της πόλης με την προσφορά 1+1 σε ξεναγήσεις. Αγοράστε ένα εισιτήριο και φέρτε έναν φίλο δωρεάν. Οι ξεναγήσεις διαρκούν 2-3 ώρες και καλύπτουν τα σημαντικότερα αξιοθέατα με έμπειρους, πολύγλωσσους ξεναγούς. Διαθέσιμες καθημερινά σε διάφορες ώρες.",
410 "31/07/2025", "100%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 473 "31/07/2025", "100%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
411 474
412 category.addItem(new OfferItem("tr6", "Πρόσβαση σε Lounge Αεροδρομίου", 475 category.addItem(new OfferItem("tr6", "Πρόσβαση σε Lounge Αεροδρομίου",
413 "€15 για πρόσβαση σε lounge ανεξαρτήτως κατηγορίας εισιτηρίου", 476 "€15 για πρόσβαση σε lounge ανεξαρτήτως κατηγορίας εισιτηρίου",
414 - "Ongoing", "€15", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 477 + "Απολαύστε πολυτελή άνεση πριν την πτήση σας με πρόσβαση σε VIP lounge αεροδρομίου για μόνο €15, ανεξάρτητα από την κατηγορία του εισιτηρίου σας. Η προσφορά περιλαμβάνει απεριόριστα ποτά και σνακ, δωρεάν Wi-Fi, άνετους χώρους καθιστικού και ντους. Ιδανικό για επαγγελματίες και ταξιδιώτες αναψυχής.",
478 + "31/12/2025", "€15", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
415 479
416 category.addItem(new OfferItem("tr7", "Έκπτωση Κρουαζιέρας", 480 category.addItem(new OfferItem("tr7", "Έκπτωση Κρουαζιέρας",
417 "30% έκπτωση σε επιλεγμένα πακέτα κρουαζιέρας", 481 "30% έκπτωση σε επιλεγμένα πακέτα κρουαζιέρας",
482 + "Εξερευνήστε εξωτικούς προορισμούς με 30% έκπτωση σε επιλεγμένα πακέτα κρουαζιέρας. Η προσφορά περιλαμβάνει διαμονή σε καμπίνα της επιλογής σας, πλήρη διατροφή, ψυχαγωγία εν πλω και επισκέψεις σε πολλαπλούς προορισμούς. Ιδανικό για ζευγάρια, οικογένειες ή παρέες φίλων που αναζητούν μια αξέχαστη ταξιδιωτική εμπειρία.",
418 "31/08/2025", "30%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 483 "31/08/2025", "30%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
419 484
420 category.addItem(new OfferItem("tr8", "Αξεσουάρ Ταξιδιού", 485 category.addItem(new OfferItem("tr8", "Αξεσουάρ Ταξιδιού",
421 "Αγοράστε 2 και πάρτε 1 δωρεάν σε είδη ταξιδιού", 486 "Αγοράστε 2 και πάρτε 1 δωρεάν σε είδη ταξιδιού",
422 - "While stocks last", "100%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 487 + "Εξοπλιστείτε για το επόμενο ταξίδι σας με την προσφορά 2+1 σε αξεσουάρ ταξιδιού. Αγοράστε 2 είδη και πάρτε ένα τρίτο εντελώς δωρεάν. Η προσφορά ισχύει για βαλίτσες, τσάντες, αντάπτορες, οργανωτές αποσκευών, μαξιλάρια αυχένα και άλλα χρήσιμα αξεσουάρ που θα κάνουν το ταξίδι σας πιο άνετο.",
488 + "30/09/2025", "100%", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
423 489
424 category.addItem(new OfferItem("tr9", "Μεταφορά από/προς Αεροδρόμιο", 490 category.addItem(new OfferItem("tr9", "Μεταφορά από/προς Αεροδρόμιο",
425 "€10 έκπτωση σε ιδιωτικές μεταφορές από/προς αεροδρόμιο", 491 "€10 έκπτωση σε ιδιωτικές μεταφορές από/προς αεροδρόμιο",
492 + "Ξεκινήστε και ολοκληρώστε το ταξίδι σας με άνεση εξοικονομώντας €10 σε ιδιωτικές μεταφορές από και προς το αεροδρόμιο. Η υπηρεσία περιλαμβάνει παρακολούθηση πτήσεων, αναμονή σε περίπτωση καθυστερήσεων και βοήθεια με τις αποσκευές. Διαθέσιμα οχήματα από οικονομικά αυτοκίνητα μέχρι πολυτελή minivan.",
426 "31/12/2025", "€10", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING)); 493 "31/12/2025", "€10", "demo_image_ninemia.png", "demo_ninemia.png", CATEGORY_TRAVELLING));
427 494
428 // Only keeping 9 items for Travelling category 495 // Only keeping 9 items for Travelling category
...@@ -440,48 +507,59 @@ public class DummyDataProvider { ...@@ -440,48 +507,59 @@ public class DummyDataProvider {
440 507
441 category.addItem(new OfferItem("kid1", "Έκπτωση σε Κατάστημα Παιχνιδιών", 508 category.addItem(new OfferItem("kid1", "Έκπτωση σε Κατάστημα Παιχνιδιών",
442 "25% έκπτωση σε όλα τα παιχνίδια αυτό το Σαββατοκύριακο", 509 "25% έκπτωση σε όλα τα παιχνίδια αυτό το Σαββατοκύριακο",
443 - "Sunday", "25%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 510 + "Εξοικονομήστε 25% σε όλα τα παιχνίδια αυτό το Σαββατοκύριακο! Η προσφορά ισχύει για όλες τις κατηγορίες παιχνιδιών, συμπεριλαμβανομένων επιτραπέζιων, κατασκευών, κούκλων, αυτοκινήτων, παιχνιδιών STEM και ηλεκτρονικών παιχνιδιών. Ιδανική ευκαιρία για δώρα γενεθλίων ή απλά για να επιβραβεύσετε τα παιδιά σας.",
511 + "31/12/2025", "25%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
444 512
445 category.addItem(new OfferItem("kid2", "Παιδικά Ρούχα", 513 category.addItem(new OfferItem("kid2", "Παιδικά Ρούχα",
446 "Αγοράστε 2 και πάρτε 1 δωρεάν σε παιδικά ρούχα", 514 "Αγοράστε 2 και πάρτε 1 δωρεάν σε παιδικά ρούχα",
515 + "Ανανεώστε τη γκαρνταρόμπα των παιδιών σας με την προσφορά 2+1 σε όλα τα παιδικά ρούχα. Αγοράστε 2 είδη και πάρτε ένα τρίτο εντελώς δωρεάν. Η προσφορά ισχύει για όλες τις ηλικίες από 0-14 ετών και περιλαμβάνει μπλούζες, παντελόνια, φορέματα, εσώρουχα και αξεσουάρ. Το είδος με τη χαμηλότερη τιμή προσφέρεται δωρεάν.",
447 "31/07/2025", "100%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 516 "31/07/2025", "100%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
448 517
449 category.addItem(new OfferItem("kid3", "Εσωτερική Παιδική Χαρά", 518 category.addItem(new OfferItem("kid3", "Εσωτερική Παιδική Χαρά",
450 "€5 είσοδος για απεριόριστο παιχνίδι", 519 "€5 είσοδος για απεριόριστο παιχνίδι",
451 - "Weekdays", "€5", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 520 + "Προσφέρετε στα παιδιά σας ώρες διασκέδασης με μόνο €5 για απεριόριστο παιχνίδι στην εσωτερική παιδική χαρά μας. Ο χώρος περιλαμβάνει τραμπολίνο, πισίνες με μπαλάκια, τοίχο αναρρίχησης, τσουλήθρες, λαβύρινθους και πολλά ακόμα. Οι γονείς μπορούν να απολαύσουν δωρεάν καφέ στον ειδικό χώρο αναμονής με Wi-Fi.",
521 + "31/07/2025", "€5", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
452 522
453 category.addItem(new OfferItem("kid4", "Παιδικά Βιβλία", 523 category.addItem(new OfferItem("kid4", "Παιδικά Βιβλία",
454 "30% έκπτωση σε εκπαιδευτικά βιβλία", 524 "30% έκπτωση σε εκπαιδευτικά βιβλία",
525 + "Ενισχύστε τη μάθηση των παιδιών σας με 30% έκπτωση σε όλα τα εκπαιδευτικά βιβλία. Η προσφορά περιλαμβάνει βιβλία για όλες τις ηλικίες, από προσχολική έως εφηβική, σε θέματα όπως μαθηματικά, επιστήμες, γλώσσες, ιστορία και τέχνες. Επιπλέον, λάβετε δωρεάν πρόσβαση στο online εκπαιδευτικό υλικό για 3 μήνες.",
455 "30/06/2025", "30%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 526 "30/06/2025", "30%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
456 527
457 category.addItem(new OfferItem("kid5", "Μαθήματα Κολύμβησης", 528 category.addItem(new OfferItem("kid5", "Μαθήματα Κολύμβησης",
458 "Πρώτο μάθημα δωρεάν, μετά €10 ανά μάθημα", 529 "Πρώτο μάθημα δωρεάν, μετά €10 ανά μάθημα",
459 - "Summer offer", "€0", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 530 + "Δώστε στο παιδί σας την ευκαιρία να μάθει κολύμβηση με το πρώτο μάθημα εντελώς δωρεάν και στη συνέχεια μόνο €10 ανά μάθημα. Τα μαθήματα διεξάγονται από πιστοποιημένους προπονητές σε θερμαινόμενη πισίνα, με μικρά γκρουπ έως 5 παιδιών ανά προπονητή. Διαθέσιμα τμήματα για ηλικίες 3-15 ετών, όλα τα επίπεδα.",
531 + "31/08/2025", "€0", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
460 532
461 category.addItem(new OfferItem("kid6", "Παιδικό Κούρεμα", 533 category.addItem(new OfferItem("kid6", "Παιδικό Κούρεμα",
462 "Ειδική τιμή €8 για παιδιά κάτω των 12 ετών", 534 "Ειδική τιμή €8 για παιδιά κάτω των 12 ετών",
463 - "Ongoing", "€8", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 535 + "Προσφέρετε στο παιδί σας ένα στυλάτο κούρεμα με μόνο €8 για παιδιά κάτω των 12 ετών. Οι έμπειροι κομμωτές μας είναι εξειδικευμένοι στο παιδικό κούρεμα και δημιουργούν μια ευχάριστη εμπειρία για τα παιδιά. Περιλαμβάνει λούσιμο, κούρεμα και απλό στάιλινγκ. Δωρεάν αυτοκόλλητο ή μικρό παιχνίδι μετά το κούρεμα.",
536 + "31/12/2025", "€8", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
464 537
465 category.addItem(new OfferItem("kid7", "Παιδικό Μουσείο", 538 category.addItem(new OfferItem("kid7", "Παιδικό Μουσείο",
466 "Οικογενειακό εισιτήριο για €25 (έως 4 άτομα)", 539 "Οικογενειακό εισιτήριο για €25 (έως 4 άτομα)",
540 + "Απολαύστε μια εκπαιδευτική και διασκεδαστική οικογενειακή έξοδο στο Παιδικό Μουσείο με το ειδικό οικογενειακό εισιτήριο των €25 για έως 4 άτομα. Το μουσείο προσφέρει διαδραστικές εκθέσεις, εργαστήρια και παιχνίδια που ενθαρρύνουν τη μάθηση μέσω της εξερεύνησης. Ιδανικό για παιδιά 2-12 ετών.",
467 "31/12/2025", "€25", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 541 "31/12/2025", "€25", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
468 542
469 category.addItem(new OfferItem("kid8", "Παιδικό Κουτί Γεύματος", 543 category.addItem(new OfferItem("kid8", "Παιδικό Κουτί Γεύματος",
470 "20% έκπτωση σε συνδρομή υγιεινών γευμάτων", 544 "20% έκπτωση σε συνδρομή υγιεινών γευμάτων",
471 - "First 3 months", "20%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 545 + "Εξασφαλίστε υγιεινή διατροφή για το παιδί σας με 20% έκπτωση σε μηνιαία συνδρομή παιδικών γευμάτων. Κάθε εβδομάδα λαμβάνετε 5 πλήρη, ισορροπημένα γεύματα, ειδικά σχεδιασμένα για παιδιά. Όλα τα γεύματα παρασκευάζονται με φρέσκα, οργανικά υλικά και είναι ελεύθερα αλλεργιογόνων κατόπιν αιτήματος.",
546 + "31/12/2025", "20%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
472 547
473 category.addItem(new OfferItem("kid9", "Είδη Ζωγραφικής", 548 category.addItem(new OfferItem("kid9", "Είδη Ζωγραφικής",
474 "40% έκπτωση σε είδη τέχνης και χειροτεχνίας", 549 "40% έκπτωση σε είδη τέχνης και χειροτεχνίας",
475 - "Back to school offer", "40%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 550 + "Ενθαρρύνετε τη δημιουργικότητα του παιδιού σας με 40% έκπτωση σε όλα τα είδη τέχνης και χειροτεχνίας. Η προσφορά περιλαμβάνει χρώματα, πινέλα, μαρκαδόρους, χαρτιά, κιτ χειροτεχνίας και πολλά άλλα. Ιδανικά για παιδιά όλων των ηλικιών, τα υλικά είναι μη τοξικά και ασφαλή για χρήση από παιδιά.",
551 + "31/08/2025", "40%", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
476 552
477 category.addItem(new OfferItem("kid10", "Παιδικός Αθλητικός Εξοπλισμός", 553 category.addItem(new OfferItem("kid10", "Παιδικός Αθλητικός Εξοπλισμός",
478 "Αγοράστε πλήρες σετ και εξοικονομήστε €15", 554 "Αγοράστε πλήρες σετ και εξοικονομήστε €15",
555 + "Εξοπλίστε το παιδί σας για τον αγαπημένο του αθλητισμό και εξοικονομήστε €15 αγοράζοντας πλήρες σετ εξοπλισμού. Η προσφορά ισχύει για ποδόσφαιρο, μπάσκετ, τένις, κολύμβηση και άλλα δημοφιλή αθλήματα. Κάθε σετ περιλαμβάνει όλα τα απαραίτητα για το ξεκίνημα, από ρούχα μέχρι εξοπλισμό.",
479 "31/08/2025", "€15", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 556 "31/08/2025", "€15", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
480 557
481 // Adding 1 more item for Kids category (11 total) 558 // Adding 1 more item for Kids category (11 total)
482 category.addItem(new OfferItem("kid11", "Μαθήματα Προγραμματισμού για Παιδιά", 559 category.addItem(new OfferItem("kid11", "Μαθήματα Προγραμματισμού για Παιδιά",
483 "Πρώτο μάθημα δωρεάν για παιδιά 8-12 ετών", 560 "Πρώτο μάθημα δωρεάν για παιδιά 8-12 ετών",
484 - "New enrollments", "€0", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS)); 561 + "Εισάγετε το παιδί σας στον κόσμο του προγραμματισμού με ένα δωρεάν εισαγωγικό μάθημα για παιδιά 8-12 ετών. Τα μαθήματα διδάσκονται από έμπειρους εκπαιδευτικούς πληροφορικής και χρησιμοποιούν διασκεδαστικές, διαδραστικές μεθόδους για να διδάξουν βασικές έννοιες προγραμματισμού. Μετά το δωρεάν μάθημα, διατίθενται πακέτα 4, 8 ή 12 μαθημάτων.",
562 + "31/12/2025", "€0", "demo_image_moustakas.png", "demo_moustakas.png", CATEGORY_KIDS));
485 563
486 return category; 564 return category;
487 } 565 }
...@@ -496,132 +574,164 @@ public class DummyDataProvider { ...@@ -496,132 +574,164 @@ public class DummyDataProvider {
496 574
497 category.addItem(new OfferItem("pur1", "Κατάστημα Ηλεκτρονικών", 575 category.addItem(new OfferItem("pur1", "Κατάστημα Ηλεκτρονικών",
498 "€50 έκπτωση σε αγορές άνω των €300", 576 "€50 έκπτωση σε αγορές άνω των €300",
577 + "Εξοικονομήστε €50 σε αγορές ηλεκτρονικών συσκευών άνω των €300. Η προσφορά ισχύει για όλες τις κατηγορίες προϊόντων, συμπεριλαμβανομένων smartphones, tablets, laptops, τηλεοράσεων και οικιακών συσκευών. Επιπλέον, λάβετε δωρεάν παράδοση και εγγύηση 2 ετών σε όλα τα προϊόντα.",
499 "30/06/2025", "€50", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 578 "30/06/2025", "€50", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
500 579
501 category.addItem(new OfferItem("pur2", "Προσφορά Επίπλων", 580 category.addItem(new OfferItem("pur2", "Προσφορά Επίπλων",
502 "Έως και 40% έκπτωση σε επιλεγμένα έπιπλα", 581 "Έως και 40% έκπτωση σε επιλεγμένα έπιπλα",
503 - "While stocks last", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 582 + "Ανανεώστε το χώρο σας με έως και 40% έκπτωση σε επιλεγμένα έπιπλα. Η προσφορά περιλαμβάνει καναπέδες, τραπέζια, καρέκλες, κρεβάτια και αποθηκευτικούς χώρους. Όλα τα έπιπλα είναι υψηλής ποιότητας και διαθέτουν εγγύηση 5 ετών. Δωρεάν μεταφορά και συναρμολόγηση για αγορές άνω των €500.",
583 + "30/09/2025", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
504 584
505 category.addItem(new OfferItem("pur3", "Online Αγορές", 585 category.addItem(new OfferItem("pur3", "Online Αγορές",
506 "15% έκπτωση στην πρώτη σας αγορά με κωδικό", 586 "15% έκπτωση στην πρώτη σας αγορά με κωδικό",
507 - "New customers", "15%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 587 + "Εξοικονομήστε 15% στην πρώτη σας online αγορά με τον κωδικό WELCOME15. Η προσφορά ισχύει για όλες τις κατηγορίες προϊόντων χωρίς ελάχιστη αξία παραγγελίας. Επιπλέον, απολαύστε δωρεάν παράδοση για παραγγελίες άνω των €50 και εύκολη διαδικασία επιστροφής εντός 30 ημερών.",
588 + "31/12/2025", "15%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
508 589
509 category.addItem(new OfferItem("pur4", "Αναβάθμιση Smartphone", 590 category.addItem(new OfferItem("pur4", "Αναβάθμιση Smartphone",
510 "Ανταλλάξτε το παλιό σας τηλέφωνο και πάρτε €100 επιπλέον αξία", 591 "Ανταλλάξτε το παλιό σας τηλέφωνο και πάρτε €100 επιπλέον αξία",
592 + "Αναβαθμίστε το smartphone σας και λάβετε επιπλέον €100 αξία όταν ανταλλάσσετε το παλιό σας τηλέφωνο. Η προσφορά ισχύει για όλα τα λειτουργικά smartphones, ανεξάρτητα από την κατάσταση ή το μοντέλο τους. Επιπλέον, λάβετε δωρεάν μεταφορά δεδομένων από την παλιά στη νέα συσκευή σας.",
511 "31/07/2025", "€100", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 593 "31/07/2025", "€100", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
512 594
513 category.addItem(new OfferItem("pur5", "Οικιακές Συσκευές", 595 category.addItem(new OfferItem("pur5", "Οικιακές Συσκευές",
514 "Δωρεάν παράδοση και εγκατάσταση", 596 "Δωρεάν παράδοση και εγκατάσταση",
515 - "On purchases over €500", "€0", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 597 + "Αποκτήστε νέες οικιακές συσκευές με δωρεάν παράδοση και επαγγελματική εγκατάσταση. Η προσφορά ισχύει για μεγάλες συσκευές όπως ψυγεία, πλυντήρια, κουζίνες και πλυντήρια πιάτων. Περιλαμβάνει αποσύνδεση και απομάκρυνση της παλιάς συσκευής, καθώς και εκπαίδευση στη χρήση της νέας.",
598 + "31/12/2025", "€0", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
516 599
517 category.addItem(new OfferItem("pur6", "Αθλητικά Ρούχα", 600 category.addItem(new OfferItem("pur6", "Αθλητικά Ρούχα",
518 "30% έκπτωση σε παπούτσια για τρέξιμο και ρούχα", 601 "30% έκπτωση σε παπούτσια για τρέξιμο και ρούχα",
602 + "Ανανεώστε τον αθλητικό σας εξοπλισμό με 30% έκπτωση σε παπούτσια για τρέξιμο και αθλητικά ρούχα. Η προσφορά περιλαμβάνει κορυφαίες μάρκες και τα τελευταία μοντέλα με τεχνολογίες αιχμής. Ιδανικά για δρομείς όλων των επιπέδων, από αρχάριους μέχρι επαγγελματίες. Δωρεάν ανάλυση βηματισμού με κάθε αγορά παπουτσιών.",
519 "31/08/2025", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 603 "31/08/2025", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
520 604
521 category.addItem(new OfferItem("pur7", "Προϊόντα Ομορφιάς", 605 category.addItem(new OfferItem("pur7", "Προϊόντα Ομορφιάς",
522 "Αγοράστε 3 και πάρτε 1 δωρεάν στη σειρά περιποίησης δέρματος", 606 "Αγοράστε 3 και πάρτε 1 δωρεάν στη σειρά περιποίησης δέρματος",
607 + "Φροντίστε την επιδερμίδα σας με την προσφορά 3+1 στη σειρά περιποίησης δέρματος. Αγοράστε 3 προϊόντα και πάρτε ένα τέταρτο εντελώς δωρεάν. Η σειρά περιλαμβάνει καθαριστικά, τονωτικές λοσιόν, ορούς, κρέμες ημέρας και νύχτας, και μάσκες. Όλα τα προϊόντα είναι δερματολογικά ελεγμένα και χωρίς parabens.",
523 "30/09/2025", "100%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 608 "30/09/2025", "100%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
524 609
525 category.addItem(new OfferItem("pur8", "Συσκευές Κουζίνας", 610 category.addItem(new OfferItem("pur8", "Συσκευές Κουζίνας",
526 "25% έκπτωση σε συσκευές κουζίνας", 611 "25% έκπτωση σε συσκευές κουζίνας",
527 - "Weekend sale", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 612 + "Αναβαθμίστε την κουζίνα σας με 25% έκπτωση σε όλες τις συσκευές. Η προσφορά περιλαμβάνει μίξερ, μπλέντερ, φούρνους μικροκυμάτων, τοστιέρες, φριτέζες αέρος και πολλά άλλα. Όλες οι συσκευές διαθέτουν εγγύηση 2 ετών και είναι από κορυφαίους κατασκευαστές. Δωρεάν παράδοση για αγορές άνω των €100.",
613 + "31/07/2025", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
528 614
529 category.addItem(new OfferItem("pur9", "Έπιπλα Κήπου", 615 category.addItem(new OfferItem("pur9", "Έπιπλα Κήπου",
530 "Εκκαθάριση τέλους σεζόν - 50% έκπτωση", 616 "Εκκαθάριση τέλους σεζόν - 50% έκπτωση",
531 - "Until sold out", "50%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 617 + "Ανανεώστε τον εξωτερικό σας χώρο με 50% έκπτωση σε όλα τα έπιπλα κήπου. Η προσφορά περιλαμβάνει τραπέζια, καρέκλες, ξαπλώστρες, ομπρέλες και σετ καθιστικού. Όλα τα έπιπλα είναι ανθεκτικά στις καιρικές συνθήκες και διαθέτουν εγγύηση 3 ετών. Περιορισμένα αποθέματα, προλάβετε τώρα!",
618 + "30/09/2025", "50%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
532 619
533 category.addItem(new OfferItem("pur10", "Αξεσουάρ Τεχνολογίας", 620 category.addItem(new OfferItem("pur10", "Αξεσουάρ Τεχνολογίας",
534 "Αγοράστε 2 αξεσουάρ και εξοικονομήστε €10", 621 "Αγοράστε 2 αξεσουάρ και εξοικονομήστε €10",
622 + "Εξοπλιστείτε με τα απαραίτητα αξεσουάρ τεχνολογίας και εξοικονομήστε €10 όταν αγοράζετε 2 ή περισσότερα. Η προσφορά περιλαμβάνει θήκες κινητών, προστατευτικά οθόνης, φορτιστές, καλώδια, ακουστικά, power banks και πολλά άλλα. Όλα τα αξεσουάρ είναι συμβατά με τις τελευταίες συσκευές και κορυφαίας ποιότητας.",
535 "31/12/2025", "€10", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 623 "31/12/2025", "€10", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
536 624
537 // Adding 22 more items for Purchases category (32 total) 625 // Adding 22 more items for Purchases category (32 total)
538 category.addItem(new OfferItem("pur11", "Γυαλιά Ηλίου Επώνυμων Οίκων", 626 category.addItem(new OfferItem("pur11", "Γυαλιά Ηλίου Επώνυμων Οίκων",
539 "30% έκπτωση σε γυαλιά ηλίου επώνυμων οίκων", 627 "30% έκπτωση σε γυαλιά ηλίου επώνυμων οίκων",
540 - "Summer sale", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 628 + "Αποκτήστε στυλ και προστασία με 30% έκπτωση σε γυαλιά ηλίου επώνυμων οίκων. Η προσφορά περιλαμβάνει τις τελευταίες συλλογές από κορυφαίους σχεδιαστές, με 100% προστασία UV και πιστοποιημένη ποιότητα. Επιλέξτε ανάμεσα σε κλασικά, σπορ ή μοντέρνα σχέδια για κάθε περίσταση.",
629 + "31/08/2025", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
541 630
542 category.addItem(new OfferItem("pur12", "Αναβάθμιση Laptop", 631 category.addItem(new OfferItem("pur12", "Αναβάθμιση Laptop",
543 "Ανταλλάξτε το παλιό σας laptop και πάρτε €150 έκπτωση", 632 "Ανταλλάξτε το παλιό σας laptop και πάρτε €150 έκπτωση",
544 - "Back to school", "€150", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 633 + "Αναβαθμίστε τον εξοπλισμό σας και εξοικονομήστε €150 όταν ανταλλάσσετε το παλιό σας laptop. Η προσφορά ισχύει για όλα τα λειτουργικά laptops, ανεξάρτητα από την ηλικία ή την κατάστασή τους. Επιπλέον, λάβετε δωρεάν μεταφορά δεδομένων, εγκατάσταση λογισμικού και τσάντα μεταφοράς με κάθε νέα αγορά.",
634 + "31/08/2025", "€150", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
545 635
546 category.addItem(new OfferItem("pur13", "Σετ Κλινοσκεπασμάτων", 636 category.addItem(new OfferItem("pur13", "Σετ Κλινοσκεπασμάτων",
547 "Αγοράστε ένα σετ κλινοσκεπασμάτων και πάρτε το δεύτερο στη μισή τιμή", 637 "Αγοράστε ένα σετ κλινοσκεπασμάτων και πάρτε το δεύτερο στη μισή τιμή",
548 - "Home sale", "50%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 638 + "Ανανεώστε την κρεβατοκάμαρά σας με την προσφορά 1+1 σε σετ κλινοσκεπασμάτων. Αγοράστε ένα σετ και πάρτε το δεύτερο με 50% έκπτωση. Κάθε σετ περιλαμβάνει σεντόνι, μαξιλαροθήκες και παπλωματοθήκη από 100% βαμβάκι υψηλής ποιότητας. Διαθέσιμα σε διάφορα χρώματα και σχέδια.",
639 + "31/07/2025", "50%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
549 640
550 category.addItem(new OfferItem("pur14", "Συσκευές Έξυπνου Σπιτιού", 641 category.addItem(new OfferItem("pur14", "Συσκευές Έξυπνου Σπιτιού",
551 "20% έκπτωση σε όλα τα προϊόντα έξυπνου σπιτιού", 642 "20% έκπτωση σε όλα τα προϊόντα έξυπνου σπιτιού",
552 - "Tech week", "20%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 643 + "Μετατρέψτε το σπίτι σας σε έξυπνο σπίτι με 20% έκπτωση σε όλα τα σχετικά προϊόντα. Η προσφορά περιλαμβάνει έξυπνους θερμοστάτες, συστήματα ασφαλείας, φωτισμό, ηχεία, πρίζες και άλλες συσκευές που ελέγχονται μέσω εφαρμογής. Όλα τα προϊόντα είναι συμβατά με τους κορυφαίους ψηφιακούς βοηθούς.",
644 + "30/06/2025", "20%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
553 645
554 category.addItem(new OfferItem("pur15", "Έπιπλα Εξωτερικού Χώρου", 646 category.addItem(new OfferItem("pur15", "Έπιπλα Εξωτερικού Χώρου",
555 "Έως και 40% έκπτωση σε σετ επίπλων εξωτερικού χώρου", 647 "Έως και 40% έκπτωση σε σετ επίπλων εξωτερικού χώρου",
556 - "Garden sale", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 648 + "Μεταμορφώστε τον εξωτερικό σας χώρο με έως και 40% έκπτωση σε πλήρη σετ επίπλων. Η προσφορά περιλαμβάνει τραπεζαρίες, καθιστικά, ξαπλώστρες και ομπρέλες από ανθεκτικά υλικά όπως ρατάν, αλουμίνιο και ξύλο teak. Όλα τα έπιπλα διαθέτουν αδιάβροχα μαξιλάρια και εγγύηση 3 ετών.",
649 + "31/08/2025", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
557 650
558 category.addItem(new OfferItem("pur16", "Ρολόγια Επώνυμων Οίκων", 651 category.addItem(new OfferItem("pur16", "Ρολόγια Επώνυμων Οίκων",
559 "15% έκπτωση σε πολυτελή ρολόγια", 652 "15% έκπτωση σε πολυτελή ρολόγια",
560 - "Limited time", "15%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 653 + "Αποκτήστε ένα κομψό ρολόι με 15% έκπτωση από τις συλλογές κορυφαίων οίκων. Η προσφορά περιλαμβάνει αναλογικά, ψηφιακά και smartwatches από επώνυμους κατασκευαστές. Όλα τα ρολόγια συνοδεύονται από πιστοποιητικό γνησιότητας και διεθνή εγγύηση 2 ετών. Δωρεάν αλλαγή μπαταρίας για 5 χρόνια.",
654 + "30/07/2025", "15%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
561 655
562 category.addItem(new OfferItem("pur17", "Συσκευές Κουζίνας", 656 category.addItem(new OfferItem("pur17", "Συσκευές Κουζίνας",
563 "Αγοράστε 2 μικρές συσκευές και πάρτε 1 δωρεάν", 657 "Αγοράστε 2 μικρές συσκευές και πάρτε 1 δωρεάν",
564 - "Kitchen sale", "100%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 658 + "Εξοπλίστε την κουζίνα σας με την προσφορά 2+1 σε μικρές συσκευές. Αγοράστε 2 συσκευές και πάρτε μια τρίτη εντελώς δωρεάν. Η προσφορά ισχύει για καφετιέρες, τοστιέρες, βραστήρες, μίξερ χειρός, πολυκόπτες και άλλες μικρές συσκευές. Η δωρεάν συσκευή πρέπει να είναι ίσης ή χαμηλότερης αξίας.",
659 + "31/07/2025", "100%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
565 660
566 category.addItem(new OfferItem("pur18", "Εξοπλισμός Γυμναστικής", 661 category.addItem(new OfferItem("pur18", "Εξοπλισμός Γυμναστικής",
567 "25% έκπτωση σε εξοπλισμό γυμναστικής για το σπίτι", 662 "25% έκπτωση σε εξοπλισμό γυμναστικής για το σπίτι",
568 - "Fitness sale", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 663 + "Δημιουργήστε το δικό σας γυμναστήριο στο σπίτι με 25% έκπτωση σε όλο τον εξοπλισμό. Η προσφορά περιλαμβάνει βάρη, μηχανήματα καρδιαγγειακής άσκησης, πολυόργανα, στρώματα γιόγκα και αξεσουάρ προπόνησης. Επιπλέον, λάβετε δωρεάν συμβουλές από επαγγελματία γυμναστή για τη σωστή χρήση του εξοπλισμού.",
664 + "31/08/2025", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
569 665
570 category.addItem(new OfferItem("pur19", "Πολυτελή Κλινοσκεπάσματα", 666 category.addItem(new OfferItem("pur19", "Πολυτελή Κλινοσκεπάσματα",
571 "Σεντόνια από αιγυπτιακό βαμβάκι με 30% έκπτωση", 667 "Σεντόνια από αιγυπτιακό βαμβάκι με 30% έκπτωση",
572 - "Bedroom essentials", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 668 + "Απολαύστε πολυτελή ύπνο με 30% έκπτωση σε σεντόνια από αιγυπτιακό βαμβάκι. Κατασκευασμένα από 100% αιγυπτιακό βαμβάκι μακρών ινών με ύφανση 400 νημάτων, προσφέρουν εξαιρετική απαλότητα και ανθεκτικότητα. Διαθέσιμα σε διάφορα χρώματα και μεγέθη, από μονά έως υπέρδιπλα.",
669 + "31/12/2025", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
573 670
574 category.addItem(new OfferItem("pur20", "Τσάντες Επώνυμων Οίκων", 671 category.addItem(new OfferItem("pur20", "Τσάντες Επώνυμων Οίκων",
575 "Έως και 25% έκπτωση σε επιλεγμένες επώνυμες τσάντες", 672 "Έως και 25% έκπτωση σε επιλεγμένες επώνυμες τσάντες",
576 - "Accessory sale", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 673 + "Αναβαθμίστε το στυλ σας με έως και 25% έκπτωση σε επιλεγμένες επώνυμες τσάντες. Η προσφορά περιλαμβάνει τσάντες ώμου, χειρός, backpacks και clutches από κορυφαίους σχεδιαστές. Όλες οι τσάντες είναι αυθεντικές, με πιστοποιητικό γνησιότητας και συνοδεύονται από θήκη προστασίας.",
674 + "31/07/2025", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
577 675
578 category.addItem(new OfferItem("pur21", "Έξυπνες Τηλεοράσεις", 676 category.addItem(new OfferItem("pur21", "Έξυπνες Τηλεοράσεις",
579 "€100 έκπτωση σε τηλεοράσεις 55\" και μεγαλύτερες", 677 "€100 έκπτωση σε τηλεοράσεις 55\" και μεγαλύτερες",
580 - "Entertainment sale", "€100", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 678 + "Αναβαθμίστε την εμπειρία θέασης με €100 έκπτωση σε έξυπνες τηλεοράσεις 55\" και μεγαλύτερες. Η προσφορά περιλαμβάνει μοντέλα 4K και 8K με τεχνολογίες OLED, QLED και LED από κορυφαίους κατασκευαστές. Όλες οι τηλεοράσεις διαθέτουν έξυπνες λειτουργίες, πρόσβαση σε εφαρμογές streaming και φωνητικό έλεγχο.",
679 + "31/08/2025", "€100", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
581 680
582 category.addItem(new OfferItem("pur22", "Χειμερινά Ρούχα", 681 category.addItem(new OfferItem("pur22", "Χειμερινά Ρούχα",
583 "Αγοράστε 3 χειμερινά είδη και πάρτε 1 δωρεάν", 682 "Αγοράστε 3 χειμερινά είδη και πάρτε 1 δωρεάν",
584 - "Winter collection", "100%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 683 + "Προετοιμαστείτε για το χειμώνα με την προσφορά 3+1 σε χειμερινά ρούχα. Αγοράστε 3 είδη και πάρτε ένα τέταρτο εντελώς δωρεάν. Η προσφορά περιλαμβάνει πουλόβερ, μπουφάν, παλτό, κασκόλ, γάντια και σκούφους. Το δωρεάν είδος πρέπει να είναι ίσης ή χαμηλότερης αξίας από το φθηνότερο από τα τρία.",
684 + "31/12/2025", "100%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
585 685
586 category.addItem(new OfferItem("pur23", "Σετ Μαγειρικών Σκευών", 686 category.addItem(new OfferItem("pur23", "Σετ Μαγειρικών Σκευών",
587 "Επαγγελματικά σετ μαγειρικών σκευών με 40% έκπτωση", 687 "Επαγγελματικά σετ μαγειρικών σκευών με 40% έκπτωση",
588 - "Kitchen essentials", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 688 + "Αναβαθμίστε την κουζίνα σας με 40% έκπτωση σε επαγγελματικά σετ μαγειρικών σκευών. Κάθε σετ περιλαμβάνει κατσαρόλες, τηγάνια και εργαλεία κουζίνας από υψηλής ποιότητας υλικά όπως ανοξείδωτο ατσάλι, χυτοσίδηρο ή αντικολλητικά με επίστρωση τιτανίου. Όλα τα σκεύη είναι κατάλληλα για όλες τις εστίες, συμπεριλαμβανομένων των επαγωγικών.",
689 + "31/12/2025", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
589 690
590 category.addItem(new OfferItem("pur24", "Ασύρματα Ακουστικά", 691 category.addItem(new OfferItem("pur24", "Ασύρματα Ακουστικά",
591 "Premium ασύρματα ακουστικά με €30 έκπτωση", 692 "Premium ασύρματα ακουστικά με €30 έκπτωση",
592 - "Audio sale", "€30", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 693 + "Απολαύστε κορυφαία ποιότητα ήχου με €30 έκπτωση σε premium ασύρματα ακουστικά. Η προσφορά περιλαμβάνει μοντέλα με ενεργή ακύρωση θορύβου, μεγάλη διάρκεια μπαταρίας και εργονομικό σχεδιασμό. Διαθέσιμα σε διάφορα στυλ, από in-ear έως over-ear, για να καλύψουν όλες τις προτιμήσεις και ανάγκες.",
694 + "31/07/2025", "€30", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
593 695
594 category.addItem(new OfferItem("pur25", "Πολυτελή Αρώματα", 696 category.addItem(new OfferItem("pur25", "Πολυτελή Αρώματα",
595 "25% έκπτωση σε αρώματα επώνυμων οίκων", 697 "25% έκπτωση σε αρώματα επώνυμων οίκων",
596 - "Beauty sale", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 698 + "Ανακαλύψτε το ιδανικό άρωμα με 25% έκπτωση σε πολυτελή αρώματα επώνυμων οίκων. Η προσφορά περιλαμβάνει κλασικές και νέες κυκλοφορίες για άνδρες και γυναίκες. Όλα τα αρώματα είναι αυθεντικά, με πλήρη συσκευασία και συνοδεύονται από δείγμα δώρο για να δοκιμάσετε και άλλες αρωματικές επιλογές.",
699 + "31/08/2025", "25%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
597 700
598 category.addItem(new OfferItem("pur26", "Κονσόλες Παιχνιδιών", 701 category.addItem(new OfferItem("pur26", "Κονσόλες Παιχνιδιών",
599 "Δωρεάν παιχνίδι με την αγορά κονσόλας", 702 "Δωρεάν παιχνίδι με την αγορά κονσόλας",
600 - "Gaming sale", "€60", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 703 + "Αποκτήστε την αγαπημένη σας κονσόλα παιχνιδιών και λάβετε ένα δωρεάν παιχνίδι αξίας έως €60. Η προσφορά ισχύει για όλες τις κονσόλες τελευταίας γενιάς και περιλαμβάνει τα πιο δημοφιλή παιχνίδια. Επιπλέον, λάβετε δωρεάν συνδρομή 3 μηνών στην online υπηρεσία της κονσόλας για πολλαπλό παιχνίδι.",
704 + "31/12/2025", "€60", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
601 705
602 category.addItem(new OfferItem("pur27", "Είδη Μπάνιου", 706 category.addItem(new OfferItem("pur27", "Είδη Μπάνιου",
603 "30% έκπτωση σε είδη ανακαίνισης μπάνιου", 707 "30% έκπτωση σε είδη ανακαίνισης μπάνιου",
604 - "Home improvement", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 708 + "Ανανεώστε το μπάνιο σας με 30% έκπτωση σε όλα τα είδη ανακαίνισης. Η προσφορά περιλαμβάνει νιπτήρες, βρύσες, ντουζιέρες, μπανιέρες, έπιπλα μπάνιου και αξεσουάρ. Όλα τα προϊόντα είναι από κορυφαίους κατασκευαστές και συνοδεύονται από εγγύηση 5 ετών. Δωρεάν σχεδιασμός μπάνιου για αγορές άνω των €500.",
709 + "31/12/2025", "30%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
605 710
606 category.addItem(new OfferItem("pur28", "Εξοπλισμός Κάμπινγκ", 711 category.addItem(new OfferItem("pur28", "Εξοπλισμός Κάμπινγκ",
607 "Αγοράστε σκηνή και πάρτε υπνόσακο στη μισή τιμή", 712 "Αγοράστε σκηνή και πάρτε υπνόσακο στη μισή τιμή",
608 - "Outdoor sale", "50%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 713 + "Προετοιμαστείτε για την επόμενη περιπέτειά σας στη φύση με την ειδική προσφορά: αγοράστε οποιαδήποτε σκηνή και πάρτε έναν υπνόσακο με 50% έκπτωση. Η προσφορά περιλαμβάνει σκηνές όλων των μεγεθών, από ατομικές έως οικογενειακές, και υπνόσακους για όλες τις καιρικές συνθήκες.",
714 + "31/08/2025", "50%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
609 715
610 category.addItem(new OfferItem("pur29", "Έπιπλα Γραφείου", 716 category.addItem(new OfferItem("pur29", "Έπιπλα Γραφείου",
611 "Εργονομικές καρέκλες γραφείου με 20% έκπτωση", 717 "Εργονομικές καρέκλες γραφείου με 20% έκπτωση",
612 - "Work from home", "20%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 718 + "Βελτιώστε την εργονομία του γραφείου σας με 20% έκπτωση σε επαγγελματικές καρέκλες γραφείου. Η προσφορά περιλαμβάνει μοντέλα με ρυθμιζόμενο ύψος, στήριξη μέσης, προσκέφαλο και βραχίονες. Όλες οι καρέκλες είναι σχεδιασμένες για πολύωρη χρήση και διαθέτουν εγγύηση 5 ετών.",
719 + "31/12/2025", "20%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
613 720
614 category.addItem(new OfferItem("pur30", "Προσφορά Κοσμημάτων", 721 category.addItem(new OfferItem("pur30", "Προσφορά Κοσμημάτων",
615 "40% έκπτωση σε συλλογή ασημένιων κοσμημάτων", 722 "40% έκπτωση σε συλλογή ασημένιων κοσμημάτων",
616 - "Accessory sale", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 723 + "Αποκτήστε κομψά ασημένια κοσμήματα με 40% έκπτωση. Η προσφορά περιλαμβάνει τη νέα συλλογή με δαχτυλίδια, κολιέ, βραχιόλια και σκουλαρίκια από ασήμι 925°. Όλα τα κοσμήματα συνοδεύονται από πιστοποιητικό γνησιότητας και κομψή συσκευασία δώρου. Ιδανικά για προσωπική χρήση ή δώρο.",
724 + "31/07/2025", "40%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
617 725
618 category.addItem(new OfferItem("pur31", "Έξυπνα Ρολόγια", 726 category.addItem(new OfferItem("pur31", "Έξυπνα Ρολόγια",
619 "Τελευταία μοντέλα έξυπνων ρολογιών με €50 έκπτωση", 727 "Τελευταία μοντέλα έξυπνων ρολογιών με €50 έκπτωση",
620 - "Tech sale", "€50", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 728 + "Αποκτήστε τα τελευταία μοντέλα έξυπνων ρολογιών με €50 έκπτωση. Η προσφορά περιλαμβάνει κορυφαία μοντέλα με λειτουργίες παρακολούθησης υγείας, GPS, αδιάβροχη προστασία και συνδεσιμότητα με το smartphone σας. Ιδανικά για αθλητικές δραστηριότητες, καθημερινή χρήση και παρακολούθηση της φυσικής κατάστασης.",
729 + "31/07/2025", "€50", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
621 730
622 category.addItem(new OfferItem("pur32", "Σετ Αποσκευών", 731 category.addItem(new OfferItem("pur32", "Σετ Αποσκευών",
623 "Premium σετ αποσκευών με 35% έκπτωση", 732 "Premium σετ αποσκευών με 35% έκπτωση",
624 - "Travel essentials", "35%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES)); 733 + "Ταξιδέψτε με στυλ και άνεση με 35% έκπτωση σε premium σετ αποσκευών. Κάθε σετ περιλαμβάνει βαλίτσες διαφόρων μεγεθών, κατασκευασμένες από ανθεκτικά υλικά με τροχούς 360° και κλειδαριά ασφαλείας. Διαθέσιμα σε διάφορα χρώματα και σχέδια, με εγγύηση 5 ετών για απόλυτη ανθεκτικότητα.",
734 + "31/08/2025", "35%", "demo_image_migato.png", "demo_migato.png", CATEGORY_PURCHASES));
625 735
626 return category; 736 return category;
627 } 737 }
......
...@@ -9,6 +9,7 @@ public class OfferItem implements Serializable { ...@@ -9,6 +9,7 @@ public class OfferItem implements Serializable {
9 private String id; 9 private String id;
10 private String title; 10 private String title;
11 private String description; 11 private String description;
12 + private String fullDescription;
12 private String endDate; 13 private String endDate;
13 private String value; 14 private String value;
14 private String imageUrl; 15 private String imageUrl;
...@@ -26,24 +27,43 @@ public class OfferItem implements Serializable { ...@@ -26,24 +27,43 @@ public class OfferItem implements Serializable {
26 * 27 *
27 * @param id Unique identifier for the offer 28 * @param id Unique identifier for the offer
28 * @param title Title of the offer 29 * @param title Title of the offer
29 - * @param description Description of the offer 30 + * @param description Short description of the offer
31 + * @param fullDescription Detailed description of the offer (approximately 200 characters)
30 * @param endDate End date of the offer (formatted as string) 32 * @param endDate End date of the offer (formatted as string)
31 * @param value Value of the offer (formatted as string, e.g., "50%", "€20") 33 * @param value Value of the offer (formatted as string, e.g., "50%", "€20")
32 * @param imageUrl URL or resource name for the offer image 34 * @param imageUrl URL or resource name for the offer image
33 * @param logoUrl URL or resource name for the merchant logo 35 * @param logoUrl URL or resource name for the merchant logo
34 * @param category Category this offer belongs to 36 * @param category Category this offer belongs to
35 */ 37 */
36 - public OfferItem(String id, String title, String description, String endDate, 38 + public OfferItem(String id, String title, String description, String fullDescription, String endDate,
37 String value, String imageUrl, String logoUrl, String category) { 39 String value, String imageUrl, String logoUrl, String category) {
38 this.id = id; 40 this.id = id;
39 this.title = title; 41 this.title = title;
40 this.description = description; 42 this.description = description;
43 + this.fullDescription = fullDescription;
41 this.endDate = endDate; 44 this.endDate = endDate;
42 this.value = value; 45 this.value = value;
43 this.imageUrl = imageUrl; 46 this.imageUrl = imageUrl;
44 this.logoUrl = logoUrl; 47 this.logoUrl = logoUrl;
45 this.category = category; 48 this.category = category;
46 } 49 }
50 +
51 + /**
52 + * Constructor for backward compatibility
53 + *
54 + * @param id Unique identifier for the offer
55 + * @param title Title of the offer
56 + * @param description Description of the offer
57 + * @param endDate End date of the offer (formatted as string)
58 + * @param value Value of the offer (formatted as string, e.g., "50%", "€20")
59 + * @param imageUrl URL or resource name for the offer image
60 + * @param logoUrl URL or resource name for the merchant logo
61 + * @param category Category this offer belongs to
62 + */
63 + public OfferItem(String id, String title, String description, String endDate,
64 + String value, String imageUrl, String logoUrl, String category) {
65 + this(id, title, description, description, endDate, value, imageUrl, logoUrl, category);
66 + }
47 67
48 // Getters and Setters 68 // Getters and Setters
49 69
...@@ -70,6 +90,14 @@ public class OfferItem implements Serializable { ...@@ -70,6 +90,14 @@ public class OfferItem implements Serializable {
70 public void setDescription(String description) { 90 public void setDescription(String description) {
71 this.description = description; 91 this.description = description;
72 } 92 }
93 +
94 + public String getFullDescription() {
95 + return fullDescription;
96 + }
97 +
98 + public void setFullDescription(String fullDescription) {
99 + this.fullDescription = fullDescription;
100 + }
73 101
74 public String getEndDate() { 102 public String getEndDate() {
75 return endDate; 103 return endDate;
......
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
3 + <item android:drawable="@drawable/shape_cos_black_tr" android:state_pressed="true" />
4 + <item android:drawable="@drawable/shape_cos_black" android:state_pressed="false" />
5 +</selector>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
3 + <item android:drawable="@drawable/shape_transparent_black_border_tr" android:state_pressed="true" />
4 + <item android:drawable="@drawable/shape_transparent_black_border" android:state_pressed="false" />
5 +</selector>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:shape="rectangle">
4 + <corners android:radius="4dp" />
5 +
6 + <solid
7 + android:width="2dp"
8 + android:color="@color/black2" />
9 +</shape>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:shape="rectangle">
4 + <corners android:radius="4dp" />
5 +
6 + <solid
7 + android:width="2dp"
8 + android:color="@color/black2_tr" />
9 +</shape>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:shape="rectangle">
4 + <corners android:radius="4dp" />
5 +
6 + <solid android:color="@android:color/transparent" />
7 +
8 + <stroke
9 + android:width="1dp"
10 + android:color="@color/black2" />
11 +</shape>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
3 + android:shape="rectangle">
4 + <corners android:radius="4dp" />
5 +
6 + <solid android:color="@android:color/transparent" />
7 +
8 + <stroke
9 + android:width="1dp"
10 + android:color="@color/black2_tr" />
11 +</shape>
...\ No newline at end of file ...\ No newline at end of file
1 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 + xmlns:app="http://schemas.android.com/apk/res-auto"
3 + xmlns:tools="http://schemas.android.com/tools"
4 + android:layout_width="match_parent"
5 + android:layout_height="match_parent"
6 + android:background="@color/cos_grey_light">
7 +
8 + <ScrollView
9 + android:id="@+id/coupon_scrollview"
10 + android:layout_width="match_parent"
11 + android:layout_height="match_parent"
12 + android:fillViewport="true">
13 +
14 + <LinearLayout
15 + android:id="@+id/home_content_container"
16 + android:layout_width="match_parent"
17 + android:layout_height="wrap_content"
18 + android:orientation="vertical">
19 +
20 + <LinearLayout
21 + android:id="@+id/header_layout"
22 + android:layout_width="match_parent"
23 + android:layout_height="wrap_content"
24 + android:layout_gravity="center"
25 + android:background="@color/white"
26 + android:orientation="horizontal"
27 + android:padding="16dp">
28 +
29 + <LinearLayout
30 + android:layout_width="0dp"
31 + android:layout_height="wrap_content"
32 + android:layout_gravity="center"
33 + android:layout_weight="1"
34 + android:orientation="horizontal">
35 +
36 + <ImageView
37 + android:id="@+id/iv_back"
38 + android:layout_width="16dp"
39 + android:layout_height="16dp"
40 + android:layout_marginEnd="24dp"
41 + android:src="@drawable/ic_back" />
42 +
43 + <TextView
44 + android:layout_width="wrap_content"
45 + android:layout_height="wrap_content"
46 + android:includeFontPadding="false"
47 + android:text="@string/demo_offer"
48 + android:textColor="@color/black4"
49 + android:textSize="16sp"
50 + android:textStyle="bold" />
51 + </LinearLayout>
52 + </LinearLayout>
53 +
54 + <androidx.constraintlayout.widget.ConstraintLayout
55 + android:layout_width="match_parent"
56 + android:layout_height="210dp">
57 +
58 + <ImageView
59 + android:id="@+id/iv_coupon_image"
60 + android:layout_width="match_parent"
61 + android:layout_height="match_parent"
62 + android:scaleType="fitXY"
63 + android:src="@drawable/demo_home_banner"
64 + app:layout_constraintBottom_toBottomOf="parent"
65 + app:layout_constraintEnd_toEndOf="parent"
66 + app:layout_constraintStart_toStartOf="parent"
67 + app:layout_constraintTop_toTopOf="parent" />
68 +
69 + <LinearLayout
70 + android:layout_width="wrap_content"
71 + android:layout_height="wrap_content"
72 + android:layout_marginTop="8dp"
73 + android:layout_marginEnd="8dp"
74 + android:background="@drawable/demo_shape_white_border_grey"
75 + android:orientation="horizontal"
76 + android:paddingHorizontal="8dp"
77 + android:paddingVertical="3dp"
78 + app:layout_constraintEnd_toEndOf="parent"
79 + app:layout_constraintTop_toTopOf="parent">
80 +
81 + <ImageView
82 + android:layout_width="12dp"
83 + android:layout_height="12dp"
84 + android:layout_marginEnd="4dp"
85 + android:src="@drawable/ic_info" />
86 +
87 + <TextView
88 + android:layout_width="wrap_content"
89 + android:layout_height="wrap_content"
90 + android:includeFontPadding="false"
91 + android:text="@string/demo_more"
92 + android:textColor="@color/black4"
93 + android:textSize="11sp" />
94 + </LinearLayout>
95 + </androidx.constraintlayout.widget.ConstraintLayout>
96 +
97 + <LinearLayout
98 + android:id="@+id/ll_coupon_info"
99 + android:layout_width="match_parent"
100 + android:layout_height="wrap_content"
101 + android:orientation="vertical"
102 + android:paddingHorizontal="16dp"
103 + android:paddingVertical="16dp">
104 +
105 + <androidx.constraintlayout.widget.ConstraintLayout
106 + android:layout_width="match_parent"
107 + android:layout_height="wrap_content"
108 + android:gravity="center_vertical"
109 + android:orientation="horizontal">
110 +
111 + <LinearLayout
112 + android:id="@+id/ll_info"
113 + android:layout_width="0dp"
114 + android:layout_height="wrap_content"
115 + android:orientation="vertical"
116 + android:paddingEnd="16dp"
117 + app:layout_constraintBottom_toBottomOf="parent"
118 + app:layout_constraintEnd_toStartOf="@+id/ll_buttons"
119 + app:layout_constraintStart_toStartOf="parent"
120 + app:layout_constraintTop_toTopOf="parent">
121 +
122 + <TextView
123 + android:id="@+id/tv_coupon_value"
124 + android:layout_width="wrap_content"
125 + android:layout_height="wrap_content"
126 + android:includeFontPadding="false"
127 + android:maxLines="1"
128 + android:textColor="@color/pink2"
129 + android:textSize="23sp"
130 + android:textStyle="bold"
131 + tools:text="@string/demo_more" />
132 +
133 + <TextView
134 + android:id="@+id/tv_coupon_small_description"
135 + android:layout_width="wrap_content"
136 + android:layout_height="wrap_content"
137 + android:layout_marginTop="2dp"
138 + android:ellipsize="end"
139 + android:includeFontPadding="false"
140 + android:maxLines="1"
141 + android:text="@string/demo_purchases"
142 + android:textColor="@color/black5"
143 + android:textSize="17sp" />
144 + </LinearLayout>
145 +
146 + <LinearLayout
147 + android:id="@+id/ll_buttons"
148 + android:layout_width="wrap_content"
149 + android:layout_height="wrap_content"
150 + android:orientation="horizontal"
151 + app:layout_constraintBottom_toBottomOf="parent"
152 + app:layout_constraintEnd_toEndOf="parent"
153 + app:layout_constraintTop_toTopOf="parent">
154 +
155 + <ImageView
156 + android:layout_width="40dp"
157 + android:layout_height="40dp"
158 + android:layout_marginEnd="8dp"
159 + android:src="@drawable/demo_heart_border" />
160 +
161 + <ImageView
162 + android:layout_width="40dp"
163 + android:layout_height="40dp"
164 + android:src="@drawable/demo_folder" />
165 + </LinearLayout>
166 + </androidx.constraintlayout.widget.ConstraintLayout>
167 +
168 + <TextView
169 + android:id="@+id/tv_coupon_end_date"
170 + android:layout_width="wrap_content"
171 + android:layout_height="wrap_content"
172 + android:layout_marginTop="14dp"
173 + android:includeFontPadding="false"
174 + android:textColor="@color/black5"
175 + android:textSize="13sp"
176 + tools:text="@string/demo_purchases" />
177 +
178 + <TextView
179 + android:id="@+id/tv_coupon_full_description"
180 + android:layout_width="match_parent"
181 + android:layout_height="wrap_content"
182 + android:layout_marginTop="16dp"
183 + android:ellipsize="end"
184 + android:lineSpacingExtra="4dp"
185 + android:maxLines="4"
186 + android:textColor="@color/black5"
187 + android:textSize="17sp"
188 + tools:text="Πάρτε τα πακέτα κινητής στη μισή τιμή μόνο αυτό το μήνα. Απεριόριστα λεπτά προς όλα τα δίκτυα, SMS και 50GB δεδομένα υψηλής ταχύτητας. Ισχύει για νέους συνδρομητές και ανανεώσεις συμβολαίων. Δωρεάν ενεργοποίηση και τεχνική υποστήριξη." />
189 +
190 + <TextView
191 + android:id="@+id/tv_more_button"
192 + android:layout_width="wrap_content"
193 + android:layout_height="wrap_content"
194 + android:layout_gravity="end"
195 + android:layout_marginTop="2dp"
196 + android:text="@string/demo_more"
197 + android:textColor="@color/skyblue"
198 + android:textSize="15sp"
199 + android:visibility="gone" />
200 +
201 + <LinearLayout
202 + android:id="@+id/coupon_code_container"
203 + android:layout_width="match_parent"
204 + android:layout_height="wrap_content"
205 + android:layout_marginTop="32dp"
206 + android:background="@drawable/shape_cos_white"
207 + android:orientation="vertical"
208 + android:padding="16dp">
209 +
210 + <LinearLayout
211 + android:id="@+id/coupon_code_header"
212 + android:layout_width="match_parent"
213 + android:layout_height="wrap_content"
214 + android:gravity="center_vertical"
215 + android:orientation="horizontal">
216 +
217 + <TextView
218 + android:layout_width="0dp"
219 + android:layout_height="wrap_content"
220 + android:layout_weight="1"
221 + android:text="@string/demo_coupon_code"
222 + android:textColor="@color/black2"
223 + android:textSize="15sp" />
224 +
225 + <ImageView
226 + android:id="@+id/iv_coupon_arrow"
227 + android:layout_width="12dp"
228 + android:layout_height="12dp"
229 + android:src="@drawable/ic_arrow_down" />
230 + </LinearLayout>
231 +
232 + <LinearLayout
233 + android:id="@+id/coupon_code_content"
234 + android:layout_width="match_parent"
235 + android:layout_height="wrap_content"
236 + android:layout_marginTop="24dp"
237 + android:layout_marginBottom="16dp"
238 + android:gravity="center_vertical"
239 + android:orientation="horizontal"
240 + android:visibility="gone">
241 +
242 + <TextView
243 + android:id="@+id/tv_coupon_code"
244 + android:layout_width="wrap_content"
245 + android:layout_height="wrap_content"
246 + android:layout_marginEnd="12dp"
247 + android:includeFontPadding="false"
248 + android:text="test_coupon_code"
249 + android:textColor="@color/black2"
250 + android:textSize="23sp"
251 + android:textStyle="bold" />
252 +
253 + <ImageView
254 + android:id="@+id/iv_copy_code"
255 + android:layout_width="32dp"
256 + android:layout_height="32dp"
257 + android:src="@drawable/demo_copy" />
258 + </LinearLayout>
259 + </LinearLayout>
260 +
261 + <LinearLayout
262 + android:id="@+id/qr_code_container"
263 + android:layout_width="match_parent"
264 + android:layout_height="wrap_content"
265 + android:layout_marginTop="16dp"
266 + android:background="@drawable/shape_cos_white"
267 + android:orientation="vertical"
268 + android:padding="16dp">
269 +
270 + <LinearLayout
271 + android:id="@+id/qr_code_header"
272 + android:layout_width="match_parent"
273 + android:layout_height="wrap_content"
274 + android:gravity="center_vertical"
275 + android:orientation="horizontal">
276 +
277 + <TextView
278 + android:layout_width="0dp"
279 + android:layout_height="wrap_content"
280 + android:layout_weight="1"
281 + android:text="@string/demo_qr_code"
282 + android:textColor="@color/black2"
283 + android:textSize="15sp" />
284 +
285 + <ImageView
286 + android:id="@+id/iv_qr_arrow"
287 + android:layout_width="12dp"
288 + android:layout_height="12dp"
289 + android:src="@drawable/ic_arrow_down" />
290 + </LinearLayout>
291 +
292 + <LinearLayout
293 + android:id="@+id/qr_code_content"
294 + android:layout_width="match_parent"
295 + android:layout_height="wrap_content"
296 + android:layout_marginTop="16dp"
297 + android:gravity="center"
298 + android:orientation="vertical"
299 + android:visibility="gone">
300 +
301 + <ImageView
302 + android:id="@+id/iv_qr_code"
303 + android:layout_width="200dp"
304 + android:layout_height="200dp"
305 + android:layout_marginVertical="16dp"
306 + android:scaleType="fitCenter"
307 + android:src="@drawable/demo_qr" />
308 + </LinearLayout>
309 + </LinearLayout>
310 +
311 + <LinearLayout
312 + android:id="@+id/terms_container"
313 + android:layout_width="match_parent"
314 + android:layout_height="wrap_content"
315 + android:layout_marginTop="48dp"
316 + android:orientation="vertical"
317 + android:paddingHorizontal="2dp">
318 +
319 + <LinearLayout
320 + android:id="@+id/terms_header"
321 + android:layout_width="match_parent"
322 + android:layout_height="wrap_content"
323 + android:gravity="center_vertical"
324 + android:orientation="horizontal">
325 +
326 + <TextView
327 + android:layout_width="wrap_content"
328 + android:layout_height="wrap_content"
329 + android:text="@string/demo_terms"
330 + android:textColor="@color/black2"
331 + android:textSize="15sp"
332 + android:textStyle="bold" />
333 +
334 + <ImageView
335 + android:id="@+id/iv_terms_arrow"
336 + android:layout_width="8dp"
337 + android:layout_height="8dp"
338 + android:layout_marginStart="4dp"
339 + android:layout_marginTop="2dp"
340 + android:src="@drawable/ic_arrow_down" />
341 + </LinearLayout>
342 +
343 + <LinearLayout
344 + android:id="@+id/terms_content"
345 + android:layout_width="match_parent"
346 + android:layout_height="wrap_content"
347 + android:layout_marginTop="16dp"
348 + android:orientation="vertical"
349 + android:visibility="gone">
350 +
351 + <TextView
352 + android:id="@+id/tv_terms_text"
353 + android:layout_width="match_parent"
354 + android:layout_height="wrap_content"
355 + android:layout_marginBottom="8dp"
356 + android:lineSpacingExtra="4dp"
357 + android:text="@string/demo_lorem_ipsum"
358 + android:textColor="@color/black2"
359 + android:textSize="15sp" />
360 + </LinearLayout>
361 + </LinearLayout>
362 +
363 + <LinearLayout
364 + android:layout_width="match_parent"
365 + android:layout_height="55dp"
366 + android:layout_marginTop="48dp"
367 + android:background="@drawable/selector_button_black"
368 + android:gravity="center"
369 + android:orientation="horizontal">
370 +
371 + <TextView
372 + android:layout_width="wrap_content"
373 + android:layout_height="wrap_content"
374 + android:text="@string/demo_shops"
375 + android:textColor="@color/white"
376 + android:textStyle="bold"
377 + android:textSize="15sp" />
378 + </LinearLayout>
379 +
380 + <LinearLayout
381 + android:layout_width="match_parent"
382 + android:layout_height="55dp"
383 + android:layout_marginTop="20dp"
384 + android:background="@drawable/selector_button_transparent_black_border"
385 + android:gravity="center"
386 + android:orientation="horizontal">
387 +
388 + <TextView
389 + android:layout_width="wrap_content"
390 + android:layout_height="wrap_content"
391 + android:text="@string/demo_website"
392 + android:textColor="@color/black2"
393 + android:textStyle="bold"
394 + android:textSize="15sp" />
395 + </LinearLayout>
396 + </LinearLayout>
397 + </LinearLayout>
398 + </ScrollView>
399 +</RelativeLayout>
...@@ -12,11 +12,17 @@ ...@@ -12,11 +12,17 @@
12 <color name="cos_skyblue2">#22A9B5</color> 12 <color name="cos_skyblue2">#22A9B5</color>
13 <color name="blue_dark">#3A5266</color> 13 <color name="blue_dark">#3A5266</color>
14 <color name="white">#FFFFFF</color> 14 <color name="white">#FFFFFF</color>
15 + <color name="white_tr">#66FFFFFF</color>
15 <color name="cos_green5">#79BF14</color> 16 <color name="cos_green5">#79BF14</color>
16 <color name="black2">#000F1E</color> 17 <color name="black2">#000F1E</color>
18 + <color name="black2_tr">#66000F1E</color>
17 <color name="black3">#00111B</color> 19 <color name="black3">#00111B</color>
18 <color name="grey">#CCCCCC</color> 20 <color name="grey">#CCCCCC</color>
19 <color name="pink">#EE417D</color> 21 <color name="pink">#EE417D</color>
22 + <color name="black4">#0D1B29</color>
23 + <color name="black5">#020E1C</color>
24 + <color name="pink2">#F2709D</color>
25 + <color name="skyblue">#00A3E0</color>
20 26
21 <!-- Used in styles --> 27 <!-- Used in styles -->
22 <color name="cos_light_blue">#00A5E3</color> 28 <color name="cos_light_blue">#00A5E3</color>
......
...@@ -11,4 +11,16 @@ ...@@ -11,4 +11,16 @@
11 <string name="demo_sm_flow">Open SM Flow</string> 11 <string name="demo_sm_flow">Open SM Flow</string>
12 <string name="demo_sm_map">Open SM Map</string> 12 <string name="demo_sm_map">Open SM Map</string>
13 <string name="demo_all">Όλα</string> 13 <string name="demo_all">Όλα</string>
14 + <string name="demo_offer">Προσφορά</string>
15 + <string name="demo_more">Περισσότερα</string>
16 + <string name="demo_less">Λιγότερα</string>
17 + <string name="demo_purchases">για αγορές</string>
18 + <string name="demo_valid_until">Η προσφορά ισχύει έως %1$s</string>
19 + <string name="demo_coupon_code">Κωδικός Κουπονιού</string>
20 + <string name="demo_qr_code">QR Κουπονιού</string>
21 + <string name="demo_terms">Όροι Χρήσης</string>
22 + <string name="demo_copy_success">Ο κωδικός αντιγράφηκε στο πρόχειρο</string>
23 + <string name="demo_lorem_ipsum">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</string>
24 + <string name="demo_shops">Καταστήματα κοντά μου</string>
25 + <string name="demo_website">Δες το website</string>
14 </resources> 26 </resources>
......