Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add calendar macros #57

Merged
merged 3 commits into from
Mar 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 100 additions & 2 deletions lib/core/data/data_source/tracked_day_data_source.dart
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,112 @@ class TrackedDayDataSource {
}
}

Future<void> removeDayCaloriesTracked(
Future<void> decreaseDayCaloriesTracked(
DateTime day, double addCalories) async {
log.fine('Removing tracked day calories');
log.fine('Decreasing tracked day calories');
final updateDay = await getTrackedDay(day);

if (updateDay != null) {
updateDay.caloriesTracked -= addCalories;
updateDay.save();
}
}

Future<void> updateDayMacroGoals(DateTime day,
{double? carbsGoal, double? fatGoal, double? proteinGoal}) async {
log.fine('Updating tracked day macro goals');

final updateDay = await getTrackedDay(day);

if (updateDay != null) {
if (carbsGoal != null) {
updateDay.carbsGoal = carbsGoal;
}
if (fatGoal != null) {
updateDay.fatGoal = fatGoal;
}
if (proteinGoal != null) {
updateDay.proteinGoal = proteinGoal;
}
updateDay.save();
}
}

Future<void> increaseDayMacroGoal(DateTime day,
{double? carbsAmount, double? fatAmount, double? proteinAmount}) async {
log.fine('Increasing tracked day macro goals');
final updateDay = await getTrackedDay(day);

if (updateDay != null) {
if (carbsAmount != null) {
updateDay.carbsGoal = (updateDay.carbsGoal ?? 0) + carbsAmount;
}
if (fatAmount != null) {
updateDay.fatGoal = (updateDay.fatGoal ?? 0) + fatAmount;
}
if (proteinAmount != null) {
updateDay.proteinGoal = (updateDay.proteinGoal ?? 0) + proteinAmount;
}
updateDay.save();
}
}

Future<void> reduceDayMacroGoal(DateTime day,
{double? carbsAmount, double? fatAmount, double? proteinAmount}) async {
log.fine('Reducing tracked day macro goals');
final updateDay = await getTrackedDay(day);

if (updateDay != null) {
if (carbsAmount != null) {
updateDay.carbsGoal = (updateDay.carbsGoal ?? 0) - carbsAmount;
}
if (fatAmount != null) {
updateDay.fatGoal = (updateDay.fatGoal ?? 0) - fatAmount;
}
if (proteinAmount != null) {
updateDay.proteinGoal = (updateDay.proteinGoal ?? 0) - proteinAmount;
}
updateDay.save();
}
}

Future<void> addDayMacroTracked(DateTime day,
{double? carbsAmount, double? fatAmount, double? proteinAmount}) async {
log.fine('Adding new tracked day macro');
final updateDay = await getTrackedDay(day);

if (updateDay != null) {
if (carbsAmount != null) {
updateDay.carbsTracked = (updateDay.carbsTracked ?? 0) + carbsAmount;
}
if (fatAmount != null) {
updateDay.fatTracked = (updateDay.fatTracked ?? 0) + fatAmount;
}
if (proteinAmount != null) {
updateDay.proteinTracked =
(updateDay.proteinTracked ?? 0) + proteinAmount;
}
updateDay.save();
}
}

Future<void> removeDayMacroTracked(DateTime day,
{double? carbsAmount, double? fatAmount, double? proteinAmount}) async {
log.fine('Removing tracked day macro');
final updateDay = await getTrackedDay(day);

if (updateDay != null) {
if (carbsAmount != null) {
updateDay.carbsTracked = (updateDay.carbsTracked ?? 0) - carbsAmount;
}
if (fatAmount != null) {
updateDay.fatTracked = (updateDay.fatTracked ?? 0) - fatAmount;
}
if (proteinAmount != null) {
updateDay.proteinTracked =
(updateDay.proteinTracked ?? 0) - proteinAmount;
}
updateDay.save();
}
}
}
28 changes: 26 additions & 2 deletions lib/core/data/dbo/tracked_day_dbo.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,40 @@ class TrackedDayDBO extends HiveObject {
double calorieGoal;
@HiveField(2)
double caloriesTracked;
@HiveField(3)
double? carbsGoal;
@HiveField(4)
double? carbsTracked;
@HiveField(5)
double? fatGoal;
@HiveField(6)
double? fatTracked;
@HiveField(7)
double? proteinGoal;
@HiveField(8)
double? proteinTracked;

TrackedDayDBO(
{required this.day,
required this.calorieGoal,
required this.caloriesTracked});
required this.caloriesTracked,
this.carbsGoal,
this.carbsTracked,
this.fatGoal,
this.fatTracked,
this.proteinGoal,
this.proteinTracked});

