2024-09-02 15:11:40 +00:00
|
|
|
import 'package:get/get.dart';
|
|
|
|
import 'package:solian/exceptions/request.dart';
|
|
|
|
import 'package:solian/exceptions/unauthorized.dart';
|
|
|
|
import 'package:solian/models/daily_sign.dart';
|
2024-09-07 16:23:59 +00:00
|
|
|
import 'package:solian/models/pagination.dart';
|
2024-09-02 15:11:40 +00:00
|
|
|
import 'package:solian/providers/auth.dart';
|
|
|
|
|
|
|
|
class DailySignProvider extends GetxController {
|
2024-09-07 16:23:59 +00:00
|
|
|
Future<List<DailySignRecord>> listLastRecord(int take) async {
|
|
|
|
final AuthProvider auth = Get.find();
|
|
|
|
if (auth.isAuthorized.isFalse) throw const UnauthorizedException();
|
|
|
|
|
|
|
|
final client = auth.configureClient('id');
|
|
|
|
|
|
|
|
final resp = await client.get('/daily?take=$take');
|
|
|
|
if (resp.statusCode != 200 && resp.statusCode != 404) {
|
|
|
|
throw RequestException(resp);
|
|
|
|
} else if (resp.statusCode == 404) {
|
|
|
|
return List.empty();
|
|
|
|
}
|
|
|
|
|
|
|
|
final result = PaginationResult.fromJson(resp.body);
|
|
|
|
|
|
|
|
return List.from(
|
|
|
|
result.data?.map((x) => DailySignRecord.fromJson(x)) ?? [],
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2024-09-02 15:11:40 +00:00
|
|
|
Future<DailySignRecord?> getToday() async {
|
|
|
|
final AuthProvider auth = Get.find();
|
|
|
|
if (auth.isAuthorized.isFalse) throw const UnauthorizedException();
|
|
|
|
|
|
|
|
final client = auth.configureClient('id');
|
|
|
|
|
|
|
|
final resp = await client.get('/daily/today');
|
|
|
|
if (resp.statusCode != 200 && resp.statusCode != 404) {
|
|
|
|
throw RequestException(resp);
|
|
|
|
} else if (resp.statusCode == 404) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
return DailySignRecord.fromJson(resp.body);
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<DailySignRecord> signToday() async {
|
|
|
|
final AuthProvider auth = Get.find();
|
|
|
|
if (auth.isAuthorized.isFalse) throw const UnauthorizedException();
|
|
|
|
|
|
|
|
final client = auth.configureClient('id');
|
|
|
|
|
|
|
|
final resp = await client.post('/daily', {});
|
|
|
|
if (resp.statusCode != 200) {
|
|
|
|
throw RequestException(resp);
|
|
|
|
}
|
|
|
|
|
|
|
|
return DailySignRecord.fromJson(resp.body);
|
|
|
|
}
|
|
|
|
}
|