first commit

This commit is contained in:
kicap1992
2021-05-01 10:26:47 +08:00
commit 6b927d612c
78 changed files with 4194 additions and 0 deletions

94
lib/states/root.dart Normal file
View 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;
}
}

View 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;
}
}