// ダウンロード系の関数 // すべてのデータをダウンロードし、jsonからTにパースしてリストで返す。下の方の関数を連結することで実現してる。 public static async UniTask <List <T> > GetAllData <T>() { // JsonUtilityの仕様で、Realtime Databaseの全体をパースできない。<string, obj>にパースできない。 // なので、それが可能なOSSのMiniJsonをkeyの取得にだけ使う。 // keyの取得(shallowクエリ) var text = await FirebaseRepository.GetDataKeys(); var dictionary = Json.Deserialize(text) as Dictionary <string, object>; var keys = dictionary?.Select(x => x.Key); if (keys is null) { return(null); } var list = await keys.Select(async key => { var d = await GetDataIndividual(key); var t = JsonUtility.FromJson <T>(d); return(t); }); return(list.ToList()); }
public FirebaseRepositoryTests(MockFirebaseFixture fixture) { var firebaseQuery = new FirebaseQuery(new FirebaseClient(FirebaseUrl, FirebaseAuth)); _firebaseRepository = new FirebaseRepository <MockFirebasePerson>(FirebaseMockNode, firebaseQuery); _fixture = fixture; }
private void init() { m_Firebase = new FirebaseDB(r_baseUrl); m_WeatherRepository = new FirebaseRepository(m_Firebase.Node("Weather")); m_StudentRepository = new FirebaseRepository(m_Firebase.Node("Students")); m_JsonSerializer = new DbJsonSerializer(); m_WeatherCache = new EntityCache <WeatherForecast>(m_WeatherRepository, m_JsonSerializer, eCacheLoadingMode.Eager); m_StudentCache = new EntityCache <Student>(m_StudentRepository, m_JsonSerializer, eCacheLoadingMode.Lazy); }
async void Start() { var t = Time.time; box = await FirebaseRepository.GetAllData <DataClass>(); box = box.OrderBy(x => x.timeStamp).ToList(); Debug.Log("fin : " + (Time.time - t)); }
public async Task CreateNewCreatorIfDoesntExistAndReturnsItBack() { //Arrange var repo = new FirebaseRepository(); //Act var result = repo.GetCreatorBy(Creator.Me.Name).Result; //Assert Assert.IsNotNull(result); }
public async Task SendPushNotification(int id) { using (var repository = new EntityRepository(new BaitkmDbContext(new DbContextOptions <BaitkmDbContext>()))) { var pushNotification = await repository.Filter <PushNotification>(x => x.Id == id).FirstOrDefaultAsync(); if (pushNotification == null) { return; } var userIds = new List <int>(); var guestIds = new List <int>(); switch (pushNotification.PushNotificationUserType) { case PushNotificationUserType.All: userIds = await repository.GetAll <User>().Select(x => x.Id).ToListAsync(); guestIds = await repository.GetAll <Guest>().Select(x => x.Id).ToListAsync(); break; case PushNotificationUserType.Guest: guestIds = await repository.GetAll <Guest>().Select(x => x.Id).ToListAsync(); break; case PushNotificationUserType.Registered: userIds = await repository.GetAll <User>().Select(x => x.Id).ToListAsync(); break; default: throw new ArgumentOutOfRangeException(); } using (var fireBaseRepository = new FirebaseRepository(new BaitkmDbContext(new DbContextOptions <BaitkmDbContext>()))) { await fireBaseRepository.SendCampaignNotification(new FirebaseCampaignNotificationModel { Description = pushNotification.Description, PushNotificationActionType = pushNotification.PushNotificationActionType, Title = pushNotification.Title, UserIds = userIds, GuestIds = guestIds, FromAdmin = true, SenderId = null }); } pushNotification.PushNotificationStatusType = PushNotificationStatusType.Sent; repository.Update(pushNotification); await repository.SaveChangesAsync(); } }
public async Task Expired() { using (var repository = new EntityRepository(new BaitkmDbContext(new DbContextOptions <BaitkmDbContext>()))) { var announcements = await repository .Filter <Announcement>(x => !x.IsDraft && x.AnnouncementStatus == AnnouncementStatus.Accepted && x.AnnouncementStatusLastDay.Date == DateTime.UtcNow.Date) .ToListAsync(); var announcemenExpired = await repository.Filter <Notification>(n => n.NotificationType == AnnouncementNotificationType.Available).Include(n => n.NotificationTranslate).FirstOrDefaultAsync(); foreach (var a in announcements) { var questionerLanguage = repository.FilterAsNoTracking <PersonOtherSetting>(x => x.UserId == a.UserId).Select(s => s.Language).FirstOrDefault(); using (var firebaseRepository = new FirebaseRepository(new BaitkmDbContext(new DbContextOptions <BaitkmDbContext>()))) { await firebaseRepository.SendIndividualNotification(new IndividualNotificationModel { Description = $"{a.Title}", GenericId = a.Id, NotificationType = NotificationType.AnnouncementAvailable, ReceiverId = a.UserId, SenderId = null, Title = questionerLanguage == Language.English ? announcemenExpired.Title : announcemenExpired.NotificationTranslate.Select(n => n.Title).FirstOrDefault() }, false); } repository.Create(new PersonNotification { AnnouncementId = a.Id, UserId = a.UserId, NotificationId = announcemenExpired.Id }); } } }
public NewsController() { _repo = new FirebaseRepository(); }
public void OnClick() { FirebaseRepository.PushDataToFirebaseWithTimestamp(data); }