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));

    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 s.ref.getDownloadURL(),
      "providerWorkArea": routeForNewProvider.map((i){
        return {'lat': i.latitude, 'lng': i.longitude};
      }).toList(),
      "providerCategory": category
    }, SetOptions(merge:true));

    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;
}