first commit
This commit is contained in:
94
lib/states/root.dart
Normal file
94
lib/states/root.dart
Normal file
@ -0,0 +1,94 @@
|
||||
// import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'package:barcode_absensi/page/login.dart';
|
||||
import 'package:barcode_absensi/page/scanQRcode.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:barcode_absensi/states/statePetugas.dart';
|
||||
|
||||
class Root extends StatefulWidget {
|
||||
// Root({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_RootState createState() => _RootState();
|
||||
}
|
||||
|
||||
class _RootState extends State<Root> {
|
||||
late SharedPreferences sharedPreferences;
|
||||
int _isLoading = 0;
|
||||
|
||||
@override
|
||||
// ignore: avoid_void_async
|
||||
void didChangeDependencies() async {
|
||||
super.didChangeDependencies();
|
||||
sharedPreferences = await SharedPreferences.getInstance();
|
||||
final json = sharedPreferences.getString("dataPetugas");
|
||||
final data1 = json != null ? jsonDecode(json) : null;
|
||||
// print(data1);
|
||||
if (sharedPreferences.getString("dataPetugas") != null) {
|
||||
if (data1?['level'] == 'petugas') {
|
||||
final StatePetugas _petugas =
|
||||
Provider.of<StatePetugas>(context, listen: false);
|
||||
|
||||
try {
|
||||
final String _returnString = await _petugas.loginPetugas(
|
||||
data1!['username'].toString(), data1!['password'].toString());
|
||||
|
||||
// print(_returnString);
|
||||
|
||||
if (_returnString == 'success') {
|
||||
setState(() {
|
||||
// _login = false;
|
||||
_isLoading = 2;
|
||||
});
|
||||
} else {
|
||||
sharedPreferences.remove('dataPetugas');
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Sila Login Kembali')));
|
||||
setState(() {
|
||||
// _login = false;
|
||||
_isLoading = 1;
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
// print(e);
|
||||
sharedPreferences.remove('dataPetugas');
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Sila Login Kembali')));
|
||||
setState(() {
|
||||
_isLoading = 1;
|
||||
// _login = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
setState(() {
|
||||
// _login = false;
|
||||
_isLoading = 1;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
late Widget retVal;
|
||||
switch (_isLoading) {
|
||||
case 0:
|
||||
retVal = Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text("Loading"),
|
||||
),
|
||||
body: const Center(child: CircularProgressIndicator()),
|
||||
);
|
||||
break;
|
||||
case 1:
|
||||
retVal = LoginPage();
|
||||
break;
|
||||
case 2:
|
||||
retVal = ScanQRCode();
|
||||
break;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
112
lib/states/statePetugas.dart
Normal file
112
lib/states/statePetugas.dart
Normal file
@ -0,0 +1,112 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class StatePetugas extends ChangeNotifier {
|
||||
Future<String> loginPetugas(String username, String password) async {
|
||||
// ignore: prefer_final_locals
|
||||
String retVal = "error";
|
||||
try {
|
||||
// ignore: prefer_final_locals
|
||||
var uri = Uri.parse(
|
||||
// ignore: prefer_interpolation_to_compose_strings
|
||||
"http://192.168.43.125/barcode_absensi_admin/api_server/login_petugas?username=" +
|
||||
username +
|
||||
"&password=" +
|
||||
password);
|
||||
// ignore: prefer_final_locals
|
||||
var response = await http.get(uri);
|
||||
final SharedPreferences sharedPreferences =
|
||||
await SharedPreferences.getInstance();
|
||||
switch (response.statusCode) {
|
||||
case 200:
|
||||
sharedPreferences.setString('dataPetugas', response.body);
|
||||
retVal = "success";
|
||||
break;
|
||||
case 401:
|
||||
final detail = jsonDecode(response.body);
|
||||
|
||||
retVal = detail['message'].toString();
|
||||
break;
|
||||
default:
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
retVal = "Masalah Jaringan";
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
Future<String> scanPetugas(String qrcode) async {
|
||||
String retVal = "error";
|
||||
|
||||
try {
|
||||
final uri = Uri.parse(
|
||||
// ignore: prefer_interpolation_to_compose_strings
|
||||
"http://192.168.43.125/barcode_absensi_admin/api_server/cek_karyawan_by_qrcode?nik=" +
|
||||
qrcode);
|
||||
final SharedPreferences sharedPreferences =
|
||||
await SharedPreferences.getInstance();
|
||||
final response = await http.get(uri);
|
||||
final data = response.body;
|
||||
switch (response.statusCode) {
|
||||
case 200:
|
||||
retVal = data;
|
||||
break;
|
||||
case 401:
|
||||
retVal = 'suda_absen';
|
||||
sharedPreferences.setString('errornya', data);
|
||||
break;
|
||||
case 404:
|
||||
retVal = 'data_tiada';
|
||||
sharedPreferences.setString('errornya', data);
|
||||
break;
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
retVal = "error";
|
||||
}
|
||||
|
||||
// print(uri);
|
||||
return retVal;
|
||||
}
|
||||
|
||||
Future<String> absensiPetugas(
|
||||
String nik, String jamMasuk, String jamKeluar, String tanggal) async {
|
||||
String retVal = 'error';
|
||||
|
||||
try {
|
||||
final uri = Uri.parse(
|
||||
// ignore: prefer_interpolation_to_compose_strings
|
||||
"http://192.168.43.125/barcode_absensi_admin/api_server/absensi_karyawan");
|
||||
final response = await http.post(
|
||||
uri,
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
},
|
||||
body: jsonEncode(<String, String>{
|
||||
'nik_karyawan': nik,
|
||||
'jam_masuk': jamMasuk,
|
||||
'jam_keluar': jamKeluar,
|
||||
'tanggal': tanggal,
|
||||
}),
|
||||
);
|
||||
// final data = response.body;
|
||||
// print(data);
|
||||
switch (response.statusCode) {
|
||||
case 200:
|
||||
retVal = 'success';
|
||||
break;
|
||||
default:
|
||||
retVal = 'error';
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
retVal = 'error';
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user