Commit 47d7498c authored by Dio Maulana's avatar Dio Maulana

final

parent e8e4274e
...@@ -3,8 +3,10 @@ import 'dart:convert'; ...@@ -3,8 +3,10 @@ import 'dart:convert';
import 'package:excelso_attendance/helper/logger.dart'; import 'package:excelso_attendance/helper/logger.dart';
import 'package:excelso_attendance/helper/pref.dart'; import 'package:excelso_attendance/helper/pref.dart';
import 'package:excelso_attendance/main.dart'; import 'package:excelso_attendance/main.dart';
import 'package:excelso_attendance/models/absent.dart';
import 'package:excelso_attendance/models/branch.dart'; import 'package:excelso_attendance/models/branch.dart';
import 'package:excelso_attendance/models/shift.dart'; import 'package:excelso_attendance/models/shift.dart';
import 'package:excelso_attendance/resource/strings.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
class Api { class Api {
...@@ -22,27 +24,33 @@ class Api { ...@@ -22,27 +24,33 @@ class Api {
typePost, apiUrl, "getNearestBranch", typePost, apiUrl, "getNearestBranch",
bodies: bodies); bodies: bodies);
if (jsonObject == false) { if (jsonObject == false) {
return ApiResponse(error: true, msg: "Can't connect to server"); return ApiResponse(error: true, msg: Strings.cantConnectToServer);
} else { } else {
List<BranchModel> branchList = []; if (jsonObject['status'] == "ok") {
List<BranchModel> branchList = [];
List<dynamic> branchs = jsonObject['data']['branch_list']; List<dynamic> branchs = jsonObject['data']['branch_list'];
for (int i = 0; i < branchs.length; i++) { for (int i = 0; i < branchs.length; i++) {
branchList.add( branchList.add(
BranchModel.json( BranchModel.json(
branchs[i], branchs[i],
), ),
);
}
return ApiResponse(
error: false,
msg: Strings.succesGetData,
data: branchList,
);
} else {
return ApiResponse(
error: true,
msg: jsonObject['msg'],
); );
} }
return ApiResponse(
error: false,
msg: "Success get data",
data: branchList,
);
} }
} catch (e) { } catch (e) {
return ApiResponse( return ApiResponse(error: true, msg: Strings.serverError);
error: true, msg: "Something wrong with our server, refresh page");
} }
} }
...@@ -57,27 +65,141 @@ class Api { ...@@ -57,27 +65,141 @@ class Api {
dynamic jsonObject = dynamic jsonObject =
await httpRequest(typePost, apiUrl, "getShiftList", bodies: bodies); await httpRequest(typePost, apiUrl, "getShiftList", bodies: bodies);
if (jsonObject == false) { if (jsonObject == false) {
return ApiResponse(error: true, msg: "Can't connect to server"); return ApiResponse(error: true, msg: Strings.cantConnectToServer);
} else {
if (jsonObject['status'] == "ok") {
List<ShiftModel> shiftList = [];
List<dynamic> shift = jsonObject['data']['shift_list'];
for (int i = 0; i < shift.length; i++) {
shiftList.add(
ShiftModel.json(
shift[i],
),
);
}
return ApiResponse(
error: false,
msg: Strings.succesGetData,
data: shiftList,
);
} else {
return ApiResponse(
error: true,
msg: jsonObject['msg'],
);
}
}
} catch (e) {
return ApiResponse(error: true, msg: Strings.serverError);
}
}
static Future<ApiResponse> getUserProfile(String branchId, String nik) async {
String apiUrl = "$baseUrl${endPoint}profile_user";
try {
Map<String, dynamic> data = {
"branch_id": branchId,
"nik": nik,
};
String bodies = jsonEncode(data);
dynamic jsonObject =
await httpRequest(typePost, apiUrl, "getUserProfile", bodies: bodies);
if (jsonObject == false) {
return ApiResponse(error: true, msg: Strings.cantConnectToServer);
} else {
if (jsonObject['status'] == "ok") {
return ApiResponse(
error: false,
msg: Strings.succesGetData,
);
} else {
return ApiResponse(
error: true,
msg: jsonObject['msg'],
);
}
}
} catch (e) {
return ApiResponse(error: true, msg: Strings.serverError);
}
}
static Future<ApiResponse> shiftIn(
String branchId, String nik, String shiftId, String photoBase64) async {
String apiUrl = "$baseUrl${endPoint}clock_in";
try {
Map<String, dynamic> data = {
"branch_id": branchId,
"nik": nik,
"shift_id": shiftId,
"user_lat": getLatitude(),
"user_long": getLongitude(),
"photo_base64": "data:image/jpeg;base64,$photoBase64",
};
String bodies = jsonEncode(data);
dynamic jsonObject =
await httpRequest(typePost, apiUrl, "shiftIn", bodies: bodies);
if (jsonObject == false) {
return ApiResponse(error: true, msg: Strings.cantConnectToServer);
} else { } else {
List<ShiftModel> shiftList = []; if (jsonObject['status'] == "ok") {
return ApiResponse(
error: false,
msg: Strings.succesGetData,
data: AbsentSuccessModel.json(
jsonObject['data'],
),
);
} else {
return ApiResponse(
error: true,
msg: jsonObject['msg'],
);
}
}
} catch (e) {
return ApiResponse(error: true, msg: Strings.serverError);
}
}
static Future<ApiResponse> shiftOut(
String branchId, String nik, String photoBase64) async {
String apiUrl = "$baseUrl${endPoint}clock_out";
List<dynamic> shift = jsonObject['data']['shift_list']; try {
for (int i = 0; i < shift.length; i++) { Map<String, dynamic> data = {
shiftList.add( "branch_id": branchId,
ShiftModel.json( "nik": nik,
shift[i], "user_lat": getLatitude(),
"user_long": getLongitude(),
"photo_base64": photoBase64,
};
String bodies = jsonEncode(data);
dynamic jsonObject =
await httpRequest(typePost, apiUrl, "shiftOut", bodies: bodies);
if (jsonObject == false) {
return ApiResponse(error: true, msg: Strings.cantConnectToServer);
} else {
if (jsonObject['status'] == "ok") {
return ApiResponse(
error: false,
msg: Strings.succesGetData,
data: AbsentSuccessModel.json(
jsonObject['data'],
), ),
); );
} else {
return ApiResponse(
error: true,
msg: jsonObject['msg'],
);
} }
return ApiResponse(
error: false,
msg: "Success get data",
data: shiftList,
);
} }
} catch (e) { } catch (e) {
return ApiResponse( return ApiResponse(error: true, msg: Strings.serverError);
error: true, msg: "Something wrong with our server, refresh page");
} }
} }
} }
......
import 'package:excelso_attendance/models/absent.dart';
import 'package:excelso_attendance/models/branch.dart'; import 'package:excelso_attendance/models/branch.dart';
import 'package:excelso_attendance/models/shift.dart'; import 'package:excelso_attendance/models/shift.dart';
...@@ -5,10 +6,12 @@ class AbsentCameraArguments { ...@@ -5,10 +6,12 @@ class AbsentCameraArguments {
final bool isIn; final bool isIn;
final BranchModel branchModel; final BranchModel branchModel;
final ShiftModel? shiftModel; final ShiftModel? shiftModel;
final String nik;
AbsentCameraArguments({ AbsentCameraArguments({
required this.isIn, required this.isIn,
required this.branchModel, required this.branchModel,
required this.nik,
this.shiftModel, this.shiftModel,
}); });
} }
...@@ -22,3 +25,13 @@ class HomeArguments { ...@@ -22,3 +25,13 @@ class HomeArguments {
required this.shiftModel, required this.shiftModel,
}); });
} }
class AbsentSuccessArguments {
final AbsentSuccessModel absentSuccess;
final bool isIn;
AbsentSuccessArguments({
required this.absentSuccess,
required this.isIn,
});
}
...@@ -90,11 +90,25 @@ class DateFormatCustom { ...@@ -90,11 +90,25 @@ class DateFormatCustom {
return result; return result;
} }
static String getDateLocal() { static String getDateLocal({
DateTime localTime = DateTime.now().toLocal(); bool fromApi = false,
int day = localTime.day; String apiDate = '',
String month = monthLocal(localTime.month.toString()); }) {
int year = localTime.year; String day;
String month;
String year;
if (fromApi) {
List<String> splitApiDate = apiDate.split("-");
day = splitApiDate[2];
month = monthLocal(splitApiDate[1]);
year = splitApiDate[0];
} else {
DateTime localTime = DateTime.now().toLocal();
day = localTime.day.toString();
month = monthLocal(localTime.month.toString());
year = localTime.year.toString();
}
String result = "$day $month $year"; String result = "$day $month $year";
return result; return result;
......
class AbsentSuccessModel {
String branchCode;
String branchName;
String date;
String time;
String type;
AbsentSuccessModel({
required this.branchCode,
required this.branchName,
required this.date,
required this.time,
required this.type,
});
factory AbsentSuccessModel.json(Map<String, dynamic> json) {
return AbsentSuccessModel(
branchCode: json['branch_code'],
branchName: json['branch_name'],
date: json['date'],
time: json['time'],
type: json['type'],
);
}
}
// ignore_for_file: sized_box_for_whitespace // ignore_for_file: sized_box_for_whitespace
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:convert';
import 'dart:io' as Io;
import 'package:excelso_attendance/api/api.dart';
import 'package:excelso_attendance/helper/arguments/error_args.dart'; import 'package:excelso_attendance/helper/arguments/error_args.dart';
import 'package:excelso_attendance/helper/arguments/route_args.dart';
import 'package:excelso_attendance/helper/widget_responsive.dart'; import 'package:excelso_attendance/helper/widget_responsive.dart';
import 'package:excelso_attendance/main.dart'; import 'package:excelso_attendance/main.dart';
import 'package:excelso_attendance/models/absent.dart';
import 'package:excelso_attendance/models/branch.dart'; import 'package:excelso_attendance/models/branch.dart';
import 'package:excelso_attendance/models/shift.dart'; import 'package:excelso_attendance/models/shift.dart';
import 'package:excelso_attendance/resource/routes.dart'; import 'package:excelso_attendance/resource/routes.dart';
...@@ -21,18 +25,21 @@ import 'package:excelso_attendance/resource/font.dart'; ...@@ -21,18 +25,21 @@ import 'package:excelso_attendance/resource/font.dart';
import 'package:excelso_attendance/resource/size.dart'; import 'package:excelso_attendance/resource/size.dart';
import 'package:excelso_attendance/resource/style.dart'; import 'package:excelso_attendance/resource/style.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
class AbsentCameraView extends StatefulWidget { class AbsentCameraView extends StatefulWidget {
const AbsentCameraView({ const AbsentCameraView({
super.key, super.key,
required this.isIn, required this.isIn,
required this.branchModel, required this.branchModel,
required this.nik,
this.shiftModel, this.shiftModel,
}); });
final bool isIn; final bool isIn;
final BranchModel branchModel; final BranchModel branchModel;
final ShiftModel? shiftModel; final ShiftModel? shiftModel;
final String nik;
@override @override
State<AbsentCameraView> createState() => _AbsentCameraViewState(); State<AbsentCameraView> createState() => _AbsentCameraViewState();
...@@ -50,6 +57,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -50,6 +57,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
bool pictureIsTaken = false; bool pictureIsTaken = false;
bool isPhone = false; bool isPhone = false;
String? imageBase64;
// bool isPermissionAccept = true; // bool isPermissionAccept = true;
// String? errorCamera; // String? errorCamera;
...@@ -90,6 +99,7 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -90,6 +99,7 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
_cameraDescription!, _cameraDescription!,
// Define the resolution to use. // Define the resolution to use.
ResolutionPreset.medium, ResolutionPreset.medium,
imageFormatGroup: ImageFormatGroup.jpeg,
); );
setState(() { setState(() {
_initializeControllerFuture = _controller!.initialize(); _initializeControllerFuture = _controller!.initialize();
...@@ -159,7 +169,7 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -159,7 +169,7 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
child: (pictureIsTaken) child: (pictureIsTaken)
? (isPhone) ? (isPhone)
? Image.file( ? Image.file(
File(imagePathPhone!), Io.File(imagePathPhone!),
fit: BoxFit.fill, fit: BoxFit.fill,
) )
: Image.memory( : Image.memory(
...@@ -248,11 +258,69 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -248,11 +258,69 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
width: 100, width: 100,
child: CustomButton( child: CustomButton(
text: "Submit", text: "Submit",
onTap: () { onTap: () async {
Navigator.pushNamed( await EasyLoading.show(
context, status: Strings.pleaseWait,
Routes.absentSuccess, maskType:
EasyLoadingMaskType.none,
); );
if (widget.isIn) {
Api.shiftIn(
widget.branchModel.id,
widget.nik,
widget.shiftModel!.id,
imageBase64!,
).then((apiResponse) {
EasyLoading.dismiss();
if (apiResponse.error) {
EasyLoading.showToast(
apiResponse.msg);
return;
}
AbsentSuccessModel
absentSuccess =
apiResponse.data
as AbsentSuccessModel;
Navigator.pushNamed(
context,
Routes.absentSuccess,
arguments:
AbsentSuccessArguments(
absentSuccess:
absentSuccess,
isIn: true,
),
);
});
} else {
Api.shiftOut(
widget.branchModel.id,
widget.nik,
imageBase64!,
).then((apiResponse) {
EasyLoading.dismiss();
if (apiResponse.error) {
EasyLoading.showToast(
apiResponse.msg,
);
return;
}
AbsentSuccessModel
absentSuccess =
apiResponse.data
as AbsentSuccessModel;
Navigator.pushNamed(
context,
Routes.absentSuccess,
arguments:
AbsentSuccessArguments(
absentSuccess:
absentSuccess,
isIn: false,
),
);
});
}
}, },
), ),
), ),
...@@ -270,6 +338,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -270,6 +338,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
_cameraDescription!, _cameraDescription!,
// Define the resolution to use. // Define the resolution to use.
ResolutionPreset.medium, ResolutionPreset.medium,
imageFormatGroup:
ImageFormatGroup.jpeg,
); );
_initializeControllerFuture = _initializeControllerFuture =
_controller!.initialize(); _controller!.initialize();
...@@ -324,6 +394,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -324,6 +394,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
Uint8List? imageResultWeb; Uint8List? imageResultWeb;
if (isPhone) { if (isPhone) {
imageResultPhone = image.path; imageResultPhone = image.path;
imageResultWeb =
await image.readAsBytes();
} else { } else {
imageResultWeb = imageResultWeb =
await image.readAsBytes(); await image.readAsBytes();
...@@ -336,6 +408,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -336,6 +408,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
imagePath = imageResultWeb; imagePath = imageResultWeb;
imagePathPhone = imagePathPhone =
imageResultPhone; imageResultPhone;
imageBase64 = base64Encode(
imageResultWeb!);
}); });
} catch (e) { } catch (e) {
if (debug) { if (debug) {
...@@ -380,6 +454,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -380,6 +454,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
_cameraDescription!, _cameraDescription!,
// Define the resolution to use. // Define the resolution to use.
ResolutionPreset.medium, ResolutionPreset.medium,
imageFormatGroup:
ImageFormatGroup.jpeg,
); );
_initializeControllerFuture = _initializeControllerFuture =
_controller!.initialize(); _controller!.initialize();
......
import 'package:excelso_attendance/helper/component/button.dart'; import 'package:excelso_attendance/helper/component/button.dart';
import 'package:excelso_attendance/helper/global_function/date_time.dart';
import 'package:excelso_attendance/models/absent.dart';
import 'package:excelso_attendance/resource/assets.dart'; import 'package:excelso_attendance/resource/assets.dart';
import 'package:excelso_attendance/resource/colors.dart'; import 'package:excelso_attendance/resource/colors.dart';
import 'package:excelso_attendance/resource/font.dart'; import 'package:excelso_attendance/resource/font.dart';
...@@ -8,7 +10,11 @@ import 'package:excelso_attendance/resource/style.dart'; ...@@ -8,7 +10,11 @@ import 'package:excelso_attendance/resource/style.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class AbsentSuccessView extends StatelessWidget { class AbsentSuccessView extends StatelessWidget {
const AbsentSuccessView({super.key}); const AbsentSuccessView(
{super.key, required this.absentSuccess, required this.isIn});
final AbsentSuccessModel absentSuccess;
final bool isIn;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -75,7 +81,10 @@ class AbsentSuccessView extends StatelessWidget { ...@@ -75,7 +81,10 @@ class AbsentSuccessView extends StatelessWidget {
width: double.infinity, width: double.infinity,
child: Center( child: Center(
child: Text( child: Text(
'''Absen Masuk (isIn)
? '''Absen Masuk
Sukses'''
: '''Absen Keluar
Sukses''', Sukses''',
style: getSemiBoldStyle( style: getSemiBoldStyle(
color: Colors.black, color: Colors.black,
...@@ -135,7 +144,7 @@ Sukses''', ...@@ -135,7 +144,7 @@ Sukses''',
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
"CRM", absentSuccess.branchCode,
style: getSemiBoldStyle( style: getSemiBoldStyle(
color: ColorManager.fontBlack, color: ColorManager.fontBlack,
fontSize: FontSize.s20, fontSize: FontSize.s20,
...@@ -143,7 +152,7 @@ Sukses''', ...@@ -143,7 +152,7 @@ Sukses''',
), ),
), ),
Text( Text(
"10:30 WIB", absentSuccess.time,
style: getSemiBoldStyle( style: getSemiBoldStyle(
color: ColorManager.fontBlack, color: ColorManager.fontBlack,
fontSize: FontSize.s20, fontSize: FontSize.s20,
...@@ -160,7 +169,10 @@ Sukses''', ...@@ -160,7 +169,10 @@ Sukses''',
children: [ children: [
const Spacer(), const Spacer(),
Text( Text(
"23 Februari 2023", DateFormatCustom.getDateLocal(
fromApi: true,
apiDate: absentSuccess.date,
),
style: getRegularStyle( style: getRegularStyle(
color: ColorManager.fontBlack, color: ColorManager.fontBlack,
fontSize: 16, fontSize: 16,
......
import 'dart:async'; import 'dart:async';
import 'package:excelso_attendance/api/api.dart';
import 'package:excelso_attendance/helper/arguments/route_args.dart'; import 'package:excelso_attendance/helper/arguments/route_args.dart';
import 'package:excelso_attendance/helper/component/button.dart'; import 'package:excelso_attendance/helper/component/button.dart';
import 'package:excelso_attendance/helper/component/text_field.dart'; import 'package:excelso_attendance/helper/component/text_field.dart';
...@@ -12,6 +13,7 @@ import 'package:excelso_attendance/resource/colors.dart'; ...@@ -12,6 +13,7 @@ import 'package:excelso_attendance/resource/colors.dart';
import 'package:excelso_attendance/resource/font.dart'; import 'package:excelso_attendance/resource/font.dart';
import 'package:excelso_attendance/resource/routes.dart'; import 'package:excelso_attendance/resource/routes.dart';
import 'package:excelso_attendance/resource/size.dart'; import 'package:excelso_attendance/resource/size.dart';
import 'package:excelso_attendance/resource/strings.dart';
import 'package:excelso_attendance/resource/style.dart'; import 'package:excelso_attendance/resource/style.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
...@@ -240,6 +242,7 @@ class _BodyWidgetState extends State<BodyWidget> { ...@@ -240,6 +242,7 @@ class _BodyWidgetState extends State<BodyWidget> {
shiftList: widget.shiftList, shiftList: widget.shiftList,
branchModel: branchModel:
widget.nearestBranch[selectedOutlet], widget.nearestBranch[selectedOutlet],
nik: nikController.text,
); );
}); });
} }
...@@ -251,21 +254,36 @@ class _BodyWidgetState extends State<BodyWidget> { ...@@ -251,21 +254,36 @@ class _BodyWidgetState extends State<BodyWidget> {
Expanded( Expanded(
child: CustomButton( child: CustomButton(
text: "Keluar", text: "Keluar",
onTap: () { onTap: () async {
if (nikController.text.isEmpty) { if (nikController.text.isEmpty) {
EasyLoading.showToast( EasyLoading.showToast(
"Silakan isi NIK terlebih dahulu", "Silakan isi NIK terlebih dahulu",
); );
} else { } else {
Navigator.pushNamed( await EasyLoading.show(
context, status: Strings.pleaseWait,
Routes.absentCamera, maskType: EasyLoadingMaskType.none,
arguments: AbsentCameraArguments(
isIn: false,
branchModel:
widget.nearestBranch[selectedOutlet],
),
); );
Api.getUserProfile(
widget.nearestBranch[selectedOutlet].id,
nikController.text,
).then((apiResponse) {
EasyLoading.dismiss();
if (apiResponse.error) {
EasyLoading.showToast(apiResponse.msg);
} else {
Navigator.pushNamed(
context,
Routes.absentCamera,
arguments: AbsentCameraArguments(
isIn: false,
branchModel:
widget.nearestBranch[selectedOutlet],
nik: nikController.text,
),
);
}
});
} }
}, },
), ),
...@@ -622,10 +640,12 @@ class WidgetSelectShift extends StatefulWidget { ...@@ -622,10 +640,12 @@ class WidgetSelectShift extends StatefulWidget {
Key? key, Key? key,
required this.shiftList, required this.shiftList,
required this.branchModel, required this.branchModel,
required this.nik,
}) : super(key: key); }) : super(key: key);
final List<ShiftModel> shiftList; final List<ShiftModel> shiftList;
final BranchModel branchModel; final BranchModel branchModel;
final String nik;
@override @override
State<WidgetSelectShift> createState() => _WidgetSelectShiftState(); State<WidgetSelectShift> createState() => _WidgetSelectShiftState();
...@@ -744,18 +764,33 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> { ...@@ -744,18 +764,33 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> {
), ),
margin: EdgeInsets.symmetric(vertical: AppMargin.m16), margin: EdgeInsets.symmetric(vertical: AppMargin.m16),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () async {
if (selectedShift != null) { if (selectedShift != null) {
Navigator.pop(context); await EasyLoading.show(
Navigator.pushNamed( status: Strings.pleaseWait,
context, maskType: EasyLoadingMaskType.none,
Routes.absentCamera,
arguments: AbsentCameraArguments(
isIn: true,
branchModel: widget.branchModel,
shiftModel: widget.shiftList[selectedShift!],
),
); );
Api.getUserProfile(
widget.branchModel.id,
widget.nik,
).then((apiResponse) {
EasyLoading.dismiss();
if (apiResponse.error) {
Navigator.pop(context);
EasyLoading.showToast(apiResponse.msg);
} else {
Navigator.popAndPushNamed(
context,
Routes.absentCamera,
arguments: AbsentCameraArguments(
isIn: true,
branchModel: widget.branchModel,
shiftModel: widget.shiftList[selectedShift!],
nik: widget.nik,
),
);
}
});
} else { } else {
EasyLoading.showToast("Silakan pilih shift"); EasyLoading.showToast("Silakan pilih shift");
} }
......
...@@ -42,13 +42,22 @@ class RouteGenerator { ...@@ -42,13 +42,22 @@ class RouteGenerator {
isIn: args.isIn, isIn: args.isIn,
branchModel: args.branchModel, branchModel: args.branchModel,
shiftModel: args.shiftModel, shiftModel: args.shiftModel,
nik: args.nik,
), ),
nameRoute: Routes.absentCamera, nameRoute: Routes.absentCamera,
routeSettings: routeSettings, routeSettings: routeSettings,
); );
case Routes.absentSuccess: case Routes.absentSuccess:
return pageRouteCustom(const AbsentSuccessView(), AbsentSuccessArguments args =
nameRoute: Routes.absentSuccess); routeSettings.arguments as AbsentSuccessArguments;
return pageRouteCustom(
AbsentSuccessView(
absentSuccess: args.absentSuccess,
isIn: args.isIn,
),
nameRoute: Routes.absentSuccess,
routeSettings: routeSettings,
);
case Routes.errorWidget: case Routes.errorWidget:
ErrorWidgetArguments args = ErrorWidgetArguments args =
routeSettings.arguments as ErrorWidgetArguments; routeSettings.arguments as ErrorWidgetArguments;
...@@ -85,6 +94,7 @@ class RouteGenerator { ...@@ -85,6 +94,7 @@ class RouteGenerator {
isIn: args.isIn, isIn: args.isIn,
branchModel: args.branchModel, branchModel: args.branchModel,
shiftModel: args.shiftModel, shiftModel: args.shiftModel,
nik: args.nik,
), ),
transitionDuration: Duration.zero, transitionDuration: Duration.zero,
reverseTransitionDuration: Duration.zero, reverseTransitionDuration: Duration.zero,
...@@ -119,6 +129,21 @@ class RouteGenerator { ...@@ -119,6 +129,21 @@ class RouteGenerator {
// name: nameRoute.replaceFirst("/", ""), arguments: args), // name: nameRoute.replaceFirst("/", ""), arguments: args),
); );
} }
if (nameRoute == Routes.absentSuccess) {
AbsentSuccessArguments args =
routeSettings!.arguments as AbsentSuccessArguments;
return PageRouteBuilder(
pageBuilder: (context, a, b) => AbsentSuccessView(
absentSuccess: args.absentSuccess,
isIn: args.isIn,
),
transitionDuration: Duration.zero,
reverseTransitionDuration: Duration.zero,
// settings: RouteSettings(
// name: nameRoute.replaceFirst("/", ""), arguments: args),
);
}
// else if (nameRoute == Routes.errorWidget) { // else if (nameRoute == Routes.errorWidget) {
// ErrorWidgetArguments args = // ErrorWidgetArguments args =
// routeSettings!.arguments as ErrorWidgetArguments; // routeSettings!.arguments as ErrorWidgetArguments;
......
...@@ -7,4 +7,8 @@ class Strings { ...@@ -7,4 +7,8 @@ class Strings {
"Tidak ada outlet yang ditemukan dalam radius 10Km"; "Tidak ada outlet yang ditemukan dalam radius 10Km";
static String errorGetShiftList = static String errorGetShiftList =
"Tidak dapat terhubung ke server, shift tidak ditemukan"; "Tidak dapat terhubung ke server, shift tidak ditemukan";
static String cantConnectToServer = "Can't connect to server";
static String serverError = "Something wrong with our server, refresh page";
static String succesGetData = "Success get data";
static String pleaseWait = "Please wait...";
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment