public PaymentCardPresenter(PaymentCardDTO paymentCardDTO)
        {
            this.HolderName    = paymentCardDTO.HolderName;
            this.CardNumber    = paymentCardDTO.CardNumber;
            this.stripecardId  = paymentCardDTO.StripeCardId;
            this.PaymentCardId = paymentCardDTO.PaymentCardId;


            DeleteCardCommand = new Command(async() =>
            {
                var deleted = await CardDataStore.DeletePaymentCard(paymentCardId.ToString());

                if (deleted)
                {
                    var cardDeleteStripeResult = await stripeServiceDS.DeleteCardFromCustomer(App.LogUser.StripeUserId, this.StipeCardId);

                    if (cardDeleteStripeResult)
                    {
                        MessagingCenter.Send <PaymentCardPresenter>(this, "PaymencardDeleteMsg");
                    }
                }


                //await Shell.Current.GoToAsync($"{EditCardPage.Route}");
            });
        }
Ejemplo n.º 2
0
        public CardsListPage(CardDataStore cards)
        {
            InitializeComponent();
            this.Cards = cards;

            BindingContext = viewModel = new CardsViewModel(this.Cards);
        }
Ejemplo n.º 3
0
        public CardDataStore.CardsQuery GetQuery()
        {
            string       field    = this.SearchCriteria.Field.Replace(" ", "");
            PropertyInfo property = typeof(Card).GetProperty(field);

            if (property.PropertyType == typeof(bool))
            {
                return(CardDataStore.Where(SearchCriteria.Field, SearchCriteria.Set));
            }
            else if (SearchCriteria.Operation == "Exists")
            {
                return(CardDataStore.Where(SearchCriteria.Field, SearchCriteria.Operation, SearchCriteria.Set.ToString()));
            }
            else
            {
                return(CardDataStore.Where(SearchCriteria.Field, SearchCriteria.Operation, SearchCriteria.Value));
            }
        }
Ejemplo n.º 4
0
        async Task ExecuteLoadItems()
        {
            TokenExpManger tokenExpManger = new TokenExpManger(App.TokenDto.Exp);

            if (tokenExpManger.IsExpired())
            {
                await tokenExpManger.CloseSession();
            }
            else
            {
                var tokenData = new  JwtSecurityTokenHandler().ReadJwtToken(App.TokenDto.Token);
                var cardData  = await CardDataStore.GetCardDTOFromUser(App.LogUser.UserId, App.TokenDto.Token);

                foreach (var item in cardData)
                {
                    var cardPresenter = new PaymentCardPresenter(item);

                    PaymentCardPresenters.Add(cardPresenter);
                }
            }
        }