factory TrackedDayDBO.fromTrackedDayEntity(TrackedDayEntity entity) {
return TrackedDayDBO(
day: entity.day,
calorieGoal: entity.calorieGoal,
caloriesTracked: entity.caloriesTracked);
caloriesTracked: entity.caloriesTracked,
carbsGoal: entity.carbsGoal,
carbsTracked: entity.carbsTracked,
fatGoal: entity.fatGoal,
fatTracked: entity.fatTracked,
proteinGoal: entity.proteinGoal,
proteinTracked: entity.proteinTracked);
}
}
22 changes: 20 additions & 2 deletions lib/core/data/dbo/tracked_day_dbo.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 47 additions & 3 deletions lib/core/data/repository/tracked_day_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,22 @@ class TrackedDayRepository {
_trackedDayDataSource.reduceDayCalorieGoal(day, amount);
}

Future<void> addNewTrackedDay(DateTime day, double totalKcalGoal) async {
Future<void> addNewTrackedDay(
DateTime day,
double totalKcalGoal,
double totalCarbsGoal,
double totalFatGoal,
double totalProteinGoal) async {
_trackedDayDataSource.saveTrackedDay(TrackedDayDBO(
day: day, calorieGoal: totalKcalGoal, caloriesTracked: 0));
day: day,
calorieGoal: totalKcalGoal,
caloriesTracked: 0,
carbsGoal: totalCarbsGoal,
carbsTracked: 0,
fatGoal: totalFatGoal,
fatTracked: 0,
proteinGoal: totalProteinGoal,
proteinTracked: 0));
}

Future<void> addDayTrackedCalories(DateTime day, double addCalories) async {
Expand All @@ -62,7 +75,38 @@ class TrackedDayRepository {
Future<void> removeDayTrackedCalories(
DateTime day, double addCalories) async {
if (await _trackedDayDataSource.hasTrackedDay(day)) {
_trackedDayDataSource.removeDayCaloriesTracked(day, addCalories);
_trackedDayDataSource.decreaseDayCaloriesTracked(day, addCalories);
}
}

Future<void> updateDayMacroGoal(DateTime day,
{double? carbGoal, double? fatGoal, double? proteinGoal}) async {
_trackedDayDataSource.updateDayMacroGoals(day,
carbsGoal: carbGoal, fatGoal: fatGoal, proteinGoal: proteinGoal);
}

Future<void> increaseDayMacroGoal(DateTime day,
{double? carbGoal, double? fatGoal, double? proteinGoal}) async {
_trackedDayDataSource.increaseDayMacroGoal(day,
carbsAmount: carbGoal, fatAmount: fatGoal, proteinAmount: proteinGoal);
}

Future<void> reduceDayMacroGoal(DateTime day,
{double? carbGoal, double? fatGoal, double? proteinGoal}) async {
_trackedDayDataSource.reduceDayMacroGoal(day,
carbsAmount: carbGoal, fatAmount: fatGoal, proteinAmount: proteinGoal);
}

Future<void> addDayMacrosTracked(DateTime day,
{double? carbsTracked, double? fatTracked, double? proteinTracked}) async {
_trackedDayDataSource.addDayMacroTracked(day,
carbsAmount: carbsTracked, fatAmount: fatTracked, proteinAmount: proteinTracked);
}

Future<void> removeDayMacrosTracked(DateTime day,
{double? carbsTracked, double? fatTracked, double? proteinTracked}) async {
_trackedDayDataSource.removeDayMacroTracked(day,
carbsAmount: carbsTracked, fatAmount: fatTracked, proteinAmount: proteinTracked);
}

}
37 changes: 32 additions & 5 deletions lib/core/domain/entity/tracked_day_entity.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,40 @@ import 'package:flutter/material.dart';
import 'package:opennutritracker/core/data/dbo/tracked_day_dbo.dart';

class TrackedDayEntity extends Equatable {

static const maxKcalDifference = 500;

final DateTime day;
final double calorieGoal;
final double caloriesTracked;
final double? carbsGoal;
final double? carbsTracked;
final double? fatGoal;
final double? fatTracked;
final double? proteinGoal;
final double? proteinTracked;

const TrackedDayEntity(
{required this.day,
required this.calorieGoal,
required this.caloriesTracked});
required this.caloriesTracked,
this.carbsGoal,
this.carbsTracked,
this.fatGoal,
this.fatTracked,
this.proteinGoal,
this.proteinTracked});

