import 'dart:convert';
import 'package:http/http.dart' as http;

import '../utils/const.dart';


class AuthService{

  static Future<Map<String, dynamic>> changePassword(String oldpassword, String newpassword, String token) async {
    Map<String, dynamic> changePassword = {};
    String server_url = ConstValues.currentServer();
    String url = '${server_url}/api/change-password/';
    print('++++++++${url}');
    final http.Response response = await http.put(
      Uri.parse(url),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
        'Authorization': 'Token ${token}'
      },
      body: jsonEncode(<String, String>{
        'old_password': oldpassword,
        'new_password': newpassword
      }),
    );

    if (response.statusCode == 200) {
        changePassword = json.decode(utf8.decode(response.bodyBytes));
    }
    return changePassword;
  }


  static Future<Map<String, dynamic>> login(String email, String password) async {
    print("------- in logged email ${email} pwd ${password} ###### --------");
    Map<String, dynamic> cats = {};
    String server_url = ConstValues.currentServer();
    String url = '${server_url}/api/login/';
    print('++++++++${url}');
    //String url = 'http://localhost:8100/api/login/';
    final http.Response response = await http.post(
      Uri.parse(url),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonEncode(<String, String>{
        'email': email,
        'password': password
      }),
    );

    if (response.statusCode == 200) {
      cats = json.decode(utf8.decode(response.bodyBytes));
    }
    return cats;
  }

  
  static Future<Map<String, dynamic>>  register(String email, String password) async {
    Map<String, dynamic> cats = {};
    String server_url = ConstValues.currentServer();
    String url = '${server_url}/api/register/';
    print('++++++++${url}');
    final http.Response response = await http.post(
      Uri.parse(url),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonEncode(<String, String>{
        'email': email,
        'password': password
      }),
    );
    print(response.body);
    if (response.statusCode == 200) {
      cats = json.decode(utf8.decode(response.bodyBytes));
    }
    return cats;
  }

  static Future<Map<String, dynamic>>  deleteUser(String token) async {
    Map<String, dynamic> cats = {};
    String server_url = ConstValues.currentServer();
    String url = '${server_url}/api/delete-account/';
    print('++++++++${url}');
    final http.Response response = await http.get(
      Uri.parse(url),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
        'Authorization': 'Token ${token}'
      }
    );

    if (response.statusCode == 200) {
      cats = json.decode(utf8.decode(response.bodyBytes));
    }
    return cats;
  }

  
  static Future<List<dynamic>?> UserDetails(int userid) async {
    List<dynamic> cats = [];
    String server_url = ConstValues.currentServer();
    String url = '${server_url}/api/userdetials?user_id=${userid}';
    print('++++++++${url}');
    print("---- UserDetails url is ${url}");
    final response = await http.get(Uri.parse(url),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
    );

    if (response.statusCode == 200) {

      cats = json.decode(utf8.decode(response.bodyBytes));
    }
    return cats;
  }






}

