diameter/lib/models/basal_profile.dart
2021-10-23 01:08:09 +02:00

89 lines
2.7 KiB
Dart

import 'package:parse_server_sdk_flutter/parse_server_sdk.dart';
import 'package:diameter/models/basal.dart';
class BasalProfile {
late String? objectId;
late String name;
late bool active = false;
late Future<List<Basal>> basalRates;
late String? notes;
BasalProfile(ParseObject? object) {
if (object != null) {
objectId = object.get<String>('objectId');
name = object.get<String>('name')!;
active = object.get<bool>('active')!;
basalRates = Basal.fetchAllForBasalProfile(this);
notes = object.get<String>('notes');
}
}
static Future<List<BasalProfile>> fetchAll() async {
QueryBuilder<ParseObject> query =
QueryBuilder<ParseObject>(ParseObject('BasalProfile'));
final ParseResponse apiResponse = await query.query();
if (apiResponse.success && apiResponse.results != null) {
return apiResponse.results!
.map((e) => BasalProfile(e as ParseObject))
.toList();
} else {
return [];
}
}
static Future<BasalProfile?> get(String objectId) async {
QueryBuilder<ParseObject> query =
QueryBuilder<ParseObject>(ParseObject('BasalProfile'))
..whereEqualTo('objectId', objectId);
final ParseResponse apiResponse = await query.query();
if (apiResponse.success && apiResponse.results != null) {
return BasalProfile(apiResponse.result.first);
}
}
static Future<void> setAllInactiveButOne(String? objectId) async {
QueryBuilder<ParseObject> query =
QueryBuilder<ParseObject>(ParseObject('BasalProfile'));
final ParseResponse apiResponse = await query.query();
if (apiResponse.success && apiResponse.results != null) {
for (var basalProfile in apiResponse.results as List<ParseObject>) {
basalProfile.set(
'active', basalProfile.objectId == objectId ? true : false);
await basalProfile.save();
}
}
}
static Future<void> save(
{required String name, bool active = false, String? notes}) async {
final basalProfile = ParseObject('BasalProfile')
..set('name', name)
..set('active', active)
..set('notes', notes);
await basalProfile.save();
}
static Future<void> update(String objectId,
{String? name, bool? active, String? notes}) async {
var basalProfile = ParseObject('BasalProfile')..objectId = objectId;
if (name != null) {
basalProfile.set('name', name);
}
if (active != null) {
basalProfile.set('active', active);
}
if (notes != null) {
basalProfile.set('notes', notes);
}
await basalProfile.save();
}
Future<void> delete() async {
var basalProfile = ParseObject('BasalProfile')..objectId = objectId;
await basalProfile.delete();
}
}