feat: info by order screen

This commit is contained in:
BLoC
2025-03-14 15:53:18 +03:00
parent 04dafabc3a
commit 0a664cc58f
10 changed files with 108 additions and 51 deletions

5
lib/core/app_colors.dart Normal file
View File

@@ -0,0 +1,5 @@
import 'dart:ui';
abstract class AppColors {
static const scaffoldBackgroundColor = Color(0xFFF0F2F5);
}

View File

@@ -14,6 +14,7 @@ import 'package:eatvio_app/features/chat/presentation/pages/photo_view_screen.da
import 'package:eatvio_app/features/consultant/become_consultant/presentation/pages/become_consultant_screen.dart';
import 'package:eatvio_app/features/consultant/become_consultant/presentation/pages/stepper_become_consultant_screen.dart';
import 'package:eatvio_app/features/consultations/presentation/pages/consultations_screen.dart';
import 'package:eatvio_app/features/consultations/presentation/pages/info_by_order_screen.dart';
import 'package:eatvio_app/features/create_diet/presentation/create_diet_screen.dart';
import 'package:eatvio_app/features/create_diet/presentation/diet_preview_screen.dart';
import 'package:eatvio_app/features/create_plan/presentation/create_plan_screen.dart';
@@ -384,6 +385,11 @@ class AppRouter {
name: ConsultantRatingScreen.name,
builder: (context, state) => ConsultantRatingScreen(),
),
GoRoute(
path: InfoByOrderScreen.path,
name: InfoByOrderScreen.name,
builder: (context, state) => InfoByOrderScreen(),
),
],
);
}

View File

@@ -0,0 +1,26 @@
import 'package:eatvio_app/core/app_colors.dart';
import 'package:eatvio_app/features/diets/presentation/widgets/author_card.dart';
import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
import 'package:eatvio_app/generated/l10n.dart';
import 'package:flutter/material.dart';
class InfoByOrderScreen extends StatelessWidget {
static const name = 'infoByOrderScreen';
static const path = '/info-by-order-screen';
const InfoByOrderScreen({super.key});
@override
Widget build(BuildContext context) {
final s = S.of(context);
return Scaffold(
backgroundColor: AppColors.scaffoldBackgroundColor,
appBar: AppBar(
title: Text(s.infoAboutOrder),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.vertical(bottom: Radius.circular(12))),
),
body: AuthorCard(author: Author(authorSlug: 'authorSlug', authorName: 'authorName', authorProfileIcon: '', authorIsMe: false), title: 'asdasd'),
);
}
}

View File

@@ -35,6 +35,7 @@ class _DevToolsScreenContentState extends State<DevToolsScreenContent> {
GetChatRoomIdByUserSlug(),
GetBlogPostList(),
GetRecipes(),
CreateRecipeTask(),
GetDiets(),
GetPlans(),
GetBlogPostComments(),
@@ -60,6 +61,9 @@ class _DevToolsScreenContentState extends State<DevToolsScreenContent> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Для разработчиков'),
),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),

View File

