Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import '../../data/repositories/remote/bandwidth_check.dart';
import '../../data/repositories/remote/mdms.dart';
import '../../models/app_config/app_config_model.dart';
import '../../models/auth/auth_model.dart';
import '../../models/entities/mdms_module_enums.dart';
import '../../models/entities/roles_type.dart';
import '../../utils/background_service.dart';
import '../../utils/environment_config.dart';
Expand Down Expand Up @@ -153,6 +154,7 @@ class ProjectBloc extends Bloc<ProjectEvent, ProjectState> {
loading: true,
projects: [],
selectedProject: null,
projectTypes: [],
));

final connectivityResult = await (Connectivity().checkConnectivity());
Expand Down Expand Up @@ -292,10 +294,40 @@ class ProjectBloc extends Bloc<ProjectEvent, ProjectState> {
}
}

List<ProjectTypeModel>? projectTypes;

try {
projectTypes = await mdmsRepository.searchProjectType(
envConfig.variables.mdmsApiPath,
MdmsRequestModel(
mdmsCriteria: MdmsCriteriaModel(
tenantId: envConfig.variables.tenantId,
moduleDetails: [
MdmsModuleDetailModel(
moduleName: ModuleEnums.hcmProjectTypes.toValue(),
masterDetails: [
MdmsMasterDetailModel(ModuleEnums.projectTypes.toValue()),
],
),
],
),
).toJson(),
);
emit(state.copyWith(projectTypes: projectTypes));
} catch (_) {
emit(
state.copyWith(
loading: false,
syncError: ProjectSyncErrorType.projectType,
),
);
}

emit(ProjectState(
projects: projects,
loading: false,
syncError: null,
projectTypes: projectTypes,
));

if (projects.length == 1) {
Expand All @@ -313,11 +345,22 @@ class ProjectBloc extends Bloc<ProjectEvent, ProjectState> {
projects.removeDuplicates((element) => element.id);

final selectedProject = await localSecureStore.selectedProject;
final getSelectedProjectType = await localSecureStore.selectedProjectType;
final currentRunningCycle = getSelectedProjectType?.cycles
?.where(
(e) =>
(e.startDate!) < DateTime.now().millisecondsSinceEpoch &&
(e.endDate!) > DateTime.now().millisecondsSinceEpoch,
)
.firstOrNull;

emit(
ProjectState(
loading: false,
projects: projects,
selectedProject: selectedProject,
selectedProjectType: getSelectedProjectType,
selectedCycle: currentRunningCycle,
),
);

Expand Down Expand Up @@ -542,6 +585,11 @@ class ProjectBloc extends Bloc<ProjectEvent, ProjectState> {
).toJson(),
);

final selectedProjectType = state.projectTypes
?.where((element) => element.id == event.model.projectTypeId)
.toList()
.firstOrNull;

final rowversionList = await isar.rowVersionLists
.filter()
.moduleEqualTo('egov-location')
Expand All @@ -566,6 +614,7 @@ class ProjectBloc extends Bloc<ProjectEvent, ProjectState> {
);
await boundaryLocalRepository.bulkCreate(boundaries);
await localSecureStore.setSelectedProject(event.model);
await localSecureStore.setSelectedProjectType(selectedProjectType);
await localSecureStore.setBoundaryRefetch(false);
final List<RowVersionList> rowVersionList = [];

Expand Down Expand Up @@ -601,6 +650,7 @@ class ProjectBloc extends Bloc<ProjectEvent, ProjectState> {
LeastLevelBoundarySingleton()
.setBoundary(boundaries: findLeastLevelBoundaries(boundaries));
await localSecureStore.setSelectedProject(event.model);
await localSecureStore.setSelectedProjectType(selectedProjectType);
}
await localSecureStore.setProjectSetUpComplete(event.model.id, true);
} catch (_) {
Expand All @@ -610,10 +660,21 @@ class ProjectBloc extends Bloc<ProjectEvent, ProjectState> {
));
}

final getSelectedProjectType = await localSecureStore.selectedProjectType;
final currentRunningCycle = getSelectedProjectType?.cycles
?.where(
(e) =>
(e.startDate!) < DateTime.now().millisecondsSinceEpoch &&
(e.endDate!) > DateTime.now().millisecondsSinceEpoch,
)
.firstOrNull;

emit(state.copyWith(
selectedProject: event.model,
loading: false,
syncError: null,
selectedProjectType: getSelectedProjectType,
selectedCycle: currentRunningCycle,
));
}

Expand Down Expand Up @@ -650,6 +711,9 @@ class ProjectState with _$ProjectState {
const ProjectState._();

const factory ProjectState({
List<ProjectTypeModel>? projectTypes,
ProjectTypeModel? selectedProjectType,
ProjectCycle? selectedCycle,
@Default([]) List<ProjectModel> projects,
ProjectModel? selectedProject,
@Default(false) bool loading,
Expand All @@ -669,5 +733,6 @@ enum ProjectSyncErrorType {
projectFacilities,
productVariants,
serviceDefinitions,
boundary
boundary,
projectType,
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -225,4 +225,25 @@ class LocalSecureStore {
return false;
}
}

Future<ProjectTypeModel?> get selectedProjectType async {
final projectBody = await storage.read(key: selectedProjectTypeKey);
if (projectBody == null) return null;

try {
final projectType =
ProjectTypeModelMapper.fromJson(json.encode(projectBody));

return projectType;
} catch (_) {
return null;
}
}

Future<void> setSelectedProjectType(ProjectTypeModel? projectType) async {
await storage.write(
key: selectedProjectTypeKey,
value: json.encode(projectType),
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import 'package:isar/isar.dart';
import '../../../models/app_config/app_config_model.dart' as app_configuration;
import '../../../models/mdms/service_registry/pgr_service_defenitions.dart';
import '../../../models/mdms/service_registry/service_registry_model.dart';
import '../../../models/privacy_notice/privacy_notice_model.dart';
import '../../../models/role_actions/role_actions_model.dart';
import '../../local_store/no_sql/schema/app_configuration.dart';
import '../../local_store/no_sql/schema/project_types.dart';
import '../../local_store/no_sql/schema/row_versions.dart';
import '../../local_store/no_sql/schema/service_registry.dart';

Expand Down Expand Up @@ -392,4 +394,31 @@ class MdmsRepository {
rethrow;
}
}

//To Search Project Type from MDMS
Future<List<ProjectTypeModel>> searchProjectType(
String apiEndPoint,
Map<String, dynamic> body,
) async {
try {
final response = await _client.post(apiEndPoint, data: body);

final jsonData = json.decode(response.toString())['MdmsRes']
['HCM-PROJECT-TYPES']['projectTypes'] as List;

List<ProjectTypeModel> projectTypes = jsonData
.map((e) => ProjectTypeModelMapper.fromJson(json.encode(e)))
.toList();

return projectTypes;
} on DioException catch (e) {
AppLogger.instance.error(
title: 'MDMS Repository',
message: '$e',
stackTrace: e.stackTrace,
);

rethrow;
}
}
}
Loading
Loading