From 7e95646f098564ea6aa3086cffab0bbc978c23ed Mon Sep 17 00:00:00 2001 From: doch13_ Date: Fri, 28 Oct 2022 11:49:37 +0900 Subject: [PATCH 1/4] chore: Package Dependency Update --- pubspec.lock | 12 ++++++------ pubspec.yaml | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 1db7b80..187ef15 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -132,7 +132,7 @@ packages: description: path: "." ref: main - resolved-ref: "7f9db1bdd5267fba61d08af85d4669de669a9da5" + resolved-ref: "9fcda90d9ab950ce37a5b959bb204a40b2595b76" url: "https://github.com/dimigoin/dalgeurak-meal-application.git" source: git version: "1.0.0+1" @@ -141,7 +141,7 @@ packages: description: path: "." ref: main - resolved-ref: "012980861119b76501b209fcae833a8cdabf926a" + resolved-ref: fbc68a5d2a02ba23ba37f942853139c7f6527693 url: "https://github.com/dimigoin/dalgeurak-widget-package.git" source: git version: "0.0.2" @@ -158,7 +158,7 @@ packages: name: dimigoin_flutter_plugin url: "https://pub.dartlang.org" source: hosted - version: "0.5.8" + version: "0.5.9" dio: dependency: "direct main" description: @@ -258,7 +258,7 @@ packages: source: hosted version: "1.24.0" firebase_core_platform_interface: - dependency: transitive + dependency: "direct main" description: name: firebase_core_platform_interface url: "https://pub.dartlang.org" @@ -894,14 +894,14 @@ packages: name: syncfusion_flutter_core url: "https://pub.dartlang.org" source: hosted - version: "20.3.50" + version: "20.3.52" syncfusion_flutter_datepicker: dependency: transitive description: name: syncfusion_flutter_datepicker url: "https://pub.dartlang.org" source: hosted - version: "20.3.50" + version: "20.3.52" table_calendar: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index cc332ce..e4864d3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,7 +33,7 @@ dependencies: get: ^4.6.5 dio: ^4.0.1 - dimigoin_flutter_plugin: ^0.5.7 + dimigoin_flutter_plugin: ^0.5.9 dalgeurak_meal_application: git: url: https://github.com/dimigoin/dalgeurak-meal-application.git @@ -44,6 +44,7 @@ dependencies: ref: main firebase_core: ^1.24.0 + firebase_core_platform_interface: 4.5.1 firebase_auth: ^3.1.4 firebase_analytics: ^8.3.4 firebase_performance: ^0.8.0+4 From eb966c799c76ec84a42e785510c4f330cecfcad1 Mon Sep 17 00:00:00 2001 From: doch13_ Date: Fri, 28 Oct 2022 11:56:37 +0900 Subject: [PATCH 2/4] chore: Build Version - 2.0.2 --- ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ pubspec.yaml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 7dfd6dc..e4e6591 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -361,7 +361,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_TEAM = PJPNY5NKWA; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -370,7 +370,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.0.1; + MARKETING_VERSION = 2.0.2; PRODUCT_BUNDLE_IDENTIFIER = com.iceluna.dalgeurak; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -494,7 +494,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_TEAM = PJPNY5NKWA; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -503,7 +503,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.0.1; + MARKETING_VERSION = 2.0.2; PRODUCT_BUNDLE_IDENTIFIER = com.iceluna.dalgeurak; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -521,7 +521,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_TEAM = PJPNY5NKWA; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -530,7 +530,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.0.1; + MARKETING_VERSION = 2.0.2; PRODUCT_BUNDLE_IDENTIFIER = com.iceluna.dalgeurak; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; diff --git a/pubspec.yaml b/pubspec.yaml index e4864d3..3ea9e71 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.0.1+18 +version: 2.0.2+19 environment: sdk: ">=2.12.0 <3.0.0" From a9fba11f6c0c06dac25fa9e1c1bcada469eb9a61 Mon Sep 17 00:00:00 2001 From: doch13_ Date: Fri, 28 Oct 2022 12:55:27 +0900 Subject: [PATCH 3/4] refactor: Student Warning & CheckinRecord Dialog --- lib/controllers/meal_controller.dart | 10 +++ lib/screens/profile/my_profile.dart | 35 ++-------- .../student_manage_bottomsheet.dart | 4 ++ .../studentManage/student_manage_dialog.dart | 69 +++++++++++++++++++ 4 files changed, 87 insertions(+), 31 deletions(-) create mode 100644 lib/screens/studentManage/student_manage_dialog.dart diff --git a/lib/controllers/meal_controller.dart b/lib/controllers/meal_controller.dart index 7562cf5..3b887f6 100644 --- a/lib/controllers/meal_controller.dart +++ b/lib/controllers/meal_controller.dart @@ -283,6 +283,16 @@ class MealController extends GetxController { } } + getStudentWarningList(int studentUid) async { + Map result = await dalgeurakService.getStudentWarningList(studentUid); + + if (result['success']) { + return (result['content'] as List).cast(); + } else { + _dalgeurakToast.show("경고 목록을 불러오는데 실패하였습니다."); return; + } + } + giveStudentWarning(int studentUid, List warningType, String reason) async { Map result = await dalgeurakService.giveWarningToStudent(studentUid, warningType, reason); diff --git a/lib/screens/profile/my_profile.dart b/lib/screens/profile/my_profile.dart index bdf01e2..8cffa3c 100644 --- a/lib/screens/profile/my_profile.dart +++ b/lib/screens/profile/my_profile.dart @@ -1,6 +1,7 @@ import 'package:dalgeurak/controllers/auth_controller.dart'; import 'package:dalgeurak/controllers/user_controller.dart'; import 'package:dalgeurak/screens/profile/myprofile_bottomsheet.dart'; +import 'package:dalgeurak/screens/studentManage/student_manage_dialog.dart'; import 'package:dalgeurak_meal_application/pages/meal_cancel/page.dart'; import 'package:dalgeurak_meal_application/routes/routes.dart'; import 'package:dalgeurak_widget_package/widgets/dialog.dart'; @@ -32,6 +33,7 @@ class MyProfile extends GetWidget { MyProfileBottomSheet myProfileBottomSheet = MyProfileBottomSheet(); DalgeurakDialog dalgeurakDialog = DalgeurakDialog(); + StudentManageDialog studentManageDialog = StudentManageDialog(); controller.getUserWarningList(); @@ -156,31 +158,7 @@ class MyProfile extends GetWidget { return MediumMenuButton( iconName: "noticeCircle", title: "경고 횟수", subTitle: "$warningAmount회", - clickAction: () => dalgeurakDialog.showList( - "경고", - "누적 $warningAmount회", - "경고 기록", - ListView.builder( - itemCount: warningAmount, - itemBuilder: (context, index) { - DalgeurakWarning warning = controller.warningList[index]; - - String warningTypeStr = ""; - warning.warningTypeList?.forEach((element) => warningTypeStr = warningTypeStr + element.convertKorStr + ", "); - warningTypeStr = warningTypeStr.substring(0, warningTypeStr.length-2); - - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text("${Jiffy(warning.date).format("MM.dd (E) a hh:mm")}", style: myProfile_warning_date), - SizedBox(height: 2), - Text("$warningTypeStr(${warning.reason})", style: myProfile_warning_reason), - SizedBox(height: 20), - ], - ); - } - ) - ), + clickAction: () => studentManageDialog.showWarningDialog(controller.warningList) ); }), MediumMenuButton( @@ -197,12 +175,7 @@ class MyProfile extends GetWidget { children: [ MediumMenuButton( iconName: "checkCircle_round", title: "입장 기록", subTitle: "체크", - clickAction: () => dalgeurakDialog.showList( - "${controller.user?.name}", - "입장 기록", - "입장 기록", - null - ), + clickAction: () => studentManageDialog.showCheckInRecordDialog(controller.user!.name!), ), MediumMenuButton( iconName: "signDocu", title: "선/후밥", subTitle: "신청", diff --git a/lib/screens/studentManage/student_manage_bottomsheet.dart b/lib/screens/studentManage/student_manage_bottomsheet.dart index 6b2c73e..dbeb499 100644 --- a/lib/screens/studentManage/student_manage_bottomsheet.dart +++ b/lib/screens/studentManage/student_manage_bottomsheet.dart @@ -1,3 +1,4 @@ +import 'package:dalgeurak/screens/studentManage/student_manage_dialog.dart'; import 'package:dalgeurak_widget_package/services/dalgeurak_api.dart'; import 'package:dalgeurak_widget_package/widgets/blue_button.dart'; import 'package:dalgeurak_widget_package/widgets/checkbox.dart'; @@ -29,6 +30,7 @@ class StudentManageBottomSheet { DalgeurakBottomSheet _dalgeurakBottomSheet = DalgeurakBottomSheet(); DalgeurakDialog _dalgeurakDialog = DalgeurakDialog(); DalgeurakOverlayAlert _dalgeurakOverlayAlert = DalgeurakOverlayAlert(context: Get.context!); + StudentManageDialog _studentManageDialog = StudentManageDialog(); RxMap warningList = { "지각": false, @@ -108,6 +110,7 @@ class StudentManageBottomSheet { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( + onTap: () async => _studentManageDialog.showWarningDialog(await mealController.getStudentWarningList(student.id!)), child: SmallMenuButton( title: "경고 횟수", iconName: "onePage", @@ -115,6 +118,7 @@ class StudentManageBottomSheet { ), ), GestureDetector( + onTap: () => _studentManageDialog.showCheckInRecordDialog(student.name!), child: SmallMenuButton( title: "입장 기록", iconName: "logPage", diff --git a/lib/screens/studentManage/student_manage_dialog.dart b/lib/screens/studentManage/student_manage_dialog.dart new file mode 100644 index 0000000..4c83e68 --- /dev/null +++ b/lib/screens/studentManage/student_manage_dialog.dart @@ -0,0 +1,69 @@ +import 'package:dalgeurak_widget_package/services/dalgeurak_api.dart'; +import 'package:dalgeurak_widget_package/widgets/blue_button.dart'; +import 'package:dalgeurak_widget_package/widgets/checkbox.dart'; +import 'package:dalgeurak_widget_package/widgets/dialog.dart'; +import 'package:dalgeurak_widget_package/widgets/overlay_alert.dart'; +import 'package:dalgeurak_widget_package/widgets/bottom_sheet.dart'; +import 'package:dalgeurak_widget_package/widgets/reason_textfield.dart'; +import 'package:dalgeurak/screens/widgets/small_menu_button.dart'; +import 'package:dalgeurak_widget_package/widgets/toast.dart'; +import 'package:dimigoin_flutter_plugin/dimigoin_flutter_plugin.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:jiffy/jiffy.dart'; + +import '../../controllers/meal_controller.dart'; +import '../../controllers/user_controller.dart'; +import '../../themes/color_theme.dart'; +import '../../themes/text_theme.dart'; +import 'student_search.dart'; +import '../widgets/big_menu_button.dart'; + +class StudentManageDialog { + StudentManageDialog(); + + DalgeurakDialog _dalgeurakDialog = DalgeurakDialog(); + + RxMap warningList = { + "지각": false, + "욕설": false, + "통로 사용": false, + "순서 무시": false, + "기타": false, + }.obs; + TextEditingController warningReasonTextController = TextEditingController(); + MealController mealController = Get.find(); + + showWarningDialog(List warningList) => _dalgeurakDialog.showList( + "경고", + "누적 ${warningList.length}회", + "경고 기록", + ListView.builder( + itemCount: warningList.length, + itemBuilder: (context, index) { + DalgeurakWarning warning = warningList[index]; + + String warningTypeStr = ""; + warning.warningTypeList?.forEach((element) => warningTypeStr = warningTypeStr + element.convertKorStr + ", "); + warningTypeStr = warningTypeStr.substring(0, warningTypeStr.length-2); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("${Jiffy(warning.date).format("MM.dd (E) a hh:mm")}", style: myProfile_warning_date), + SizedBox(height: 2), + Text("$warningTypeStr(${warning.reason})", style: myProfile_warning_reason), + SizedBox(height: 20), + ], + ); + } + ) + ); + + showCheckInRecordDialog(String studentName) => _dalgeurakDialog.showList( + studentName, + "입장 기록", + "입장 기록", + null + ); +} \ No newline at end of file From 728ef9bab4527053f2783f3b4752901c417ff788 Mon Sep 17 00:00:00 2001 From: doch13_ <30923566+doch2@users.noreply.github.com> Date: Fri, 28 Oct 2022 13:01:36 +0900 Subject: [PATCH 4/4] Update README.md --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1595d0e..3a4ef19 100644 --- a/README.md +++ b/README.md @@ -4,19 +4,21 @@ 디미고 학생들을 위하여 만들어진 학교 급식 어플리케이션, 달그락입니다. -각 반의 급식 시간과 식단을 알려주어 학생들이 편하게 급식을 먹을 수 있게 해줍니다. -또한, QR코드 체크인을 진행하여 디넌과 급식실의 급식 지도를 편리하게 만들어줍니다. +각 반의 급식 시간과 식단을 알려주어 학생들이 편하게 급식을 먹을 수 있게 해줍니다. +다양한 부가기능을 통해 디넌과 급식실의 급식 지도를 편리하게 만들어줍니다. 현재 앱에서 지원하는 기능입니다. -* 급식실 입장시 QR코드 인증 기능 (실제 적용은 학교와의 협의필요) * 이번주의 급식 정보 제공 * 급식 시간 제공 * 개개인 지각횟수, 인증 로그 확인 기능 -* 급식 줄 원활 혼잡 밀림 알람 기능
+* 간편식 신청 & 체크인 기능 +* 선/후밥 신청 및 컨펌 기능 +* 급식 취소 기능 +* 디넌과 선생님을 위한 급식 관련 관리 기능 등
-※ 2021 교내IT공모전 공모작이며, 20기 웹프로그래밍과 유도희와 이비즈니스과 라윤지가 제작하였습니다.
+※ 디미고 인트라넷 개발팀, DIN에서 진행하는 프로젝트입니다.
-
ScreenShot

+
ScreenShot

## 어플리케이션 이용