factory TrackedDayEntity.fromTrackedDayDBO(TrackedDayDBO trackedDayDBO) {
return TrackedDayEntity(
day: trackedDayDBO.day,
calorieGoal: trackedDayDBO.calorieGoal,
caloriesTracked: trackedDayDBO.caloriesTracked);
caloriesTracked: trackedDayDBO.caloriesTracked,
carbsGoal: trackedDayDBO.carbsGoal,
carbsTracked: trackedDayDBO.carbsTracked,
fatGoal: trackedDayDBO.fatGoal,
fatTracked: trackedDayDBO.fatTracked,
proteinGoal: trackedDayDBO.proteinGoal,
proteinTracked: trackedDayDBO.proteinTracked);
}

// TODO: make enum class for rating
Expand Down Expand Up @@ -48,5 +65,15 @@ class TrackedDayEntity extends Equatable {
}

@override
List<Object?> get props => [day, calorieGoal, caloriesTracked];
List<Object?> get props => [
day,
calorieGoal,
caloriesTracked,
carbsGoal,
carbsTracked,
fatGoal,
fatTracked,
proteinGoal,
proteinTracked
];
}
40 changes: 38 additions & 2 deletions lib/core/domain/usecase/add_tracked_day_usecase.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,14 @@ class AddTrackedDayUsecase {
return await _trackedDayRepository.hasTrackedDay(day);
}

Future<void> addNewTrackedDay(DateTime day, totalKcalGoal) async {
return await _trackedDayRepository.addNewTrackedDay(day, totalKcalGoal);
Future<void> addNewTrackedDay(
DateTime day,
double totalKcalGoal,
double totalCarbsGoal,
double totalFatGoal,
double totalProteinGoal) async {
return await _trackedDayRepository.addNewTrackedDay(
day, totalKcalGoal, totalCarbsGoal, totalFatGoal, totalProteinGoal);
}

Future<void> addDayCaloriesTracked(
Expand All @@ -34,4 +40,34 @@ class AddTrackedDayUsecase {
DateTime day, double caloriesTracked) async {
await _trackedDayRepository.removeDayTrackedCalories(day, caloriesTracked);
}

Future<void> updateDayMacroGoals(DateTime day,
{double? carbsGoal, double? fatGoal, double? proteinGoal}) async {
await _trackedDayRepository.updateDayMacroGoal(day,
carbGoal: carbsGoal, fatGoal: fatGoal, proteinGoal: proteinGoal);
}

Future<void> increaseDayMacroGoals(DateTime day,
{double? carbsAmount, double? fatAmount, double? proteinAmount}) async {
await _trackedDayRepository.increaseDayMacroGoal(day,
carbGoal: carbsAmount, fatGoal: fatAmount, proteinGoal: proteinAmount);
}

Future<void> reduceDayMacroGoals(DateTime day,
{double? carbsAmount, double? fatAmount, double? proteinAmount}) async {
await _trackedDayRepository.reduceDayMacroGoal(day,
carbGoal: carbsAmount, fatGoal: fatAmount, proteinGoal: proteinAmount);
}

Future<void> addDayMacrosTracked(DateTime day,
{double? carbsTracked, double? fatTracked, double? proteinTracked}) async {
await _trackedDayRepository.addDayMacrosTracked(day,
carbsTracked: carbsTracked, fatTracked: fatTracked, proteinTracked: proteinTracked);
}

Future<void> removeDayMacrosTracked(DateTime day,
{double? carbsTracked, double? fatTracked, double? proteinTracked}) async {
await _trackedDayRepository.removeDayMacrosTracked(day,
carbsTracked: carbsTracked, fatTracked: fatTracked, proteinTracked: proteinTracked);
}
}
Loading
Loading