Ejemplo n.º 5
0
 async void AllWithArt(object sender, EventArgs e)
 {
     await Navigation.PushAsync(new CardsListPage(CardDataStore.Where("IllustrationId", "Equals", this.Cards[this.Carousel.Position].IllustrationId).ToDataStore()));
 }
        public RegisterCardViewModel()
        {
            PropertiesInitializer();


            CompleteRegisterCardCommand = new Command(async() =>
            {
                TokenExpManger tokenExpManger = new TokenExpManger(App.TokenDto.Exp);
                if (tokenExpManger.IsExpired())
                {
                    await tokenExpManger.CloseSession();
                }
                else
                {
                    HolderNameValidator = ValidatorRules.EmptyOrNullValueRule(HolderName);
                    CardNumberValidator = ValidatorRules.EmptyOrNullValueRule(CardNumber);
                    YearValidator       = ValidatorRules.EmptyOrNullValueRule(Year);
                    MonthVaidator       = ValidatorRules.EmptyOrNullValueRule(Month);
                    CVCValidator        = ValidatorRules.EmptyOrNullValueRule(CVC);


                    if (!HolderNameValidator.HasError && !CardNumberValidator.HasError && !YearValidator.HasError && !MonthVaidator.HasError && !CVCValidator.HasError)
                    {
                        try
                        {
                            var cardData = new PaymentCard()
                            {
                                CardNumber    = CardNumber,
                                Cvc           = CVC,
                                HolderName    = HolderName,
                                Month         = Month,
                                Year          = Year,
                                PaymentCardId = Guid.NewGuid(),
                                UserId        = App.LogUser.UserId
                            };

                            var cardserviceResult = await stripeServiceDS.InsertStripeCardToStripeUser(cardData, App.LogUser.StripeUserId);

                            if (!cardserviceResult.HasError)
                            {
                                cardData.StripeCardId = cardserviceResult.TokenId;
                                var result            = await CardDataStore.AddItemAsync(cardData);

                                if (result)
                                {
                                    await Shell.Current.DisplayAlert("Notification", "Card succefully added.", "OK");
                                }
                            }
                            else
                            {
                                await Shell.Current.DisplayAlert("Notification", cardserviceResult.ErrorMsg, "OK");
                            }
                        }
                        catch (Exception e)
                        {
                            await Shell.Current.DisplayAlert("Notification", e.Message, "OK");
                        }
                    }
                }
            });
        }
        public GetLicenceViewModel()
        {
            GetLicenseCommand = new Command <string>(async(arg) =>
            {
                TokenExpManger tokenExpManger = new TokenExpManger(App.TokenDto.Exp);
                if (tokenExpManger.IsExpired())
                {
                    await tokenExpManger.CloseSession();
                }
                else
                {
                    var result = await Shell.Current.DisplayAlert("Notification", "Your are going to get a store license.For the cost $100 by month. Are you OK with that?", "Yes", "No");

                    if (result)
                    {
                        var cardResult = await CardDataStore.GetCardFromUser(App.LogUser.UserId, App.TokenDto.Token);

                        if (cardResult != null && cardResult.Count() > 0)
                        {
                            //Make the Payment transation here...

                            //Check that the payment was submited.

                            //Send Lincese Code

                            var subcriptionToken = await stripeServiceDS.CreateACustomerSubcription(App.LogUser.StripeUserId);

                            if (!string.IsNullOrEmpty(subcriptionToken))
                            {
                                var subcription = new Library.Models.Subcription()
                                {
                                    StripeCustomerId    = App.LogUser.StripeUserId,
                                    StripeSubCriptionID = subcriptionToken,
                                    //StoreLicense = StoreControlPanelViewModel.YourSelectedStore.StoreLicenceId
                                };

                                var subcriptionResult = await SubcriptionDataStore.AddItemAsync(subcription);

                                if (subcriptionResult)
                                {
                                    var licenseReuslt = await storeLicenseDataStore.PostStoreLicense(App.LogUser.Email, App.LogUser.Name);

                                    if (licenseReuslt)
                                    {
                                        await App.Current.MainPage.DisplayAlert("Notification", "License added succefully.", "OK");
                                    }
                                }
                            }
                            else
                            {
                                await App.Current.MainPage.DisplayAlert("Notification", "The subcription could not be made. Try again.", "OK");
                            }
                        }
                        else
                        {
                            await App.Current.MainPage.DisplayAlert("Notification", "You dont have a card register, register a card first.", "OK");
                        }
                    }
                }
            });
        }
        public UserDetailOrderViewModel()
        {
            ProductPresenters = new ObservableCollection <ProductPresenter>();

            OrderDetail        = SelectedOrder.CurrentOrder;
            OrderStatus        = OrderDetail.OrderStatus.ToString();
            OrderQuantity      = OrderDetail.OrderProducts.Count();
            isDeliveryFeeAdded = false;

            if (OrderDetail.OrderStatus == Status.Submited || OrderDetail.OrderStatus == Status.Completed)
            {
                AreVisible = false;
            }
            else
            {
                AreVisible = true;
            }

            SetProducts();

            IspickUp        = true;
            CheckoutCommand = new Command(async() =>
            {
                TokenExpManger tokenExpManger = new TokenExpManger(App.TokenDto.Exp);

                if (tokenExpManger.IsExpired())
                {
                    await tokenExpManger.CloseSession();
                }
                else
                {
                    var cardofUser = await CardDataStore.GetCardFromUser(App.LogUser.UserId, App.TokenDto.Token);

                    App.LogUser.PaymentCards = new List <PaymentCard>(cardofUser);

                    if (App.LogUser.PaymentCards.Count() > 0)
                    {
                        if (OrderDetail.OrderStatus == Status.NotSubmited)
                        {
                            if (IsDelivery)
                            {
                                OrderDetail.OrderType = Library.Models.Type.Delivery;
                            }
                            if (IspickUp)
                            {
                                OrderDetail.OrderType = Library.Models.Type.PickUp;
                            }

                            if (!IsDelivery && !IspickUp)
                            {
                                OrderDetail.OrderType = Library.Models.Type.PickUp;
                            }

                            OrderDetail.OrderStatus = Status.Submited;

                            //List<PaymentCard> paymentCards = new List<PaymentCard>(App.LogUser.PaymentCards);

                            var customercardId = await stripeServiceDS.GetCustomerCardId(App.LogUser.StripeUserId, App.LogUser.PaymentCards.FirstOrDefault().StripeCardId);

                            var isTransactionSuccess = await stripeServiceDS.MakePaymentWithCard(OrderDetail.StoreId, Total, App.LogUser.PaymentCards.FirstOrDefault().PaymentCardId, OrderDetail.OrderId.ToString());

                            if (isTransactionSuccess)
                            {
                                var orderUpdate = await orderDataStore.UpdateItemAsync(OrderDetail);

                                OrderStatus = OrderDetail.OrderStatus.ToString();

                                if (orderUpdate)
                                {
                                    var orderNotificationToEmployees = await userConnectedDataStore.SendOrdersToEmployees(OrderDetail.StoreId.ToString(), OrderDetail.OrderId.ToString());

                                    //await App.ComunicationService.OrderToPrepare(OrderDetail);

                                    await App.Current.MainPage.DisplayAlert("Notification", "Order was submited...!", "OK");

                                    MessagingCenter.Send <Library.Models.Order>(OrderDetail, "RemoveOrderSubtmitedMsg");
                                }
                            }
                            else
                            {
                                await App.Current.MainPage.DisplayAlert("Notification", "Bad Transaction.", "OK");
                            }
                        }
                        else
                        {
                            await App.Current.MainPage.DisplayAlert("Notification", "Order was submited.", "OK");
                        }
                    }
                    else
                    {
                        await App.Current.MainPage.DisplayAlert("Notification", "You dont have a card register, register a card first.", "OK");
                    }
                }
            });

            CalculateTotal();

            MessagingCenter.Subscribe <ProductPresenter>(this, "RemoveOrderProduct", async(obj) =>
            {
                ProductPresenters.Remove(obj);

                var _orderProductToRemove = OrderDetail.OrderProducts.Where(o => o.OrderProductId == obj.ProductId).FirstOrDefault();

                OrderDetail.OrderProducts.Remove(_orderProductToRemove);

                OrderQuantity = OrderDetail.OrderProducts.Count();

                if (OrderDetail.OrderProducts.Count() == 0)
                {
                    var result = await orderDataStore.DeleteItemAsync(OrderDetail.OrderId.ToString());

                    if (result)
                    {
                        await Shell.Current.GoToAsync($"../StoreOrderRoute");
                    }
                }
                CalculateTotal();
            });
            MessagingCenter.Subscribe <OrderProduct>(this, "OrderProductUpdate", async(obj) =>
            {
                var oproductToRemove = ProductPresenters.Where(op => op.ProductId == obj.OrderProductId).FirstOrDefault();

                ProductPresenters.Remove(oproductToRemove);

                var updatedOrderProductPrensenter = new ProductPresenter(obj);

                if (OrderDetail.OrderStatus == Status.Submited || OrderDetail.OrderStatus == Status.Completed)
                {
                    updatedOrderProductPrensenter.AreVisible = false;
                }
                else
                {
                    updatedOrderProductPrensenter.AreVisible = true;
                }
                ProductPresenters.Add(updatedOrderProductPrensenter);

                CalculateTotal();
            });
        }