Example #1
0
        public SignUpViewModel(INavigatableScreen screen = null)
        {
            //Gets intance of INavigatableScreen instance
            NavigationScreen = screen ?? Locator.Current.GetService <INavigatableScreen>();

            //Observable for all properties and it will be true when
            //all this properties will be not empty
            var canRegester = this.WhenAny(
                x => x.Name,
                x => x.RegesterEmail,
                x => x.RegesterPassword,
                x => x.ConfirmPassword,
                (n, e, p, cp) => !string.IsNullOrEmpty(n.Value) &&
                !string.IsNullOrEmpty(e.Value) &&
                !string.IsNullOrEmpty(p.Value) &&
                !string.IsNullOrEmpty(cp.Value) &&
                cp.Value == p.Value

                );

            //Creating reactive command for regester
            Regester = ReactiveCommand
                       .CreateAsyncTask(canRegester, async _ =>
            {
                IsLoading      = true;
                string address = RestofitApiHelper.Address;

                //bool isReachable = await CrossConnectivity.Current.IsRemoteReachable(address);
                var client = new HttpClient()
                {
                    BaseAddress = new Uri(address)
                };
                var api    = RestService.For <IRestaurantApi>(client);
                var result = await api.Regester(Name, RegesterEmail, RegesterPassword, ConfirmPassword);
                return(result);
            });

            //When regstir command executing sets true for IsLoading property
            //Regester
            //    .IsExecuting
            //    .Subscribe(x => IsLoading = true);

            //Raises when completes regester command
            Regester
            .Subscribe(r =>
            {
                MessageBus.Current.SendMessage("User regestred!");
                Debug.WriteLine("Complete!");
                IsLoading = false;
            });

            //Raises when regester throws any exception
            Regester
            .ThrownExceptions
            .Subscribe(ex =>
            {
                Debug.WriteLine("Error!");
                IsLoading = false;
            });
        }
Example #2
0
        public SignUpViewModel(INavigatableScreen screen = null)
        {
            //Gets intance of INavigatableScreen instance
            NavigationScreen = screen ?? Locator.Current.GetService<INavigatableScreen>();

            //Observable for all properties and it will be true when
            //all this properties will be not empty
            var canRegester = this.WhenAny(
                                    x => x.Name,
                                    x => x.RegesterEmail,
                                    x => x.RegesterPassword,
                                    x => x.ConfirmPassword,
                                    (n,e, p, cp) => !string.IsNullOrEmpty(n.Value)
                                                  && !string.IsNullOrEmpty(e.Value)
                                                  && !string.IsNullOrEmpty(p.Value)
                                                  && !string.IsNullOrEmpty(cp.Value)
                                                  && cp.Value == p.Value

                                );

            //Creating reactive command for regester
            Regester = ReactiveCommand
                .CreateAsyncTask(canRegester, async _ =>
                {
                    IsLoading = true;
                    var client = new HttpClient(NetCache.UserInitiated)
                    {
                        BaseAddress = new Uri(Helper.Address)
                    };
                    var api = RestService.For<IRestaurantApi>(client);
                    var result = await api.Regester(Name, RegesterEmail, RegesterPassword, ConfirmPassword);
                    return result;
                });

            //When regstir command executing sets true for IsLoading property
            //Regester
            //    .IsExecuting
            //    .Subscribe(x => IsLoading = true);

            //Raises when completes regester command
            Regester
                .Subscribe(r =>
                {
                    MessageBus.Current.SendMessage("User regestred!");
                    Debug.WriteLine("Complete!");
                    IsLoading = false;
                });

            //Raises when regester throws any exception
            Regester
                .ThrownExceptions
                .Subscribe(ex =>
                {
                    Debug.WriteLine("Error!");
                    IsLoading = false;
                });
        }
Example #3
0
 public BasketViewModel(INavigatableScreen navigationScreen = null)
 {
     NavigationScreen = navigationScreen;
     Orders           = new ReactiveList <Order>();
     this.WhenAnyValue(x => x.Orders.Count)
     .Subscribe(x =>
     {
         OrdersCount = x;
     });
 }
Example #4
0
 public BasketViewModel(INavigatableScreen navigationScreen = null)
 {
     NavigationScreen = navigationScreen;
     Orders = new ReactiveList<Order>();
     this.WhenAnyValue(x => x.Orders.Count)
         .Subscribe(x =>
         {
             OrdersCount = x;
         });
 }
Example #5
0
        public FoodsViewModel(INavigatableScreen screen = null)
        {
            OrderableFoods   = new ReactiveList <Order>();
            OpenOrder        = ReactiveCommand.Create();
            NavigationScreen = (screen ?? Locator.Current.GetService <INavigatableScreen>());
            MainViewModel    = Locator.Current.GetService <MainViewModel>();
            //var foods = Context.AuthenticationManager.AuthenticatedApi.GetFoods();
            //foods.ToObservable()
            //.Do(x =>
            //{
            //    var orders = x.Select(f => new Order {Food = f, Id = Guid.NewGuid()});
            //    OrderableFoods.AddRange(orders);
            //})
            //.Subscribe();

            //OpenOrder.Do(_ =>
            //    {
            //        NavigationScreen.Navigation.Navigate.Execute(Locator.Current.GetService<BasketViewModel>());
            //    }).Subscribe();
        }
