Update service generation + wip PDF + wip VideoViewer

This commit is contained in:
Thomas Fransolet 2023-12-14 17:47:30 +01:00
parent 09a0cd04e9
commit 19437196df
32 changed files with 1380 additions and 5 deletions

View File

@ -30,6 +30,7 @@ if (flutterVersionName == null) {
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply plugin: 'com.google.gms.google-services'
android { android {
compileSdkVersion 33 compileSdkVersion 33
@ -38,13 +39,20 @@ android {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
} }
packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
}
lintOptions { lintOptions {
disable 'InvalidPackage' disable 'InvalidPackage'
} }
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "be.unov.tablet_app" applicationId "be.unov.mymuseum.tablet_app"
minSdkVersion 20 minSdkVersion 20
targetSdkVersion 34 targetSdkVersion 34
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
@ -79,4 +87,8 @@ flutter {
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-analytics'
} }

View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "1034665398515",
"project_id": "mymuseum-3b97f",
"storage_bucket": "mymuseum-3b97f.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:1034665398515:android:b7475582b41ed32dd6a786",
"android_client_info": {
"package_name": "be.unov.mymuseum.tablet_app"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyBVCpwP5Uxh_nDUV2b6s4TybUqPJ-lvXm0"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

View File

@ -1,5 +1,5 @@
buildscript { buildscript {
ext.kotlin_version = '1.7.10' ext.kotlin_version = '1.9.0'
repositories { repositories {
google() google()
jcenter() jcenter()
@ -8,6 +8,7 @@ buildscript {
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.2.0' classpath 'com.android.tools.build:gradle:7.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.15'
} }
} }

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

View File

@ -0,0 +1,83 @@
import 'package:flutter/material.dart';
import 'package:tablet_app/Components/loading_common.dart';
import 'package:video_player/video_player.dart';
import '../../constants.dart';
class VideoViewer extends StatefulWidget {
final String videoUrl;
VideoViewer({required this.videoUrl});
@override
_VideoViewer createState() => _VideoViewer();
}
class _VideoViewer extends State<VideoViewer> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.networkUrl(Uri.parse(
widget.videoUrl))
..initialize().then((_) {
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
setState(() {});
});
}
@override
void dispose() {
super.dispose();
_controller.dispose();
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
Center(
child: InkWell(
onTap: () {
setState(() {
if(_controller.value.isInitialized) {
if(_controller.value.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
}
});
},
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Center(
child: Container(
child: LoadingCommon()
)
),
),
),
if(!_controller.value.isPlaying && _controller.value.isInitialized)
Center(
child: FloatingActionButton(
backgroundColor: kTestSecondColor.withOpacity(0.8),
onPressed: () {
setState(() {
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
color: Colors.white),
),
)
],
);
}
}

View File

@ -0,0 +1,125 @@
import 'dart:async';
import 'dart:convert';
import 'dart:io';
//import 'dart:html';
import 'dart:ui' as ui;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';
import 'package:manager_api/api.dart';
import 'package:path_provider/path_provider.dart';
import 'package:tablet_app/Components/loading_common.dart';
class PDFViewWidget extends StatefulWidget {
final SectionDTO? section;
PDFViewWidget({this.section});
@override
_PDFViewWidget createState() => _PDFViewWidget();
}
class _PDFViewWidget extends State<PDFViewWidget> {
PdfDTO pdfDTO = PdfDTO();
String remotePDFpath = "";
final Completer<PDFViewController> _controller = Completer<PDFViewController>();
int? pages = 0;
int? currentPage = 0;
bool isReady = false;
String errorMessage = '';
@override
void initState() {
print(widget.section!.data);
pdfDTO = PdfDTO.fromJson(jsonDecode(widget.section!.data!))!;
pdfDTO.source_ = "todo";
print(pdfDTO);
super.initState();
/*createFileOfPdfUrl(pdfDTO.source_!).then((f) {
setState(() {
remotePDFpath = f.path;
print("paaath");
print(remotePDFpath);
});
});*/
}
Future<File> createFileOfPdfUrl(String source_) async {
Completer<File> completer = Completer();
print("Start download file from internet!");
try {
// "https://berlin2017.droidcon.cod.newthinking.net/sites/global.droidcon.cod.newthinking.net/files/media/documents/Flutter%20-%2060FPS%20UI%20of%20the%20future%20%20-%20DroidconDE%2017.pdf";
// final url = "https://pdfkit.org/docs/guide.pdf";
final url = "http://www.pdf995.com/samples/pdf.pdf";
// TODO replace by source_
final filename = url.substring(url.lastIndexOf("/") + 1);
var request = await HttpClient().getUrl(Uri.parse(url));
var response = await request.close();
var bytes = await consolidateHttpClientResponseBytes(response);
var dir = await getApplicationDocumentsDirectory();
print("Download files");
print("${dir.path}/$filename");
File file = File("${dir.path}/$filename");
await file.writeAsBytes(bytes, flush: true);
completer.complete(file);
} catch (e) {
throw Exception('Error parsing asset file!');
}
return completer.future;
}
@override
void dispose() {
//_webView = null;
super.dispose();
}
@override
Widget build(BuildContext context) => pdfDTO.source_ != null && pdfDTO.source_!.length > 0 ?
FutureBuilder(
future: createFileOfPdfUrl(""),
builder: (context, AsyncSnapshot<dynamic> snapshot) {
print("snapshot.data");
print(snapshot.data);
if (snapshot.connectionState == ConnectionState.done) {
return PDFView(
filePath: snapshot.data.path,
enableSwipe: true,
swipeHorizontal: true,
autoSpacing: true,
pageFling: true,
onRender: (_pages) {
//setState(() {
pages = _pages;
isReady = true;
//});
},
onError: (error) {
print(error.toString());
},
onPageError: (page, error) {
print('$page: ${error.toString()}');
},
onViewCreated: (PDFViewController pdfViewController) {
//_controller.complete(pdfViewController);
},
onPageChanged: (int? page, int? total) {
print('page change: $page/$total');
},
);
} else {
return Center(
child: Container(
child: LoadingCommon()
)
);
}
}
) :
Center(child: Text("Le PDF ne peut pas être affiché, il n'existe pas"));
} //_webView

View File

@ -1463,6 +1463,48 @@ paths:
$ref: '#/components/schemas/ArticleDTO' $ref: '#/components/schemas/ArticleDTO'
security: security:
- bearer: [] - bearer: []
/api/Section/PdfDTO:
get:
tags:
- Section
operationId: Section_GetPdfDTO
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PdfDTO'
security:
- bearer: []
/api/Section/PuzzleDTO:
get:
tags:
- Section
operationId: Section_GetPuzzleDTO
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PuzzleDTO'
security:
- bearer: []
/api/Section/AgendaDTO:
get:
tags:
- Section
operationId: Section_GetAgendaDTO
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AgendaDTO'
security:
- bearer: []
/api/User: /api/User:
get: get:
tags: tags:
@ -1866,6 +1908,9 @@ components:
4 = Menu 4 = Menu
5 = Quizz 5 = Quizz
6 = Article 6 = Article
7 = PDF
8 = Puzzle
9 = Agenda
x-enumNames: x-enumNames:
- Map - Map
- Slider - Slider
@ -1874,6 +1919,9 @@ components:
- Menu - Menu
- Quizz - Quizz
- Article - Article
- PDF
- Puzzle
- Agenda
enum: enum:
- 0 - 0
- 1 - 1
@ -1882,6 +1930,9 @@ components:
- 4 - 4
- 5 - 5
- 6 - 6
- 7
- 8
- 9
ResourceDTO: ResourceDTO:
type: object type: object
additionalProperties: false additionalProperties: false
@ -1911,18 +1962,24 @@ components:
2 = ImageUrl 2 = ImageUrl
3 = VideoUrl 3 = VideoUrl
4 = Audio 4 = Audio
5 = PDF
6 = JSON
x-enumNames: x-enumNames:
- Image - Image
- Video - Video
- ImageUrl - ImageUrl
- VideoUrl - VideoUrl
- Audio - Audio
- PDF
- JSON
enum: enum:
- 0 - 0
- 1 - 1
- 2 - 2
- 3 - 3
- 4 - 4
- 5
- 6
DeviceDTO: DeviceDTO:
type: object type: object
additionalProperties: false additionalProperties: false
@ -2252,6 +2309,38 @@ components:
nullable: true nullable: true
items: items:
$ref: '#/components/schemas/ImageDTO' $ref: '#/components/schemas/ImageDTO'
PdfDTO:
type: object
additionalProperties: false
properties:
source:
type: string
nullable: true
PuzzleDTO:
type: object
additionalProperties: false
properties:
messageDebut:
type: array
nullable: true
items:
$ref: '#/components/schemas/TranslationDTO'
messageFin:
type: array
nullable: true
items:
$ref: '#/components/schemas/TranslationDTO'
image:
nullable: true
oneOf:
- $ref: '#/components/schemas/ImageDTO'
AgendaDTO:
type: object
additionalProperties: false
properties:
source:
type: string
nullable: true
User: User:
type: object type: object
additionalProperties: false additionalProperties: false

View File

@ -1,5 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:manager_api/api.dart'; import 'package:manager_api/api.dart';
@ -61,6 +62,9 @@ void main() async {
initialRoute: initialRoute, initialRoute: initialRoute,
tabletAppContext: localContext, tabletAppContext: localContext,
); );
await Firebase.initializeApp();
runApp(myApp); runApp(myApp);
} }

