Skip to content

Commit

Permalink
Merge pull request #57 from simonoppowa/add-calendar-macros
Browse files Browse the repository at this point in the history
Add calendar macros
  • Loading branch information
simonoppowa committed Mar 8, 2024
2 parents 7fc4fd1 + 61e14f5 commit 167967d
Show file tree
Hide file tree
Showing 11 changed files with 381 additions and 45 deletions.
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

0 comments on commit 167967d

Please sign in to comment.