createOrder method

Implementation

Future<CreateOrderResponse> createOrder(CreateOrderRequest order) async {
  try {
    _client = MyHttpClient(baseUrlTonder);

    List<dynamic> items = [];
    for (var i = 0; i <order.items!.length; i++) {
      items.add(order.items?[i].toMap());
    }
    Map<String, dynamic> body = {
      "business": order.business,
      "client": order.client,
      "billing_address_id": order.billing_address_id,
      "shipping_address_id": order.shipping_address_id,
      "amount": order.amount,
      "status": order.status,
      "reference": order.reference,
      "is_oneclick": order.is_oneclick,
      "items": items
    };

    Response? response = await _client?.post(
        Uri.parse('api/v1/orders/'),
        body: json.encode(body),
        headers: {'Authorization': 'Token $apiKeyTonder'}
    );

    if (response!.statusCode >= 200 ||response.statusCode < 300) {
      var jsonResponse = json.decode(response.body) as Map<String, dynamic>;
      List<Items> responseItems = [];
      for (var i = 0; i <jsonResponse['items']!.length; i++) {
        responseItems.add(Items.fromJson(jsonResponse['items'][i]));
      }
      jsonResponse['items'] = responseItems;
      return CreateOrderResponse.fromJson(jsonResponse);
    } else {
      throw Exception(response.statusCode);
    }
  } catch (e) {
    throw Exception(e);
  }
}