View File

@ -6,6 +6,8 @@ import FlutterMacOS
import Foundation import Foundation
import audio_session import audio_session
import firebase_core
import firebase_storage
import just_audio import just_audio
import package_info_plus import package_info_plus
import path_provider_foundation import path_provider_foundation
@ -16,6 +18,8 @@ import wakelock_plus
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
FLTFirebaseStoragePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseStoragePlugin"))
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))

View File

@ -2,6 +2,7 @@
.travis.yml .travis.yml
README.md README.md
analysis_options.yaml analysis_options.yaml
doc/AgendaDTO.md
doc/ArticleDTO.md doc/ArticleDTO.md
doc/AuthenticationApi.md doc/AuthenticationApi.md
doc/ConfigurationApi.md doc/ConfigurationApi.md
@ -23,7 +24,10 @@ doc/LoginDTO.md
doc/MapDTO.md doc/MapDTO.md
doc/MapTypeApp.md doc/MapTypeApp.md
doc/MenuDTO.md doc/MenuDTO.md
doc/PdfDTO.md
doc/PlayerMessageDTO.md doc/PlayerMessageDTO.md
doc/PuzzleDTO.md
doc/PuzzleDTOImage.md
doc/QuestionDTO.md doc/QuestionDTO.md
doc/QuizzDTO.md doc/QuizzDTO.md
doc/QuizzDTOBadLevel.md doc/QuizzDTOBadLevel.md
@ -59,6 +63,7 @@ lib/auth/authentication.dart
lib/auth/http_basic_auth.dart lib/auth/http_basic_auth.dart
lib/auth/http_bearer_auth.dart lib/auth/http_bearer_auth.dart
lib/auth/oauth.dart lib/auth/oauth.dart
lib/model/agenda_dto.dart
lib/model/article_dto.dart lib/model/article_dto.dart
lib/model/configuration_dto.dart lib/model/configuration_dto.dart
lib/model/device_detail_dto.dart lib/model/device_detail_dto.dart
@ -76,7 +81,10 @@ lib/model/login_dto.dart
lib/model/map_dto.dart lib/model/map_dto.dart
lib/model/map_type_app.dart lib/model/map_type_app.dart
lib/model/menu_dto.dart lib/model/menu_dto.dart
lib/model/pdf_dto.dart
lib/model/player_message_dto.dart lib/model/player_message_dto.dart
lib/model/puzzle_dto.dart
lib/model/puzzle_dto_image.dart
lib/model/question_dto.dart lib/model/question_dto.dart
lib/model/quizz_dto.dart lib/model/quizz_dto.dart
lib/model/quizz_dto_bad_level.dart lib/model/quizz_dto_bad_level.dart
@ -93,3 +101,7 @@ lib/model/user_detail_dto.dart
lib/model/video_dto.dart lib/model/video_dto.dart
lib/model/web_dto.dart lib/model/web_dto.dart
pubspec.yaml pubspec.yaml
test/agenda_dto_test.dart
test/pdf_dto_test.dart
test/puzzle_dto_image_test.dart
test/puzzle_dto_test.dart

View File

