|
|
- using GMCabsDriverAssistant.Models;
- using GMCabsDriverAssistant.Services;
- using GMCabsDriverAssistant.Utils;
- using QRCoder;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace GMCabsDriverAssistantSolution.ViewModels
- {
- public class CouponsViewModel : BaseViewModel
- {
- #region Fields
- private string emptyViewMessage;
- #endregion
-
- #region Properties
-
-
- public string EmptyViewMessage
- {
- get => emptyViewMessage;
- set => SetProperty(ref emptyViewMessage, value);
- }
-
- public ObservableCollection<CouponDto> Coupons { get; }
- public Command SyncCouponCommand { get; }
- #endregion
-
- #region Constructor
- [Obsolete]
- public CouponsViewModel()
- {
- Title = "Coupons";
- SyncCouponCommand = new Command(async () => await GetCoupons());
- Coupons = new ObservableCollection<CouponDto>();
- HandleReceivedMessages();
- }
- #endregion
-
- #region Methods
- public void OnAppearing()
- {
- Task.Run(async () => await GetCoupons());
- }
- private async Task GetCoupons()
- {
- EmptyViewMessage = "Loading Coupons...";
- string appToken = Preferences.Get(SecureStorageData.Token, "");
- GMCabsDriverService gMCabsDriverService = new GMCabsDriverService();
-
- Coupons.Clear();
- List<CouponDto> coupons = await gMCabsDriverService.GetCoupons(appToken);
- if (coupons != null && coupons.Count > 0)
- {
- foreach (CouponDto coupon in coupons)
- {
- QRCodeGenerator qrGenerator = new QRCodeGenerator();
- QRCodeData qrCodeData = qrGenerator.CreateQrCode(coupon.Id.ToString(), QRCodeGenerator.ECCLevel.Q);
- BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData);
- byte[] qrCodeAsBitmapByteArr = qrCode.GetGraphic(20);
- coupon.Image = ImageSource.FromStream(() => new MemoryStream(qrCodeAsBitmapByteArr));
-
- Coupons.Add(coupon);
- }
- }
- else
- {
- EmptyViewMessage = "No Coupons available";
- }
- }
-
- [Obsolete]
- void HandleReceivedMessages()
- {
- MessagingCenter.Unsubscribe<App, CouponDto>(this, nameof(App));
- MessagingCenter.Subscribe<App, CouponDto>(this, nameof(App), (sender, couponDto) => {
- Device.BeginInvokeOnMainThread(() => {
- CouponDto redeemedcoupon = new CouponDto
- {
- Id = couponDto.Id,
- Status = couponDto.Status
- };
- List<CouponDto> copyCoupons = new List<CouponDto>(Coupons);
- Coupons.Clear();
- foreach (var item in copyCoupons)
- {
- if (item.Id == redeemedcoupon.Id)
- {
- item.Image = ImageSource.FromFile("scanned.png");
- }
- Coupons.Add(item);
- }
-
-
-
- });
-
-
- });
-
- }
- #endregion
- }
- }
|