forked from eatvio/eatvio_app
66 lines
2.1 KiB
Dart
66 lines
2.1 KiB
Dart
import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart';
|
|
import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'consultation_model.freezed.dart';
|
|
part 'consultation_model.g.dart';
|
|
|
|
@freezed
|
|
abstract class ConsultationModel with _$ConsultationModel {
|
|
factory ConsultationModel({
|
|
required int id,
|
|
@JsonKey(name: 'last_state') required ChosenPlanStateEnum chosenPlanState,
|
|
required String planTitle,
|
|
required String userName,
|
|
required String userSlug,
|
|
required double consultantPayment,
|
|
required int duration,
|
|
required int currentDiaryDay,
|
|
@JsonKey(name: 'start_date', fromJson: parseDate) required DateTime startDate,
|
|
@JsonKey(name: 'end_date', fromJson: parseDate) required DateTime endDate,
|
|
@JsonKey(name: 'consultant_id') required int consultantId,
|
|
required List<DiaryModel> diaries,
|
|
}) = _ConsultationModel;
|
|
|
|
factory ConsultationModel.fromJson(Map<String, dynamic> json) => _$ConsultationModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class DiaryModel with _$DiaryModel {
|
|
factory DiaryModel({
|
|
required int id,
|
|
required DiaryStateEnum state,
|
|
@JsonKey(fromJson: parseUnformattedDate) required DateTime date,
|
|
}) = _DiaryModel;
|
|
|
|
factory DiaryModel.fromJson(Map<String, dynamic> json) => _$DiaryModelFromJson(json);
|
|
}
|
|
|
|
DateTime parseUnformattedDate(String date) {
|
|
final dateChunks = date.split('-').map(int.parse).toList();
|
|
|
|
return DateTime(dateChunks.first, dateChunks[1], dateChunks.last);
|
|
}
|
|
|
|
enum DiaryStateEnum {
|
|
init,
|
|
started,
|
|
finished,
|
|
commented,
|
|
@JsonValue('reviewed_by_user')
|
|
reviewedByUser,
|
|
@JsonValue('last_day_started')
|
|
lastDayStarted,
|
|
@JsonValue('last_day_finished')
|
|
lastDayFinished,
|
|
@JsonValue('last_day_commented')
|
|
lastDayCommented,
|
|
}
|
|
|
|
@freezed
|
|
abstract class ConsultationPaginationModel with _$ConsultationPaginationModel {
|
|
factory ConsultationPaginationModel({required List<ConsultationModel> data}) = _ConsultationPaginationModel;
|
|
|
|
factory ConsultationPaginationModel.fromJson(Map<String, dynamic> json) => _$ConsultationPaginationModelFromJson(json);
|
|
}
|