step 21 : rekap kehadiran di home screen & update versi 1.0.2
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:absensi_sas/app/constant.dart';
|
||||
import 'package:absensi_sas/provider/current_rekap_kehadiran_home_provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:geocoding/geocoding.dart';
|
||||
@@ -19,6 +20,7 @@ import '../../widget/real_time.dart';
|
||||
import '../../widget/sankbar_widget.dart';
|
||||
import '../presensi/check_distance_provider.dart';
|
||||
import '../presensi/check_presensi_jam_provider.dart';
|
||||
import 'rekap_kehadiran_home_screen_provider.dart';
|
||||
|
||||
class HomeScreen extends HookConsumerWidget {
|
||||
const HomeScreen({super.key});
|
||||
@@ -30,6 +32,9 @@ class HomeScreen extends HookConsumerWidget {
|
||||
final varCurrentDistanceProvider = ref.watch(currentCheckDistanceProvider);
|
||||
final varCurrentCheckJamProvider =
|
||||
ref.watch(currentCheckJamPresensiProvider);
|
||||
|
||||
final varCurrentRekapKehadiranProvider =
|
||||
ref.watch(currentRekapKehadiranHomeProvider);
|
||||
final positionLatitude = useState<String>("");
|
||||
final positionLongitude = useState<String>("");
|
||||
// GoogleSignInAccount? currentUserGoogle =
|
||||
@@ -70,6 +75,16 @@ class HomeScreen extends HookConsumerWidget {
|
||||
selectedUser?.token ?? "",
|
||||
inpVariablesCheckPresensiJam,
|
||||
);
|
||||
|
||||
// panggil rekap kehadiran home screen
|
||||
ref
|
||||
.read(rekapKehadiranHomeScreenProvider.notifier)
|
||||
.rekapKehadiranHomeScreen(
|
||||
selectedUser?.model.staffId ?? "",
|
||||
selectedUser?.model.companyId ?? "",
|
||||
selectedUser?.token ?? "",
|
||||
inpVariablesCheckPresensiJam,
|
||||
);
|
||||
}
|
||||
});
|
||||
return () {};
|
||||
@@ -180,6 +195,20 @@ class HomeScreen extends HookConsumerWidget {
|
||||
}
|
||||
});
|
||||
|
||||
// rekap kehadiran home screen
|
||||
ref.listen(rekapKehadiranHomeScreenProvider, (prev, next) {
|
||||
if (next is RekapKehadiranHomeScreenStateLoading) {
|
||||
isLoadingProsesCheckDistance.value = true;
|
||||
} else if (next is RekapKehadiranHomeScreenStateError) {
|
||||
isLoadingProsesCheckDistance.value = false;
|
||||
print("Error : " + next.toString());
|
||||
SanckbarWidget(
|
||||
context, "Error : " + next.toString(), snackbarType.warning);
|
||||
} else if (next is RekapKehadiranHomeScreenStateDone) {
|
||||
isLoadingProsesCheckDistance.value = false;
|
||||
}
|
||||
});
|
||||
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(
|
||||
top: Constant.getActualYPhone(context: context, y: 30),
|
||||
@@ -383,6 +412,16 @@ class HomeScreen extends HookConsumerWidget {
|
||||
selectedUser?.token ?? "",
|
||||
inpVariablesCheckPresensiJam,
|
||||
);
|
||||
|
||||
// panggil rekap kehadiran home screen
|
||||
ref
|
||||
.read(rekapKehadiranHomeScreenProvider.notifier)
|
||||
.rekapKehadiranHomeScreen(
|
||||
selectedUser?.model.staffId ?? "",
|
||||
selectedUser?.model.companyId ?? "",
|
||||
selectedUser?.token ?? "",
|
||||
inpVariablesCheckPresensiJam,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: SingleChildScrollView(
|
||||
@@ -693,12 +732,12 @@ class HomeScreen extends HookConsumerWidget {
|
||||
//Menu Rekap Presensi
|
||||
Padding(
|
||||
padding: EdgeInsets.only(
|
||||
right:
|
||||
Constant.getActualXPhone(context: context, x: 27),
|
||||
left:
|
||||
Constant.getActualXPhone(context: context, x: 33),
|
||||
bottom: Constant.getActualYPhone(
|
||||
context: context, y: 40)),
|
||||
right:
|
||||
Constant.getActualXPhone(context: context, x: 27),
|
||||
left: Constant.getActualXPhone(context: context, x: 33),
|
||||
bottom:
|
||||
Constant.getActualYPhone(context: context, y: 40),
|
||||
),
|
||||
child: Container(
|
||||
width:
|
||||
Constant.getActualXPhone(context: context, x: 330),
|
||||
@@ -750,7 +789,8 @@ class HomeScreen extends HookConsumerWidget {
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'24 hari',
|
||||
// '24 hari',
|
||||
varCurrentRekapKehadiranProvider?.kehadiran ?? "",
|
||||
style: Constant.subtitle_600_14(
|
||||
context: context)
|
||||
.copyWith(
|
||||
@@ -802,7 +842,8 @@ class HomeScreen extends HookConsumerWidget {
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'2 hari',
|
||||
// '2 hari',
|
||||
varCurrentRekapKehadiranProvider?.tidakHadir ?? "",
|
||||
style: Constant.subtitle_600_14(
|
||||
context: context)
|
||||
.copyWith(
|
||||
@@ -854,7 +895,8 @@ class HomeScreen extends HookConsumerWidget {
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'5 hari',
|
||||
// '5 hari',
|
||||
varCurrentRekapKehadiranProvider?.lembur ?? "",
|
||||
style: Constant.subtitle_600_14(
|
||||
context: context)
|
||||
.copyWith(
|
||||
|
||||
83
lib/screen/home/rekap_kehadiran_home_screen_provider.dart
Normal file
83
lib/screen/home/rekap_kehadiran_home_screen_provider.dart
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
import '../../model/rekap_kehadiran_home_screen_model.dart';
|
||||
import '../../provider/current_rekap_kehadiran_home_provider.dart';
|
||||
import '../../repository/presensi_repository.dart';
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../../provider/dio_provider.dart';
|
||||
import '../../provider/graphql_provider.dart';
|
||||
import '../../repository/base_repository.dart';
|
||||
|
||||
abstract class RekapKehadiranHomeScreenState extends Equatable {
|
||||
final DateTime date;
|
||||
const RekapKehadiranHomeScreenState(this.date);
|
||||
@override
|
||||
List<Object?> get props => [date];
|
||||
}
|
||||
|
||||
class RekapKehadiranHomeScreenStateInit extends RekapKehadiranHomeScreenState {
|
||||
RekapKehadiranHomeScreenStateInit() : super(DateTime.now());
|
||||
}
|
||||
|
||||
class RekapKehadiranHomeScreenStateLoading extends RekapKehadiranHomeScreenState {
|
||||
RekapKehadiranHomeScreenStateLoading() : super(DateTime.now());
|
||||
}
|
||||
|
||||
class RekapKehadiranHomeScreenStateError extends RekapKehadiranHomeScreenState {
|
||||
final String message;
|
||||
RekapKehadiranHomeScreenStateError({
|
||||
required this.message,
|
||||
}) : super(DateTime.now());
|
||||
}
|
||||
|
||||
class RekapKehadiranHomeScreenStateDone extends RekapKehadiranHomeScreenState {
|
||||
final RekapKehadiranHomeScreenModel model;
|
||||
RekapKehadiranHomeScreenStateDone({
|
||||
required this.model,
|
||||
}) : super(DateTime.now());
|
||||
}
|
||||
|
||||
//notifier
|
||||
class RekapKehadiranHomeScreenNotifier extends StateNotifier<RekapKehadiranHomeScreenState> {
|
||||
final Ref ref;
|
||||
RekapKehadiranHomeScreenNotifier({
|
||||
required this.ref,
|
||||
}) : super(RekapKehadiranHomeScreenStateInit());
|
||||
|
||||
void rekapKehadiranHomeScreen(
|
||||
String M_StaffID,
|
||||
String M_CompanyID,
|
||||
String token,
|
||||
Map<String, dynamic> paramInpVariables,
|
||||
) async {
|
||||
try {
|
||||
state = RekapKehadiranHomeScreenStateLoading();
|
||||
final graphql = ref.read(graphqlProvider(''));
|
||||
final dio = ref.read(dioProvider);
|
||||
final resp = await PresensiRepository(graphql: graphql, dio: dio)
|
||||
.rekapKehadiranHomeScreen(
|
||||
M_StaffID,
|
||||
M_CompanyID,
|
||||
token,
|
||||
paramInpVariables,
|
||||
);
|
||||
// set ke global state provider currentRekapKehadiranHomeProvider
|
||||
ref.read(currentRekapKehadiranHomeProvider.notifier).update((state) => resp);
|
||||
state = RekapKehadiranHomeScreenStateDone(model: resp);
|
||||
} catch (e) {
|
||||
if (e is BaseRepositoryException) {
|
||||
print(e.message);
|
||||
state = RekapKehadiranHomeScreenStateError(message: e.message ?? "");
|
||||
} else {
|
||||
state = RekapKehadiranHomeScreenStateError(message: e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// provider
|
||||
final rekapKehadiranHomeScreenProvider =
|
||||
StateNotifierProvider<RekapKehadiranHomeScreenNotifier, RekapKehadiranHomeScreenState>(
|
||||
(ref) => RekapKehadiranHomeScreenNotifier(ref: ref),
|
||||
);
|
||||
Reference in New Issue
Block a user