Rébite 3 лет назад
Родитель
Сommit
b00ff63bca

+ 2 - 5
app/lib/mainPage.dart

@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:physigo/walking/walking_permission.dart';
 
 class MainPage extends StatefulWidget {
   const MainPage({Key? key}) : super(key: key);
@@ -30,11 +31,7 @@ class _MainPage extends State<MainPage> {
           ),
         ),
       ),
-      body: Center(
-        child: Column(
-        ),
-
-      ),
+      body: WalkingPermission()
     );
   }
 }

+ 24 - 5
app/lib/walking/services/walking_services.dart

@@ -1,16 +1,35 @@
 import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:firebase_auth/firebase_auth.dart';
 
 import '../models/score.dart';
 
 class WalkingServices {
   static final db = FirebaseFirestore.instance;
 
-  static dynamic addScore(Score score) {
+  static dynamic addScore(Score score) async {
     // final user = {"score": score.points, "distance": score.distance};
+    final walkingScore = await db
+        .collection("WalkingScores")
+        .where("user", isEqualTo: FirebaseAuth.instance.currentUser?.uid)
+        .get();
+    if(walkingScore.docs.isEmpty){
+      db
+      .collection("WalkingScores")
+      .add({"score":score.points,"user":FirebaseAuth.instance.currentUser?.uid });
+    }
+    else{
+      db
+          .collection("WalkingScores")
+          .doc(walkingScore.docs.first.id)
+          .update({"score": walkingScore.docs.first.get("score") + score.points});
+    }
+    final user = await db
+    .collection("profileInfo")
+    .doc(FirebaseAuth.instance.currentUser?.uid).get();
     db
-        .collection("scores")
-        .add(score.toMap())
-        .then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
-  }
+    .collection("profileInfo")
+    .doc(FirebaseAuth.instance.currentUser?.uid)
+    .update({"total_points":user.get("total_points") + score.points});
 
+  }
 }

+ 10 - 7
app/lib/walking/walking_counter.dart

@@ -24,6 +24,7 @@ class _WalkingCounterState extends State<WalkingCounter> {
 
   num distance = 0;
   Position? lastPosition;
+  num points = 0;
 
   @override
   void initState() {
@@ -88,7 +89,7 @@ class _WalkingCounterState extends State<WalkingCounter> {
                 var position = snapshot.data![1];
                 if (activity == ActivityType.WALKING || activity == ActivityType.RUNNING) {
                   if (lastPosition != null) {
-                    distance += Geolocator.distanceBetween(
+                    distance = Geolocator.distanceBetween(
                         lastPosition!.latitude,
                         lastPosition!.longitude,
                         position.latitude,
@@ -96,16 +97,18 @@ class _WalkingCounterState extends State<WalkingCounter> {
                   }
                 }
                 if (distance > 0 && activity == ActivityType.WALKING) {
-                  var points = distance / 10;
-                  WalkingServices.addScore(Score(
-                      points: points.floor(), distance: distance.floor()));
+                   points += distance / 10;
                 }
                 else if (distance > 0 && activity == ActivityType.RUNNING){
-                  var points = distance / 8;
-                  WalkingServices.addScore(Score(
-                      points: points.floor(), distance: distance.floor()));
+                   points += distance / 8;
                 }
+                if (activity != ActivityType.WALKING && activity != ActivityType.RUNNING && points>0){
+                  WalkingServices.addScore(Score(
+                      points: points.floor(),distance: 0)
 
+                  );
+                  points=0;
+                }
                 lastPosition = position;
                 print(distance);
                 return Text("$distance");

+ 3 - 3
app/lib/walking/walking_permission.dart

@@ -12,8 +12,8 @@ class WalkingPermission extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    return Scaffold(
-      body: FutureBuilder(
+    return(
+     FutureBuilder(
         future: Future.wait([isPermissionGrants(), _getPermissions()]),
         builder: (context, snapshot) {
           if (snapshot.connectionState == ConnectionState.waiting) {
@@ -24,7 +24,7 @@ class WalkingPermission extends StatelessWidget {
             return WalkingCounter();
           }
         },
-      ),
+      )
     );
   }