registerProvider function

Future<String?> registerProvider(
  1. String email,
  2. String pass,
  3. String _login,
  4. String providerName,
  5. String phone,
  6. String desc,
  7. String address,
  8. List<String> category,
  9. String pathToImage,
  10. List<LatLng> routeForNewProvider,
)

Implementation

Future<String?> registerProvider(String email, String pass, String _login,
    String providerName, String phone, String desc, String address,
    List<String> category, String pathToImage, List<LatLng> routeForNewProvider) async {
  try {
    final User? user = (await FirebaseAuth.instance.createUserWithEmailAndPassword(
      email: email, password: pass,)).user;
    if (user == null)
      return "User don't create";

    // load image
    var f = Uuid().v4();
    var name = "provider/$f.jpg";
    // var firebaseStorageRef = FirebaseStorage.instance.ref().child(name);
    // TaskSnapshot s = await firebaseStorageRef.putFile(File(pathToImage));
    var _fileData = await File(pathToImage).readAsBytes();

    await dbSetDocumentInTable("listusers", user.uid, {
      "visible": true,
      "providerApp": true,
      "providerRequest" : true,
      "phoneVerified": false,
      "email": user.email,
      "phone": phone,
      "name": _login,
      "date_create" : DateTime.now().toUtc(),
      "providerName": providerName,
      "providerAddress": address,
      "providerDesc": desc,
      "providerLogoLocalFile": name,
      "providerLogoServerPath": await dbSaveFile(name, _fileData),
      "providerWorkArea": routeForNewProvider.map((i){
        return {'lat': i.latitude, 'lng': i.longitude};
      }).toList(),
      "providerCategory": category
    });

    // await FirebaseFirestore.instance.collection("listusers").doc(user.uid).set({
    //   "visible": true,
    //   "providerApp": true,
    //   "providerRequest" : true,
    //   "phoneVerified": false,
    //   "email": user.email,
    //   "phone": phone,
    //   "name": _login,
    //   "date_create" : FieldValue.serverTimestamp(),
    //   "providerName": providerName,
    //   "providerAddress": address,
    //   "providerDesc": desc,
    //   "providerLogoLocalFile": name,
    //   "providerLogoServerPath": await dbSaveFile(name, _fileData),
    //   "providerWorkArea": routeForNewProvider.map((i){
    //     return {'lat': i.latitude, 'lng': i.longitude};
    //   }).toList(),
    //   "providerCategory": category
    // }, SetOptions(merge:true));

    await dbIncrementCounter("settings", "main", "provider_request_count", 1);
    await dbIncrementCounter("settings", "main", "provider_new_request_count", 1);

    // await FirebaseFirestore.instance.collection("settings").doc("main")
    //     .set({"provider_request_count": FieldValue.increment(1)}, SetOptions(merge:true));
    // await FirebaseFirestore.instance.collection("settings").doc("main")
    //     .set({"provider_new_request_count": FieldValue.increment(1)}, SetOptions(merge:true));

  }catch(ex){
    return "model registerProvider " + ex.toString();
  }
  return null;
}