Esempio n. 1
0
        public FoodsViewModel(
            IMapper mapper,
            IDiagnosticsFacade diagnosticsFacade,
            IFoodsApi foodsApi,
            INavigationService navigationService,
            IFoodDetailViewModelFactory foodDetailViewModelFactory,
            IBasketItemsService basketItemsService)
        {
            _mapper                     = mapper;
            _diagnosticsFacade          = diagnosticsFacade;
            _foodsApi                   = foodsApi;
            _navigationService          = navigationService;
            _foodDetailViewModelFactory = foodDetailViewModelFactory;

            this.WhenAnyValue(x => x.SelectedFood)
            .Where(x => x != null)
            .Subscribe(async food => await NavigateToFoodDetail(food));

            BasketItemsCount = basketItemsService.ItemsCount;

            basketItemsService.ItemsCountChange
            .Select(x => x.ToString())
            .Subscribe(x => BasketItemsCount = x);

            GoToBasket =
                ReactiveCommand.CreateFromTask(
                    async() => await _navigationService.NavigateAsync(typeof(IBasketViewModel)));
        }
Esempio n. 2
0
 public BasketsService(DataContext context, IMapper mapper, ILogger <BasketsService> logger, ICustomersService customerService, IBasketItemsService basketItemService)
 {
     _context           = context;
     _mapper            = mapper;
     _logger            = logger;
     _customerService   = customerService;
     _basketItemService = basketItemService;
 }
Esempio n. 3
0
        public FoodDetailViewModel(
            IFoodViewModel selectedFood,
            INavigationService navigationService,
            IBasketItemsService basketItemsService)
        {
            SelectedFood = selectedFood;

            CurrentBasketItem = new BasketItemViewModel(SelectedFood);

            AddToBasket = ReactiveCommand.Create(() =>
                                                 basketItemsService.Add(CurrentBasketItem));

            GoToBasket = ReactiveCommand.CreateFromTask(async() =>
                                                        await navigationService.NavigateAsync(typeof(IBasketViewModel)));

            BasketItemsCount = basketItemsService.ItemsCount;

            basketItemsService.ItemsCountChange
            .Select(x => x.ToString())
            .Subscribe(x => BasketItemsCount = x);
        }
Esempio n. 4
0
        public BasketViewModel(
            IBasketItemsService basketItemsService,
            IOrdersApi ordersApi,
            INavigationService navigationService,
            IOrderDtoAdapter orderDtoAdapter)
        {
            Items = basketItemsService.Items;

            _totalPrice = basketItemsService.Items.ToObservableChangeSet()
                          .AutoRefresh(x => x.Quantity)
                          .ToCollection()
                          .Select(x => x.Sum(i => i.TotalPrice))
                          .ToProperty(this, x => x.TotalPrice);

            CompleteOrder = ReactiveCommand.CreateFromTask(async() =>
            {
                var orderDto = orderDtoAdapter.GetOrderFromOrderViewModels(Items);
                basketItemsService.Clear();

                await ordersApi.Create(orderDto);
                await navigationService.NavigateToRoot();
            });
        }