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> basalRates; late String? notes; BasalProfile(ParseObject? object) { if (object != null) { objectId = object.get('objectId'); name = object.get('name')!; active = object.get('active')!; basalRates = Basal.fetchAllForBasalProfile(this); notes = object.get('notes'); } } static Future> fetchAll() async { QueryBuilder query = QueryBuilder(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 get(String objectId) async { QueryBuilder query = QueryBuilder(ParseObject('BasalProfile')) ..whereEqualTo('objectId', objectId); final ParseResponse apiResponse = await query.query(); if (apiResponse.success && apiResponse.results != null) { return BasalProfile(apiResponse.result.first); } } static Future getActiveCount() async { QueryBuilder query = QueryBuilder(ParseObject('BasalProfile')) ..whereEqualTo('active', true); final ParseResponse apiResponse = await query.query(); if (apiResponse.success && apiResponse.results != null) { return apiResponse.results!.length; } else { return 0; } } static Future setAllInactive({String? exception}) async { QueryBuilder query = QueryBuilder(ParseObject('BasalProfile')); final ParseResponse apiResponse = await query.query(); if (apiResponse.success && apiResponse.results != null) { for (var basalProfile in apiResponse.results as List) { basalProfile.set( 'active', basalProfile.objectId == exception ? true : false); await basalProfile.save(); } } } static Future 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 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 delete() async { var basalProfile = ParseObject('BasalProfile')..objectId = objectId; await basalProfile.delete(); } }