public CommunityService(IFirestoreContext context,
                         ICommunityRepository communityRepository,
                         IMembershipRepository membershipRepository,
                         IMembershipService membershipService,
                         IAuthService authService)
 {
     _context              = context;
     _communityRepository  = communityRepository;
     _membershipRepository = membershipRepository;
     _membershipService    = membershipService;
     _authService          = authService;
 }
Esempio n. 2
0
 public UserService(IFirestoreContext context,
                    IUserRepository userRepository,
                    IUserEmailRepository userEmailRepository,
                    IMembershipRepository membershipRepository,
                    IAuthService authService)
 {
     _context              = context;
     _userRepository       = userRepository;
     _userEmailRepository  = userEmailRepository;
     _membershipRepository = membershipRepository;
     _authService          = authService;
 }
Esempio n. 3
0
 public LockService(
     IFirestoreContext context,
     ILockRepository lockRepository,
     IBikeRepository bikeRepository,
     ILockControlService lockControlService,
     INavigationService navigationService)
 {
     _context            = context;
     _lockRepository     = lockRepository;
     _bikeRepository     = bikeRepository;
     _lockControlService = lockControlService;
     _navigationService  = navigationService;
 }
 public BikeService(
     IFirestoreContext context,
     IBikeRepository bikeRepository,
     IAuthService authService,
     IMembershipRepository membershipRepository,
     ILocationService locationService,
     IStationRepository stationRepository,
     ICommunityRepository communityRepository,
     ILockRepository lockRepository,
     ILockService lockService)
 {
     _context              = context;
     _bikeRepository       = bikeRepository;
     _authService          = authService;
     _membershipRepository = membershipRepository;
     _locationService      = locationService;
     _stationRepository    = stationRepository;
     _communityRepository  = communityRepository;
     _lockRepository       = lockRepository;
     _lockService          = lockService;
 }
Esempio n. 5
0
 public UserEmailRepository(IFirestoreContext context)
 {
     _context = context;
 }
Esempio n. 6
0
 public UserRepository(IFirestoreContext firestoreContext)
 {
     _firestore = firestoreContext;
 }
Esempio n. 7
0
 public BikeRepository(IFirestoreContext context)
 {
     _context = context;
 }
Esempio n. 8
0
 public StationRepository(IFirestoreContext context)
 {
     _context = context;
 }
        public StationService(
            IFirestoreContext context,
            IStationRepository stationRepository,
            IBikeRepository bikeRepository,
            IMembershipService membershipService)
        {
            _context           = context;
            _stationRepository = stationRepository;
            _bikeRepository    = bikeRepository;

            _availableStations = new Lazy <ObservableCollection <Station> >(() =>
            {
                IDictionary <string, ObservableCollection <Station> > allStations =
                    new Dictionary <string, ObservableCollection <Station> >();

                IDictionary <string, IDisposable> subscriptions = new Dictionary <string, IDisposable>();

                ObservableCollection <Station> result = new ObservableCollection <Station>();

                var communities = membershipService.ObserveMemberships();

                communities.CollectionChanged += (sender, args) =>
                {
                    switch (args.Action)
                    {
                    case NotifyCollectionChangedAction.Add:
                        foreach (CommunityMembership membership in args.NewItems)
                        {
                            ObservableCollection <Station> communityStations = new ObservableCollection <Station>();

                            var subscription = _stationRepository
                                               .ObserveStationsFromCommunity(membership.CommunityId)
                                               .Subscribe(stations =>
                            {
                                communityStations.Clear();

                                foreach (var station in stations)
                                {
                                    communityStations.Add(station);
                                }
                            }, exception =>
                            {
                                communityStations.Clear();
                            });

                            subscriptions[membership.CommunityId] = subscription;

                            communityStations.CollectionChanged += StationsChanged;
                            allStations[membership.Id]           = communityStations;
                        }
                        break;

                    case NotifyCollectionChangedAction.Remove:
                        foreach (CommunityMembership membership in args.OldItems)
                        {
                            allStations[membership.CommunityId].CollectionChanged -= StationsChanged;
                            subscriptions[membership.CommunityId].Dispose();
                        }
                        break;

                    case NotifyCollectionChangedAction.Reset:
                        allStations.Clear();

                        foreach (var subscription in subscriptions.Values)
                        {
                            subscription.Dispose();
                        }

                        subscriptions.Clear();
                        break;

                    case NotifyCollectionChangedAction.Move:
                        break;

                    case NotifyCollectionChangedAction.Replace:
                        throw new NotImplementedException();

                    default:
                        throw new NotImplementedException();
                    }
                };

                return(result);

                void StationsChanged(object sender, NotifyCollectionChangedEventArgs args)
                {
                    result.Clear();

                    foreach (var station in allStations.Values.SelectMany(bikes => bikes))
                    {
                        result.Add(station);
                    }
                }
            });
        }
 public CommunityRepository(
     IFirestoreContext firestoreContext)
 {
     _firestore = firestoreContext;
 }
Esempio n. 11
0
 public LockRepository(
     IFirestoreContext contextContext)
 {
     _context = contextContext;
 }
 public MembershipRepository(IFirestoreContext firestoreContext)
 {
     _firestore = firestoreContext;
 }