Skip to content

Commit

Permalink
added operator updated biometric time (#373)
Browse files Browse the repository at this point in the history
Signed-off-by: Sachin S P <sachin.sp@cyberpwn.com>
Co-authored-by: Sachin S P <sachin.sp@cyberpwn.com>
  • Loading branch information
SachinPremkumar and Sachin S P authored Jun 13, 2024
1 parent 20c0c70 commit 90aeea1
Show file tree
Hide file tree
Showing 12 changed files with 87 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ DocumentCategoryApi getDocumentCategoryApi(RegistrationService registrationServi
@Provides
@Singleton
DashBoardDetailsApi getDashBoardDetailsApi(UserDetailDao userDetailDao, RegistrationRepository registrationRepository) {
return new DashBoardDetailsApi(userDetailDao, registrationRepository);
return new DashBoardDetailsApi(appContext,userDetailDao, registrationRepository);
}
}

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.mosip.registration_client.api_services;

import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;

import androidx.annotation.NonNull;
Expand All @@ -22,11 +24,18 @@
public class DashBoardDetailsApi implements DashBoardPigeon.DashBoardApi {
private UserDetailDao userDetailDao;
private RegistrationRepository registrationRepository;
public static final String PREFERRED_USERNAME = "preferred_username";
SharedPreferences sharedPreferences;
private Context context;

@Inject
public DashBoardDetailsApi(UserDetailDao userDetailDao, RegistrationRepository registrationRepository){
public DashBoardDetailsApi(Context context, UserDetailDao userDetailDao, RegistrationRepository registrationRepository){
this.context = context;
this.userDetailDao = userDetailDao;
this.registrationRepository = registrationRepository;
sharedPreferences = this.context.getSharedPreferences(
this.context.getString(io.mosip.registration.clientmanager.R.string.app_name),
Context.MODE_PRIVATE);
};

@Override
Expand Down Expand Up @@ -110,4 +119,19 @@ public void getSyncedPacketDetails(@NonNull DashBoardPigeon.Result<Long> result)
}
result.success((long)syncedPacketsCount);
}

@Override
public void getUpdatedTime(@NonNull DashBoardPigeon.Result<DashBoardPigeon.UpdatedTimeData> result) {
DashBoardPigeon.UpdatedTimeData updatedTime = null;
Long globalUpdatedTime;
try{
globalUpdatedTime = this.userDetailDao.getUpdatedTime(sharedPreferences.getString(PREFERRED_USERNAME,""));
updatedTime = new DashBoardPigeon.UpdatedTimeData.Builder()
.setUpdatedTime(String.valueOf(globalUpdatedTime))
.build();
} catch (Exception e) {
Log.e(getClass().getSimpleName(), "Getting Updated Date failed!" + Arrays.toString(e.getStackTrace()));
}
result.success(updatedTime);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@ public abstract class UserDetailDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
public abstract void insertAllUsers(List<UserDetail> users);

@Query("update user_detail set is_onboarded = :isOnboarded where id = :userId")
public abstract void updateUserDetail(boolean isOnboarded, String userId);
@Query("update user_detail set is_onboarded = :isOnboarded , updated_dtimes = :updatedDtimes where id = :userId")
public abstract void updateUserDetail(boolean isOnboarded, String userId,Long updatedDtimes);

@Transaction
public void truncateAndInsertAll(List<UserDetail> users) {
deleteAllUsers();
insertAllUsers(users);
}
@Query("select updated_dtimes from user_detail where id=:id and is_onboarded=1")
public abstract Long getUpdatedTime(String id);

}
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,7 @@ public class UserDetail implements Serializable {

@ColumnInfo(name = "is_officer")
private boolean isOfficer;

@ColumnInfo(name = "updated_dtimes")
private Long updatedDtimes;
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,9 @@ public String insertExtractedTemplates(List<BIR> templates, String userId) {

public String saveOnboardStatus(String userId) {
UserDetail userDetail = userDetailDao.getUserDetail(userId);
Long updatedTime = System.currentTimeMillis();
if (userDetail != null) {
userDetailDao.updateUserDetail(true, userId);
userDetailDao.updateUserDetail(true, userId,updatedTime);
}
return RegistrationConstants.SUCCESS;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,8 @@ public void saveUserAuthToken(String userId, String token, String refreshToken,
userTokenDao.insert(userToken);
}
public void updateUserDetail(String userId){
userDetailDao.updateUserDetail(true,userId);
Long updatedTime = System.currentTimeMillis();
userDetailDao.updateUserDetail(true,userId,updatedTime);
}
public String getUserAuthToken(String userId) {
UserToken userToken = userTokenDao.findByUsername(userId);
Expand Down
13 changes: 13 additions & 0 deletions lib/platform_android/dash_board_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,17 @@ class DashBoardImpl implements DashBoard {
}
return createdPacketsData;
}

@override
Future<UpdatedTimeData> getUpdatedTime() async {
late UpdatedTimeData updatedTime;
try {
updatedTime = await DashBoardApi().getUpdatedTime();
} on PlatformException {
debugPrint('Unable to get last updated time!');
} catch (e) {
debugPrint('Unable to get last updated time! ${e.toString()}');
}
return updatedTime;
}
}
2 changes: 2 additions & 0 deletions lib/platform_spi/dash_board.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,7 @@ abstract class DashBoard {

Future<int> getSyncedPacketDetails();

Future<UpdatedTimeData> getUpdatedTime();

factory DashBoard() => DashBoardImpl();
}
12 changes: 12 additions & 0 deletions lib/provider/registration_task_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class RegistrationTaskProvider with ChangeNotifier {

String _previewTemplate = "";
String _acknowledgementTemplate = "";
String _lastSuccessfulUpdatedTime = "";

List<Object?> get listOfProcesses => _listOfProcesses;
String get stringValueGlobalParam => _stringValueGlobalParam;
Expand All @@ -43,6 +44,7 @@ class RegistrationTaskProvider with ChangeNotifier {
String get acknowledgementTemplate => _acknowledgementTemplate;
String get registrationStartError => _registrationStartError;
bool get isRegistrationSaved => _isRegistrationSaved;
String get lastSuccessfulUpdatedTime => _lastSuccessfulUpdatedTime;

set listOfProcesses(List<Object?> value) {
_listOfProcesses = value;
Expand Down Expand Up @@ -231,4 +233,14 @@ class RegistrationTaskProvider with ChangeNotifier {
Future<List<DashBoardData?>> getDashBoardDetails() async {
return await dashBoard.getDashBoardDetails();
}

getLastUpdatedTime() async {
UpdatedTimeData lastUpdatedTime = await dashBoard.getUpdatedTime();
setLastSuccessfulSyncTime(lastUpdatedTime.updatedTime!);
}

setLastSuccessfulSyncTime(String syncTime) {
_lastSuccessfulUpdatedTime = syncTime;
notifyListeners();
}
}
13 changes: 12 additions & 1 deletion lib/ui/onboard/home_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class _HomePageState extends State<HomePage> {
late RegistrationTaskProvider registrationTaskProvider;
late ConnectivityProvider connectivityProvider;
late AppLocalizations appLocalizations = AppLocalizations.of(context)!;
String lastOperatorUpdateBiometricTime = "";

@override
void initState() {
Expand Down Expand Up @@ -83,6 +84,7 @@ class _HomePageState extends State<HomePage> {
}

void _fetchProcessSpec() async {
await registrationTaskProvider.getLastUpdatedTime();
await registrationTaskProvider.getListOfProcesses();
await _getFieldValues("preferredLang", globalProvider.selectedLanguage);
await globalProvider.getRegCenterName(
Expand Down Expand Up @@ -129,6 +131,15 @@ class _HomePageState extends State<HomePage> {
isMobile = MediaQuery.of(context).orientation == Orientation.portrait;
appLocalizations = AppLocalizations.of(context)!;


try {
String dateString = context.watch<RegistrationTaskProvider>().lastSuccessfulUpdatedTime;
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(int.parse(dateString));
lastOperatorUpdateBiometricTime = DateFormat("EEEE d MMMM, hh:mma").format(dateTime);
} catch (e) {
lastOperatorUpdateBiometricTime = "";
}

List<Map<String, dynamic>> operationalTasks = [
{
"icon": SvgPicture.asset(
Expand Down Expand Up @@ -166,7 +177,7 @@ class _HomePageState extends State<HomePage> {
builder: (context) =>
OperatorOnboardingBiometricsCaptureControl()));
},
"subtitle": "Last updated on Wednesday 12 Apr, 11:20PM"
"subtitle": lastOperatorUpdateBiometricTime.toString(),
},
{
"icon": SvgPicture.asset(
Expand Down
2 changes: 2 additions & 0 deletions lib/ui/onboard/widgets/operator_biometrics_capture_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:registration_client/model/biometric_attribute_data.dart';
import 'package:registration_client/pigeon/biometrics_pigeon.dart';
import 'package:registration_client/provider/biometric_capture_control_provider.dart';
import 'package:registration_client/provider/global_provider.dart';
import 'package:registration_client/provider/registration_task_provider.dart';
import 'package:registration_client/ui/onboard/widgets/operator_biometric_capture_scan_block_view.dart';
import 'package:registration_client/utils/app_config.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
Expand Down Expand Up @@ -207,6 +208,7 @@ class _OperatorBiometricsCaptureState
isSavingBiometrics = false;
});
if (isOperatorBiometricSaved != "") {
await context.read<RegistrationTaskProvider>().getLastUpdatedTime();
Navigator.pop(context);
showDialog<String>(
context: context,
Expand Down
9 changes: 9 additions & 0 deletions pigeon/dash_board.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ class DashBoardData {
});
}

class UpdatedTimeData {
final String? updatedTime;
UpdatedTimeData({
this.updatedTime,
});
}

@HostApi()
abstract class DashBoardApi {
@async
Expand All @@ -26,4 +33,6 @@ abstract class DashBoardApi {
int getCreatedPacketDetails();
@async
int getSyncedPacketDetails();
@async
UpdatedTimeData getUpdatedTime();
}

0 comments on commit 90aeea1

Please sign in to comment.