Skip to content

Instantly share code, notes, and snippets.

@guilhermecarvalhocarneiro
Created September 22, 2021 13:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guilhermecarvalhocarneiro/08d2b4b8567452a0ebf538e3b3361934 to your computer and use it in GitHub Desktop.
Save guilhermecarvalhocarneiro/08d2b4b8567452a0ebf538e3b3361934 to your computer and use it in GitHub Desktop.
ServiceNullsafety
/// 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