forked from eatvio/eatvio_app
feat: info by order screen
This commit is contained in:
5
lib/core/app_colors.dart
Normal file
5
lib/core/app_colors.dart
Normal file
@@ -0,0 +1,5 @@
|
||||
import 'dart:ui';
|
||||
|
||||
abstract class AppColors {
|
||||
static const scaffoldBackgroundColor = Color(0xFFF0F2F5);
|
||||
}
|
||||
@@ -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(),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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'),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(
|
||||
"Первичные замеры",
|
||||
|
||||
@@ -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(
|
||||
"Первичные замеры",
|
||||
),
|
||||
|
||||
@@ -2519,6 +2519,16 @@ class S {
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
|
||||
/// `Информация о заказе`
|
||||
String get infoAboutOrder {
|
||||
return Intl.message(
|
||||
'Информация о заказе',
|
||||
name: 'infoAboutOrder',
|
||||
desc: '',
|
||||
args: [],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class AppLocalizationDelegate extends LocalizationsDelegate<S> {
|
||||
|
||||
@@ -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": "Информация о заказе"
|
||||
}
|
||||
|
||||
|
||||
@@ -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": "Информация о заказе"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user