@@ -5,6 +5,9 @@ import 'package:dio/dio.dart';
import 'package:eatvio_app/core/locator_service.dart';
import 'package:eatvio_app/core/utils/date_time_utils.dart';
import 'package:eatvio_app/features/chat/services/chat_service.dart';
import 'package:eatvio_app/features/create_recipe/models/recipe_model.dart';
import 'package:eatvio_app/features/create_recipe/models/step.dart';
import 'package:eatvio_app/features/create_recipe/reporitories/recipe_repository.dart';
import 'package:eatvio_app/features/diets/services/diet_service.dart';
import 'package:eatvio_app/features/feed/services/feed_service.dart';
import 'package:eatvio_app/features/profile/services/profile_service.dart';
@@ -16,6 +19,33 @@ sealed class TestCases {
Future<bool> run({required String baseUrl}) async => throw UnimplementedError();
}
class CreateRecipeTask implements TestCases {
@override
String get name => 'api/recipes/create';
@override
Future<bool> run({required String baseUrl}) async {
try {
final dio = sl<Dio>();
final recipeRepository = RecipeRepository(recipeService: CreateRecipeService(dio, baseUrl: baseUrl));
await recipeRepository.publishRecipe(
RecipeModel(
title: 'Title',
state: 'active',
description: 'desc',
type: 'first_meals',
servings: 10,
energyPerServing: 10,
steps: [Step(description: 'desc')],
),
);
} catch (e) {
return false;
}
return true;
}
}
class Test850task implements TestCases {
@override
String get name => 'task #850';
@@ -50,12 +80,7 @@ class Test850task implements TestCases {
await Future.delayed(Duration(seconds: 3));
}
try {
await dietsService.startDiet(
id: diet.id,
body: {
'date': yesterday.format('yyyy-MM-dd'),
},
);
await dietsService.startDiet(id: diet.id, body: {'date': yesterday.format('yyyy-MM-dd')});
return false;
} catch (e) {
@@ -64,12 +89,7 @@ class Test850task implements TestCases {
// test start diet with correct date
try {
await dietsService.startDiet(
id: diet.id,
body: {
'date': today.format('yyyy-MM-dd'),
},
);
await dietsService.startDiet(id: diet.id, body: {'date': today.format('yyyy-MM-dd')});
} catch (e) {
log('unexpected error2: $e');
return false;
@@ -87,12 +107,7 @@ class Test850task implements TestCases {
// test start diet with correct date
try {
await dietsService.startDiet(
id: diet.id,
body: {
'date': tomorrow.format('yyyy-MM-dd'),
},
);
await dietsService.startDiet(id: diet.id, body: {'date': tomorrow.format('yyyy-MM-dd')});
} catch (e) {
log('unexpected error4: $e');
return false;
@@ -304,9 +319,7 @@ class GetBlogPostComments implements TestCases {
final feedService = FeedService(dio, baseUrl: baseUrl);
final blogPostsModel = await feedService.getBlogPostList(page: 1, query: null);
final blogPosts = blogPostsModel.feedBlogPostList;
await feedService.getBlogPostComments(
id: blogPosts.first.id.toString(),
);
await feedService.getBlogPostComments(id: blogPosts.first.id.toString());
return true;
} catch (e) {
return false;
@@ -325,10 +338,7 @@ class SendBlogPostComment implements TestCases {
final feedService = FeedService(dio, baseUrl: baseUrl);
final blogPostsModel = await feedService.getBlogPostList(page: 1, query: null);
final blogPosts = blogPostsModel.feedBlogPostList;
await feedService.sendBlogPostComment(
id: blogPosts.first.id.toString(),
body: 'auto test message',
);
await feedService.sendBlogPostComment(id: blogPosts.first.id.toString(), body: 'auto test message');
return true;
} catch (e) {
return false;
@@ -347,9 +357,7 @@ class GetDietsComments implements TestCases {
final feedService = FeedService(dio, baseUrl: baseUrl);
final dietsModel = await feedService.getDiets(page: 1, query: null);
final diets = dietsModel.data;
await feedService.getDietsComments(
id: diets.first.id.toString(),
);
await feedService.getDietsComments(id: diets.first.id.toString());
return true;
} catch (e) {
return false;
@@ -368,10 +376,7 @@ class SendDietsComment implements TestCases {
final feedService = FeedService(dio, baseUrl: baseUrl);
final dietsModel = await feedService.getDiets(page: 1, query: null);
final diets = dietsModel.data;
await feedService.sendDietsComment(
id: diets.first.id.toString(),
body: 'auto test message',
);
await feedService.sendDietsComment(id: diets.first.id.toString(), body: 'auto test message');
return true;
} catch (e) {
return false;
@@ -390,9 +395,7 @@ class GetPlansComments implements TestCases {
final feedService = FeedService(dio, baseUrl: baseUrl);
final plansModel = await feedService.getPlans(page: 1, query: null);
final plans = plansModel.data;
await feedService.getPlansComments(
slug: plans.first.slug,
);
await feedService.getPlansComments(slug: plans.first.slug);
return true;
} catch (e) {
return false;
@@ -411,10 +414,7 @@ class SendPlansComment implements TestCases {
final feedService = FeedService(dio, baseUrl: baseUrl);
final plansModel = await feedService.getPlans(page: 1, query: null);
final plans = plansModel.data;
await feedService.sendPlansComment(
slug: plans.first.slug,
body: 'auto test message',
);
await feedService.sendPlansComment(slug: plans.first.slug, body: 'auto test message');
return true;
} catch (e) {
return false;
@@ -437,9 +437,7 @@ class GetRecipesComments implements TestCases {
final tagsIds = tags.map((e) => e.id).toList();
final recipesModel = await feedService.getRecipes(page: 1, tags: tagsIds, query: null);
final recipes = recipesModel.recipesList;
await feedService.getRecipesComments(
id: recipes.first.id.toString(),
);
await feedService.getRecipesComments(id: recipes.first.id.toString());
return true;
} catch (e) {
return false;

View File

@@ -289,6 +289,9 @@ class MessageLookup extends MessageLookupByLibrary {
"hours": MessageLookupByLibrary.simpleMessage("часов"),
"in_progress": MessageLookupByLibrary.simpleMessage("В процессе"),
"inactive_diet_state": MessageLookupByLibrary.simpleMessage("Черновик"),
"infoAboutOrder": MessageLookupByLibrary.simpleMessage(
"Информация о заказе",
),
"ingredients": MessageLookupByLibrary.simpleMessage("Ингредиенты"),
"initial_measurements": MessageLookupByLibrary.simpleMessage(
"Первичные замеры",

View File

@@ -185,6 +185,9 @@ class MessageLookup extends MessageLookupByLibrary {
"hips": MessageLookupByLibrary.simpleMessage("Бедра"),
"in_progress": MessageLookupByLibrary.simpleMessage("В процессе"),
"inactive_diet_state": MessageLookupByLibrary.simpleMessage("Черновик"),
"infoAboutOrder": MessageLookupByLibrary.simpleMessage(
"Информация о заказе",
),
"initial_measurements": MessageLookupByLibrary.simpleMessage(
"Первичные замеры",
),

View File

@@ -2519,6 +2519,16 @@ class S {
args: [],
);
}
/// `Информация о заказе`
String get infoAboutOrder {
return Intl.message(
'Информация о заказе',
name: 'infoAboutOrder',
desc: '',
args: [],
);
}
}
class AppLocalizationDelegate extends LocalizationsDelegate<S> {

View File

@@ -311,6 +311,7 @@
"could_not_update_diet": "Не удалось обновить диету",
"could_not_publish_blog_post": "Не удалось опубликовать пост",
"could_not_update_blog_post": "Не удалось обновить пост",
"could_not_delete_blog_post": "Не удалось удалить пост"
"could_not_delete_blog_post": "Не удалось удалить пост",
"infoAboutOrder": "Информация о заказе"
}

View File

@@ -98,14 +98,14 @@
"gr": "гр",
"milliliter": "мл",
"grams": "гр",
"startDiet": "Начать диету",
"startDiet": "Начать диету",
"comments": "Комментарии",
"comment": "комментарий",
"another_form_of_comment": "комментария",
"about_diet": "Об этой диете",
"days": "дней",
"day": "День",
"another_form_of_day": "дня",
"another_form_of_day": "дня",
"comments_plural": "комментариев",
"meal": "Приём пищи",
"diet_author": "Автор диеты",
@@ -113,7 +113,7 @@
"expand": "Показать полностью",
"copy_link": "Скопировать ссылку",
"share": "Поделиться",
"complain": "Пожаловаться",
"complain": "Пожаловаться",
"vegan_type": "Вегетарианская",
"light_type": "Легкая",
"meat_type": "С мясом",
@@ -127,7 +127,7 @@
"proteins": "Белки",
"fats": "Жиры",
"carbohydrates": "Углеводы",
"answer": "Ответить",
"answer": "Ответить",
"link_was_copied": "Ссылка успешно скопирована",
"choose_start_diet_date": "Выберите дату старты диеты. Она отобразиться у Вас в дневнике",
"continue_": "Продолжить",
@@ -149,7 +149,7 @@
"active_diet_state": "Активная",
"inactive_diet_state": "Черновик",
"personal_diet_state": "Персональная",
"meat": "Мясо",
"meat": "Мясо",
"vegan": "Веган.",
"photo": "Фото",
"gallery": "Галерея",
@@ -205,10 +205,11 @@
"personal": "Персональные",
"edit": "Редактировать",
"toOffer": "Предложить",
"removeFromActive": "Снять с публикации",
"removeFromActive": "Снять с публикации",
"diet": "Диета",
"deleted": "Удалена",
"my_plans": "Мои планы",
"from": "от",
"user_data": "Данные пользователя"
"from": "от",
"user_data": "Данные пользователя",
"infoAboutOrder": "Информация о заказе"
}