import 'dart:convert';
import 'dart:ffi';
import 'package:flutter_money_formatter/flutter_money_formatter.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:kopralapp/master/get_koperasi_data.dart';
import 'package:kopralapp/models/auth_model/user_auth.dart';
import 'package:kopralapp/models/pinjaman_model/pinjaman.dart';
import 'package:kopralapp/models/pinjaman_model/pinjaman_response.dart';
import 'package:kopralapp/models/user_koperasi/koperasi.dart';
import 'package:kopralapp/screens/ajuan_screen/ajuan_screen.dart';
import 'package:kopralapp/screens/ajuan_screen/create_ajuan_screen/create_ajuan_screen.dart';
import 'package:kopralapp/utils/document_status.dart';
import 'package:kopralapp/utils/myDialog.dart';
import 'package:kopralapp/utils/string.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AjuanViewModel with ChangeNotifier {
DocumentStatus documentStatus = DocumentStatus.TERLAKSANA;
bool isReq = true;
bool isReqError = false;
//ToDO: Create list pinjaman
List<Pinjaman> PinjamanList = List();
List<Pinjaman> PinjamanListAll = List();
ScrollController controller;
int dataToView = 4;
int currentIndex = 0;
String startDate = "Select Date";
String endDate = "Select Date";
String documentNo = "Document No";
bool isFilter= false;
Koperasi dataKoperasi;
loadMore(){
currentIndex = currentIndex + dataToView;
if(currentIndex < PinjamanListAll.length){
setListToDisplay(PinjamanListAll, currentIndex);
}
notifyListeners();
}
getPinjamanList() async {
isReq = true;
dataKoperasi = await getKoperasiToken();
String url = BASE_URL + API_LIST_PENGAJUAN_PINJAMAN
+ "?kode_koperasi="+ dataKoperasi.kode_koperasi + "&no_anggota=" + dataKoperasi.no_anggota;
if (isFilter){
url = url + "?status_pengajuan="+StatusDocument(documentStatus).getName();
}
print(url);
var response = await http.get(url,
headers: {"Authorization":dataKoperasi.api_key == "" ? "your-api-key" : dataKoperasi.api_key}, )
.catchError((error) {
isReqError = true;
return;
});
if (response.body != null) {
isReq = false;
print(response.body);
if (response.statusCode == 200) {
Iterable res = json.decode(response.body);
print(res);
PinjamanResponse PinjamanListResponse = PinjamanResponse.fromJsonMap(res);
setDataList(PinjamanListResponse.ListPinjaman);
}
}else{
this.PinjamanList = new List();
}
notifyListeners();
}
setDataList(List<Pinjaman> data){
data.forEach((element) {
FlutterMoneyFormatter fmf = new FlutterMoneyFormatter(
amount: double.parse(element.total_pinjaman.toString()),
settings: MoneyFormatterSettings(
symbol: 'Rp',
thousandSeparator: '.',
decimalSeparator: ',',
symbolAndNumberSeparator: ' ',
fractionDigits: 0,
compactFormatType: CompactFormatType.short
)
);
print(double.parse(element.total_pinjaman.toString()));
print(fmf.output.symbolOnLeft);
element.total_pinjam_display = fmf.output.symbolOnLeft;
});
this.PinjamanList.addAll(data);
notifyListeners();
}
setListToDisplay(List<Pinjaman> data, int index){
if(index+dataToView-1 < PinjamanListAll.length){
PinjamanList.addAll(data.sublist(index, index+dataToView-1));
}
notifyListeners();
}
setDefault() {
PinjamanList.clear();
getPinjamanList();
notifyListeners();
}
_loadMore() {
if (controller.offset >= controller.position.maxScrollExtent &&
!controller.position.outOfRange) {
loadMore();
}
}
AjuanViewModel(){
WidgetsBinding.instance.addPostFrameCallback((_) {
this.getPinjamanList();
});
}
}