Untitled
unknown
plain_text
9 months ago
5.2 kB
4
Indexable
import 'dart:convert';
import 'package:municipium/model/dashboard_menu/dashboard_menu.dart';
import 'package:municipium/model/municipality.dart';
import 'package:municipium/model/requests/request_logout_spid.dart';
import 'package:municipium/model/user/idp_model.dart';
import 'package:municipium/model/user/spid_object.dart';
import 'package:municipium/model/user/user_configuration_menu.dart';
import 'package:municipium/model/user/user_spid_model.dart';
import 'package:municipium/repositories/municipality_repository.dart';
import 'package:municipium/services/network/api/auth_spid_service/auth_spid_service.dart';
import 'package:municipium/services/network/api/mmc_municipium_service/mmc_municipium_service.dart';
import 'package:municipium/services/network/api/municipality_service/municipality_service.dart';
import 'package:municipium/utils/secure_storage.dart';
class UserRepository {
UserRepository(
{required this.secureStorage,
required this.municipalityRepository,
required this.authSpidService,
required this.mmcMunicipiumService,
required this.municipalityService});
final SecureStorage secureStorage;
final MunicipalityService municipalityService;
final MunicipalityRepository municipalityRepository;
final MmcMunicipiumService mmcMunicipiumService;
final AuthSpidService authSpidService;
Future<List<UserConfigurationMenu>> getMunicipalityUserService(
String baseUrl, String municipalityId) async {
final List<DashboardMenu> response = await municipalityService
.getMunicipalityDashboard(baseUrl, municipalityId);
List<UserConfigurationMenu> listOfConfiguration = [];
for (final dashboardMenu in response) {
listOfConfiguration.add(UserConfigurationMenu(
serviceName: dashboardMenu.serviceName,
isMandatory: dashboardMenu.isMandatory,
position: dashboardMenu.position,
assetImage: dashboardMenu.image,
slug: dashboardMenu.slug));
}
return listOfConfiguration;
}
Future<List<UserConfigurationMenu>> initUserMenuInShared(
String baseUrl, String municipalityId) async {
final savedConfiguraton = await secureStorage.getConfigurationMenu();
List<UserConfigurationMenu> listOfConfiguration = [];
if (savedConfiguraton != null) {
List<dynamic> decodedList = jsonDecode(savedConfiguraton);
listOfConfiguration =
decodedList.map((e) => UserConfigurationMenu.fromJson(e)).toList();
} else {
final List<DashboardMenu> response = await municipalityService
.getMunicipalityDashboard(baseUrl, municipalityId);
for (final dashboardMenu in response.take(4)) {
listOfConfiguration.add(UserConfigurationMenu(
serviceName: dashboardMenu.serviceName,
isMandatory: dashboardMenu.isMandatory,
position: dashboardMenu.position,
assetImage: dashboardMenu.image,
slug: dashboardMenu.slug));
}
String jsonListOfConfiguration =
jsonEncode(listOfConfiguration.map((e) => e.toJson()).toList());
secureStorage.setConfigurationMenu(jsonListOfConfiguration);
}
return listOfConfiguration;
}
Future<void> updateConfiguration(
UserConfigurationMenu config, int index) async {
final savedConfiguraton = await secureStorage.getConfigurationMenu();
List<UserConfigurationMenu> listOfConfiguration = [];
if (savedConfiguraton != null) {
List<dynamic> decodedList = jsonDecode(savedConfiguraton);
listOfConfiguration =
decodedList.map((e) => UserConfigurationMenu.fromJson(e)).toList();
listOfConfiguration[index] = config;
}
String jsonListOfConfiguration =
jsonEncode(listOfConfiguration.map((e) => e.toJson()).toList());
secureStorage.setConfigurationMenu(jsonListOfConfiguration);
}
Future<void> resetConfiguration(List<UserConfigurationMenu> conf) async {
String jsonListOfConfiguration =
jsonEncode(conf.map((e) => e.toJson()).toList());
secureStorage.setConfigurationMenu(jsonListOfConfiguration);
}
Future<List<IdpModel>> getIdps(
String baseUrlMmc,
) async {
try {
final responseIdps = await authSpidService.getIdps(baseUrlMmc);
return responseIdps;
} catch (e) {
rethrow;
}
}
Future<SpidUserModel> getUserSpid(String baseUrlMmc, String authId,
String municipalityId, String authSystem, String authIdOld) async {
try {
final spidUser = await mmcMunicipiumService.retriveUserData(
baseUrlMmc, authId, municipalityId, authSystem, authIdOld);
return spidUser;
} catch (ex) {
rethrow;
}
}
Future<bool> logoutUser(
String baseUrlMmc,
String playerId,
String cf,
String udid,
) async {
try {
RequestLogoutSpidId requestLogoutSpidId =
RequestLogoutSpidId(playerId: playerId, cf: cf, udid: udid);
RequestLogoutSpid requestLogoutSpid =
RequestLogoutSpid(id: requestLogoutSpidId);
final response =
await mmcMunicipiumService.logoutSpid(baseUrlMmc, requestLogoutSpid);
return response.response.statusCode == 200;
} catch (ex) {
rethrow;
}
}
}
Editor is loading...
Leave a Comment