feat(consultations): consultations archive. feat(diary): plan and diet widget

This commit is contained in:
Username1548
2025-05-30 19:38:33 +07:00
parent d645910554
commit 10ef59f6ea
20 changed files with 470 additions and 42 deletions

View File

@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:eatvio_app/core/image_compressing/image_compress_utility.dart';
import 'package:eatvio_app/core/utils/date_time_utils.dart';
import 'package:eatvio_app/features/chat/repositories/chat_repository.dart';
import 'package:eatvio_app/features/consultations/models/consultation_model.dart';
import 'package:eatvio_app/features/diary/models/consultant_review_model.dart';
import 'package:eatvio_app/features/diary/models/diary_day_model.dart';
@@ -23,8 +24,14 @@ class DiaryCubit extends Cubit<DiaryState> {
final GlossaryRepository glossaryRepository;
final ProfileRepository profileRepository;
final DietRepository dietRepository;
final ChatRepository chatRepository;
int? diaryId;
DiaryCubit({required this.diaryRepository, required this.glossaryRepository, required this.profileRepository, required this.dietRepository})
DiaryCubit(
{required this.chatRepository,
required this.diaryRepository,
required this.glossaryRepository,
required this.profileRepository,
required this.dietRepository})
: super(const DiaryState.loading()) {
today = DateTime.now();
selectedDay = today;
@@ -146,6 +153,7 @@ class DiaryCubit extends Cubit<DiaryState> {
fetchDiary([bool needLoading = false, int? diaryId]) async {
this.diaryId ??= diaryId;
if (needLoading) {
emit(const DiaryState.loading());
selectedMeal = 1;
@@ -159,8 +167,15 @@ class DiaryCubit extends Cubit<DiaryState> {
diaryDay = await diaryRepository.getDiaryByDate(stringDate);
}
ConsultantReviewModel? consultantReview;
int? planDuration;
int? currentPlanDay;
String? planName;
if (diaryDay.chosenPlanId != null) {
consultantReview = await diaryRepository.getDiaryComments(planId: diaryDay.chosenPlanId!, diaryId: diaryDay.id);
final chosenPlanModel = await chatRepository.getChosenPlan(id: diaryDay.chosenPlanId!);
planDuration = chosenPlanModel.plan.duration;
planName = chosenPlanModel.plan.name;
currentPlanDay = DateTime.now().difference(chosenPlanModel.startDate).inDays + 1;
}
final nutrition = await getNutrition(diaryDay.id);
@@ -179,6 +194,9 @@ class DiaryCubit extends Cubit<DiaryState> {
consultantReview: consultantReview,
isDiaryFinished: isDiaryFinished,
isDiaryCommented: isDiaryCommented,
chosenPlanCurrentDay: currentPlanDay,
chosenPlanDuration: planDuration,
chosenPlanName: planName,
),
);
} catch (e, st) {

View File

@@ -20,8 +20,11 @@ abstract class DiaryState with _$DiaryState {
required NutritionDataModel nutrition,
required DateTime selectedDay,
required int selectedMeal,
@Default(false) bool isConsultantView,
int? chosenPlanCurrentDay,
String? chosenPlanName,
int? chosenPlanDuration,
ConsultantReviewModel? consultantReview,
@Default(false) bool isConsultantView,
@Default(false) bool isDiaryFinished,
@Default(false) bool isDiaryCommented,
}) = DiaryStateLoaded;