Example #6
0
        public FoodsViewModel(INavigatableScreen screen = null)
        {
            OrderableFoods = new ReactiveList<Order>();
            OpenOrder = ReactiveCommand.Create();
            NavigationScreen = (screen ?? Locator.Current.GetService<INavigatableScreen>());
            MainViewModel = Locator.Current.GetService<MainViewModel>();

            var foods = Global.AuthenticationManager.AuthenticatedApi.GetFoods();
            foods.ToObservable()
            .Do(x =>
            {
                var orders = x.Select(f => new Order {Food = f, Id = Guid.NewGuid()});
                OrderableFoods.AddRange(orders);
            })
            .Subscribe();

            OpenOrder.Do(_ =>
                {
                    NavigationScreen.Navigation.Navigate.Execute(Locator.Current.GetService<BasketViewModel>());
                }).Subscribe();
        }
        public AuthenticationViewModel(INavigatableScreen screen = null)
        {
            NavigationScreen = (screen ?? Locator.Current.GetService <INavigatableScreen>());

            var canLogin = this.WhenAny(x => x.Email, x => x.Password,
                                        (e, p) => !string.IsNullOrEmpty(e.Value) && !string.IsNullOrEmpty(p.Value));


            Login = ReactiveCommand
                    .CreateAsyncTask(canLogin, async _ =>
            {
                IsBusy = true;
                AuthenticationStatus = "started logging...";
                Debug.WriteLine(RestofitApiHelper.Address);
                var client = new HttpClient(NetCache.UserInitiated)
                {
                    BaseAddress = new Uri(RestofitApiHelper.Address)
                };
                var api              = RestService.For <IRestaurantApi>(client);
                var token            = await api.GetToken(Email, Password);
                AuthenticationStatus = "started authentication...";
                Context.AuthenticationManager.AuthenticatedClient = new HttpClient(new AuthenticatedHttpClientHandler(token.access_token))
                {
                    BaseAddress = new Uri(RestofitApiHelper.Address)
                };
                var info = await Context.AuthenticationManager.AuthenticatedApi.GetUserInfo();
                return(info);
            });


            Login.
            Subscribe(x => IsBusy = false);

            Login
            .ThrownExceptions
            .Subscribe(ex =>
            {
                UserError.Throw("Invalid login or password!");
                Debug.WriteLine("Error! - " + ex.Message);
                IsBusy = false;
            });


            #region OpenRegester
            OpenRegester = ReactiveCommand.Create();
            OpenRegester.Subscribe(x =>
            {
                var viewModel = Locator.Current.GetService <SignUpViewModel>();
                if (viewModel == null)
                {
                    var regViewModel = new SignUpViewModel(NavigationScreen);
                    Locator.CurrentMutable.RegisterConstant(regViewModel, typeof(SignUpViewModel));
                    NavigationScreen.Navigation.Navigate.Execute(regViewModel);
                }
                else
                {
                    NavigationScreen.Navigation.Navigate.Execute(viewModel);
                }
            });


            OpenLogin = ReactiveCommand.Create();
            OpenLogin.Subscribe(x =>
            {
                var authenViewModel = Locator.Current.GetService <AuthenticationViewModel>();
                NavigationScreen.Navigation.Navigate.Execute(authenViewModel);
            });
            #endregion
        }
        public AuthenticationViewModel(INavigatableScreen screen = null)
        {
            NavigationScreen = (screen ?? Locator.Current.GetService<INavigatableScreen>());

            var canLogin = this.WhenAny(x => x.Email, x => x.Password,
                (e, p) => !string.IsNullOrEmpty(e.Value) && !string.IsNullOrEmpty(p.Value));

            Login = ReactiveCommand
                .CreateAsyncTask(canLogin, async _ =>
                 {
                     IsBusy = true;
                     AuthenticationStatus = "started logging...";
                     Debug.WriteLine(Helper.Address);
                     var client = new HttpClient(NetCache.UserInitiated)
                     {
                         BaseAddress = new Uri(Helper.Address)
                     };
                     var api = RestService.For<IRestaurantApi>(client);
                     var token = await api.GetToken(Email, Password);
                     AuthenticationStatus = "started authentication...";
                     Global.AuthenticationManager.AuthenticatedClient = new HttpClient(new AuthenticatedHttpClientHandler(token.access_token))
                     {
                         BaseAddress = new Uri(Helper.Address)
                     };
                     var info = await Global.AuthenticationManager.AuthenticatedApi.GetUserInfo();
                     return info;
                 });

            Login.
                Subscribe(x => IsBusy = false);

            Login
                .ThrownExceptions
                .Subscribe(ex =>
                {
                    UserError.Throw("Invalid login or password!");
                    Debug.WriteLine("Error! - " + ex.Message);
                    IsBusy = false;
                });

            #region OpenRegester
            OpenRegester = ReactiveCommand.Create();
            OpenRegester.Subscribe(x =>
            {
                var viewModel = Locator.Current.GetService<SignUpViewModel>();
                if (viewModel == null)
                {
                    var regViewModel = new SignUpViewModel(NavigationScreen);
                    Locator.CurrentMutable.RegisterConstant(regViewModel, typeof(SignUpViewModel));
                    NavigationScreen.Navigation.Navigate.Execute(regViewModel);
                }
                else
                {
                    NavigationScreen.Navigation.Navigate.Execute(viewModel);
                }
            });

            OpenLogin = ReactiveCommand.Create();
            OpenLogin.Subscribe(x =>
            {
                var authenViewModel = Locator.Current.GetService<AuthenticationViewModel>();
                NavigationScreen.Navigation.Navigate.Execute(authenViewModel);
            });
            #endregion
        }