Merge branch 'master' into HISTORIC_CAPSULE_LDE

HISTORIC_CAPSULE_LDE
Lucas Delanier 2 years ago
commit 7b9f81b543

@ -1,4 +1,5 @@
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:tuple/tuple.dart';
import '../main.dart'; import '../main.dart';
@ -46,4 +47,24 @@ class MusicService {
return true; return true;
} }
} }
Future<List<Tuple2<String, String>>> getHistoryCapsulesMonthWhitIdUser(
String idUser, int month, int year) async {
List<Tuple2<String, String>> capsules = [];
var querySnapshot = await FirebaseFirestore.instance
.collection('posts')
.where('user_id', isEqualTo: idUser)
.where('date', isGreaterThanOrEqualTo: DateTime(year, month))
.where('date', isLessThan: DateTime(year, month + 1))
.orderBy('date')
.get();
for (var document in querySnapshot.docs) {
capsules.add(Tuple2(document.data()['date'].toDate().day.toString(),
document.data()['idMusic']));
}
return capsules;
}
} }

@ -7,7 +7,8 @@ import 'package:firebase_storage/firebase_storage.dart';
import '../main.dart'; import '../main.dart';
class PostService { class PostService {
createPost(String? description, String idMusic, File? image, Tuple2<String, String>? location) async { createPost(String? description, String idMusic, File? image,
Tuple2<String, String>? location) async {
var id = MyApp.userViewModel.userCurrent.id; var id = MyApp.userViewModel.userCurrent.id;
final post = <String, dynamic>{ final post = <String, dynamic>{
"user_id": id, "user_id": id,
@ -41,11 +42,14 @@ class PostService {
deletePost() {} deletePost() {}
Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getPopularPosts({int limit = 10, int offset = 0}) async { Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getPopularPosts(
{int limit = 10, int offset = 0}) async {
DateTime twentyFourHoursAgo = DateTime.now().subtract(Duration(hours: 24)); DateTime twentyFourHoursAgo = DateTime.now().subtract(Duration(hours: 24));
Timestamp twentyFourHoursAgoTimestamp = Timestamp.fromDate(twentyFourHoursAgo); Timestamp twentyFourHoursAgoTimestamp =
Timestamp.fromDate(twentyFourHoursAgo);
QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore.instance QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore
.instance
.collection("posts") .collection("posts")
.where("date", isGreaterThan: twentyFourHoursAgoTimestamp) .where("date", isGreaterThan: twentyFourHoursAgoTimestamp)
.limit(limit) .limit(limit)
@ -63,7 +67,8 @@ class PostService {
return Timestamp.fromDate(twentyFourHoursAgo); return Timestamp.fromDate(twentyFourHoursAgo);
} }
Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getPostsFriends({int limit = 10, int offset = 0}) async { Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getPostsFriends(
{int limit = 10, int offset = 0}) async {
var timestamp = _getTwentyFourHoursAgoTimestamp(); var timestamp = _getTwentyFourHoursAgoTimestamp();
var response = await FirebaseFirestore.instance var response = await FirebaseFirestore.instance
.collection("posts") .collection("posts")
@ -79,12 +84,17 @@ class PostService {
Future<bool> getAvailable(String idUser) async { Future<bool> getAvailable(String idUser) async {
DateTime today = DateTime.now(); DateTime today = DateTime.now();
QuerySnapshot<Map<String, dynamic>> response = QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore
await FirebaseFirestore.instance.collection("posts").where("user_id", isEqualTo: idUser).get(); .instance
.collection("posts")
.where("user_id", isEqualTo: idUser)
.get();
bool isTodayAvailable = response.docs.any((doc) { bool isTodayAvailable = response.docs.any((doc) {
DateTime date = doc["date"].toDate(); // Assuming the field name is "date" DateTime date = doc["date"].toDate(); // Assuming the field name is "date"
return date.day == today.day && date.month == today.month && date.year == today.year; return date.day == today.day &&
date.month == today.month &&
date.year == today.year;
}); });
return !isTodayAvailable; return !isTodayAvailable;
@ -95,11 +105,15 @@ class PostService {
DateTime sevenDaysAgo = DateTime.now().subtract(Duration(days: 6)); DateTime sevenDaysAgo = DateTime.now().subtract(Duration(days: 6));
QuerySnapshot<Map<String, dynamic>> response = QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore
await FirebaseFirestore.instance.collection("posts").where("user_id", isEqualTo: id).get(); .instance
.collection("posts")
.where("user_id", isEqualTo: id)
.get();
List<Map<String, dynamic>?> postList = List<Map<String, dynamic>?> postList = response.docs
response.docs.map((DocumentSnapshot<Map<String, dynamic>> doc) => doc.data()).toList(); .map((DocumentSnapshot<Map<String, dynamic>> doc) => doc.data())
.toList();
for (int i = 0; i < 7; i++) { for (int i = 0; i < 7; i++) {
DateTime date = sevenDaysAgo.add(Duration(days: i)); DateTime date = sevenDaysAgo.add(Duration(days: i));

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:justmusic/view_model/TokenSpotify.dart'; import 'package:justmusic/view_model/TokenSpotify.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:tuple/tuple.dart';
import '../model/Artist.dart'; import '../model/Artist.dart';
import '../model/Music.dart'; import '../model/Music.dart';
import '../services/MusicService.dart'; import '../services/MusicService.dart';
@ -253,4 +254,26 @@ class MusicViewModel {
rethrow; rethrow;
} }
} }
Future<List<Tuple2<String, Music>>> getHistoryCapsulesMonthWhitIdUser(
String idUser, int month, int year) async {
try {
List<Tuple2<String, Music>> capsules = [];
var capsulesData = await _musicService.getHistoryCapsulesMonthWhitIdUser(
idUser, month, year);
var musics = await getMusicsWithIds(
capsulesData.map((capsule) => capsule.item2).toList());
for (var capsule in capsulesData) {
var music = musics.firstWhere((music) => music.id == capsule.item2);
capsules.add(Tuple2(capsule.item1, music));
}
return capsules;
} catch (e) {
print(e);
rethrow;
}
}
} }

Loading…
Cancel
Save