85 lines
2.7 KiB
Dart
85 lines
2.7 KiB
Dart
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:manager_api/api.dart';
|
|
import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
|
|
import 'package:mymuseum_visitapp/Helpers/networkCheck.dart';
|
|
import 'package:mymuseum_visitapp/Models/resourceModel.dart';
|
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
|
import 'package:mymuseum_visitapp/client.dart';
|
|
|
|
class ApiService {
|
|
static Future<List<ConfigurationDTO>?> getConfigurations(Client client, VisitAppContext? visitAppContext) async {
|
|
try {
|
|
List<ConfigurationDTO>? configurations;
|
|
bool isOnline = await hasNetwork();
|
|
if(isOnline) {
|
|
configurations = await client.configurationApi!.configurationGet(instanceId: visitAppContext?.instanceId);
|
|
}
|
|
return configurations;
|
|
|
|
} catch (e) {
|
|
print(e);
|
|
print("IN CATCH");
|
|
return [];
|
|
}
|
|
}
|
|
|
|
static Future<List<SectionDTO>?> getAllSections(Client client, String configurationId) async {
|
|
try {
|
|
bool isOnline = await hasNetwork();
|
|
if(isOnline) {
|
|
List<SectionDTO>? sections = await client.sectionApi!.sectionGetFromConfiguration(configurationId);
|
|
return sections;
|
|
} else {
|
|
return []; // TODO return local list..
|
|
}
|
|
} catch (e) {
|
|
print(e);
|
|
print("IN CATCH");
|
|
return [];
|
|
}
|
|
}
|
|
|
|
static Future<void> getAndDownloadImage(Client client, ImageDTO imageDTO) async {
|
|
try {
|
|
bool isOnline = await hasNetwork();
|
|
if(isOnline) {
|
|
var source = imageDTO.source_;
|
|
if(imageDTO.source_!.contains("localhost:5000")) {
|
|
source = imageDTO.source_!.replaceAll("http://localhost:5000", client.apiApi!.basePath);
|
|
}
|
|
HttpClient client2 = HttpClient();
|
|
var _downloadData = <int>[];
|
|
client2.getUrl(Uri.parse(source!))
|
|
.then((HttpClientRequest request) {
|
|
return request.close();
|
|
})
|
|
.then((HttpClientResponse response) {
|
|
response.listen((d) => _downloadData.addAll(d),
|
|
onDone: () async {
|
|
final base64Str = base64.encode(_downloadData);
|
|
ResourceModel resourceModel = ResourceModel(id: imageDTO.resourceId, data: base64Str, type: ResourceType.Image);
|
|
await DatabaseHelper.instance.insert(DatabaseTableType.resources, resourceModel.toMap());
|
|
//var test = base64.decode(base64Str);
|
|
//return base64Str;
|
|
/*setState(() {
|
|
base64TEST = base64Str;
|
|
});*/
|
|
}
|
|
);
|
|
});
|
|
|
|
//return file;
|
|
} else {
|
|
//return null;
|
|
}
|
|
} catch (e) {
|
|
print(e);
|
|
print("IN CATCH");
|
|
//return [];
|
|
}
|
|
}
|
|
}
|
|
|