Created
September 22, 2021 13:25
-
-
Save guilhermecarvalhocarneiro/08d2b4b8567452a0ebf538e3b3361934 to your computer and use it in GitHub Desktop.
ServiceNullsafety
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// Service do model Cliente | |
/// | |
/// Os Métodos padrões gerados são: | |
/// fecthAll() -> Recupera a lista de Cliente da API. | |
/// detail() -> Recupera os detalhes de Cliente da API. | |
/// post() -> Salva os dados de uma instância do Cliente na API. | |
/// put() -> Atualiza os dados de uma instância do Cliente na API. | |
/// delete() -> Deleta os dados de uma instância do Cliente na API. | |
/// | |
/// Os métodos de acesso à API devem ser implementados no nessa classe. | |
/// [Travar o arquivo] | |
/// Caso deseje "travar" o arquivo para não ser parseado novamente | |
/// pelo manage do Django adicione um # antes da palavra abaixo | |
/// FileLocked | |
import 'package:dio/dio.dart'; | |
import 'package:flutter/material.dart'; | |
import 'dart:convert'; | |
import 'model.dart'; | |
import '../../../utils/config.dart'; | |
import '../../../utils/custom_dio.dart'; | |
import '../../../utils/util.dart'; | |
class ClienteService { | |
String _uri = "usuario/cliente/"; | |
ClienteModel _cliente = ClienteModel(); | |
List<ClienteModel> _clienteList = <ClienteModel>[]; | |
ClienteService({required ClienteModel cliente, List<ClienteModel>? clienteList}) { | |
_cliente = cliente; | |
} | |
Future<List<ClienteModel>> fetch({String? url}) async { | |
try { | |
_uri = "${Config.uri}usuario/cliente/"; | |
_clienteList.clear(); | |
final CustomDio _dio = CustomDio(_uri); | |
final dataResponse = await _dio.getHttp(uri: _uri); | |
if (dataResponse != null) { | |
final String _next = dataResponse["next"]; | |
final String _previous = dataResponse["previous"]; | |
final _dataItems = dataResponse["results"]; | |
for (var data in _dataItems) { | |
ClienteModel _cliente = ClienteModel.fromMap(data); | |
_cliente.nextUrl = _next; | |
_cliente.previousUrl = _previous; | |
_clienteList.add(_cliente); | |
} | |
_success("ok"); | |
} | |
} catch (error, exception) { | |
_error(error.toString(), exception.toString()); | |
} | |
return _clienteList; | |
} | |
Future<List<ClienteModel>> getMore(String uri) async { | |
try { | |
final CustomDio _dio = CustomDio(uri); | |
final dataResponse = await _dio.getHttp(uri: uri); | |
if (dataResponse != null) { | |
final String _next = dataResponse["next"]; | |
final String _previous = dataResponse["previous"]; | |
final _dataItems = dataResponse["results"]; | |
for (var data in _dataItems) { | |
ClienteModel _cliente = ClienteModel.fromMap(data); | |
_cliente.nextUrl = _next; | |
_cliente.previousUrl = _previous; | |
_clienteList.add(_cliente); | |
} | |
_success("ok"); | |
} | |
} catch (error, exception) { | |
_error(error.toString(), exception.toString()); | |
} | |
return _clienteList; | |
} | |
Future<ClienteModel> detail(ClienteModel cliente) async { | |
_uri = "${Config.uri}usuario/cliente/${cliente.id}/"; | |
try { | |
final CustomDio _dio = CustomDio(_uri); | |
final data = await _dio.getHttp(uri: _uri); | |
if (data != null) { | |
_cliente = ClienteModel.fromMap(data); | |
} | |
} catch (error, exception) { | |
_error(error.toString(), exception.toString()); | |
} | |
return _cliente; | |
} | |
Future<ClienteModel> post(ClienteModel cliente) async { | |
try { | |
final CustomDio _dio = CustomDio(_uri); | |
final _data = json.encode(cliente.toMap()); | |
final data = await _dio.postHttp(_data); | |
if (data != null) { | |
_cliente = ClienteModel.fromMap(data); | |
} | |
} catch (error, exception) { | |
_error(error.toString(), exception.toString()); | |
} | |
return _cliente; | |
} | |
Future<ClienteModel> put(ClienteModel cliente) async { | |
_uri = "${Config.uri}usuario/cliente/${cliente.id}/"; | |
try { | |
final CustomDio _dio = CustomDio(_uri); | |
final _data = json.encode(cliente.toMap()); | |
final data = await _dio.putHttp(_data, cliente.id.toString(), uri: _uri); | |
if (data != null) { | |
_cliente = ClienteModel.fromMap(data); | |
} | |
} catch (error, exception) { | |
_error(error.toString(), exception.toString()); | |
} | |
return _cliente; | |
} | |
Future<ClienteModel> patch(ClienteModel cliente) async { | |
_uri = "${Config.uri}usuario/cliente/${cliente.id}/"; | |
try { | |
final CustomDio _dio = CustomDio(_uri); | |
final _data = json.encode(cliente.toMap()); | |
final data = await _dio.patchHttp(_data, uri: _uri); | |
if (data != null) { | |
_cliente = ClienteModel.fromMap(data); | |
} | |
} catch (error, exception) { | |
_error(error.toString(), exception.toString()); | |
} | |
return _cliente; | |
} | |
Future<bool> delete(ClienteModel cliente) async { | |
_uri = "${Config.uri}usuario/cliente/${cliente.id}/"; | |
try { | |
final CustomDio _dio = CustomDio(_uri); | |
final _data = json.encode(cliente.toMap()); | |
final data = await _dio.deleteHttp(_data, cliente.id.toString(), uri: _uri); | |
if (data != null) { | |
return true; | |
} | |
return false; | |
} catch (error, exception) { | |
_error(error.toString(), exception.toString()); | |
return false; | |
} | |
} | |
void _success(String message, {int statusCode = 200}) async { | |
try { | |
DebugPrint.print("DebugSuccess: $message, Status: $statusCode"); | |
} catch (e) { | |
_error("$e", ""); | |
} | |
} | |
void _error(String error, String exception, {int statusCode = 500}) async { | |
try { | |
DebugPrint.error("DebugErro: ClienteService -> $error | $exception"); | |
} catch (error) { | |
DebugPrint.error("DebugErro: ClienteService ->$error"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment