add Capsule collection
continuous-integration/drone/push Build is passing Details

DEPLOY
Emre KARTAL 1 year ago
parent 9db264c0d1
commit 7699c1b883

@ -0,0 +1,34 @@
import 'package:tuple/tuple.dart';
import 'Music.dart';
class Post {
final String _id;
late Music _music;
Tuple2<String?,String?> _location;
DateTime _date;
// Constructor
Post(this._id, this._location, this._date);
//Getters and setters
String get id => _id;
Music get music => _music;
set music(Music value) {
_music = value;
}
Tuple2<String?, String?> get location => _location;
set location(Tuple2<String?, String?> value) {
_location = value;
}
DateTime get date => _date;
set date(DateTime value) {
_date = value;
}
}

@ -0,0 +1,33 @@
import 'package:cloud_firestore/cloud_firestore.dart';
class CapsuleService {
Future<List<bool>> recapSevenDays(String id) async {
List<bool> recapList = [];
DateTime sevenDaysAgo = DateTime.now().subtract(Duration(days: 6));
QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore
.instance
.collection("capsules")
.where("user_id", isEqualTo: id)
.get();
List<Map<String, dynamic>?> capsuleList = response.docs
.map((DocumentSnapshot<Map<String, dynamic>> doc) => doc.data())
.toList();
for (int i = 0; i < 7; i++) {
DateTime date = sevenDaysAgo.add(Duration(days: i));
bool capsuleExists = capsuleList.any((post) =>
post?["date"] != null &&
post?["date"].toDate().year == date.year &&
post?["date"].toDate().month == date.month &&
post?["date"].toDate().day == date.day);
recapList.add(capsuleExists);
}
return recapList;
}
}

@ -37,7 +37,7 @@ class MusicService {
List<Tuple2<int, String>> capsules = []; List<Tuple2<int, String>> capsules = [];
var querySnapshot = await FirebaseFirestore.instance var querySnapshot = await FirebaseFirestore.instance
.collection('posts') .collection('capsules')
.where('user_id', isEqualTo: idUser) .where('user_id', isEqualTo: idUser)
.where('date', isGreaterThanOrEqualTo: DateTime(year, month)) .where('date', isGreaterThanOrEqualTo: DateTime(year, month))
.where('date', isLessThan: DateTime(year, month + 1)) .where('date', isLessThan: DateTime(year, month + 1))

@ -23,6 +23,15 @@ class PostService {
var userRef = MyApp.db.collection("users").doc(id); var userRef = MyApp.db.collection("users").doc(id);
var capsule = {
"user_id": id,
"date": DateTime.now(),
"place": [location?.item1, location?.item2],
"song_id": idMusic,
};
await MyApp.db.collection("capsules").doc(postAdd.id).set(capsule);
await MyApp.db.runTransaction((transaction) async { await MyApp.db.runTransaction((transaction) async {
var userSnapshot = await transaction.get(userRef); var userSnapshot = await transaction.get(userRef);
if (userSnapshot.exists) { if (userSnapshot.exists) {
@ -122,6 +131,7 @@ class PostService {
return response.docs; return response.docs;
} }
Future<bool> getAvailable(String idUser) async { Future<bool> getAvailable(String idUser) async {
DateTime today = DateTime.now(); DateTime today = DateTime.now();
@ -141,35 +151,6 @@ class PostService {
return !isTodayAvailable; return !isTodayAvailable;
} }
Future<List<bool>> recapSevenDays(String id) async {
List<bool> recapList = [];
DateTime sevenDaysAgo = DateTime.now().subtract(Duration(days: 6));
QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore
.instance
.collection("posts")
.where("user_id", isEqualTo: id)
.get();
List<Map<String, dynamic>?> postList = response.docs
.map((DocumentSnapshot<Map<String, dynamic>> doc) => doc.data())
.toList();
for (int i = 0; i < 7; i++) {
DateTime date = sevenDaysAgo.add(Duration(days: i));
bool postExists = postList.any((post) =>
post?["date"] != null &&
post?["date"].toDate().year == date.year &&
post?["date"].toDate().month == date.month &&
post?["date"].toDate().day == date.day);
recapList.add(postExists);
}
return recapList;
}
Future<List<String>> getLikesByPostId(String id) async { Future<List<String>> getLikesByPostId(String id) async {
var response = var response =
await FirebaseFirestore.instance.collection("posts").doc(id).get(); await FirebaseFirestore.instance.collection("posts").doc(id).get();

@ -1,6 +1,7 @@
import 'dart:io'; import 'dart:io';
import 'package:justmusic/model/Post.dart'; import 'package:justmusic/model/Post.dart';
import 'package:justmusic/services/CapsuleService.dart';
import 'package:justmusic/services/PostService.dart'; import 'package:justmusic/services/PostService.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
@ -14,6 +15,7 @@ class PostViewModel {
var lastPostFriend; var lastPostFriend;
var lastPostDiscovery; var lastPostDiscovery;
final PostService _postService = PostService(); final PostService _postService = PostService();
final CapsuleService _capsuleService = CapsuleService();
// Constructor // Constructor
PostViewModel(); PostViewModel();
@ -114,7 +116,7 @@ class PostViewModel {
Future<List<bool>> recapSevenDays(String id) async { Future<List<bool>> recapSevenDays(String id) async {
try { try {
return await _postService.recapSevenDays(id); return await _capsuleService.recapSevenDays(id);
} catch (e) { } catch (e) {
print(e); print(e);
rethrow; rethrow;
@ -145,7 +147,6 @@ class PostViewModel {
print(bool); print(bool);
return bool; return bool;
} catch (e) { } catch (e) {
print("haaaaaaaaa");
rethrow; rethrow;
} }
} }

Loading…
Cancel
Save