├── .gitignore ├── .idea ├── .name ├── codeStyles │ └── Project.xml ├── gradle.xml ├── misc.xml ├── render.experimental.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── Screenshots ├── App_ui.png ├── Appointment_1.jpg ├── Appointment_2.jpg ├── Appointment_3.jpg ├── Chat.jpg ├── Doctor_home.jpg ├── Medical_folder_1.jpg ├── Medical_folder_2.jpg ├── Medical_folder_3.jpg ├── Patient_home.jpg └── Search_doctor.jpg ├── app ├── .gitignore ├── build.gradle ├── google-services.json ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── ensias │ │ └── healthcareapp │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── ensias │ │ │ └── healthcareapp │ │ │ ├── AppointementActivity.java │ │ │ ├── ChatActivity.java │ │ │ ├── Common │ │ │ ├── Common.java │ │ │ └── NonSwipeViewPager.java │ │ │ ├── ConfirmedAppointmensActivity.java │ │ │ ├── ConsultationFragmentPage.java │ │ │ ├── DoctorAdapterFiltred.java │ │ │ ├── DoctorAppointementActivity.java │ │ │ ├── DoctorHomeActivity.java │ │ │ ├── DossierMedical.java │ │ │ ├── EditProfileDoctorActivity.java │ │ │ ├── EditProfilePatientActivity.java │ │ │ ├── FicheActivity.java │ │ │ ├── FicheInfo.java │ │ │ ├── FirstSigninActivity.java │ │ │ ├── HomeActivity.java │ │ │ ├── Hospitalisation.java │ │ │ ├── Interface │ │ │ ├── IRecyclerItemSelectedListener.java │ │ │ └── ITimeSlotLoadListener.java │ │ │ ├── MainActivity.java │ │ │ ├── MyCalendarDoctorActivity.java │ │ │ ├── MyDoctorsAvtivity.java │ │ │ ├── MyPatientsActivity.java │ │ │ ├── PatientAppointementsActivity.java │ │ │ ├── PatientInfoActivity.java │ │ │ ├── PatientRequestPage.java │ │ │ ├── ProfileDoctorActivity.java │ │ │ ├── ProfilePatientActivity.java │ │ │ ├── SearchPatActivity.java │ │ │ ├── TestActivity.java │ │ │ ├── adapter │ │ │ ├── ConfirmedAppointmentsAdapter.java │ │ │ ├── ConsultationAdapter.java │ │ │ ├── ConsultationFragmentAdapter.java │ │ │ ├── DoctorAppointementAdapter.java │ │ │ ├── DoctoreAdapter.java │ │ │ ├── HospitalisationAdapter.java │ │ │ ├── MessageAdapter.java │ │ │ ├── MyDoctorsAdapter.java │ │ │ ├── MyPatientsAdapter.java │ │ │ ├── MyTimeSlotAdapter.java │ │ │ ├── MyViewPagerAdapter.java │ │ │ ├── PatRequestAdapter.java │ │ │ └── PatientAppointmentsAdapter.java │ │ │ ├── fireStoreApi │ │ │ ├── DoctorHelper.java │ │ │ ├── PatientHelper.java │ │ │ └── UserHelper.java │ │ │ ├── fragment │ │ │ ├── BookingStep1Fragment.java │ │ │ ├── BookingStep2Fragment.java │ │ │ ├── BookingStep3Fragment.java │ │ │ └── ConsultationFragment.java │ │ │ └── model │ │ │ ├── ApointementInformation.java │ │ │ ├── Doctor.java │ │ │ ├── Dossier.java │ │ │ ├── Fiche.java │ │ │ ├── Hour.java │ │ │ ├── Message.java │ │ │ ├── Patient.java │ │ │ ├── RDV.java │ │ │ ├── Request.java │ │ │ ├── ShowToast.java │ │ │ ├── TimeSlot.java │ │ │ ├── UploadImage.java │ │ │ └── User.java │ └── res │ │ ├── drawable-hdpi │ │ ├── ic_add_circle_black_24px.png │ │ ├── ic_android_white_24dp.png │ │ ├── ic_bug_report_white_24dp.png │ │ ├── ic_cloud_white_24dp.png │ │ ├── ic_image_notification.png │ │ ├── ic_school_black_24dp.png │ │ └── medcal_logo.png │ │ ├── drawable-mdpi │ │ ├── ic_add_circle_black_24px.png │ │ ├── ic_android_white_24dp.png │ │ ├── ic_bug_report_white_24dp.png │ │ ├── ic_cloud_white_24dp.png │ │ ├── ic_image_notification.png │ │ ├── ic_school_black_24dp.png │ │ └── medcal_logo.png │ │ ├── drawable-v24 │ │ ├── ic_launcher_foreground.xml │ │ ├── medcal_logo.png │ │ ├── note_background.jpg │ │ └── valide.png │ │ ├── drawable-xhdpi │ │ ├── ic_add_circle_black_24px.png │ │ ├── ic_android_white_24dp.png │ │ ├── ic_bug_report_white_24dp.png │ │ ├── ic_cloud_white_24dp.png │ │ ├── ic_image_notification.png │ │ ├── ic_school_black_24dp.png │ │ └── medcal_logo.png │ │ ├── drawable-xxhdpi │ │ ├── ic_add_circle_black_24px.png │ │ ├── ic_android_white_24dp.png │ │ ├── ic_bug_report_white_24dp.png │ │ ├── ic_cloud_white_24dp.png │ │ ├── ic_image_notification.png │ │ ├── ic_school_black_24dp.png │ │ └── medcal_logo.png │ │ ├── drawable-xxxhdpi │ │ ├── healthy.jpg │ │ ├── ic_add_circle_black_24px.png │ │ ├── ic_android_white_24dp.png │ │ ├── ic_bug_report_white_24dp.png │ │ ├── ic_cloud_white_24dp.png │ │ ├── ic_image_notification.png │ │ ├── ic_school_black_24dp.png │ │ └── medcal_logo.png │ │ ├── drawable │ │ ├── button_danger.xml │ │ ├── button_green.xml │ │ ├── button_home.xml │ │ ├── button_radius_accent_color.xml │ │ ├── button_radius_primary_color.xml │ │ ├── button_success.xml │ │ ├── circle.xml │ │ ├── doctor.jpg │ │ ├── ic_account_24dp.xml │ │ ├── ic_add_location_black_24dp.xml │ │ ├── ic_anon_user_48dp.xml │ │ ├── ic_appointement.xml │ │ ├── ic_arrow_back_black_24dp.xml │ │ ├── ic_assignment_ind_black_24dp.xml │ │ ├── ic_attach_money_black_24dp.xml │ │ ├── ic_calendar.xml │ │ ├── ic_call_black_24dp.xml │ │ ├── ic_camera_alt_black_24dp.xml │ │ ├── ic_chat_black_24dp.xml │ │ ├── ic_chat_message_background.xml │ │ ├── ic_close.xml │ │ ├── ic_date.xml │ │ ├── ic_doctor_24dp.png │ │ ├── ic_edit_black_24dp.xml │ │ ├── ic_email_black_24dp.xml │ │ ├── ic_exit_to_app_black_24dp.xml │ │ ├── ic_filter_list_black_24dp.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_local_hospital_black_24dp.xml │ │ ├── ic_logo_auth.png │ │ ├── ic_monetization_on_black_24dp.xml │ │ ├── ic_more_vert_white_24dp.png │ │ ├── ic_person.xml │ │ ├── ic_person_black_24dp.xml │ │ ├── ic_phone_android_black_24dp.xml │ │ ├── ic_profile.xml │ │ ├── ic_request.xml │ │ ├── ic_search.xml │ │ ├── ic_search_white.xml │ │ ├── ic_search_white_24dp.png │ │ ├── img.xml │ │ ├── link_background.xml │ │ ├── loading_shape.xml │ │ ├── logo.png │ │ ├── main_header_selector.xml │ │ ├── medcal_logo.png │ │ ├── price_background.xml │ │ ├── primary_gradient_green.xml │ │ ├── profile.jpg │ │ ├── rating_background.xml │ │ ├── rectangle_round.xml │ │ ├── rounded_dialog.xml │ │ ├── rounded_edittext.xml │ │ ├── rounded_message.xml │ │ ├── rounded_message2.xml │ │ ├── rounded_relativelayout.xml │ │ ├── rr.xml │ │ └── valide.png │ │ ├── font │ │ ├── amita.xml │ │ ├── courgette.xml │ │ ├── roboto.ttf │ │ └── roboto_light.ttf │ │ ├── layout │ │ ├── activity_appointement.xml │ │ ├── activity_chat.xml │ │ ├── activity_confirmed_appointements.xml │ │ ├── activity_doctor_appointement.xml │ │ ├── activity_doctor_home.xml │ │ ├── activity_dossier_medical.xml │ │ ├── activity_edit_profile_doctor.xml │ │ ├── activity_edit_profile_patient.xml │ │ ├── activity_fiche.xml │ │ ├── activity_fiche_info.xml │ │ ├── activity_first_signin.xml │ │ ├── activity_home.xml │ │ ├── activity_main.xml │ │ ├── activity_my_calendar_doctor.xml │ │ ├── activity_my_doctors.xml │ │ ├── activity_my_patients.xml │ │ ├── activity_patient_appointments.xml │ │ ├── activity_patient_info.xml │ │ ├── activity_patient_request_page.xml │ │ ├── activity_profile_doctor.xml │ │ ├── activity_profile_info.xml │ │ ├── activity_search_pat.xml │ │ ├── activity_test.xml │ │ ├── confirmed_appointements_item.xml │ │ ├── consultation_item.xml │ │ ├── doctor_appointement_item.xml │ │ ├── doctor_item.xml │ │ ├── fragment_booking_step3.xml │ │ ├── fragment_booking_step_one.xml │ │ ├── fragment_booking_step_two.xml │ │ ├── fragment_consultation.xml │ │ ├── fragment_consultation_page.xml │ │ ├── fragment_hospitalisation.xml │ │ ├── hospitalisation_item.xml │ │ ├── layout_time_slot.xml │ │ ├── message_chat_item.xml │ │ ├── my_doctor_item.xml │ │ ├── my_patient_item.xml │ │ ├── pat_request_item.xml │ │ └── patient_appointments_item.xml │ │ ├── medcal_logo.png │ │ ├── menu │ │ ├── navigation_bar.xml │ │ └── top_app_bar.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values-v21 │ │ └── styles.xml │ │ └── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── dimen.xml │ │ ├── font_certs.xml │ │ ├── preloaded_fonts.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── ensias │ └── healthcareapp │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Health Care App -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | xmlns:android 14 | 15 | ^$ 16 | 17 | 18 | 19 |
20 |
21 | 22 | 23 | 24 | xmlns:.* 25 | 26 | ^$ 27 | 28 | 29 | BY_NAME 30 | 31 |
32 |
33 | 34 | 35 | 36 | .*:id 37 | 38 | http://schemas.android.com/apk/res/android 39 | 40 | 41 | 42 |
43 |
44 | 45 | 46 | 47 | .*:name 48 | 49 | http://schemas.android.com/apk/res/android 50 | 51 | 52 | 53 |
54 |
55 | 56 | 57 | 58 | name 59 | 60 | ^$ 61 | 62 | 63 | 64 |
65 |
66 | 67 | 68 | 69 | style 70 | 71 | ^$ 72 | 73 | 74 | 75 |
76 |
77 | 78 | 79 | 80 | .* 81 | 82 | ^$ 83 | 84 | 85 | BY_NAME 86 | 87 |
88 |
89 | 90 | 91 | 92 | .* 93 | 94 | http://schemas.android.com/apk/res/android 95 | 96 | 97 | ANDROID_ATTRIBUTE_ORDER 98 | 99 |
100 |
101 | 102 | 103 | 104 | .* 105 | 106 | .* 107 | 108 | 109 | BY_NAME 110 | 111 |
112 |
113 |
114 |
115 |
116 |
-------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /.idea/render.experimental.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## HealthCare App 2 | A mobile application that facilitates making appointments and monitoring patients. 3 | 4 | ## 🤓 Authors 5 | **Yassine Boujnah** [![Twitter Follow](https://img.shields.io/twitter/follow/yassboujnah.svg?style=social)](https://twitter.com/yassboujnah) 6 | **Ilyass TARHRI** [![Twitter Follow](https://img.shields.io/twitter/follow/ilyass_trh.svg?style=social)](https://twitter.com/ilyass_trh) 7 | 8 | 9 | Figma [UI design](https://www.figma.com/file/L0xzd81wOR54JDfknXAZaR/HealthCare?node-id=0%3A1) 10 | 11 | 12 | 13 | ## Screenshots 14 | 15 | Doctor Home | Patient Home | Search Doctor 16 | :-------------------------:|:-------------------------:|:-------------------------: 17 | || 18 | 19 | Find Appointement | Select Appointement | Accept Appointement 20 | :-------------------------:|:-------------------------:|:---------------------- 21 | |)| 22 | 23 | Add Treatment | Medical Folder | Contact 24 | :-------------------------:|:-------------------------:|:---------------------- 25 | || 26 | 27 | -------------------------------------------------------------------------------- /Screenshots/App_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/App_ui.png -------------------------------------------------------------------------------- /Screenshots/Appointment_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Appointment_1.jpg -------------------------------------------------------------------------------- /Screenshots/Appointment_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Appointment_2.jpg -------------------------------------------------------------------------------- /Screenshots/Appointment_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Appointment_3.jpg -------------------------------------------------------------------------------- /Screenshots/Chat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Chat.jpg -------------------------------------------------------------------------------- /Screenshots/Doctor_home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Doctor_home.jpg -------------------------------------------------------------------------------- /Screenshots/Medical_folder_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Medical_folder_1.jpg -------------------------------------------------------------------------------- /Screenshots/Medical_folder_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Medical_folder_2.jpg -------------------------------------------------------------------------------- /Screenshots/Medical_folder_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Medical_folder_3.jpg -------------------------------------------------------------------------------- /Screenshots/Patient_home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Patient_home.jpg -------------------------------------------------------------------------------- /Screenshots/Search_doctor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/Screenshots/Search_doctor.jpg -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'com.google.gms.google-services' // Google Services plugin 3 | 4 | android { 5 | 6 | compileOptions { 7 | targetCompatibility = "8" 8 | sourceCompatibility = "8" 9 | } 10 | 11 | compileSdkVersion 29 12 | buildToolsVersion "29.0.3" 13 | 14 | defaultConfig { 15 | applicationId "com.ensias.healthcareapp" 16 | minSdkVersion 16 17 | targetSdkVersion 29 18 | versionCode 1 19 | versionName "1.0" 20 | multiDexEnabled true 21 | vectorDrawables.useSupportLibrary = true 22 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 23 | } 24 | 25 | buildTypes { 26 | release { 27 | minifyEnabled false 28 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 29 | } 30 | } 31 | 32 | } 33 | 34 | dependencies { 35 | implementation fileTree(dir: 'libs', include: ['*.jar']) 36 | 37 | implementation 'androidx.appcompat:appcompat:1.1.0' 38 | implementation "androidx.legacy:legacy-support-v4:1.0.0" 39 | implementation "androidx.recyclerview:recyclerview:1.0.0" 40 | implementation "androidx.viewpager:viewpager:1.0.0" 41 | implementation 'androidx.cardview:cardview:1.0.0' 42 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 43 | testImplementation 'junit:junit:4.12' 44 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 45 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 46 | implementation 'com.google.firebase:firebase-auth:19.3.0' 47 | implementation 'com.google.firebase:firebase-database:19.2.1' 48 | implementation 'com.google.android.gms:play-services-auth:18.0.0' 49 | implementation 'com.google.android.material:material:1.1.0' 50 | implementation 'com.google.firebase:firebase-firestore:21.4.2' 51 | implementation 'com.firebaseui:firebase-ui-storage:6.2.0' 52 | implementation 'androidx.multidex:multidex:2.0.0' 53 | implementation 'androidx.appcompat:appcompat:1.0.0' 54 | implementation 'com.shuhart.stepview:stepview:1.5.1' 55 | implementation 'com.jaredrummler:material-spinner:1.3.1' 56 | implementation 'devs.mulham.horizontalcalendar:horizontalcalendar:1.3.4' 57 | implementation 'com.jakewharton:butterknife:10.0.0' 58 | annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0' 59 | implementation 'com.github.d-max:spots-dialog:1.1@aar' 60 | implementation 'io.paperdb:paperdb:2.7.1' 61 | implementation 'com.google.code.gson:gson:2.8.5' 62 | 63 | implementation 'com.squareup.picasso:picasso:2.5.2' 64 | 65 | implementation 'com.firebaseui:firebase-ui-firestore:4.1.0' 66 | implementation 'com.google.firebase:firebase-storage:19.1.1' 67 | 68 | } 69 | -------------------------------------------------------------------------------- /app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "252474925743", 4 | "firebase_url": "https://health-care-486ee.firebaseio.com", 5 | "project_id": "health-care-486ee", 6 | "storage_bucket": "health-care-486ee.appspot.com" 7 | }, 8 | "client": [ 9 | { 10 | "client_info": { 11 | "mobilesdk_app_id": "1:252474925743:android:f9f62581970d6d7777aa5a", 12 | "android_client_info": { 13 | "package_name": "com.ensias.healthcareapp" 14 | } 15 | }, 16 | "oauth_client": [ 17 | { 18 | "client_id": "252474925743-t4o26o31vpoe742fmnmpq19lm9b13cob.apps.googleusercontent.com", 19 | "client_type": 1, 20 | "android_info": { 21 | "package_name": "com.ensias.healthcareapp", 22 | "certificate_hash": "d7a4cdcda951e6f94dddbfd02a418edee5a8728b" 23 | } 24 | }, 25 | { 26 | "client_id": "252474925743-ur6fthfcfb1ubumntr4k8vem4vfv17uh.apps.googleusercontent.com", 27 | "client_type": 3 28 | } 29 | ], 30 | "api_key": [ 31 | { 32 | "current_key": "AIzaSyD-zJdmcrhUKMlVs_mEDS4o8ZDIpdF_YOA" 33 | } 34 | ], 35 | "services": { 36 | "appinvite_service": { 37 | "other_platform_oauth_client": [ 38 | { 39 | "client_id": "252474925743-ur6fthfcfb1ubumntr4k8vem4vfv17uh.apps.googleusercontent.com", 40 | "client_type": 3 41 | } 42 | ] 43 | } 44 | } 45 | } 46 | ], 47 | "configuration_version": "1" 48 | } -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/ensias/healthcareapp/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | 25 | assertEquals("com.ensias.healthcareapp", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/AppointementActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.appcompat.app.AppCompatActivity; 5 | 6 | import android.app.DatePickerDialog; 7 | import android.graphics.drawable.Drawable; 8 | import android.os.Bundle; 9 | import android.view.View; 10 | import android.widget.Button; 11 | import android.widget.DatePicker; 12 | import android.widget.LinearLayout; 13 | import android.widget.ListView; 14 | import android.widget.TextView; 15 | 16 | import com.ensias.healthcareapp.model.Hour; 17 | import com.google.android.gms.tasks.OnFailureListener; 18 | import com.google.android.gms.tasks.OnSuccessListener; 19 | import com.google.firebase.auth.FirebaseAuth; 20 | import com.google.firebase.firestore.CollectionReference; 21 | import com.google.firebase.firestore.DocumentSnapshot; 22 | import com.google.firebase.firestore.FirebaseFirestore; 23 | 24 | import java.util.ArrayList; 25 | import java.util.Arrays; 26 | import java.util.Calendar; 27 | import java.util.HashMap; 28 | import java.util.List; 29 | import java.util.Map; 30 | 31 | public class AppointementActivity extends AppCompatActivity { 32 | 33 | private LinearLayout lis; 34 | //final List fruits_list = new ArrayList(Arrays.asList(fruits)); 35 | static FirebaseFirestore db = FirebaseFirestore.getInstance(); 36 | 37 | @Override 38 | protected void onCreate(Bundle savedInstanceState) { 39 | super.onCreate(savedInstanceState); 40 | setContentView(R.layout.activity_appointement); 41 | lis = findViewById(R.id.listDate); 42 | String patient_email = getIntent().getStringExtra("key1"); 43 | String day = getIntent().getStringExtra("key2"); 44 | final CollectionReference addRequest = db.collection("Doctor").document(patient_email).collection("calendar").document(day).collection("hour"); 45 | 46 | 47 | LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(140, 398); 48 | layoutParams.setMargins(200, 0, 300, 0); 49 | 50 | for (int i = 8; i<19;i++){ 51 | final int j = i; 52 | TextView text = new TextView(this); 53 | text.setText(i + ":00"); 54 | LinearLayout l = new LinearLayout(this); 55 | l.setMinimumHeight(250); 56 | l.addView(text, layoutParams); 57 | final Button btn = new Button(this); 58 | addRequest.document(i+"").get().addOnSuccessListener(new OnSuccessListener() { 59 | @Override 60 | public void onSuccess(DocumentSnapshot documentSnapshot) { 61 | Hour note = documentSnapshot.toObject(Hour.class); 62 | if(note != null){ 63 | btn.setText("already choosen"); 64 | } 65 | else{ 66 | btn.setText("confirme this hour"); 67 | btn.setOnClickListener(new View.OnClickListener() { 68 | @Override 69 | public void onClick(View v) { 70 | Hour h =new Hour(FirebaseAuth.getInstance().getCurrentUser().getEmail().toString()); 71 | addRequest.document(j+"").set(h); 72 | } 73 | }); 74 | } 75 | 76 | } 77 | }); 78 | 79 | l.addView(btn); 80 | lis.addView(l); 81 | } 82 | 83 | } 84 | 85 | 86 | } -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/ChatActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | import androidx.recyclerview.widget.LinearLayoutManager; 5 | import androidx.recyclerview.widget.RecyclerView; 6 | 7 | import android.os.Bundle; 8 | import android.view.View; 9 | import android.widget.Button; 10 | 11 | import com.ensias.healthcareapp.adapter.MessageAdapter; 12 | import com.ensias.healthcareapp.model.Message; 13 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 14 | import com.google.android.material.textfield.TextInputEditText; 15 | import com.google.firebase.auth.FirebaseAuth; 16 | import com.google.firebase.firestore.CollectionReference; 17 | import com.google.firebase.firestore.FirebaseFirestore; 18 | import com.google.firebase.firestore.Query; 19 | 20 | public class ChatActivity extends AppCompatActivity { 21 | private FirebaseAuth mAuth; 22 | private Bundle extras; 23 | private CollectionReference MessageRef1 ; 24 | private CollectionReference MessageRef2 ; 25 | private MessageAdapter adapter; 26 | private TextInputEditText envoyer; 27 | private Button btnEnvoyer; 28 | @Override 29 | protected void onCreate(Bundle savedInstanceState) { 30 | super.onCreate(savedInstanceState); 31 | setContentView(R.layout.activity_chat); 32 | extras = getIntent().getExtras(); 33 | MessageRef1 = FirebaseFirestore.getInstance().collection("chat").document(extras.getString("key1")).collection("message"); 34 | MessageRef2 = FirebaseFirestore.getInstance().collection("chat").document(extras.getString("key2")).collection("message"); 35 | envoyer= (TextInputEditText)findViewById(R.id.activity_mentor_chat_message_edit_text); 36 | btnEnvoyer= (Button)findViewById(R.id.activity_mentor_chat_send_button); 37 | setUpRecyclerView(); 38 | btnEnvoyer.setOnClickListener(new View.OnClickListener() { 39 | @Override 40 | public void onClick(View v) { 41 | Message msg = new Message(envoyer.getText().toString(),FirebaseAuth.getInstance().getCurrentUser().getEmail().toString()); 42 | MessageRef1.document().set(msg); 43 | MessageRef2.document().set(msg); 44 | envoyer.setText(""); 45 | } 46 | }); 47 | } 48 | 49 | private void setUpRecyclerView() { 50 | Query query = MessageRef1.orderBy("dateCreated"); 51 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 52 | .setQuery(query, Message.class) 53 | .build(); 54 | adapter = new MessageAdapter(options); 55 | 56 | RecyclerView recyclerView = findViewById(R.id.activity_mentor_chat_recycler_view); 57 | recyclerView.setHasFixedSize(true); 58 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 59 | recyclerView.setAdapter(adapter); 60 | recyclerView.smoothScrollToPosition(adapter.getItemCount()); 61 | 62 | } 63 | @Override 64 | protected void onStart() { 65 | super.onStart(); 66 | adapter.startListening(); 67 | } 68 | 69 | @Override 70 | protected void onStop() { 71 | super.onStop(); 72 | adapter.stopListening(); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/Common/Common.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.Common; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Calendar; 5 | 6 | public class Common { 7 | public static final String KEY_DISPLAY_TIME_SLOT = "DISPLAY_TIME_SLOT"; 8 | 9 | public static final Object DISABLE_TAG = "DISABLE"; 10 | public static final String KEY_ENABLE_BUTTON_NEXT = "ENABLE_BUTTON_NEXT"; 11 | public static final String KEY_TIME_SLOT = "TIME_SLOT" ; 12 | public static final String KEY_STEP = "STEP" ; 13 | public static final String KEY_CONFIRM_BOOKING = "CONFIRM_BOOKING" ; 14 | public static String CurrentUserid ; 15 | public static String CurrentUserName; 16 | public static String CurrentUserType = "patient"; 17 | public static int step = 0; 18 | public static String CurreentDoctor = "testdoc@testdoc.com"; 19 | public static String Currentaappointementatype; 20 | public static int currentTimeSlot = -1; 21 | public static String CurrentDoctorName = "yassine"; 22 | public static Calendar currentDate = Calendar.getInstance(); 23 | public static String CurrentPhone = "062912361255"; 24 | public static SimpleDateFormat simpleFormat = new SimpleDateFormat("dd_MM_yyyy"); 25 | 26 | public static int convertBloodToInt(String s){ 27 | switch (s){ 28 | case "A+": 29 | return 0; 30 | case "A-": 31 | return 1; 32 | case "B+": 33 | return 2; 34 | case "B-": 35 | return 3; 36 | case "AB+": 37 | return 4; 38 | case "AB-": 39 | return 5; 40 | case "O+": 41 | return 6; 42 | case "O-": 43 | return 7; 44 | default: 45 | return 0; 46 | } 47 | } 48 | public static String convertTimeSlotToString(int slot) { 49 | switch(slot) { 50 | case 0: 51 | return "9:00-9:30"; 52 | case 1: 53 | return "9:30-10:00"; 54 | case 2: 55 | return "10:00-10:30"; 56 | case 3: 57 | return "10:30-11:00"; 58 | case 4: 59 | return "11:00-11:30"; 60 | case 5: 61 | return "11:30-12:00"; 62 | case 6: 63 | return "12:00-12:30"; 64 | case 7: 65 | return "12:30-13:00"; 66 | case 8: 67 | return "13:00-13:30"; 68 | case 9: 69 | return "13:30-14:00"; 70 | case 10: 71 | return "14:00-14:30"; 72 | case 11: 73 | return "14:30-15:00"; 74 | case 12: 75 | return "15:00-15:30"; 76 | case 13: 77 | return "15:30-16:00"; 78 | case 14: 79 | return "16:00-16:30"; 80 | case 15: 81 | return "16:30-17:00"; 82 | case 16: 83 | return "17:00-17:30"; 84 | case 17: 85 | return "17:30-18:00"; 86 | case 18: 87 | return "18:00-18:30"; 88 | case 19: 89 | return "18:30-19:00"; 90 | case 20: 91 | return "19:00-19:30"; 92 | default: 93 | return "Closed"; 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/Common/NonSwipeViewPager.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.Common; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.MotionEvent; 6 | import android.view.animation.DecelerateInterpolator; 7 | import android.widget.Scroller; 8 | 9 | import androidx.annotation.NonNull; 10 | import androidx.annotation.Nullable; 11 | import androidx.viewpager.widget.ViewPager; 12 | 13 | import java.lang.reflect.Field; 14 | 15 | public class NonSwipeViewPager extends ViewPager { 16 | public NonSwipeViewPager(@NonNull Context context) { 17 | super(context); 18 | setMyScroller(); 19 | } 20 | 21 | public NonSwipeViewPager(@NonNull Context context, @Nullable AttributeSet attrs) { 22 | super(context, attrs); 23 | setMyScroller(); 24 | } 25 | 26 | @Override 27 | public boolean onInterceptTouchEvent(MotionEvent ev) { 28 | return false; 29 | } 30 | 31 | @Override 32 | public boolean onTouchEvent(MotionEvent ev) { 33 | return false; 34 | } 35 | 36 | private void setMyScroller() { 37 | try { 38 | Class viewPager = ViewPager.class; 39 | Field scroller = viewPager.getDeclaredField("mScroller"); 40 | scroller.setAccessible(true); 41 | scroller.set(this,new MyScroller(getContext())); 42 | 43 | }catch(NoSuchFieldException e){ 44 | e.printStackTrace(); 45 | } catch (IllegalAccessException e) { 46 | e.printStackTrace(); 47 | } 48 | } 49 | 50 | private class MyScroller extends Scroller { 51 | public MyScroller(Context context) { 52 | super(context,new DecelerateInterpolator()); 53 | } 54 | 55 | @Override 56 | public void startScroll(int startX, int startY, int dx, int dy, int duration) { 57 | super.startScroll(startX, startY, dx, dy, 350); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/ConfirmedAppointmensActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.ensias.healthcareapp.adapter.ConfirmedAppointmentsAdapter; 7 | import com.ensias.healthcareapp.adapter.MyDoctorsAdapter; 8 | import com.ensias.healthcareapp.model.ApointementInformation; 9 | import com.ensias.healthcareapp.model.Doctor; 10 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 11 | import com.google.firebase.auth.FirebaseAuth; 12 | import com.google.firebase.firestore.CollectionReference; 13 | import com.google.firebase.firestore.FirebaseFirestore; 14 | import com.google.firebase.firestore.Query; 15 | 16 | import androidx.appcompat.app.AppCompatActivity; 17 | import androidx.recyclerview.widget.LinearLayoutManager; 18 | import androidx.recyclerview.widget.RecyclerView; 19 | 20 | public class ConfirmedAppointmensActivity extends AppCompatActivity { 21 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 22 | private CollectionReference myDoctorsRef = db.collection("Doctor"); 23 | private ConfirmedAppointmentsAdapter adapter; 24 | 25 | @Override 26 | protected void onCreate(Bundle savedInstanceState) { 27 | super.onCreate(savedInstanceState); 28 | setContentView(R.layout.activity_confirmed_appointements); 29 | 30 | setUpRecyclerView(); 31 | } 32 | 33 | public void setUpRecyclerView(){ 34 | //Get the doctors by patient id 35 | final String doctorID = FirebaseAuth.getInstance().getCurrentUser().getEmail().toString(); 36 | Query query = myDoctorsRef.document(""+doctorID+"") 37 | .collection("calendar").orderBy("time", Query.Direction.DESCENDING); 38 | 39 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 40 | .setQuery(query, ApointementInformation.class) 41 | .build(); 42 | 43 | adapter = new ConfirmedAppointmentsAdapter(options); 44 | //List current appointments 45 | RecyclerView recyclerView = findViewById(R.id.confirmed_appointements_list); 46 | recyclerView.setHasFixedSize(true); 47 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 48 | recyclerView.setAdapter(adapter); 49 | } 50 | 51 | @Override 52 | protected void onStart() { 53 | super.onStart(); 54 | adapter.startListening(); 55 | } 56 | 57 | @Override 58 | protected void onStop() { 59 | super.onStop(); 60 | adapter.stopListening(); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/ConsultationFragmentPage.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.fragment.app.Fragment; 6 | import androidx.recyclerview.widget.LinearLayoutManager; 7 | import androidx.recyclerview.widget.RecyclerView; 8 | 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | 13 | import com.ensias.healthcareapp.adapter.ConsultationAdapter; 14 | import com.ensias.healthcareapp.model.Fiche; 15 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 16 | import com.google.firebase.auth.FirebaseAuth; 17 | import com.google.firebase.firestore.CollectionReference; 18 | import com.google.firebase.firestore.FirebaseFirestore; 19 | import com.google.firebase.firestore.Query; 20 | 21 | public class ConsultationFragmentPage extends Fragment { 22 | 23 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 24 | private CollectionReference FicheRef; 25 | private ConsultationAdapter adapter; 26 | View result; 27 | 28 | public ConsultationFragmentPage() { 29 | // Required empty public constructor 30 | } 31 | 32 | public static ConsultationFragmentPage newInstance() { 33 | ConsultationFragmentPage fragment = new ConsultationFragmentPage(); 34 | return fragment; 35 | } 36 | 37 | 38 | @Override 39 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 40 | Bundle savedInstanceState) { 41 | // Inflate the layout for this fragment 42 | result = inflater.inflate(R.layout.fragment_consultation_page, container, false); 43 | setUpRecyclerView(); 44 | return result; 45 | } 46 | 47 | private void setUpRecyclerView() { 48 | 49 | String email_id = getActivity().getIntent().getExtras().getString("patient_email"); 50 | FicheRef = db.collection("Patient").document(email_id).collection("MyMedicalFolder"); 51 | Query query = FicheRef.whereEqualTo("type", "Consultation"); 52 | 53 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 54 | .setQuery(query, Fiche.class) 55 | .build(); 56 | 57 | adapter = new ConsultationAdapter(options); 58 | 59 | RecyclerView recyclerView = result.findViewById(R.id.conslutationRecycleView); 60 | recyclerView.setHasFixedSize(true); 61 | recyclerView.setLayoutManager(new LinearLayoutManager(this.getContext())); 62 | recyclerView.setAdapter(adapter); 63 | } 64 | 65 | @Override 66 | public void onStart() { 67 | super.onStart(); 68 | adapter.startListening(); 69 | } 70 | 71 | @Override 72 | public void onStop() { 73 | super.onStop(); 74 | adapter.stopListening(); 75 | } 76 | } -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/DoctorAppointementActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.ensias.healthcareapp.adapter.DoctorAppointementAdapter; 7 | import com.ensias.healthcareapp.adapter.MyDoctorsAdapter; 8 | import com.ensias.healthcareapp.model.ApointementInformation; 9 | import com.ensias.healthcareapp.model.Doctor; 10 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 11 | import com.google.firebase.auth.FirebaseAuth; 12 | import com.google.firebase.firestore.CollectionReference; 13 | import com.google.firebase.firestore.FirebaseFirestore; 14 | import com.google.firebase.firestore.Query; 15 | 16 | import androidx.recyclerview.widget.LinearLayoutManager; 17 | import androidx.recyclerview.widget.RecyclerView; 18 | 19 | public class DoctorAppointementActivity extends Activity { 20 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 21 | private CollectionReference doctorAppointementRef = db.collection("Doctor"); 22 | private DoctorAppointementAdapter adapter; 23 | 24 | @Override 25 | protected void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_doctor_appointement); 28 | setUpRecyclerView(); 29 | } 30 | 31 | public void setUpRecyclerView(){ 32 | //Get the doctors by patient id 33 | final String doctorID = FirebaseAuth.getInstance().getCurrentUser().getEmail().toString(); 34 | Query query = doctorAppointementRef.document(""+doctorID+"") 35 | .collection("apointementrequest") 36 | .orderBy("time", Query.Direction.DESCENDING); 37 | 38 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 39 | .setQuery(query, ApointementInformation.class) 40 | .build(); 41 | 42 | adapter = new DoctorAppointementAdapter(options); 43 | //ListMyDoctors 44 | RecyclerView recyclerView = findViewById(R.id.DoctorAppointement); 45 | recyclerView.setHasFixedSize(true); 46 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 47 | recyclerView.setAdapter(adapter); 48 | } 49 | 50 | @Override 51 | protected void onStart() { 52 | super.onStart(); 53 | adapter.startListening(); 54 | } 55 | 56 | @Override 57 | protected void onStop() { 58 | super.onStop(); 59 | adapter.stopListening(); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/FicheActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.os.Bundle; 4 | import android.util.Log; 5 | import android.view.View; 6 | import android.widget.AdapterView; 7 | import android.widget.ArrayAdapter; 8 | import android.widget.Button; 9 | import android.widget.EditText; 10 | import android.widget.Spinner; 11 | import android.widget.Toast; 12 | 13 | 14 | import com.ensias.healthcareapp.model.Fiche; 15 | import com.google.firebase.auth.FirebaseAuth; 16 | import com.google.firebase.firestore.CollectionReference; 17 | import com.google.firebase.firestore.FirebaseFirestore; 18 | 19 | import androidx.appcompat.app.AppCompatActivity; 20 | 21 | public class FicheActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 22 | 23 | private EditText maladie; 24 | private EditText description; 25 | private EditText traitement; 26 | private Spinner ficheType; 27 | 28 | @Override 29 | protected void onCreate(Bundle savedInstanceState) { 30 | super.onCreate(savedInstanceState); 31 | setContentView(R.layout.activity_fiche); 32 | 33 | maladie = findViewById(R.id.fiche_maladie); 34 | description = findViewById(R.id.fiche_description); 35 | traitement = findViewById(R.id.fiche_traitement); 36 | ficheType = findViewById(R.id.fiche_type_spinner); 37 | 38 | //Spinner to choose fiche type 39 | Spinner spinner = findViewById(R.id.fiche_type_spinner); 40 | ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.fiche_type, android.R.layout.simple_spinner_item); 41 | adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 42 | spinner.setAdapter(adapter); 43 | spinner.setOnItemSelectedListener(this); 44 | 45 | //Add fiche 46 | Button addFicheButton = findViewById(R.id.button_add_fiche); 47 | addFicheButton.setOnClickListener(new View.OnClickListener() { 48 | @Override 49 | public void onClick(View view) { 50 | addFiche(); 51 | } 52 | }); 53 | } 54 | 55 | @Override 56 | public void onItemSelected(AdapterView adapterView, View view, int i, long l) { 57 | String SeltectedFicheType = adapterView.getItemAtPosition(i).toString(); 58 | 59 | } 60 | 61 | @Override 62 | public void onNothingSelected(AdapterView adapterView) { 63 | 64 | } 65 | 66 | private void addFiche(){ 67 | String maladieFiche = maladie.getText().toString(); 68 | String descriptionFiche = description.getText().toString(); 69 | String traitemenfiche = traitement.getText().toString(); 70 | String typeFiche = ficheType.getSelectedItem().toString(); 71 | 72 | String patient_name = getIntent().getStringExtra("patient_name"); 73 | String patient_email = getIntent().getStringExtra("patient_email"); 74 | 75 | 76 | CollectionReference ficheRef = FirebaseFirestore.getInstance().collection("Patient").document(""+patient_email+"") 77 | .collection("MyMedicalFolder"); 78 | ficheRef.document().set(new Fiche(maladieFiche, descriptionFiche, traitemenfiche, typeFiche, FirebaseAuth.getInstance().getCurrentUser().getEmail().toString())); 79 | //ficheRef.add(new Fiche(maladieFiche, descriptionFiche, traitemenfiche, typeFiche, FirebaseAuth.getInstance().getCurrentUser().getEmail().toString())); 80 | Toast.makeText(this, "Fiche added."+patient_name, Toast.LENGTH_LONG).show(); 81 | finish(); 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/FicheInfo.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.os.Bundle; 6 | import android.widget.TextView; 7 | 8 | public class FicheInfo extends AppCompatActivity { 9 | TextView t1 ,t2, t3; 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.activity_fiche_info); 14 | t1=findViewById(R.id.textView2); 15 | t2=findViewById(R.id.textView4); 16 | t3=findViewById(R.id.textView5); 17 | 18 | t1.setText("Date de creation"+getIntent().getStringExtra("dateCreated")); 19 | t2.setText(getIntent().getStringExtra("doctor")); 20 | t3.setText(getIntent().getStringExtra("description")); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/HomeActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.content.Intent; 6 | import android.os.Bundle; 7 | import android.util.Log; 8 | import android.view.View; 9 | import android.widget.Button; 10 | 11 | import com.ensias.healthcareapp.Common.Common; 12 | import com.google.android.gms.tasks.OnSuccessListener; 13 | import com.google.firebase.auth.FirebaseAuth; 14 | import com.google.firebase.firestore.DocumentSnapshot; 15 | import com.google.firebase.firestore.FirebaseFirestore; 16 | 17 | public class HomeActivity extends AppCompatActivity { 18 | Button SignOutBtn; 19 | Button searchPatBtn; 20 | Button myDoctors; 21 | Button BtnRequst; 22 | Button profile; 23 | Button appointment; 24 | @Override 25 | protected void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_home); 28 | appointment = findViewById(R.id.appointement2); 29 | appointment.setOnClickListener(new View.OnClickListener() { 30 | @Override 31 | public void onClick(View view) { 32 | Intent k = new Intent(HomeActivity.this, PatientAppointementsActivity.class); 33 | startActivity(k); 34 | } 35 | }); 36 | searchPatBtn = (Button)findViewById(R.id.searchBtn); 37 | searchPatBtn.setOnClickListener(new View.OnClickListener() { 38 | @Override 39 | public void onClick(View v) { 40 | Intent k = new Intent(HomeActivity.this, SearchPatActivity.class); 41 | startActivity(k); 42 | } 43 | }); 44 | SignOutBtn=findViewById(R.id.signOutBtn); 45 | SignOutBtn.setOnClickListener(new View.OnClickListener() { 46 | @Override 47 | public void onClick(View v) { 48 | FirebaseAuth.getInstance().signOut(); 49 | Intent intent = new Intent(getApplicationContext(), MainActivity.class); 50 | intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 51 | startActivity(intent); 52 | } 53 | }); 54 | 55 | myDoctors = (Button)findViewById(R.id.myDoctors); 56 | myDoctors.setOnClickListener(new View.OnClickListener() { 57 | @Override 58 | public void onClick(View v) { 59 | Intent k = new Intent(HomeActivity.this, MyDoctorsAvtivity.class); 60 | startActivity(k); 61 | } 62 | }); 63 | BtnRequst = findViewById(R.id.btnRequst); 64 | BtnRequst.setOnClickListener(new View.OnClickListener() { 65 | @Override 66 | public void onClick(View v) { 67 | Intent intent = new Intent(getApplicationContext(), DossierMedical.class); 68 | intent.putExtra("patient_email",FirebaseAuth.getInstance().getCurrentUser().getEmail().toString()); 69 | startActivity(intent); 70 | } 71 | }); 72 | 73 | profile = findViewById(R.id.profile); 74 | profile.setOnClickListener(new View.OnClickListener() { 75 | @Override 76 | public void onClick(View v) { 77 | Intent k = new Intent(HomeActivity.this, ProfilePatientActivity.class); 78 | startActivity(k); 79 | } 80 | }); 81 | 82 | Common.CurrentUserid= FirebaseAuth.getInstance().getCurrentUser().getEmail().toString(); 83 | FirebaseFirestore.getInstance().collection("User").document(Common.CurrentUserid).get().addOnSuccessListener(new OnSuccessListener() { 84 | @Override 85 | public void onSuccess(DocumentSnapshot documentSnapshot) { 86 | Common.CurrentUserName = documentSnapshot.getString("name"); 87 | } 88 | }); 89 | 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/Hospitalisation.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.fragment.app.Fragment; 6 | import androidx.recyclerview.widget.LinearLayoutManager; 7 | import androidx.recyclerview.widget.RecyclerView; 8 | 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | 13 | import com.ensias.healthcareapp.adapter.ConsultationAdapter; 14 | import com.ensias.healthcareapp.adapter.HospitalisationAdapter; 15 | import com.ensias.healthcareapp.model.Fiche; 16 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 17 | import com.google.firebase.auth.FirebaseAuth; 18 | import com.google.firebase.firestore.CollectionReference; 19 | import com.google.firebase.firestore.FirebaseFirestore; 20 | import com.google.firebase.firestore.Query; 21 | 22 | public class Hospitalisation extends Fragment { 23 | 24 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 25 | private CollectionReference FicheRef; 26 | private HospitalisationAdapter adapter; 27 | View result; 28 | 29 | 30 | public Hospitalisation() { 31 | // Required empty public constructor 32 | } 33 | 34 | 35 | public static Hospitalisation newInstance() { 36 | Hospitalisation fragment = new Hospitalisation(); 37 | return fragment; 38 | } 39 | 40 | 41 | @Override 42 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 43 | Bundle savedInstanceState) { 44 | result = inflater.inflate(R.layout.fragment_hospitalisation, container, false); 45 | setUpRecyclerView(); 46 | return result; 47 | } 48 | private void setUpRecyclerView() { 49 | String email_id = getActivity().getIntent().getExtras().getString("patient_email"); 50 | FicheRef = db.collection("Patient").document(email_id).collection("MyMedicalFolder"); 51 | Query query = FicheRef.whereEqualTo("type", "Hospitalisation"); 52 | 53 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 54 | .setQuery(query, Fiche.class) 55 | .build(); 56 | 57 | adapter = new HospitalisationAdapter(options); 58 | 59 | RecyclerView recyclerView = result.findViewById(R.id.hospitalisationRecycleView); 60 | recyclerView.setHasFixedSize(true); 61 | recyclerView.setLayoutManager(new LinearLayoutManager(this.getContext())); 62 | recyclerView.setAdapter(adapter); 63 | } 64 | 65 | @Override 66 | public void onStart() { 67 | super.onStart(); 68 | adapter.startListening(); 69 | } 70 | 71 | @Override 72 | public void onStop() { 73 | super.onStop(); 74 | adapter.stopListening(); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/Interface/IRecyclerItemSelectedListener.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.Interface; 2 | 3 | import android.view.View; 4 | 5 | public interface IRecyclerItemSelectedListener { 6 | void onItemSelectedListener(View view,int pos); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/Interface/ITimeSlotLoadListener.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.Interface; 2 | 3 | import com.ensias.healthcareapp.model.TimeSlot; 4 | 5 | import java.util.List; 6 | 7 | public interface ITimeSlotLoadListener { 8 | void onTimeSlotLoadSuccess(List timeSlotList); 9 | void onTimeSlotLoadFailed(String message); 10 | void onTimeSlotLoadEmpty(); 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/MyDoctorsAvtivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.os.Bundle; 4 | 5 | import com.ensias.healthcareapp.adapter.DoctoreAdapter; 6 | import com.ensias.healthcareapp.adapter.MyDoctorsAdapter; 7 | import com.ensias.healthcareapp.adapter.PatRequestAdapter; 8 | import com.ensias.healthcareapp.model.Doctor; 9 | import com.ensias.healthcareapp.model.Request; 10 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 11 | import com.google.firebase.auth.FirebaseAuth; 12 | import com.google.firebase.firestore.CollectionReference; 13 | import com.google.firebase.firestore.FirebaseFirestore; 14 | import com.google.firebase.firestore.Query; 15 | 16 | import androidx.appcompat.app.AppCompatActivity; 17 | import androidx.recyclerview.widget.ItemTouchHelper; 18 | import androidx.recyclerview.widget.LinearLayoutManager; 19 | import androidx.recyclerview.widget.RecyclerView; 20 | 21 | public class MyDoctorsAvtivity extends AppCompatActivity { 22 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 23 | private CollectionReference myDoctorsRef = db.collection("Patient"); 24 | private MyDoctorsAdapter adapter; 25 | 26 | @Override 27 | protected void onCreate(Bundle savedInstanceState) { 28 | super.onCreate(savedInstanceState); 29 | setContentView(R.layout.activity_my_doctors); 30 | 31 | setUpRecyclerView(); 32 | } 33 | 34 | public void setUpRecyclerView(){ 35 | //Get the doctors by patient id 36 | final String patientID = FirebaseAuth.getInstance().getCurrentUser().getEmail().toString(); 37 | Query query = myDoctorsRef.document(""+patientID+"") 38 | .collection("MyDoctors").orderBy("name", Query.Direction.DESCENDING); 39 | 40 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 41 | .setQuery(query, Doctor.class) 42 | .build(); 43 | 44 | adapter = new MyDoctorsAdapter(options); 45 | //ListMyDoctors 46 | RecyclerView recyclerView = findViewById(R.id.ListMyDoctors); 47 | recyclerView.setHasFixedSize(true); 48 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 49 | recyclerView.setAdapter(adapter); 50 | } 51 | 52 | @Override 53 | protected void onStart() { 54 | super.onStart(); 55 | adapter.startListening(); 56 | } 57 | 58 | @Override 59 | protected void onStop() { 60 | super.onStop(); 61 | adapter.stopListening(); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/MyPatientsActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.os.Bundle; 4 | 5 | import com.ensias.healthcareapp.adapter.MyPatientsAdapter; 6 | import com.ensias.healthcareapp.model.Patient; 7 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 8 | import com.google.firebase.auth.FirebaseAuth; 9 | import com.google.firebase.firestore.CollectionReference; 10 | import com.google.firebase.firestore.FirebaseFirestore; 11 | import com.google.firebase.firestore.Query; 12 | 13 | import androidx.appcompat.app.AppCompatActivity; 14 | import androidx.appcompat.widget.Toolbar; 15 | import androidx.recyclerview.widget.LinearLayoutManager; 16 | import androidx.recyclerview.widget.RecyclerView; 17 | 18 | public class MyPatientsActivity extends AppCompatActivity { 19 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 20 | private CollectionReference myPatientsRef = db.collection("Doctor"); 21 | private MyPatientsAdapter adapter; 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | setContentView(R.layout.activity_my_patients); 27 | setUpRecyclerView(); 28 | 29 | } 30 | 31 | public void setUpRecyclerView(){ 32 | 33 | final String doctorID = FirebaseAuth.getInstance().getCurrentUser().getEmail().toString(); 34 | Query query = myPatientsRef.document(""+doctorID+"") 35 | .collection("MyPatients").orderBy("name", Query.Direction.DESCENDING); 36 | 37 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 38 | .setQuery(query, Patient.class) 39 | .build(); 40 | 41 | adapter = new MyPatientsAdapter(options); 42 | //ListMyPatients 43 | RecyclerView recyclerView = findViewById(R.id.ListMyPatients); 44 | recyclerView.setHasFixedSize(true); 45 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 46 | recyclerView.setAdapter(adapter); 47 | } 48 | 49 | @Override 50 | protected void onStart() { 51 | super.onStart(); 52 | adapter.startListening(); 53 | } 54 | 55 | @Override 56 | protected void onStop() { 57 | super.onStop(); 58 | adapter.stopListening(); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/PatientAppointementsActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.os.Bundle; 4 | 5 | import com.ensias.healthcareapp.adapter.ConfirmedAppointmentsAdapter; 6 | import com.ensias.healthcareapp.adapter.PatientAppointmentsAdapter; 7 | import com.ensias.healthcareapp.model.ApointementInformation; 8 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 9 | import com.google.firebase.auth.FirebaseAuth; 10 | import com.google.firebase.firestore.CollectionReference; 11 | import com.google.firebase.firestore.FirebaseFirestore; 12 | import com.google.firebase.firestore.Query; 13 | 14 | import androidx.appcompat.app.AppCompatActivity; 15 | import androidx.recyclerview.widget.LinearLayoutManager; 16 | import androidx.recyclerview.widget.RecyclerView; 17 | 18 | public class PatientAppointementsActivity extends AppCompatActivity { 19 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 20 | private CollectionReference myDoctorsRef = db.collection("Patient"); 21 | private PatientAppointmentsAdapter adapter; 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | setContentView(R.layout.activity_patient_appointments); 27 | 28 | setUpRecyclerView(); 29 | } 30 | 31 | public void setUpRecyclerView(){ 32 | //Get the doctors by patient id 33 | final String doctorID = FirebaseAuth.getInstance().getCurrentUser().getEmail().toString(); 34 | Query query = myDoctorsRef.document(""+doctorID+"") 35 | .collection("calendar").orderBy("time", Query.Direction.DESCENDING); 36 | 37 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 38 | .setQuery(query, ApointementInformation.class) 39 | .build(); 40 | 41 | adapter = new PatientAppointmentsAdapter(options); 42 | //List current appointments 43 | RecyclerView recyclerView = findViewById(R.id.patient_appointements); 44 | recyclerView.setHasFixedSize(true); 45 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 46 | recyclerView.setAdapter(adapter); 47 | } 48 | 49 | @Override 50 | protected void onStart() { 51 | super.onStart(); 52 | adapter.startListening(); 53 | } 54 | 55 | @Override 56 | protected void onStop() { 57 | super.onStop(); 58 | adapter.stopListening(); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/PatientInfoActivity.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import android.os.Bundle; 4 | import android.util.Log; 5 | import android.view.View; 6 | import android.widget.ArrayAdapter; 7 | import android.widget.Button; 8 | import android.widget.EditText; 9 | import android.widget.Spinner; 10 | import android.widget.Toast; 11 | 12 | import androidx.appcompat.app.AppCompatActivity; 13 | 14 | import com.ensias.healthcareapp.Common.Common; 15 | import com.google.android.gms.tasks.OnSuccessListener; 16 | import com.google.firebase.auth.FirebaseAuth; 17 | import com.google.firebase.firestore.DocumentSnapshot; 18 | import com.google.firebase.firestore.FirebaseFirestore; 19 | 20 | import java.util.HashMap; 21 | 22 | import static com.ensias.healthcareapp.Common.Common.convertBloodToInt; 23 | 24 | public class PatientInfoActivity extends AppCompatActivity { 25 | 26 | EditText heightBtn; 27 | EditText weightBtn; 28 | Spinner bloodtypeSpinner; 29 | Button updateBtn; 30 | @Override 31 | protected void onCreate(Bundle savedInstanceState) { 32 | super.onCreate(savedInstanceState); 33 | setContentView(R.layout.activity_patient_info); 34 | updateBtn = findViewById(R.id.updateInfoBtn); 35 | heightBtn = findViewById(R.id.heightBtn); 36 | weightBtn = findViewById(R.id.weightBtn); 37 | final Spinner specialiteList = (Spinner) findViewById(R.id.bloodType); 38 | ArrayAdapter adapterSpecialiteList = ArrayAdapter.createFromResource(this, 39 | R.array.blood_spinner, android.R.layout.simple_spinner_item); 40 | adapterSpecialiteList.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 41 | specialiteList.setAdapter(adapterSpecialiteList); 42 | 43 | String patient_name = getIntent().getStringExtra("patient_name"); 44 | String patient_email = getIntent().getStringExtra("patient_email"); 45 | 46 | FirebaseFirestore.getInstance().collection("Patient").document(patient_email).collection("moreInfo") 47 | .document(patient_email).get().addOnSuccessListener(new OnSuccessListener() { 48 | @Override 49 | public void onSuccess(DocumentSnapshot documentSnapshot) { 50 | weightBtn.setText( ""+documentSnapshot.getString("weight")); 51 | heightBtn.setText( ""+documentSnapshot.getString("height")); 52 | if(documentSnapshot.getString("bloodType") != null) 53 | specialiteList.setSelection(convertBloodToInt(documentSnapshot.getString("bloodType"))); 54 | } 55 | }); 56 | 57 | updateBtn.setOnClickListener(new View.OnClickListener() { 58 | @Override 59 | public void onClick(View v) { 60 | HashMap map = new HashMap<>(); 61 | map.put("height",""+heightBtn.getText()); 62 | map.put("weight",""+weightBtn.getText()); 63 | map.put("bloodType",""+specialiteList.getSelectedItem().toString()); 64 | Log.e("tag", "onClick: "+specialiteList.getTag() ); 65 | FirebaseFirestore.getInstance().collection("Patient").document(patient_email).collection("moreInfo") 66 | .document(patient_email).set(map); 67 | Toast.makeText(PatientInfoActivity.this,"Update Success!",Toast.LENGTH_SHORT).show(); 68 | 69 | } 70 | }); 71 | if(Common.CurrentUserType.equals("patient")){ 72 | updateBtn.setVisibility(View.GONE); 73 | heightBtn.setEnabled(false); 74 | weightBtn.setEnabled(false); 75 | specialiteList.setEnabled(false); 76 | } 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/PatientRequestPage.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | import androidx.recyclerview.widget.ItemTouchHelper; 5 | import androidx.recyclerview.widget.LinearLayoutManager; 6 | import androidx.recyclerview.widget.RecyclerView; 7 | 8 | import android.os.Bundle; 9 | import android.util.Log; 10 | 11 | import com.ensias.healthcareapp.adapter.DoctoreAdapter; 12 | import com.ensias.healthcareapp.adapter.PatRequestAdapter; 13 | import com.ensias.healthcareapp.model.Doctor; 14 | import com.ensias.healthcareapp.model.Request; 15 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 16 | import com.google.firebase.auth.FirebaseAuth; 17 | import com.google.firebase.firestore.CollectionReference; 18 | import com.google.firebase.firestore.FirebaseFirestore; 19 | import com.google.firebase.firestore.Query; 20 | 21 | public class PatientRequestPage extends AppCompatActivity { 22 | 23 | private FirebaseFirestore db = FirebaseFirestore.getInstance(); 24 | private CollectionReference addRef = db.collection("Request"); 25 | 26 | private PatRequestAdapter adapter; 27 | 28 | @Override 29 | protected void onCreate(Bundle savedInstanceState) { 30 | super.onCreate(savedInstanceState); 31 | setContentView(R.layout.activity_patient_request_page); 32 | 33 | setUpRecyclerView(); 34 | } 35 | 36 | private void setUpRecyclerView() { 37 | final String idDoc = FirebaseAuth.getInstance().getCurrentUser().getEmail().toString(); 38 | Query query = addRef.whereEqualTo("id_doctor",idDoc+"").orderBy("id_patient", Query.Direction.DESCENDING); 39 | 40 | FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder() 41 | .setQuery(query, Request.class) 42 | .build(); 43 | 44 | adapter = new PatRequestAdapter(options); 45 | 46 | RecyclerView recyclerView = findViewById(R.id.RequestDocRecycle); 47 | recyclerView.setHasFixedSize(true); 48 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 49 | recyclerView.setAdapter(adapter); 50 | 51 | new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, 52 | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { 53 | @Override 54 | public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 55 | return false; 56 | } 57 | 58 | @Override 59 | public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { 60 | adapter.deleteItem(viewHolder.getAdapterPosition()); 61 | } 62 | }).attachToRecyclerView(recyclerView); 63 | } 64 | 65 | @Override 66 | protected void onStart() { 67 | super.onStart(); 68 | adapter.startListening(); 69 | } 70 | 71 | @Override 72 | protected void onStop() { 73 | super.onStop(); 74 | adapter.stopListening(); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/adapter/ConfirmedAppointmentsAdapter.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.adapter; 2 | 3 | import android.net.Uri; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.Button; 8 | import android.widget.ImageView; 9 | import android.widget.TextView; 10 | 11 | import com.ensias.healthcareapp.R; 12 | import com.ensias.healthcareapp.model.ApointementInformation; 13 | import com.ensias.healthcareapp.model.Doctor; 14 | import com.firebase.ui.firestore.FirestoreRecyclerAdapter; 15 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 16 | import com.google.android.gms.tasks.OnFailureListener; 17 | import com.google.android.gms.tasks.OnSuccessListener; 18 | import com.google.firebase.auth.FirebaseAuth; 19 | import com.google.firebase.storage.FirebaseStorage; 20 | import com.google.firebase.storage.StorageReference; 21 | import com.squareup.picasso.Picasso; 22 | 23 | import androidx.annotation.NonNull; 24 | import androidx.recyclerview.widget.RecyclerView; 25 | 26 | public class ConfirmedAppointmentsAdapter extends FirestoreRecyclerAdapter { 27 | StorageReference pathReference ; 28 | public ConfirmedAppointmentsAdapter(@NonNull FirestoreRecyclerOptions options) { 29 | super(options); 30 | } 31 | 32 | @Override 33 | protected void onBindViewHolder(@NonNull ConfirmedAppointmentsHolder confirmedAppointmentsHolder, int position, @NonNull final ApointementInformation apointementInformation) { 34 | confirmedAppointmentsHolder.dateAppointement.setText(apointementInformation.getTime()); 35 | confirmedAppointmentsHolder.patientName.setText(apointementInformation.getPatientName()); 36 | confirmedAppointmentsHolder.appointementType.setText(apointementInformation.getApointementType()); 37 | 38 | String imageId = apointementInformation.getPatientId()+".jpg"; //add a title image 39 | pathReference = FirebaseStorage.getInstance().getReference().child("DoctorProfile/"+ imageId); //storage the image 40 | pathReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener() { 41 | @Override 42 | public void onSuccess(Uri uri) { 43 | Picasso.with(confirmedAppointmentsHolder.patientImage.getContext()) 44 | .load(uri) 45 | .placeholder(R.mipmap.ic_launcher) 46 | .fit() 47 | .centerCrop() 48 | .into(confirmedAppointmentsHolder.patientImage);//Image location 49 | 50 | // profileImage.setImageURI(uri); 51 | } 52 | }).addOnFailureListener(new OnFailureListener() { 53 | @Override 54 | public void onFailure(@NonNull Exception exception) { 55 | // Handle any errors 56 | } 57 | }); 58 | 59 | } 60 | 61 | @NonNull 62 | @Override 63 | public ConfirmedAppointmentsAdapter.ConfirmedAppointmentsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 64 | View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.confirmed_appointements_item, parent, false); 65 | return new ConfirmedAppointmentsAdapter.ConfirmedAppointmentsHolder(v); 66 | } 67 | 68 | class ConfirmedAppointmentsHolder extends RecyclerView.ViewHolder{ 69 | TextView dateAppointement; 70 | TextView patientName; 71 | TextView appointementType; 72 | ImageView patientImage; 73 | public ConfirmedAppointmentsHolder(@NonNull View itemView) { 74 | super(itemView); 75 | dateAppointement = itemView.findViewById(R.id.appointement_date); 76 | patientName = itemView.findViewById(R.id.patient_name); 77 | appointementType = itemView.findViewById(R.id.appointement_type); 78 | patientImage = itemView.findViewById(R.id.patient_image); 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/adapter/ConsultationFragmentAdapter.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.adapter; 2 | 3 | import androidx.fragment.app.Fragment; 4 | import androidx.fragment.app.FragmentManager; 5 | import androidx.fragment.app.FragmentPagerAdapter; 6 | 7 | import com.ensias.healthcareapp.ConsultationFragmentPage; 8 | import com.ensias.healthcareapp.Hospitalisation; 9 | import com.ensias.healthcareapp.fragment.ConsultationFragment; 10 | 11 | public class ConsultationFragmentAdapter extends FragmentPagerAdapter { 12 | // 1 - Array of colors that will be passed to PageFragment 13 | private int[] colors; 14 | 15 | // 2 - Default Constructor 16 | public ConsultationFragmentAdapter(FragmentManager mgr) { 17 | super(mgr); 18 | } 19 | 20 | @Override 21 | public int getCount() { 22 | return(2); // 3 - Number of page to show 23 | } 24 | 25 | @Override 26 | public Fragment getItem(int position) { 27 | switch (position){ 28 | case 0: //Page number 1 29 | return ConsultationFragmentPage.newInstance(); 30 | case 1: //Page number 2 31 | return Hospitalisation.newInstance(); 32 | default: 33 | return null; 34 | } 35 | } 36 | 37 | @Override 38 | public CharSequence getPageTitle(int position) { 39 | switch (position){ 40 | case 0: //Page number 1 41 | return "Consultation"; 42 | case 1: //Page number 2 43 | return "Hospitalisation"; 44 | default: 45 | return null; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/adapter/MessageAdapter.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.adapter; 2 | 3 | import android.view.Gravity; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.TextView; 8 | 9 | import androidx.annotation.NonNull; 10 | import androidx.coordinatorlayout.widget.CoordinatorLayout; 11 | import androidx.recyclerview.widget.RecyclerView; 12 | 13 | import com.ensias.healthcareapp.R; 14 | import com.ensias.healthcareapp.model.Message; 15 | import com.firebase.ui.firestore.FirestoreRecyclerAdapter; 16 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 17 | import com.google.firebase.auth.FirebaseAuth; 18 | import com.google.firebase.auth.FirebaseUser; 19 | 20 | public class MessageAdapter extends FirestoreRecyclerAdapter { 21 | 22 | public MessageAdapter(@NonNull FirestoreRecyclerOptions options) { 23 | super(options); 24 | } 25 | 26 | @Override 27 | protected void onBindViewHolder(@NonNull MessageHolder holder, int position, @NonNull Message model) { 28 | if(model.getUserSender().equals(getCurrentUser().getEmail()+"") ){ 29 | //holder.text.setTextSize(20); 30 | //holder.text.setBackgroundColor(0xC0C0C0); 31 | // CoordinatorLayout.LayoutParams lllp= (CoordinatorLayout.LayoutParams) holder.text.getLayoutParams(); 32 | // lllp.gravity= Gravity.LEFT; 33 | //holder.text.setLayoutParams(lllp); 34 | //holder.text.setBackground(holder.text.getContext().getResources().getDrawable(R.drawable.rounded_message2)); 35 | holder.text2.setText(model.getMessage()); 36 | holder.text2.setPadding(35,35,35,35); 37 | } 38 | else { 39 | holder.text.setText(model.getMessage()); 40 | holder.text.setPadding(35,35,35,35); 41 | } 42 | 43 | } 44 | 45 | @Override 46 | public MessageHolder onCreateViewHolder(ViewGroup parent, int viewType) { 47 | View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_chat_item,parent,false); 48 | return new MessageHolder(v); 49 | } 50 | 51 | class MessageHolder extends RecyclerView.ViewHolder{ 52 | 53 | TextView text; 54 | TextView text2; 55 | 56 | public MessageHolder(View itemView){ 57 | super(itemView); 58 | text = itemView.findViewById(R.id.message_item_text); 59 | text2 = itemView.findViewById(R.id.message_item_text2); 60 | } 61 | } 62 | 63 | protected FirebaseUser getCurrentUser(){ return FirebaseAuth.getInstance().getCurrentUser(); } 64 | } 65 | 66 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/adapter/MyViewPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.adapter; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.fragment.app.Fragment; 5 | import androidx.fragment.app.FragmentManager; 6 | import androidx.fragment.app.FragmentPagerAdapter; 7 | 8 | import com.ensias.healthcareapp.fragment.BookingStep1Fragment; 9 | import com.ensias.healthcareapp.fragment.BookingStep2Fragment; 10 | import com.ensias.healthcareapp.fragment.BookingStep3Fragment; 11 | 12 | public class MyViewPagerAdapter extends FragmentPagerAdapter { 13 | 14 | 15 | 16 | public MyViewPagerAdapter(@NonNull FragmentManager fm) { 17 | super(fm); 18 | } 19 | 20 | @NonNull 21 | @Override 22 | public Fragment getItem(int position) { 23 | switch(position){ 24 | case 0: 25 | return BookingStep1Fragment.getInstance(); 26 | case 1: 27 | return BookingStep2Fragment.getInstance(); 28 | case 2: 29 | return BookingStep3Fragment.getInstance(); 30 | } 31 | return null; 32 | } 33 | 34 | @Override 35 | public int getCount() { 36 | return 3; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/fireStoreApi/DoctorHelper.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.fireStoreApi; 2 | 3 | import com.ensias.healthcareapp.model.Doctor; 4 | import com.google.firebase.auth.FirebaseAuth; 5 | import com.google.firebase.firestore.CollectionReference; 6 | import com.google.firebase.firestore.FirebaseFirestore; 7 | 8 | public class DoctorHelper { 9 | static FirebaseFirestore db = FirebaseFirestore.getInstance(); 10 | static CollectionReference DoctorRef = db.collection("Doctor"); 11 | 12 | public static void addDoctor(String name, String adresse, String tel,String specialite){ 13 | Doctor doctor = new Doctor(name,adresse,tel, FirebaseAuth.getInstance().getCurrentUser().getEmail(),specialite); 14 | 15 | DoctorRef.document(FirebaseAuth.getInstance().getCurrentUser().getEmail()).set(doctor); 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/fireStoreApi/PatientHelper.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.fireStoreApi; 2 | 3 | import com.ensias.healthcareapp.model.Patient; 4 | import com.google.firebase.auth.FirebaseAuth; 5 | import com.google.firebase.firestore.CollectionReference; 6 | import com.google.firebase.firestore.FirebaseFirestore; 7 | 8 | public class PatientHelper { 9 | static FirebaseFirestore db = FirebaseFirestore.getInstance(); 10 | static CollectionReference PatientRef = db.collection("Patient"); 11 | 12 | public static void addPatient(String name, String adresse, String tel){ 13 | Patient patient = new Patient(name,adresse,tel,FirebaseAuth.getInstance().getCurrentUser().getEmail(),"aaa", "aaa"); 14 | System.out.println("Create object patient"); 15 | PatientRef.document(FirebaseAuth.getInstance().getCurrentUser().getEmail()).set(patient); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/fireStoreApi/UserHelper.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.fireStoreApi; 2 | 3 | import android.widget.Toast; 4 | 5 | import com.ensias.healthcareapp.FirstSigninActivity; 6 | import com.ensias.healthcareapp.MainActivity; 7 | import com.ensias.healthcareapp.model.User; 8 | import com.google.android.gms.tasks.OnSuccessListener; 9 | import com.google.firebase.auth.FirebaseAuth; 10 | import com.google.firebase.firestore.CollectionReference; 11 | import com.google.firebase.firestore.FirebaseFirestore; 12 | 13 | public class UserHelper { 14 | static FirebaseFirestore db = FirebaseFirestore.getInstance(); 15 | static CollectionReference UsersRef = db.collection("User"); 16 | 17 | public static void addUser(String name, String adresse, String tel,String type){ 18 | User user = new User(name,adresse,tel,FirebaseAuth.getInstance().getCurrentUser().getEmail(),type); 19 | UsersRef.document(FirebaseAuth.getInstance().getCurrentUser().getEmail()).set(user); 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/fragment/BookingStep1Fragment.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.fragment; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.ArrayAdapter; 8 | import android.widget.Spinner; 9 | 10 | import androidx.annotation.NonNull; 11 | import androidx.annotation.Nullable; 12 | import androidx.appcompat.view.menu.MenuView; 13 | import androidx.fragment.app.Fragment; 14 | 15 | import com.ensias.healthcareapp.R; 16 | 17 | public class BookingStep1Fragment extends Fragment { 18 | 19 | 20 | static public Spinner spinner; 21 | static BookingStep1Fragment instance; 22 | 23 | public static String getSpinner(){ 24 | return spinner.getSelectedItem().toString(); 25 | } 26 | 27 | public static BookingStep1Fragment getInstance(){ 28 | if(instance == null) 29 | instance = new BookingStep1Fragment(); 30 | return instance; 31 | } 32 | @Override 33 | public void onCreate(@Nullable Bundle savedInstanceState) { 34 | super.onCreate(savedInstanceState); 35 | } 36 | 37 | @Nullable 38 | @Override 39 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 40 | super.onCreateView(inflater, container, savedInstanceState); 41 | View itemView = inflater.inflate(R.layout.fragment_booking_step_one,container,false); 42 | spinner = (Spinner) itemView.findViewById(R.id.spinnerBooking); 43 | // Create an ArrayAdapter using the string array and a default spinner layout 44 | ArrayAdapter adapter = ArrayAdapter.createFromResource(getContext(), 45 | R.array.planets_array2, android.R.layout.simple_spinner_item); 46 | // Specify the layout to use when the list of choices appears 47 | adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 48 | // Apply the adapter to the spinner 49 | spinner.setAdapter(adapter); 50 | return itemView; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/fragment/ConsultationFragment.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.fragment; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.fragment.app.Fragment; 6 | 7 | import android.util.Log; 8 | import android.view.LayoutInflater; 9 | import android.view.View; 10 | import android.view.ViewGroup; 11 | import android.widget.LinearLayout; 12 | import android.widget.TextView; 13 | 14 | import com.ensias.healthcareapp.R; 15 | 16 | public class ConsultationFragment extends Fragment { 17 | 18 | private static final String KEY_POSITION = "position"; 19 | private static final String KEY_COLOR = "color"; 20 | 21 | public ConsultationFragment() { 22 | } 23 | 24 | // 2 - Method that will create a new instance of PageFragment, and add data to its bundle. 25 | public static ConsultationFragment newInstance(int position, int color) { 26 | 27 | // 2.1 Create new fragment 28 | ConsultationFragment frag = new ConsultationFragment(); 29 | 30 | // 2.2 Create bundle and add it some data 31 | Bundle args = new Bundle(); 32 | args.putInt(KEY_POSITION, position); 33 | args.putInt(KEY_COLOR, color); 34 | frag.setArguments(args); 35 | 36 | return(frag); 37 | } 38 | 39 | 40 | 41 | @Override 42 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 43 | Bundle savedInstanceState) { 44 | // Inflate the layout for this fragment 45 | View result = inflater.inflate(R.layout.fragment_consultation, container, false); 46 | // 4 - Get widgets from layout and serialise it 47 | LinearLayout rootView= (LinearLayout) result.findViewById(R.id.fragment_page_rootview); 48 | TextView textView= (TextView) result.findViewById(R.id.fragment_page_title); 49 | 50 | // 5 - Get data from Bundle (created in method newInstance) 51 | int position = getArguments().getInt(KEY_POSITION, -1); 52 | int color = getArguments().getInt(KEY_COLOR, -1); 53 | 54 | // 6 - Update widgets with it 55 | rootView.setBackgroundColor(color); 56 | textView.setText("Page numéro "+position); 57 | 58 | Log.e(getClass().getSimpleName(), "onCreateView called for fragment number "+position); 59 | 60 | return result; 61 | } 62 | 63 | } 64 | 65 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/ApointementInformation.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class ApointementInformation { 4 | private String patientName,time,doctorId,doctorName,patientId,type,apointementType,chemin; 5 | private long slot; 6 | 7 | public String getApointementType() { 8 | return apointementType; 9 | } 10 | 11 | public void setApointementType(String apointementType) { 12 | this.apointementType = apointementType; 13 | } 14 | 15 | public String getChemin() { 16 | return chemin; 17 | } 18 | 19 | public void setChemin(String chemin) { 20 | this.chemin = chemin; 21 | } 22 | 23 | public String getType() { 24 | return type; 25 | } 26 | 27 | public void setType(String type) { 28 | this.type = type; 29 | } 30 | 31 | public String getPatientId() { 32 | return patientId; 33 | } 34 | 35 | public void setPatientId(String patientId) { 36 | this.patientId = patientId; 37 | } 38 | 39 | public ApointementInformation(){ 40 | } 41 | 42 | public ApointementInformation(String patientName, String time, String doctorId, String doctorName, long slot) { 43 | this.patientName = patientName; 44 | this.time = time; 45 | this.doctorId = doctorId; 46 | this.doctorName = doctorName; 47 | this.slot = slot; 48 | } 49 | 50 | public String getPatientName() { 51 | return patientName; 52 | } 53 | 54 | public void setPatientName(String patientName) { 55 | this.patientName = patientName; 56 | } 57 | 58 | public String getTime() { 59 | return time; 60 | } 61 | 62 | public void setTime(String time) { 63 | this.time = time; 64 | } 65 | 66 | public String getDoctorId() { 67 | return doctorId; 68 | } 69 | 70 | public void setDoctorId(String doctorId) { 71 | this.doctorId = doctorId; 72 | } 73 | 74 | public String getDoctorName() { 75 | return doctorName; 76 | } 77 | 78 | public void setDoctorName(String doctorName) { 79 | this.doctorName = doctorName; 80 | } 81 | 82 | public long getSlot() { 83 | return slot; 84 | } 85 | 86 | public void setSlot(long slot) { 87 | this.slot = slot; 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/Doctor.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class Doctor { 4 | private String name; 5 | private String adresse; 6 | private String tel; 7 | private String email; 8 | private String specialite; 9 | 10 | public Doctor(){ 11 | //needed for firebase 12 | } 13 | 14 | public Doctor(String name, String adresse, String tel, String email, String specialite) { 15 | this.name = name; 16 | this.adresse = adresse; 17 | this.tel = tel; 18 | this.email = email; 19 | this.specialite = specialite; 20 | } 21 | 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | public void setName(String name) { 27 | this.name = name; 28 | } 29 | 30 | public String getAdresse() { 31 | return adresse; 32 | } 33 | 34 | public void setAdresse(String adresse) { 35 | this.adresse = adresse; 36 | } 37 | 38 | public String getTel() { 39 | return tel; 40 | } 41 | 42 | public void setTel(String tel) { 43 | this.tel = tel; 44 | } 45 | 46 | public String getEmail() { 47 | return email; 48 | } 49 | 50 | public void setEmail(String email) { 51 | this.email = email; 52 | } 53 | 54 | public String getSpecialite() { 55 | return specialite; 56 | } 57 | 58 | public void setSpecialite(String specialite) { 59 | this.specialite = specialite; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/Dossier.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | import java.util.Date; 4 | 5 | public class Dossier { 6 | private String dossierID; 7 | private Date dateCreation; 8 | 9 | public Dossier(String dossierID, Date dateCreation) { 10 | this.dossierID = dossierID; 11 | this.dateCreation = dateCreation; 12 | } 13 | 14 | public String getDossierID() { 15 | return dossierID; 16 | } 17 | 18 | public void setDossierID(String dossierID) { 19 | this.dossierID = dossierID; 20 | } 21 | 22 | public Date getDateCreation() { 23 | return dateCreation; 24 | } 25 | 26 | public void setDateCreation(Date dateCreation) { 27 | this.dateCreation = dateCreation; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/Fiche.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | import com.google.firebase.firestore.ServerTimestamp; 4 | 5 | import java.util.Date; 6 | 7 | public class Fiche { 8 | private String maladie; 9 | private String description; 10 | private String traitement; 11 | private String type; 12 | private Date dateCreated; 13 | private String doctor; 14 | 15 | public Fiche(){ 16 | 17 | } 18 | 19 | public Fiche(String maladie, String description, String traitement, String type, String doctor) { 20 | this.maladie = maladie; 21 | this.description = description; 22 | this.traitement = traitement; 23 | this.type = type; 24 | this.doctor = doctor; 25 | } 26 | 27 | public String getMaladie() { 28 | return maladie; 29 | } 30 | 31 | public void setMaladie(String maladie) { 32 | this.maladie = maladie; 33 | } 34 | 35 | public String getDescription() { 36 | return description; 37 | } 38 | 39 | public void setDescription(String description) { 40 | this.description = description; 41 | } 42 | 43 | public String getTraitement() { 44 | return traitement; 45 | } 46 | 47 | public void setTraitement(String traitement) { 48 | this.traitement = traitement; 49 | } 50 | 51 | public String getType() { 52 | return type; 53 | } 54 | 55 | public void setType(String type) { 56 | this.type = type; 57 | } 58 | 59 | @ServerTimestamp 60 | public Date getDateCreated() { return dateCreated; } 61 | 62 | public void setDateCreated(Date dateCreated) { 63 | this.dateCreated = dateCreated; 64 | } 65 | 66 | public String getDoctor() { 67 | return doctor; 68 | } 69 | 70 | public void setDoctor(String doctor) { 71 | this.doctor = doctor; 72 | } 73 | } 74 | 75 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/Hour.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class Hour { 4 | private String patient; 5 | private String choosen; 6 | private String patientName; 7 | 8 | public String getPatientName() { 9 | return patientName; 10 | } 11 | 12 | public void setPatientName(String patientName) { 13 | this.patientName = patientName; 14 | } 15 | 16 | public Hour(String patient) { 17 | this.patient = patient; 18 | choosen = "false"; 19 | } 20 | public Hour(){ 21 | 22 | } 23 | public String getPatient() { 24 | return patient; 25 | } 26 | 27 | public void setPatient(String patient) { 28 | this.patient = patient; 29 | } 30 | 31 | public String getChoosen() { 32 | return choosen; 33 | } 34 | 35 | public void setChoosen(String choosen) { 36 | this.choosen = choosen; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/Message.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | import com.google.firebase.firestore.ServerTimestamp; 4 | 5 | import java.util.Date; 6 | 7 | public class Message { 8 | 9 | private String message; 10 | private Date dateCreated; 11 | private String userSender; 12 | 13 | public Message() { } 14 | 15 | public Message(String message, String userSender) { 16 | this.message = message; 17 | this.userSender = userSender; 18 | } 19 | 20 | 21 | // --- GETTERS --- 22 | public String getMessage() { return message; } 23 | 24 | @ServerTimestamp 25 | public Date getDateCreated() { return dateCreated; } 26 | public String getUserSender() { return userSender; } 27 | 28 | // --- SETTERS --- 29 | public void setMessage(String message) { this.message = message; } 30 | public void setDateCreated(Date dateCreated) { this.dateCreated = dateCreated; } 31 | public void setUserSender(String userSender) { this.userSender = userSender; } 32 | 33 | } -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/Patient.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class Patient { 4 | private String name; 5 | private String adresse; 6 | private String tel; 7 | private String email; 8 | private String dateNaissance; 9 | private String situationFamiliale; 10 | 11 | 12 | public Patient(){ 13 | //needed for firebase 14 | } 15 | 16 | public Patient(String name, String adresse, String tel, String email, String dateNaissance, String situationFamiliale) { 17 | this.name = name; 18 | this.adresse = adresse; 19 | this.tel = tel; 20 | this.email = email; 21 | this.dateNaissance = dateNaissance; 22 | this.situationFamiliale = situationFamiliale; 23 | } 24 | 25 | public String getName() { 26 | return name; 27 | } 28 | 29 | public void setName(String name) { 30 | this.name = name; 31 | } 32 | 33 | public String getAdresse() { 34 | return adresse; 35 | } 36 | 37 | public void setAdresse(String adresse) { 38 | this.adresse = adresse; 39 | } 40 | 41 | public String getTel() { 42 | return tel; 43 | } 44 | 45 | public void setTel(String tel) { 46 | this.tel = tel; 47 | } 48 | 49 | public String getEmail() { 50 | return email; 51 | } 52 | 53 | public void setEmail(String email) { 54 | this.email = email; 55 | } 56 | 57 | public String getDateNaissance() { 58 | return dateNaissance; 59 | } 60 | 61 | public void setDateNaissance(String dateNaissance) { 62 | this.dateNaissance = dateNaissance; 63 | } 64 | 65 | public String getSituationFamiliale() { 66 | return situationFamiliale; 67 | } 68 | 69 | public void setSituationFamiliale(String situationFamiliale) { 70 | this.situationFamiliale = situationFamiliale; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/RDV.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | import java.util.Date; 4 | 5 | public class RDV { 6 | private int noRDV; 7 | private Date dateRDV; 8 | private Date datePriseRDV; 9 | private String nomMedecin; 10 | 11 | public RDV(int noRDV, Date dateRDV, Date datePriseRDV, String nomMedecin) { 12 | this.noRDV = noRDV; 13 | this.dateRDV = dateRDV; 14 | this.datePriseRDV = datePriseRDV; 15 | this.nomMedecin = nomMedecin; 16 | } 17 | 18 | public int getNoRDV() { 19 | return noRDV; 20 | } 21 | 22 | public void setNoRDV(int noRDV) { 23 | this.noRDV = noRDV; 24 | } 25 | 26 | public Date getDateRDV() { 27 | return dateRDV; 28 | } 29 | 30 | public void setDateRDV(Date dateRDV) { 31 | this.dateRDV = dateRDV; 32 | } 33 | 34 | public Date getDatePriseRDV() { 35 | return datePriseRDV; 36 | } 37 | 38 | public void setDatePriseRDV(Date datePriseRDV) { 39 | this.datePriseRDV = datePriseRDV; 40 | } 41 | 42 | public String getNomMedecin() { 43 | return nomMedecin; 44 | } 45 | 46 | public void setNomMedecin(String nomMedecin) { 47 | this.nomMedecin = nomMedecin; 48 | } 49 | 50 | //Afficher l'etat de RDV 51 | public void etatRDV(){ 52 | System.out.println("Le Rendez-vous "+getNoRDV()+" est en cours"); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/Request.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class Request { 4 | private String id_patient; 5 | private String id_doctor; 6 | private String hour_path; 7 | public Request(){ 8 | 9 | } 10 | 11 | public String getHour_path() { 12 | return hour_path; 13 | } 14 | 15 | public void setHour_path(String hour_path) { 16 | this.hour_path = hour_path; 17 | } 18 | 19 | public String getId_patient() { 20 | return id_patient; 21 | } 22 | 23 | public void setId_patient(String id_patient) { 24 | this.id_patient = id_patient; 25 | } 26 | 27 | public String getId_doctor() { 28 | return id_doctor; 29 | } 30 | 31 | public void setId_doctor(String id_doctor) { 32 | this.id_doctor = id_doctor; 33 | } 34 | 35 | public Request(String id_patient, String id_doctor) { 36 | this.id_patient = id_patient; 37 | this.id_doctor = id_doctor; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/ShowToast.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public interface ShowToast { 4 | 5 | public void onShowToast (String message); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/TimeSlot.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class TimeSlot { 4 | private Long slot; 5 | private String type ; 6 | private String chemin; 7 | 8 | public String getChemin() { 9 | return chemin; 10 | } 11 | 12 | public void setChemin(String chemin) { 13 | this.chemin = chemin; 14 | } 15 | 16 | public String getType() { 17 | return type; 18 | } 19 | 20 | public void setType(String type) { 21 | this.type = type; 22 | } 23 | 24 | public TimeSlot() { 25 | } 26 | 27 | public Long getSlot() { 28 | return slot; 29 | } 30 | 31 | public void setSlot(Long slot) { 32 | this.slot = slot; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/UploadImage.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class UploadImage { 4 | private String imgName; 5 | private String imgURI; 6 | public UploadImage(){ 7 | } 8 | 9 | public UploadImage(String imgName, String imgURI) { 10 | if(imgName.trim().equals("")){ 11 | imgName = "Untitled"; 12 | } 13 | 14 | this.imgName = imgName; 15 | this.imgURI = imgURI; 16 | } 17 | 18 | public String getImgName() { 19 | return imgName; 20 | } 21 | 22 | public void setImgName(String imgName) { 23 | this.imgName = imgName; 24 | } 25 | 26 | public String getImgURI() { 27 | return imgURI; 28 | } 29 | 30 | public void setImgURI(String imgURI) { 31 | this.imgURI = imgURI; 32 | } 33 | } 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/ensias/healthcareapp/model/User.java: -------------------------------------------------------------------------------- 1 | package com.ensias.healthcareapp.model; 2 | 3 | public class User { 4 | private String name; 5 | private String adresse; 6 | private String tel; 7 | private String email; 8 | private String type; 9 | 10 | public User(){ 11 | //need firebase 12 | } 13 | 14 | public User(String name, String adresse, String tel, String email,String type) { 15 | this.name = name; 16 | this.adresse = adresse; 17 | this.tel = tel; 18 | this.email = email; 19 | this.type = type; 20 | } 21 | 22 | public String getType() { 23 | return type; 24 | } 25 | 26 | public void setType(String type) { 27 | this.type = type; 28 | } 29 | 30 | public String getName() { 31 | return name; 32 | } 33 | 34 | public void setName(String name) { 35 | this.name = name; 36 | } 37 | 38 | public String getAdresse() { 39 | return adresse; 40 | } 41 | 42 | public void setAdresse(String adresse) { 43 | this.adresse = adresse; 44 | } 45 | 46 | public String getTel() { 47 | return tel; 48 | } 49 | 50 | public void setTel(String tel) { 51 | this.tel = tel; 52 | } 53 | 54 | public String getEmail() { 55 | return email; 56 | } 57 | 58 | public void setEmail(String email) { 59 | this.email = email; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add_circle_black_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-hdpi/ic_add_circle_black_24px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_android_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-hdpi/ic_android_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_bug_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-hdpi/ic_bug_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_cloud_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-hdpi/ic_cloud_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_image_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-hdpi/ic_image_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_school_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-hdpi/ic_school_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/medcal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-hdpi/medcal_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_add_circle_black_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-mdpi/ic_add_circle_black_24px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_android_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-mdpi/ic_android_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_bug_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-mdpi/ic_bug_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_cloud_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-mdpi/ic_cloud_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_image_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-mdpi/ic_image_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_school_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-mdpi/ic_school_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/medcal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-mdpi/medcal_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/medcal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-v24/medcal_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/note_background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-v24/note_background.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/valide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-v24/valide.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_add_circle_black_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xhdpi/ic_add_circle_black_24px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_android_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xhdpi/ic_android_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_bug_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xhdpi/ic_bug_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_cloud_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xhdpi/ic_cloud_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_image_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xhdpi/ic_image_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_school_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xhdpi/ic_school_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/medcal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xhdpi/medcal_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_add_circle_black_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxhdpi/ic_add_circle_black_24px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_android_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxhdpi/ic_android_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_bug_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxhdpi/ic_bug_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_cloud_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxhdpi/ic_cloud_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_image_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxhdpi/ic_image_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_school_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxhdpi/ic_school_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/medcal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxhdpi/medcal_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/healthy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/healthy.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_add_circle_black_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/ic_add_circle_black_24px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_android_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/ic_android_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_bug_report_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/ic_bug_report_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_cloud_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/ic_cloud_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_image_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/ic_image_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_school_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/ic_school_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/medcal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable-xxxhdpi/medcal_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_danger.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_radius_accent_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_radius_primary_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_success.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/doctor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/doctor.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_account_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add_location_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_anon_user_48dp.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 18 | 19 | 25 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_appointement.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_back_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_assignment_ind_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_attach_money_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_calendar.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_call_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_camera_alt_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_chat_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_chat_message_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_date.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_doctor_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/ic_doctor_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_email_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_exit_to_app_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_filter_list_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_local_hospital_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_logo_auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/ic_logo_auth.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_monetization_on_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_more_vert_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/ic_more_vert_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_person.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_person_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_phone_android_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_profile.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_request.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search_white.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/ic_search_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/link_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/loading_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/main_header_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/medcal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/medcal_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/price_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/primary_gradient_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/profile.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/rating_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rectangle_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_message.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 13 | 14 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_message2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 13 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_relativelayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/valide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/drawable/valide.png -------------------------------------------------------------------------------- /app/src/main/res/font/amita.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/font/courgette.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/font/roboto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/font/roboto.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/roboto_light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilyasstrh/Health_Care_App/fb99cbb47c067f1d030ff51961bba7e15c60b33b/app/src/main/res/font/roboto_light.ttf -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_appointement.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 22 | 23 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_chat.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 19 | 23 | 32 | 33 | 34 | 38 | 39 | 40 | 41 | 42 | 48 | 49 | 50 | 53 | 54 | 60 | 61 | 62 | 63 |