@ -97,6 +97,7 @@ Class | Method | HTTP request | Description
*SectionApi* | [**sectionDelete**](doc\/SectionApi.md#sectiondelete) | **DELETE** /api/Section/{id} | *SectionApi* | [**sectionDelete**](doc\/SectionApi.md#sectiondelete) | **DELETE** /api/Section/{id} |
*SectionApi* | [**sectionDeleteAllForConfiguration**](doc\/SectionApi.md#sectiondeleteallforconfiguration) | **DELETE** /api/Section/configuration/{id} | *SectionApi* | [**sectionDeleteAllForConfiguration**](doc\/SectionApi.md#sectiondeleteallforconfiguration) | **DELETE** /api/Section/configuration/{id} |
*SectionApi* | [**sectionGet**](doc\/SectionApi.md#sectionget) | **GET** /api/Section | *SectionApi* | [**sectionGet**](doc\/SectionApi.md#sectionget) | **GET** /api/Section |
*SectionApi* | [**sectionGetAgendaDTO**](doc\/SectionApi.md#sectiongetagendadto) | **GET** /api/Section/AgendaDTO |
*SectionApi* | [**sectionGetAllBeaconsForInstance**](doc\/SectionApi.md#sectiongetallbeaconsforinstance) | **GET** /api/Section/beacons/{instanceId} | *SectionApi* | [**sectionGetAllBeaconsForInstance**](doc\/SectionApi.md#sectiongetallbeaconsforinstance) | **GET** /api/Section/beacons/{instanceId} |
*SectionApi* | [**sectionGetAllSectionSubSections**](doc\/SectionApi.md#sectiongetallsectionsubsections) | **GET** /api/Section/{id}/subsections | *SectionApi* | [**sectionGetAllSectionSubSections**](doc\/SectionApi.md#sectiongetallsectionsubsections) | **GET** /api/Section/{id}/subsections |
*SectionApi* | [**sectionGetArticleDTO**](doc\/SectionApi.md#sectiongetarticledto) | **GET** /api/Section/ArticleDTO | *SectionApi* | [**sectionGetArticleDTO**](doc\/SectionApi.md#sectiongetarticledto) | **GET** /api/Section/ArticleDTO |
@ -104,6 +105,8 @@ Class | Method | HTTP request | Description
*SectionApi* | [**sectionGetFromConfiguration**](doc\/SectionApi.md#sectiongetfromconfiguration) | **GET** /api/Section/configuration/{id} | *SectionApi* | [**sectionGetFromConfiguration**](doc\/SectionApi.md#sectiongetfromconfiguration) | **GET** /api/Section/configuration/{id} |
*SectionApi* | [**sectionGetMapDTO**](doc\/SectionApi.md#sectiongetmapdto) | **GET** /api/Section/MapDTO | *SectionApi* | [**sectionGetMapDTO**](doc\/SectionApi.md#sectiongetmapdto) | **GET** /api/Section/MapDTO |
*SectionApi* | [**sectionGetMenuDTO**](doc\/SectionApi.md#sectiongetmenudto) | **GET** /api/Section/MenuDTO | *SectionApi* | [**sectionGetMenuDTO**](doc\/SectionApi.md#sectiongetmenudto) | **GET** /api/Section/MenuDTO |
*SectionApi* | [**sectionGetPdfDTO**](doc\/SectionApi.md#sectiongetpdfdto) | **GET** /api/Section/PdfDTO |
*SectionApi* | [**sectionGetPuzzleDTO**](doc\/SectionApi.md#sectiongetpuzzledto) | **GET** /api/Section/PuzzleDTO |
*SectionApi* | [**sectionGetQuizzDTO**](doc\/SectionApi.md#sectiongetquizzdto) | **GET** /api/Section/QuizzDTO | *SectionApi* | [**sectionGetQuizzDTO**](doc\/SectionApi.md#sectiongetquizzdto) | **GET** /api/Section/QuizzDTO |
*SectionApi* | [**sectionGetSliderDTO**](doc\/SectionApi.md#sectiongetsliderdto) | **GET** /api/Section/SliderDTO | *SectionApi* | [**sectionGetSliderDTO**](doc\/SectionApi.md#sectiongetsliderdto) | **GET** /api/Section/SliderDTO |
*SectionApi* | [**sectionGetVideoDTO**](doc\/SectionApi.md#sectiongetvideodto) | **GET** /api/Section/VideoDTO | *SectionApi* | [**sectionGetVideoDTO**](doc\/SectionApi.md#sectiongetvideodto) | **GET** /api/Section/VideoDTO |
@ -120,6 +123,7 @@ Class | Method | HTTP request | Description
## Documentation For Models ## Documentation For Models
- [AgendaDTO](doc\/AgendaDTO.md)
- [ArticleDTO](doc\/ArticleDTO.md) - [ArticleDTO](doc\/ArticleDTO.md)
- [ConfigurationDTO](doc\/ConfigurationDTO.md) - [ConfigurationDTO](doc\/ConfigurationDTO.md)
- [DeviceDTO](doc\/DeviceDTO.md) - [DeviceDTO](doc\/DeviceDTO.md)
@ -137,7 +141,10 @@ Class | Method | HTTP request | Description
- [MapDTO](doc\/MapDTO.md) - [MapDTO](doc\/MapDTO.md)
- [MapTypeApp](doc\/MapTypeApp.md) - [MapTypeApp](doc\/MapTypeApp.md)
- [MenuDTO](doc\/MenuDTO.md) - [MenuDTO](doc\/MenuDTO.md)
- [PdfDTO](doc\/PdfDTO.md)
- [PlayerMessageDTO](doc\/PlayerMessageDTO.md) - [PlayerMessageDTO](doc\/PlayerMessageDTO.md)
- [PuzzleDTO](doc\/PuzzleDTO.md)
- [PuzzleDTOImage](doc\/PuzzleDTOImage.md)
- [QuestionDTO](doc\/QuestionDTO.md) - [QuestionDTO](doc\/QuestionDTO.md)
- [QuizzDTO](doc\/QuizzDTO.md) - [QuizzDTO](doc\/QuizzDTO.md)
- [QuizzDTOBadLevel](doc\/QuizzDTOBadLevel.md) - [QuizzDTOBadLevel](doc\/QuizzDTOBadLevel.md)

View File

@ -0,0 +1,15 @@
# manager_api.model.AgendaDTO
## Load the model package
```dart
import 'package:manager_api/api.dart';
```
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**source_** | **String** | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

15
manager_api/doc/PdfDTO.md Normal file
View File

@ -0,0 +1,15 @@
# manager_api.model.PdfDTO
## Load the model package
```dart
import 'package:manager_api/api.dart';
```
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**source_** | **String** | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,17 @@
# manager_api.model.PuzzleDTO
## Load the model package
```dart
import 'package:manager_api/api.dart';
```
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**messageDebut** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
**messageFin** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
**image** | [**PuzzleDTOImage**](PuzzleDTOImage.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,19 @@
# manager_api.model.PuzzleDTOImage
## Load the model package
```dart
import 'package:manager_api/api.dart';
```
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**title** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
**description** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
**resourceId** | **String** | | [optional]
**source_** | **String** | | [optional]
**order** | **int** | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -13,6 +13,7 @@ Method | HTTP request | Description
[**sectionDelete**](SectionApi.md#sectiondelete) | **DELETE** /api/Section/{id} | [**sectionDelete**](SectionApi.md#sectiondelete) | **DELETE** /api/Section/{id} |
[**sectionDeleteAllForConfiguration**](SectionApi.md#sectiondeleteallforconfiguration) | **DELETE** /api/Section/configuration/{id} | [**sectionDeleteAllForConfiguration**](SectionApi.md#sectiondeleteallforconfiguration) | **DELETE** /api/Section/configuration/{id} |
[**sectionGet**](SectionApi.md#sectionget) | **GET** /api/Section | [**sectionGet**](SectionApi.md#sectionget) | **GET** /api/Section |
[**sectionGetAgendaDTO**](SectionApi.md#sectiongetagendadto) | **GET** /api/Section/AgendaDTO |
[**sectionGetAllBeaconsForInstance**](SectionApi.md#sectiongetallbeaconsforinstance) | **GET** /api/Section/beacons/{instanceId} | [**sectionGetAllBeaconsForInstance**](SectionApi.md#sectiongetallbeaconsforinstance) | **GET** /api/Section/beacons/{instanceId} |
[**sectionGetAllSectionSubSections**](SectionApi.md#sectiongetallsectionsubsections) | **GET** /api/Section/{id}/subsections | [**sectionGetAllSectionSubSections**](SectionApi.md#sectiongetallsectionsubsections) | **GET** /api/Section/{id}/subsections |
[**sectionGetArticleDTO**](SectionApi.md#sectiongetarticledto) | **GET** /api/Section/ArticleDTO | [**sectionGetArticleDTO**](SectionApi.md#sectiongetarticledto) | **GET** /api/Section/ArticleDTO |
@ -20,6 +21,8 @@ Method | HTTP request | Description
[**sectionGetFromConfiguration**](SectionApi.md#sectiongetfromconfiguration) | **GET** /api/Section/configuration/{id} | [**sectionGetFromConfiguration**](SectionApi.md#sectiongetfromconfiguration) | **GET** /api/Section/configuration/{id} |
[**sectionGetMapDTO**](SectionApi.md#sectiongetmapdto) | **GET** /api/Section/MapDTO | [**sectionGetMapDTO**](SectionApi.md#sectiongetmapdto) | **GET** /api/Section/MapDTO |
[**sectionGetMenuDTO**](SectionApi.md#sectiongetmenudto) | **GET** /api/Section/MenuDTO | [**sectionGetMenuDTO**](SectionApi.md#sectiongetmenudto) | **GET** /api/Section/MenuDTO |
[**sectionGetPdfDTO**](SectionApi.md#sectiongetpdfdto) | **GET** /api/Section/PdfDTO |
[**sectionGetPuzzleDTO**](SectionApi.md#sectiongetpuzzledto) | **GET** /api/Section/PuzzleDTO |
[**sectionGetQuizzDTO**](SectionApi.md#sectiongetquizzdto) | **GET** /api/Section/QuizzDTO | [**sectionGetQuizzDTO**](SectionApi.md#sectiongetquizzdto) | **GET** /api/Section/QuizzDTO |
[**sectionGetSliderDTO**](SectionApi.md#sectiongetsliderdto) | **GET** /api/Section/SliderDTO | [**sectionGetSliderDTO**](SectionApi.md#sectiongetsliderdto) | **GET** /api/Section/SliderDTO |
[**sectionGetVideoDTO**](SectionApi.md#sectiongetvideodto) | **GET** /api/Section/VideoDTO | [**sectionGetVideoDTO**](SectionApi.md#sectiongetvideodto) | **GET** /api/Section/VideoDTO |
@ -201,6 +204,45 @@ Name | Type | Description | Notes
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **sectionGetAgendaDTO**
> AgendaDTO sectionGetAgendaDTO()
### Example
```dart
import 'package:manager_api/api.dart';
// TODO Configure OAuth2 access token for authorization: bearer
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
final api_instance = SectionApi();
try {
final result = api_instance.sectionGetAgendaDTO();
print(result);
} catch (e) {
print('Exception when calling SectionApi->sectionGetAgendaDTO: $e\n');
}
```
### Parameters
This endpoint does not need any parameter.
### Return type
[**AgendaDTO**](AgendaDTO.md)
### Authorization
[bearer](../README.md#bearer)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **sectionGetAllBeaconsForInstance** # **sectionGetAllBeaconsForInstance**
> List<SectionDTO> sectionGetAllBeaconsForInstance(instanceId) > List<SectionDTO> sectionGetAllBeaconsForInstance(instanceId)
@ -490,6 +532,84 @@ This endpoint does not need any parameter.
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **sectionGetPdfDTO**
> PdfDTO sectionGetPdfDTO()
### Example
```dart
import 'package:manager_api/api.dart';
// TODO Configure OAuth2 access token for authorization: bearer
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
final api_instance = SectionApi();
try {
final result = api_instance.sectionGetPdfDTO();
print(result);
} catch (e) {
print('Exception when calling SectionApi->sectionGetPdfDTO: $e\n');
}
```
### Parameters
This endpoint does not need any parameter.
### Return type
[**PdfDTO**](PdfDTO.md)
### Authorization
[bearer](../README.md#bearer)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **sectionGetPuzzleDTO**
> PuzzleDTO sectionGetPuzzleDTO()
### Example
```dart
import 'package:manager_api/api.dart';
// TODO Configure OAuth2 access token for authorization: bearer
//defaultApiClient.getAuthentication<OAuth>('bearer').accessToken = 'YOUR_ACCESS_TOKEN';
final api_instance = SectionApi();
try {
final result = api_instance.sectionGetPuzzleDTO();
print(result);
} catch (e) {
print('Exception when calling SectionApi->sectionGetPuzzleDTO: $e\n');
}
```
### Parameters
This endpoint does not need any parameter.
### Return type
[**PuzzleDTO**](PuzzleDTO.md)
### Authorization
[bearer](../README.md#bearer)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **sectionGetQuizzDTO** # **sectionGetQuizzDTO**
> QuizzDTO sectionGetQuizzDTO() > QuizzDTO sectionGetQuizzDTO()

View File

@ -35,6 +35,7 @@ part 'api/resource_api.dart';
part 'api/section_api.dart'; part 'api/section_api.dart';
part 'api/user_api.dart'; part 'api/user_api.dart';
part 'model/agenda_dto.dart';
part 'model/article_dto.dart'; part 'model/article_dto.dart';
part 'model/configuration_dto.dart'; part 'model/configuration_dto.dart';
part 'model/device_dto.dart'; part 'model/device_dto.dart';
@ -52,7 +53,10 @@ part 'model/login_dto.dart';
part 'model/map_dto.dart'; part 'model/map_dto.dart';
part 'model/map_type_app.dart'; part 'model/map_type_app.dart';
part 'model/menu_dto.dart'; part 'model/menu_dto.dart';
part 'model/pdf_dto.dart';
part 'model/player_message_dto.dart'; part 'model/player_message_dto.dart';
part 'model/puzzle_dto.dart';
part 'model/puzzle_dto_image.dart';
part 'model/question_dto.dart'; part 'model/question_dto.dart';
part 'model/quizz_dto.dart'; part 'model/quizz_dto.dart';
part 'model/quizz_dto_bad_level.dart'; part 'model/quizz_dto_bad_level.dart';

View File

@ -213,6 +213,47 @@ class SectionApi {
return null; return null;
} }
/// Performs an HTTP 'GET /api/Section/AgendaDTO' operation and returns the [Response].
Future<Response> sectionGetAgendaDTOWithHttpInfo() async {
// ignore: prefer_const_declarations
final path = r'/api/Section/AgendaDTO';
// ignore: prefer_final_locals
Object? postBody;
final queryParams = <QueryParam>[];
final headerParams = <String, String>{};
final formParams = <String, String>{};
const contentTypes = <String>[];
return apiClient.invokeAPI(
path,
'GET',
queryParams,
postBody,
headerParams,
formParams,
contentTypes.isEmpty ? null : contentTypes.first,
);
}
Future<AgendaDTO?> sectionGetAgendaDTO() async {
final response = await sectionGetAgendaDTOWithHttpInfo();
if (response.statusCode >= HttpStatus.badRequest) {
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
}
// When a remote server returns no body with a status of 204, we shall not decode it.
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
// FormatException when trying to decode an empty string.
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'AgendaDTO',) as AgendaDTO;
}
return null;
}
/// Performs an HTTP 'GET /api/Section/beacons/{instanceId}' operation and returns the [Response]. /// Performs an HTTP 'GET /api/Section/beacons/{instanceId}' operation and returns the [Response].
/// Parameters: /// Parameters:
/// ///
@ -537,6 +578,88 @@ class SectionApi {
return null; return null;
} }
/// Performs an HTTP 'GET /api/Section/PdfDTO' operation and returns the [Response].
Future<Response> sectionGetPdfDTOWithHttpInfo() async {
// ignore: prefer_const_declarations
final path = r'/api/Section/PdfDTO';
// ignore: prefer_final_locals
Object? postBody;
final queryParams = <QueryParam>[];
final headerParams = <String, String>{};
final formParams = <String, String>{};
const contentTypes = <String>[];
return apiClient.invokeAPI(
path,
'GET',
queryParams,
postBody,
headerParams,
formParams,
contentTypes.isEmpty ? null : contentTypes.first,
);
}
Future<PdfDTO?> sectionGetPdfDTO() async {
final response = await sectionGetPdfDTOWithHttpInfo();
if (response.statusCode >= HttpStatus.badRequest) {
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
}
// When a remote server returns no body with a status of 204, we shall not decode it.
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
// FormatException when trying to decode an empty string.
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'PdfDTO',) as PdfDTO;
}
return null;
}
/// Performs an HTTP 'GET /api/Section/PuzzleDTO' operation and returns the [Response].
Future<Response> sectionGetPuzzleDTOWithHttpInfo() async {
// ignore: prefer_const_declarations
final path = r'/api/Section/PuzzleDTO';
// ignore: prefer_final_locals
Object? postBody;
final queryParams = <QueryParam>[];
final headerParams = <String, String>{};
final formParams = <String, String>{};
const contentTypes = <String>[];
return apiClient.invokeAPI(
path,
'GET',
queryParams,
postBody,
headerParams,
formParams,
contentTypes.isEmpty ? null : contentTypes.first,
);
}
Future<PuzzleDTO?> sectionGetPuzzleDTO() async {
final response = await sectionGetPuzzleDTOWithHttpInfo();
if (response.statusCode >= HttpStatus.badRequest) {
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
}
// When a remote server returns no body with a status of 204, we shall not decode it.
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
// FormatException when trying to decode an empty string.
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'PuzzleDTO',) as PuzzleDTO;
}
return null;
}
/// Performs an HTTP 'GET /api/Section/QuizzDTO' operation and returns the [Response]. /// Performs an HTTP 'GET /api/Section/QuizzDTO' operation and returns the [Response].
Future<Response> sectionGetQuizzDTOWithHttpInfo() async { Future<Response> sectionGetQuizzDTOWithHttpInfo() async {
// ignore: prefer_const_declarations // ignore: prefer_const_declarations

View File

@ -181,6 +181,8 @@ class ApiClient {
return valueString == 'true' || valueString == '1'; return valueString == 'true' || valueString == '1';
case 'DateTime': case 'DateTime':
return value is DateTime ? value : DateTime.tryParse(value); return value is DateTime ? value : DateTime.tryParse(value);
case 'AgendaDTO':
return AgendaDTO.fromJson(value);
case 'ArticleDTO': case 'ArticleDTO':
return ArticleDTO.fromJson(value); return ArticleDTO.fromJson(value);
case 'ConfigurationDTO': case 'ConfigurationDTO':
@ -215,8 +217,14 @@ class ApiClient {
return MapTypeAppTypeTransformer().decode(value); return MapTypeAppTypeTransformer().decode(value);
case 'MenuDTO': case 'MenuDTO':
return MenuDTO.fromJson(value); return MenuDTO.fromJson(value);
case 'PdfDTO':
return PdfDTO.fromJson(value);
case 'PlayerMessageDTO': case 'PlayerMessageDTO':
return PlayerMessageDTO.fromJson(value); return PlayerMessageDTO.fromJson(value);
case 'PuzzleDTO':
return PuzzleDTO.fromJson(value);
case 'PuzzleDTOImage':
return PuzzleDTOImage.fromJson(value);
case 'QuestionDTO': case 'QuestionDTO':
return QuestionDTO.fromJson(value); return QuestionDTO.fromJson(value);
case 'QuizzDTO': case 'QuizzDTO':

View File

@ -0,0 +1,112 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
part of openapi.api;
class AgendaDTO {
/// Returns a new [AgendaDTO] instance.
AgendaDTO({
this.source_,
});
String? source_;
@override
bool operator ==(Object other) => identical(this, other) || other is AgendaDTO &&
other.source_ == source_;
@override
int get hashCode =>
// ignore: unnecessary_parenthesis
(source_ == null ? 0 : source_!.hashCode);
@override
String toString() => 'AgendaDTO[source_=$source_]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
if (this.source_ != null) {
json[r'source'] = this.source_;
} else {
json[r'source'] = null;
}
return json;
}
/// Returns a new [AgendaDTO] instance and imports its values from
/// [value] if it's a [Map], null otherwise.
// ignore: prefer_constructors_over_static_methods
static AgendaDTO? fromJson(dynamic value) {
if (value is Map) {
final json = value.cast<String, dynamic>();
// Ensure that the map contains the required keys.
// Note 1: the values aren't checked for validity beyond being non-null.
// Note 2: this code is stripped in release mode!
assert(() {
requiredKeys.forEach((key) {
assert(json.containsKey(key), 'Required key "AgendaDTO[$key]" is missing from JSON.');
assert(json[key] != null, 'Required key "AgendaDTO[$key]" has a null value in JSON.');
});
return true;
}());
return AgendaDTO(
source_: mapValueOfType<String>(json, r'source'),
);
}
return null;
}
static List<AgendaDTO> listFromJson(dynamic json, {bool growable = false,}) {
final result = <AgendaDTO>[];
if (json is List && json.isNotEmpty) {
for (final row in json) {
final value = AgendaDTO.fromJson(row);
if (value != null) {
result.add(value);
}
}
}
return result.toList(growable: growable);
}
static Map<String, AgendaDTO> mapFromJson(dynamic json) {
final map = <String, AgendaDTO>{};
if (json is Map && json.isNotEmpty) {
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
for (final entry in json.entries) {
final value = AgendaDTO.fromJson(entry.value);
if (value != null) {
map[entry.key] = value;
}
}
}
return map;
}
// maps a json object with a list of AgendaDTO-objects as value to a dart map
static Map<String, List<AgendaDTO>> mapListFromJson(dynamic json, {bool growable = false,}) {
final map = <String, List<AgendaDTO>>{};
if (json is Map && json.isNotEmpty) {
// ignore: parameter_assignments
json = json.cast<String, dynamic>();
for (final entry in json.entries) {
map[entry.key] = AgendaDTO.listFromJson(entry.value, growable: growable,);
}
}
return map;
}
/// The list of required keys that must be present in a JSON.
static const requiredKeys = <String>{
};
}

View File

@ -0,0 +1,112 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
part of openapi.api;
class PdfDTO {
/// Returns a new [PdfDTO] instance.
PdfDTO({
this.source_,
});
String? source_;
@override
bool operator ==(Object other) => identical(this, other) || other is PdfDTO &&
other.source_ == source_;
@override
int get hashCode =>
// ignore: unnecessary_parenthesis
(source_ == null ? 0 : source_!.hashCode);
@override
String toString() => 'PdfDTO[source_=$source_]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
if (this.source_ != null) {
json[r'source'] = this.source_;
} else {
json[r'source'] = null;
}
return json;
}
/// Returns a new [PdfDTO] instance and imports its values from
/// [value] if it's a [Map], null otherwise.
// ignore: prefer_constructors_over_static_methods
static PdfDTO? fromJson(dynamic value) {
if (value is Map) {
final json = value.cast<String, dynamic>();
// Ensure that the map contains the required keys.
// Note 1: the values aren't checked for validity beyond being non-null.
// Note 2: this code is stripped in release mode!
assert(() {
requiredKeys.forEach((key) {
assert(json.containsKey(key), 'Required key "PdfDTO[$key]" is missing from JSON.');
assert(json[key] != null, 'Required key "PdfDTO[$key]" has a null value in JSON.');
});
return true;
}());
return PdfDTO(
source_: mapValueOfType<String>(json, r'source'),
);
}
return null;
}
static List<PdfDTO> listFromJson(dynamic json, {bool growable = false,}) {
final result = <PdfDTO>[];
if (json is List && json.isNotEmpty) {
for (final row in json) {
final value = PdfDTO.fromJson(row);
if (value != null) {
result.add(value);
}
}
}
return result.toList(growable: growable);
}
static Map<String, PdfDTO> mapFromJson(dynamic json) {
final map = <String, PdfDTO>{};
if (json is Map && json.isNotEmpty) {
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
for (final entry in json.entries) {
final value = PdfDTO.fromJson(entry.value);
if (value != null) {
map[entry.key] = value;
}
}
}
return map;
}
// maps a json object with a list of PdfDTO-objects as value to a dart map
static Map<String, List<PdfDTO>> mapListFromJson(dynamic json, {bool growable = false,}) {
final map = <String, List<PdfDTO>>{};
if (json is Map && json.isNotEmpty) {
// ignore: parameter_assignments
json = json.cast<String, dynamic>();
for (final entry in json.entries) {
map[entry.key] = PdfDTO.listFromJson(entry.value, growable: growable,);
}
}
return map;
}
/// The list of required keys that must be present in a JSON.
static const requiredKeys = <String>{
};
}

View File

@ -0,0 +1,134 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
part of openapi.api;
class PuzzleDTO {
/// Returns a new [PuzzleDTO] instance.
PuzzleDTO({
this.messageDebut = const [],
this.messageFin = const [],
this.image,
});
List<TranslationDTO>? messageDebut;
List<TranslationDTO>? messageFin;
PuzzleDTOImage? image;
@override
bool operator ==(Object other) => identical(this, other) || other is PuzzleDTO &&
other.messageDebut == messageDebut &&
other.messageFin == messageFin &&
other.image == image;
@override
int get hashCode =>
// ignore: unnecessary_parenthesis
(messageDebut == null ? 0 : messageDebut!.hashCode) +
(messageFin == null ? 0 : messageFin!.hashCode) +
(image == null ? 0 : image!.hashCode);
@override
String toString() => 'PuzzleDTO[messageDebut=$messageDebut, messageFin=$messageFin, image=$image]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
if (this.messageDebut != null) {
json[r'messageDebut'] = this.messageDebut;
} else {
json[r'messageDebut'] = null;
}
if (this.messageFin != null) {
json[r'messageFin'] = this.messageFin;
} else {
json[r'messageFin'] = null;
}
if (this.image != null) {
json[r'image'] = this.image;
} else {
json[r'image'] = null;
}
return json;
}
/// Returns a new [PuzzleDTO] instance and imports its values from
/// [value] if it's a [Map], null otherwise.
// ignore: prefer_constructors_over_static_methods
static PuzzleDTO? fromJson(dynamic value) {
if (value is Map) {
final json = value.cast<String, dynamic>();
// Ensure that the map contains the required keys.
// Note 1: the values aren't checked for validity beyond being non-null.
// Note 2: this code is stripped in release mode!
assert(() {
requiredKeys.forEach((key) {
assert(json.containsKey(key), 'Required key "PuzzleDTO[$key]" is missing from JSON.');
assert(json[key] != null, 'Required key "PuzzleDTO[$key]" has a null value in JSON.');
});
return true;
}());
return PuzzleDTO(
messageDebut: TranslationDTO.listFromJson(json[r'messageDebut']),
messageFin: TranslationDTO.listFromJson(json[r'messageFin']),
image: PuzzleDTOImage.fromJson(json[r'image']),
);
}
return null;
}
static List<PuzzleDTO> listFromJson(dynamic json, {bool growable = false,}) {
final result = <PuzzleDTO>[];
if (json is List && json.isNotEmpty) {
for (final row in json) {
final value = PuzzleDTO.fromJson(row);
if (value != null) {
result.add(value);
}
}
}
return result.toList(growable: growable);
}
static Map<String, PuzzleDTO> mapFromJson(dynamic json) {
final map = <String, PuzzleDTO>{};
if (json is Map && json.isNotEmpty) {
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
for (final entry in json.entries) {
final value = PuzzleDTO.fromJson(entry.value);
if (value != null) {
map[entry.key] = value;
}
}
}
return map;
}
// maps a json object with a list of PuzzleDTO-objects as value to a dart map
static Map<String, List<PuzzleDTO>> mapListFromJson(dynamic json, {bool growable = false,}) {
final map = <String, List<PuzzleDTO>>{};
if (json is Map && json.isNotEmpty) {
// ignore: parameter_assignments
json = json.cast<String, dynamic>();
for (final entry in json.entries) {
map[entry.key] = PuzzleDTO.listFromJson(entry.value, growable: growable,);
}
}
return map;
}
/// The list of required keys that must be present in a JSON.
static const requiredKeys = <String>{
};
}

View File

@ -0,0 +1,162 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
part of openapi.api;
class PuzzleDTOImage {
/// Returns a new [PuzzleDTOImage] instance.
PuzzleDTOImage({
this.title = const [],
this.description = const [],
this.resourceId,
this.source_,
this.order,
});
List<TranslationDTO>? title;
List<TranslationDTO>? description;
String? resourceId;
String? source_;
///
/// Please note: This property should have been non-nullable! Since the specification file
/// does not include a default value (using the "default:" property), however, the generated
/// source code must fall back to having a nullable type.
/// Consider adding a "default:" property in the specification file to hide this note.
///
int? order;
@override
bool operator ==(Object other) => identical(this, other) || other is PuzzleDTOImage &&
other.title == title &&
other.description == description &&
other.resourceId == resourceId &&
other.source_ == source_ &&
other.order == order;
@override
int get hashCode =>
// ignore: unnecessary_parenthesis
(title == null ? 0 : title!.hashCode) +
(description == null ? 0 : description!.hashCode) +
(resourceId == null ? 0 : resourceId!.hashCode) +
(source_ == null ? 0 : source_!.hashCode) +
(order == null ? 0 : order!.hashCode);
@override
String toString() => 'PuzzleDTOImage[title=$title, description=$description, resourceId=$resourceId, source_=$source_, order=$order]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
if (this.title != null) {
json[r'title'] = this.title;
} else {
json[r'title'] = null;
}
if (this.description != null) {
json[r'description'] = this.description;
} else {
json[r'description'] = null;
}
if (this.resourceId != null) {
json[r'resourceId'] = this.resourceId;
} else {
json[r'resourceId'] = null;
}
if (this.source_ != null) {
json[r'source'] = this.source_;
} else {
json[r'source'] = null;
}
if (this.order != null) {
json[r'order'] = this.order;
} else {
json[r'order'] = null;
}
return json;
}
/// Returns a new [PuzzleDTOImage] instance and imports its values from
/// [value] if it's a [Map], null otherwise.
// ignore: prefer_constructors_over_static_methods
static PuzzleDTOImage? fromJson(dynamic value) {
if (value is Map) {
final json = value.cast<String, dynamic>();
// Ensure that the map contains the required keys.
// Note 1: the values aren't checked for validity beyond being non-null.
// Note 2: this code is stripped in release mode!
assert(() {
requiredKeys.forEach((key) {
assert(json.containsKey(key), 'Required key "PuzzleDTOImage[$key]" is missing from JSON.');
assert(json[key] != null, 'Required key "PuzzleDTOImage[$key]" has a null value in JSON.');
});
return true;
}());
return PuzzleDTOImage(
title: TranslationDTO.listFromJson(json[r'title']),
description: TranslationDTO.listFromJson(json[r'description']),
resourceId: mapValueOfType<String>(json, r'resourceId'),
source_: mapValueOfType<String>(json, r'source'),
order: mapValueOfType<int>(json, r'order'),
);
}
return null;
}
static List<PuzzleDTOImage> listFromJson(dynamic json, {bool growable = false,}) {
final result = <PuzzleDTOImage>[];
if (json is List && json.isNotEmpty) {
for (final row in json) {
final value = PuzzleDTOImage.fromJson(row);
if (value != null) {
result.add(value);
}
}
}
return result.toList(growable: growable);
}
static Map<String, PuzzleDTOImage> mapFromJson(dynamic json) {
final map = <String, PuzzleDTOImage>{};
if (json is Map && json.isNotEmpty) {
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
for (final entry in json.entries) {
final value = PuzzleDTOImage.fromJson(entry.value);
if (value != null) {
map[entry.key] = value;
}
}
}
return map;
}
// maps a json object with a list of PuzzleDTOImage-objects as value to a dart map
static Map<String, List<PuzzleDTOImage>> mapListFromJson(dynamic json, {bool growable = false,}) {
final map = <String, List<PuzzleDTOImage>>{};
if (json is Map && json.isNotEmpty) {
// ignore: parameter_assignments
json = json.cast<String, dynamic>();
for (final entry in json.entries) {
map[entry.key] = PuzzleDTOImage.listFromJson(entry.value, growable: growable,);
}
}
return map;
}
/// The list of required keys that must be present in a JSON.
static const requiredKeys = <String>{
};
}

View File

@ -10,7 +10,7 @@
part of openapi.api; part of openapi.api;
/// 0 = Image 1 = Video 2 = ImageUrl 3 = VideoUrl 4 = Audio /// 0 = Image 1 = Video 2 = ImageUrl 3 = VideoUrl 4 = Audio 5 = PDF 6 = JSON
class ResourceType { class ResourceType {
/// Instantiate a new enum with the provided [value]. /// Instantiate a new enum with the provided [value].
const ResourceType._(this.value); const ResourceType._(this.value);
@ -28,6 +28,8 @@ class ResourceType {
static const imageUrl = ResourceType._(2); static const imageUrl = ResourceType._(2);
static const videoUrl = ResourceType._(3); static const videoUrl = ResourceType._(3);
static const audio = ResourceType._(4); static const audio = ResourceType._(4);
static const PDF = ResourceType._(5);
static const JSON = ResourceType._(6);
/// List of all possible values in this [enum][ResourceType]. /// List of all possible values in this [enum][ResourceType].
static const values = <ResourceType>[ static const values = <ResourceType>[
@ -36,6 +38,8 @@ class ResourceType {
imageUrl, imageUrl,
videoUrl, videoUrl,
audio, audio,
PDF,
JSON
]; ];
static ResourceType? fromJson(dynamic value) => ResourceTypeTypeTransformer().decode(value); static ResourceType? fromJson(dynamic value) => ResourceTypeTypeTransformer().decode(value);
@ -79,6 +83,8 @@ class ResourceTypeTypeTransformer {
case r'ImageUrl': return ResourceType.imageUrl; case r'ImageUrl': return ResourceType.imageUrl;
case r'VideoUrl': return ResourceType.videoUrl; case r'VideoUrl': return ResourceType.videoUrl;
case r'Audio': return ResourceType.audio; case r'Audio': return ResourceType.audio;
case r'PDF': return ResourceType.PDF;
case r'JSON': return ResourceType.JSON;
default: default:
if (!allowNull) { if (!allowNull) {
throw ArgumentError('Unknown enum value to decode: $data'); throw ArgumentError('Unknown enum value to decode: $data');

View File

@ -10,7 +10,7 @@
part of openapi.api; part of openapi.api;
/// 0 = Map 1 = Slider 2 = Video 3 = Web 4 = Menu 5 = Quizz 6 = Article /// 0 = Map 1 = Slider 2 = Video 3 = Web 4 = Menu 5 = Quizz 6 = Article 7 = PDF 8 = Puzzle 9 = Agenda
class SectionType { class SectionType {
/// Instantiate a new enum with the provided [value]. /// Instantiate a new enum with the provided [value].
const SectionType._(this.value); const SectionType._(this.value);
@ -30,6 +30,9 @@ class SectionType {
static const menu = SectionType._(4); static const menu = SectionType._(4);
static const quizz = SectionType._(5); static const quizz = SectionType._(5);
static const article = SectionType._(6); static const article = SectionType._(6);
static const pdf = SectionType._(7);
static const puzzle = SectionType._(8);
static const agenda = SectionType._(9);
/// List of all possible values in this [enum][SectionType]. /// List of all possible values in this [enum][SectionType].
static const values = <SectionType>[ static const values = <SectionType>[
@ -40,6 +43,9 @@ class SectionType {
menu, menu,
quizz, quizz,
article, article,
pdf,
puzzle,
agenda
]; ];
static SectionType? fromJson(dynamic value) => SectionTypeTypeTransformer().decode(value); static SectionType? fromJson(dynamic value) => SectionTypeTypeTransformer().decode(value);
@ -89,6 +95,9 @@ class SectionTypeTypeTransformer {
case r'Menu': return SectionType.menu; case r'Menu': return SectionType.menu;
case r'Quizz': return SectionType.quizz; case r'Quizz': return SectionType.quizz;
case r'Article': return SectionType.article; case r'Article': return SectionType.article;
case r'PDF': return SectionType.pdf;
case r'Puzzle': return SectionType.puzzle;
case r'Agenda': return SectionType.agenda;
default: default:
if (!allowNull) { if (!allowNull) {
throw ArgumentError('Unknown enum value to decode: $data'); throw ArgumentError('Unknown enum value to decode: $data');
@ -107,6 +116,9 @@ class SectionTypeTypeTransformer {
case 4: return SectionType.menu; case 4: return SectionType.menu;
case 5: return SectionType.quizz; case 5: return SectionType.quizz;
case 6: return SectionType.article; case 6: return SectionType.article;
case 7: return SectionType.pdf;
case 8: return SectionType.puzzle;
case 9: return SectionType.agenda;
default: default:
if (!allowNull) { if (!allowNull) {
throw ArgumentError('Unknown enum value to decode: $data'); throw ArgumentError('Unknown enum value to decode: $data');

View File

@ -0,0 +1,27 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
import 'package:manager_api/api.dart';
import 'package:test/test.dart';
// tests for AgendaDTO
void main() {
// final instance = AgendaDTO();
group('test AgendaDTO', () {
// String source_
test('to test the property `source_`', () async {
// TODO
});
});
}

View File

@ -0,0 +1,27 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
import 'package:manager_api/api.dart';
import 'package:test/test.dart';
// tests for PdfDTO
void main() {
// final instance = PdfDTO();
group('test PdfDTO', () {
// String source_
test('to test the property `source_`', () async {
// TODO
});
});
}

View File

@ -0,0 +1,47 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
import 'package:manager_api/api.dart';
import 'package:test/test.dart';
// tests for PuzzleDTOImage
void main() {
// final instance = PuzzleDTOImage();
group('test PuzzleDTOImage', () {
// List<TranslationDTO> title (default value: const [])
test('to test the property `title`', () async {
// TODO
});
// List<TranslationDTO> description (default value: const [])
test('to test the property `description`', () async {
// TODO
});
// String resourceId
test('to test the property `resourceId`', () async {
// TODO
});
// String source_
test('to test the property `source_`', () async {
// TODO
});
// int order
test('to test the property `order`', () async {
// TODO
});
});
}

View File

@ -0,0 +1,37 @@
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12
// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
import 'package:manager_api/api.dart';
import 'package:test/test.dart';
// tests for PuzzleDTO
void main() {
// final instance = PuzzleDTO();
group('test PuzzleDTO', () {
// List<TranslationDTO> messageDebut (default value: const [])
test('to test the property `messageDebut`', () async {
// TODO
});
// List<TranslationDTO> messageFin (default value: const [])
test('to test the property `messageFin`', () async {
// TODO
});
// PuzzleDTOImage image
test('to test the property `image`', () async {
// TODO
});
});
}

View File

@ -48,6 +48,10 @@ dependencies:
flutter_launcher_icons: ^0.13.1 # All but web flutter_launcher_icons: ^0.13.1 # All but web
#flutter_svg_provider: ^1.0.6 #flutter_svg_provider: ^1.0.6
flutter_widget_from_html: ^0.10.1 flutter_widget_from_html: ^0.10.1
flutter_pdfview: ^1.3.2
firebase_storage: ^11.5.6
firebase_core: ^2.24.2
video_player: ^2.8.1
openapi_generator_cli: ^4.13.1 openapi_generator_cli: ^4.13.1
openapi_generator: ^4.13.1 openapi_generator: ^4.13.1

View File

@ -6,9 +6,15 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <firebase_core/firebase_core_plugin_c_api.h>
#include <firebase_storage/firebase_storage_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h> #include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
FirebaseCorePluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
FirebaseStoragePluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FirebaseStoragePluginCApi"));
UrlLauncherWindowsRegisterWithRegistrar( UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows")); registry->GetRegistrarForPlugin("UrlLauncherWindows"));
} }

View File

@ -3,6 +3,8 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
firebase_core
firebase_storage
url_launcher_windows url_launcher_windows
) )