step 17 : proteksi presensi selfie button clock in & clock out

This commit is contained in:
sindhu
2024-01-27 18:36:07 +07:00
parent 79c0729979
commit 84057f32b0
4 changed files with 113 additions and 69 deletions

View File

@@ -18,7 +18,16 @@ abstract class BaseRepository {
final QueryResult result = await graphql.mutate(options); final QueryResult result = await graphql.mutate(options);
if (result.hasException) { if (result.hasException) {
throw BaseRepositoryException(message: result.exception.toString()); // throw BaseRepositoryException(message: result.exception.toString());
if (result.exception != null) {
if (result.exception!.graphqlErrors.isNotEmpty) {
String error = "";
if (result.exception!.graphqlErrors[0].message != "") {
error += result.exception!.graphqlErrors[0].message;
throw BaseRepositoryException(message: error);
}
}
}
} }
// return result.data!; // return result.data!;
@@ -36,8 +45,19 @@ abstract class BaseRepository {
final QueryResult result = await graphql.query(options); final QueryResult result = await graphql.query(options);
if (result.hasException) { if (result.hasException) {
throw BaseRepositoryException(message: result.exception.toString()); // throw BaseRepositoryException(message: result.exception.toString());
if (result.exception != null) {
if (result.exception!.graphqlErrors.isNotEmpty) {
if (result.exception!.graphqlErrors[0].message != "") {
throw BaseRepositoryException(
message: result.exception!.graphqlErrors[0].message.toString(),
);
} }
}
}
}
// throw BaseRepositoryException(message: result.exception.toString());
return result.data!; return result.data!;
} catch (e) { } catch (e) {

View File

@@ -66,6 +66,7 @@ class CheckPresensiJamNotifier extends StateNotifier<CheckPresensiJamState> {
state = CheckPresensiJamStateDone(model: resp); state = CheckPresensiJamStateDone(model: resp);
} catch (e) { } catch (e) {
if (e is BaseRepositoryException) { if (e is BaseRepositoryException) {
print(e.message);
state = CheckPresensiJamStateError(message: e.message ?? ""); state = CheckPresensiJamStateError(message: e.message ?? "");
} else { } else {
state = CheckPresensiJamStateError(message: e.toString()); state = CheckPresensiJamStateError(message: e.toString());

View File

@@ -290,13 +290,14 @@ class PresensiSelfieScreen extends HookConsumerWidget {
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
return CustomDialogPresensiSukses( return CustomDialogPresensiSukses(
isLoadingAddressUserLocation: isLoadingAddressUserLocation,
isiPesan: isiPesan:
'Pengajuan presensi telah diajukan, mohon menunggu approval team leader! ', 'Pengajuan presensi telah diajukan, mohon menunggu approval team leader! ',
messageStatus: 'Clock In Berhasil', messageStatus: 'Clock In Berhasil',
); );
}, },
); );
requestLocationPermission(); // requestLocationPermission();
} }
// else{ // else{
// if(next.model == "WARNING"){ // if(next.model == "WARNING"){
@@ -323,13 +324,14 @@ class PresensiSelfieScreen extends HookConsumerWidget {
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
return CustomDialogPresensiSukses( return CustomDialogPresensiSukses(
isLoadingAddressUserLocation: isLoadingAddressUserLocation,
isiPesan: isiPesan:
'Pengajuan presensi telah diajukan, mohon menunggu approval team leader! ', 'Pengajuan presensi telah diajukan, mohon menunggu approval team leader! ',
messageStatus: 'Clock Out Berhasil', messageStatus: 'Clock Out Berhasil',
); );
}, },
); );
requestLocationPermission(); // requestLocationPermission();
} }
// else{ // else{
// if(next.model == "WARNING"){ // if(next.model == "WARNING"){
@@ -796,11 +798,14 @@ class PresensiSelfieScreen extends HookConsumerWidget {
// onPressed: () { // onPressed: () {
// Navigator.of(context).pushNamed(homeRoute); // Navigator.of(context).pushNamed(homeRoute);
// }, // },
onPressed: () { onPressed: (fileDataBase64.value.isEmpty)
? () {}
: () {
final T_TransactionM_StaffID = final T_TransactionM_StaffID =
selectedUser?.model.staffId ?? ""; selectedUser?.model.staffId ?? "";
final T_TransactionM_CompanyID = final T_TransactionM_CompanyID =
selectedUser?.model.companyId ?? ""; selectedUser?.model.companyId ??
"";
final T_TransactionCurrentLatitude = final T_TransactionCurrentLatitude =
positionLatitude.value; positionLatitude.value;
final T_TransactionCurrentLongitude = final T_TransactionCurrentLongitude =
@@ -811,7 +816,8 @@ class PresensiSelfieScreen extends HookConsumerWidget {
""; "";
final T_TransactionSelfiePhoto = final T_TransactionSelfiePhoto =
fileDataBase64.value; fileDataBase64.value;
final token = selectedUser?.token ?? ""; final token =
selectedUser?.token ?? "";
showConfirmationDialog( showConfirmationDialog(
context, context,
@@ -830,8 +836,10 @@ class PresensiSelfieScreen extends HookConsumerWidget {
}, },
style: ButtonStyle( style: ButtonStyle(
backgroundColor: backgroundColor:
MaterialStateColor.resolveWith( MaterialStateColor.resolveWith((st) =>
(st) => Constant.textOrange), (fileDataBase64.value.isEmpty)
? Constant.textDarkGrey
: Constant.textOrange),
shape: MaterialStateProperty.all< shape: MaterialStateProperty.all<
RoundedRectangleBorder>( RoundedRectangleBorder>(
RoundedRectangleBorder( RoundedRectangleBorder(
@@ -917,11 +925,15 @@ class PresensiSelfieScreen extends HookConsumerWidget {
// onPressed: () { // onPressed: () {
// Navigator.of(context).pushNamed(homeRoute); // Navigator.of(context).pushNamed(homeRoute);
// }, // },
onPressed: () { onPressed: (fileDataBase64.value.isEmpty)
? () {}
: () {
final T_TransactionM_StaffID = final T_TransactionM_StaffID =
selectedUser?.model.staffId ?? ""; selectedUser?.model.staffId ??
"";
final T_TransactionM_CompanyID = final T_TransactionM_CompanyID =
selectedUser?.model.companyId ?? ""; selectedUser?.model.companyId ??
"";
final T_TransactionCurrentLatitude = final T_TransactionCurrentLatitude =
positionLatitude.value; positionLatitude.value;
final T_TransactionCurrentLongitude = final T_TransactionCurrentLongitude =
@@ -932,7 +944,8 @@ class PresensiSelfieScreen extends HookConsumerWidget {
""; "";
final T_TransactionSelfiePhoto = final T_TransactionSelfiePhoto =
fileDataBase64.value; fileDataBase64.value;
final token = selectedUser?.token ?? ""; final token =
selectedUser?.token ?? "";
showConfirmationDialog( showConfirmationDialog(
context, context,
@@ -950,8 +963,10 @@ class PresensiSelfieScreen extends HookConsumerWidget {
}, },
style: ButtonStyle( style: ButtonStyle(
backgroundColor: backgroundColor:
MaterialStateColor.resolveWith( MaterialStateColor.resolveWith((st) =>
(st) => Constant.textOrange), (fileDataBase64.value.isEmpty)
? Constant.textDarkGrey
: Constant.textOrange),
shape: MaterialStateProperty.all< shape: MaterialStateProperty.all<
RoundedRectangleBorder>( RoundedRectangleBorder>(
RoundedRectangleBorder( RoundedRectangleBorder(

View File

@@ -1,13 +1,18 @@
import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import '../app/constant.dart'; import '../app/constant.dart';
import '../app/route.dart';
class CustomDialogPresensiSukses extends HookConsumerWidget { class CustomDialogPresensiSukses extends HookConsumerWidget {
final String messageStatus; final String messageStatus;
final String isiPesan; final String isiPesan;
final ValueNotifier<bool> isLoadingAddressUserLocation;
CustomDialogPresensiSukses({ CustomDialogPresensiSukses({
required this.isLoadingAddressUserLocation,
required this.messageStatus, required this.messageStatus,
required this.isiPesan, required this.isiPesan,
}); });
@@ -79,7 +84,10 @@ class CustomDialogPresensiSukses extends HookConsumerWidget {
), ),
ElevatedButton( ElevatedButton(
onPressed: () { onPressed: () {
Navigator.of(context).pop(); // Close the dialog Navigator.of(context).pushNamedAndRemoveUntil(
homeRoute,
(route) => false,
);
}, },
style: ButtonStyle( style: ButtonStyle(
backgroundColor: MaterialStateColor.resolveWith( backgroundColor: MaterialStateColor.resolveWith(