From 0851f98d4b65db01837cb87bb8dd8459305724c8 Mon Sep 17 00:00:00 2001 From: lord Date: Sat, 8 Jan 2022 15:26:05 +0530 Subject: [PATCH 1/5] consultus --- app/build.gradle | 2 + .../Authentication/RegistrationFinal.java | 21 ++- .../ConsultUS/ConsultUs_SplashScreen.java | 25 +-- .../spaceceedu/ConsultUS/Consultant.java | 10 +- .../ConsultUS/ConsultantProfile.java | 26 +++- .../ConsultUS/Consultant_GetAppointment.java | 146 +++++++++++++----- .../spaceceedu/ConsultUS/Consultant_Main.java | 95 +++++------- .../ConsultUS/ConsultantsLibrary.java | 1 + ...Fragment_Appointments_For_Consultants.java | 5 +- .../Fragment_Appointments_For_User.java | 5 +- .../Fragment_Consultant_Categories.java | 5 +- .../com/spacECE/spaceceedu/MainActivity.java | 3 + .../spaceceedu/Utils/UsefulFunctions.java | 4 + .../layout/activity_consultant_profile.xml | 11 +- 14 files changed, 223 insertions(+), 136 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 87004b7d..b6223d4b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,4 +67,6 @@ dependencies { implementation 'io.agora.rtc:full-sdk:3.2.1' + implementation 'com.wdullaer:materialdatetimepicker:3.0.0' + } \ No newline at end of file diff --git a/app/src/main/java/com/spacECE/spaceceedu/Authentication/RegistrationFinal.java b/app/src/main/java/com/spacECE/spaceceedu/Authentication/RegistrationFinal.java index 31150bc2..1fd2a819 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/Authentication/RegistrationFinal.java +++ b/app/src/main/java/com/spacECE/spaceceedu/Authentication/RegistrationFinal.java @@ -185,11 +185,10 @@ private Bitmap getBitmapFromUri(Uri uri) throws IOException { return image; } - public static byte[] encodeBase64(Bitmap image) { + public static byte[] compressBitmap(Bitmap image) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 90, byteArrayOutputStream); - byte[] encoded = byteArrayOutputStream.toByteArray(); - return encoded; + return byteArrayOutputStream.toByteArray(); } private void sendUserRegistration(String name, String email, String password, String phone, Uri image){ @@ -200,7 +199,7 @@ private void sendUserRegistration(String name, String email, String password, St JSONObject jsonObject; Bitmap selectedImage; - byte[] encodedImage = {5}; + byte[] ImageBytes = {5}; @Override @@ -208,12 +207,12 @@ public void run() { try { selectedImage = getBitmapFromUri(image); - encodedImage = encodeBase64(selectedImage); + ImageBytes = compressBitmap(selectedImage); } catch (IOException e) { e.printStackTrace(); } - if(encodedImage.length == 1){ + if(ImageBytes.length == 1){ runOnUiThread(new Runnable() { @Override public void run() { @@ -230,8 +229,6 @@ public void run() { } - System.out.println("hello"); - OkHttpClient client = new OkHttpClient(); RequestBody fromBody; @@ -243,8 +240,8 @@ public void run() { .addFormDataPart("email", email) .addFormDataPart("password", password) .addFormDataPart("phone", phone) - .addFormDataPart("image", name+".jpg", - RequestBody.create(MediaType.parse("image/*jpg"), encodedImage)) + .addFormDataPart("image", name+".jpeg", + RequestBody.create(ImageBytes, MediaType.parse("image/*jpeg"))) .addFormDataPart("type", "consultant") .addFormDataPart("c_categories", TYPE) .addFormDataPart("c_office", ADDRESS) @@ -263,8 +260,8 @@ public void run() { .addFormDataPart("email", email) .addFormDataPart("password", password) .addFormDataPart("phone", phone) - .addFormDataPart("image", name+".jpg", - RequestBody.create(MediaType.parse("image/*jpg"), encodedImage)) + .addFormDataPart("image", name+".jpeg", + RequestBody.create(ImageBytes, MediaType.parse("image/*jpeg"))) .addFormDataPart("type", "customer") .build(); } diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultUs_SplashScreen.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultUs_SplashScreen.java index 786cc635..7aefee5e 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultUs_SplashScreen.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultUs_SplashScreen.java @@ -73,17 +73,7 @@ public void onClick(DialogInterface dialog, int which) { } catch (JSONException e) { e.printStackTrace(); } - Consultant_Main.categoryList = new ArrayList<>(); - try { - for (int i = 0; i < jsonArray.length(); i++) { - ConsultantCategory newCategory = new ConsultantCategory((String) jsonArray.get(i), "nice"); - Consultant_Main.categoryList.add(newCategory); - } - - } catch (JSONException e) { - e.printStackTrace(); - } - + CreateArrayOfCategories(jsonArray); Intent intent = new Intent(ConsultUs_SplashScreen.this, Consultant_Main.class); startActivity(intent); @@ -99,4 +89,17 @@ public void onClick(DialogInterface dialog, int which) { thread.start(); } + + static void CreateArrayOfCategories(JSONArray jsonArray) { + Consultant_Main.categoryList = new ArrayList<>(); + try { + for (int i = 0; i < jsonArray.length(); i++) { + ConsultantCategory newCategory = new ConsultantCategory((String) jsonArray.get(i), "nice"); + Consultant_Main.categoryList.add(newCategory); + } + + } catch (JSONException e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant.java index 22852df8..9c655dd2 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant.java @@ -1,13 +1,13 @@ package com.spacECE.spaceceedu.ConsultUS; public class Consultant { - private String name,consultant_id,profilePic_src,categories,address,language,timing_start,timing_end,qualification; + private String name,consultant_id,profilePic_src,categories,address,language,timing_start,timing_end,available_days,qualification; private String price; //TODO in this class days on which consultant is available is missing and needs to implemented from the server side and proper string array to be added. public Consultant(String name, String consultant_id, String profilePic_src, String categories - , String address, String language, String timing_start, String timing_end, + , String address, String language, String timing_start, String timing_end, String available_days, String qualification, String price) { this.name = name; this.consultant_id = consultant_id; @@ -17,6 +17,7 @@ public Consultant(String name, String consultant_id, String profilePic_src, Stri this.language = language; this.timing_start = timing_start; this.timing_end = timing_end; + this.available_days = available_days; this.qualification = qualification; this.price = price; } @@ -57,7 +58,12 @@ public String getTiming_end() { return timing_end; } + public String getAvailable_days() { + return available_days; + } + public String getPrice() { return price; } + } diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantProfile.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantProfile.java index 036bd569..f271d1f8 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantProfile.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantProfile.java @@ -22,11 +22,25 @@ public class ConsultantProfile extends AppCompatActivity { ImageView iv_profilePic; private TextView tv_name,tv_speciality,tv_chambers,tv_charges,tv_timing,tv_language,tv_days,tv_qualification; + + @Override + protected void onPostResume() { + super.onPostResume(); + if(ACCOUNT!=null) { + b_appointment.setText("Book Appointment!"); + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_consultant_profile); + + if(ACCOUNT==null) { + b_appointment.setText("Login to Book!"); + } + tv_name = findViewById(R.id.Consultant_Profile_textView_Name); iv_profilePic = findViewById(R.id.Consultant_Profile_ImageView_ProfilePic); tv_chambers=findViewById(R.id.Consultant_Profile_textView_Chamber); @@ -46,8 +60,7 @@ protected void onCreate(Bundle savedInstanceState) { String fee="Free"; String qualification="None"; String language="All"; - String days_from="Any"; - String days_to="Any"; + String available_days=""; String timing_to="All"; String timing_from="All"; String pic_src = "https://img.favpng.com/11/24/17/management-consulting-consulting-firm-consultant-business-png-favpng-jkyKzuQ3UyL0wXXCBcvk4c1fu.jpg"; @@ -64,6 +77,7 @@ protected void onCreate(Bundle savedInstanceState) { speciality = extras.getString("speciality"); timing_from=extras.getString("timing_from"); timing_to=extras.getString("timing_to"); + available_days=extras.getString("available_days"); qualification=extras.getString("qualification"); pic_src = extras.getString("profile_pic"); } @@ -76,7 +90,7 @@ protected void onCreate(Bundle savedInstanceState) { tv_charges.setText(fee+" /-"); tv_timing.setText(timing_from.substring(0,5)+" - "+timing_to.substring(0,5)); tv_language.setText(language); - tv_days.setText(String.valueOf(days_from.charAt(0))+days_from.charAt(1)+days_from.charAt(2)+" - "+days_to.charAt(0)+days_to.charAt(1)+days_to.charAt(2)); + tv_days.setText(available_days); try { pic_src = "https://spacefoundation.in/test/SpacECE-PHP/img/users/" + pic_src; @@ -90,13 +104,10 @@ protected void onCreate(Bundle savedInstanceState) { String finalName = name; String finalFee = fee; String finalSpeciality = speciality; + String finalAvailable_days = available_days; String finalTiming_from = timing_from; String finalTiming_to = timing_to; - if(ACCOUNT==null) { - b_appointment.setText("Login to Book!"); - } - b_appointment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -111,6 +122,7 @@ public void onClick(View view) { intent.putExtra("consultant_name", finalName); intent.putExtra("speciality", finalSpeciality); intent.putExtra("fee", finalFee); + intent.putExtra("available_days", finalAvailable_days); intent.putExtra("startTime", finalTiming_from); intent.putExtra("endTime", finalTiming_to); } diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_GetAppointment.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_GetAppointment.java index abd1f22b..d683ff3e 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_GetAppointment.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_GetAppointment.java @@ -1,10 +1,9 @@ package com.spacECE.spaceceedu.ConsultUS; -import android.app.DatePickerDialog; -import android.app.TimePickerDialog; + import android.content.Intent; -import android.icu.util.Calendar; import android.os.Build; +import android.os.Parcel; import android.util.Log; import android.widget.*; import androidx.appcompat.app.AppCompatActivity; @@ -12,11 +11,19 @@ import android.os.Bundle; import android.view.View; +import com.google.android.material.datepicker.CalendarConstraints; +import com.google.android.material.datepicker.MaterialDatePicker; +import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener; +import com.google.android.material.timepicker.MaterialTimePicker; +import com.google.android.material.timepicker.TimeFormat; import com.instamojo.android.Instamojo; import com.spacECE.spaceceedu.MainActivity; import com.spacECE.spaceceedu.R; import com.spacECE.spaceceedu.Utils.UsefulFunctions; import com.squareup.picasso.Picasso; +import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; +import com.wdullaer.materialdatetimepicker.time.TimePickerDialog; +import com.wdullaer.materialdatetimepicker.time.Timepoint; import okhttp3.*; import org.jetbrains.annotations.NotNull; import org.json.JSONException; @@ -24,9 +31,10 @@ import java.io.IOException; import java.text.ParseException; -import java.util.Date; +import java.util.*; import static com.spacECE.spaceceedu.LearnOnApp.LearnOn_List_RecycleAdapter.orderID; +import static com.spacECE.spaceceedu.Utils.UsefulFunctions.DateFunc.StringToTime; import static java.lang.String.*; import static java.lang.String.format; @@ -37,6 +45,7 @@ public class Consultant_GetAppointment extends AppCompatActivity implements Inst String speciality = "None"; String fee="Free"; String pic_src; + String available_days=""; String timing_from= ""; String timing_to = ""; @@ -54,6 +63,7 @@ public class Consultant_GetAppointment extends AppCompatActivity implements Inst private Boolean Time_picked = false; private String BOOKING_DAY, BOOKING_TIME; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -74,6 +84,7 @@ protected void onCreate(Bundle savedInstanceState) { consultant_id = extras.getString("consultant_id"); speciality = extras.getString("speciality"); pic_src=extras.getString("profile_pic"); + available_days=extras.getString("available_days"); timing_from = extras.getString("startTime"); timing_to = extras.getString("endTime"); @@ -157,41 +168,100 @@ public void onClick(View v) { private void datePicker(){ //date picker - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - Calendar c = Calendar.getInstance(); - mYear = c.get(Calendar.YEAR); - mMonth = c.get(Calendar.MONTH); - mDay = c.get(Calendar.DAY_OF_MONTH); - mHour = c.get(Calendar.HOUR_OF_DAY); - mMinute = c.get(Calendar.MINUTE); +// Calendar[] ddd = AvailableDays(); +// +// DatePickerDialog datePickerDialog = DatePickerDialog.newInstance( +// new DatePickerDialog.OnDateSetListener() { +// @Override +// public void onDateSet(DatePickerDialog view, int year,int monthOfYear, int dayOfMonth) { +// Date_picked =true; //to mark date is pciked +// date = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year + " "; +// BOOKING_DAY = format("%04d:%02d:%02d ", year, (monthOfYear+1), dayOfMonth); +// calendar.setText(date); +// +// if(!Time_picked){ //is time is not picked before launch time picker +// timePicker(); +// } +// DateAndTimePicked(); //checks if time falls between the consultant range +// } +// }, ddd[0].get(Calendar.YEAR), ddd[0].get(Calendar.MONTH), ddd[0].get(Calendar.DATE)); +// +// Calendar abc = Calendar.getInstance(); +// datePickerDialog.setMinDate(abc); +// abc.add(Calendar.DATE, 30); +// datePickerDialog.setMaxDate(abc); +// +//// datePickerDialog.setSelectableDays(ddd); +// +// datePickerDialog.show(getFragmentManager(), "hello1"); + + + + + + + + + } + + private ArrayList days(String AvailableDays) { + String Days[] = AvailableDays.split(","); + ArrayList wording = new ArrayList<>(); + + for (int i = 0; i < Days.length; i++) { + if(Days[i].equals("Monday")) + wording.add(2); + if(Days[i].equals("Tuesday")) + wording.add(3); + if(Days[i].equals("Wednesday")) + wording.add(4); + if(Days[i].equals("Thursday")) + wording.add(5); + if(Days[i].equals("Friday")) + wording.add(6); + if(Days[i].equals("Saturday")) + wording.add(7); + if(Days[i].equals("Sunday")) + wording.add(1); } + return wording; + } - DatePickerDialog datePickerDialog = new DatePickerDialog(this, - new DatePickerDialog.OnDateSetListener() { - @Override - public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) { - Date_picked =true; //to mark date is pciked - date = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year + " "; - BOOKING_DAY = format("%04d:%02d:%02d ", year, (monthOfYear+1), dayOfMonth); - calendar.setText(date); - - if(!Time_picked){ //is time is not picked before launch time picker - timePicker(); - } - DateAndTimePicked(); //checks if time falls between the consultant range - } - }, mYear, mMonth, mDay); - datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); - datePickerDialog.show(); + private Calendar[] AvailableDays() { + + ArrayList DaysAvailable = new ArrayList(); + ArrayList DaysOfWeek = days(available_days); + Calendar[] ddd = {}; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + Calendar today = Calendar.getInstance(); + for (int i = 0; i < 30; i++) { + if(DaysOfWeek.contains(today.get(Calendar.DAY_OF_WEEK))) { + DaysAvailable.add(today.getTime()); + } + today.add(Calendar.DATE, 1); + } + + today = new GregorianCalendar(); + ddd = new Calendar[DaysAvailable.size()]; + + for (int i = 0; i < DaysAvailable.size(); i++) { + today.setTime(DaysAvailable.get(i)); + ddd[i] = today; + System.out.println(ddd[i]); + } + return ddd; + } + return ddd; } private void timePicker(){ - TimePickerDialog timePickerDialog = new TimePickerDialog(this, + TimePickerDialog timePickerDialog = TimePickerDialog.newInstance( new TimePickerDialog.OnTimeSetListener() { @Override - public void onTimeSet(TimePicker view, int hourOfDay,int minute) { + public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) { Time_picked = true; //same as above mHour = hourOfDay; mMinute = minute; @@ -199,13 +269,19 @@ public void onTimeSet(TimePicker view, int hourOfDay,int minute) { BOOKING_TIME = format("%02d:%02d:00", hourOfDay, minute); clock.setText(time); - if(!Date_picked) { //same as above + if (!Date_picked) { //same as above datePicker(); } DateAndTimePicked(); //same as above } }, mHour, mMinute, false); - timePickerDialog.show(); + + +// timePickerDialog.setSelectableTimes(new Timepoint[]{new Timepoint(15, 26)}); + + timePickerDialog.show(getFragmentManager(), "hello"); + + } @Override @@ -228,9 +304,9 @@ private void DateAndTimePicked() { } private boolean validTime(String start, String end, String to_check) throws ParseException { - Date Start = UsefulFunctions.DateFunc.StringToTime(start); - Date End = UsefulFunctions.DateFunc.StringToTime(end); - Date To_Check = UsefulFunctions.DateFunc.StringToTime(to_check); + Date Start = StringToTime(start); + Date End = StringToTime(end); + Date To_Check = StringToTime(to_check); return (To_Check.before(End) & To_Check.after(Start)); diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java index 0207f955..9e5f1241 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java @@ -2,6 +2,7 @@ import android.app.AlarmManager; import android.app.PendingIntent; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; @@ -33,6 +34,8 @@ public class Consultant_Main extends AppCompatActivity { + + public static ArrayList categoryList = new ArrayList<>(); NavigationBarView.OnItemSelectedListener navListener = new NavigationBarView.OnItemSelectedListener() { @@ -67,16 +70,16 @@ protected void onCreate(Bundle savedInstanceState) { bottomNav.setOnItemSelectedListener(navListener); //generated the list based on user type and expanded the fragments accordingly - if(MainActivity.ACCOUNT!=null){ + if(MainActivity.ACCOUNT!=null) { if (MainActivity.ACCOUNT.isCONSULTANT()) { bottomNav.inflateMenu(R.menu.consultant_main_consultants_bottomnav); - generateAppointmentsListForUser(); - generateAppointmentsListForConsultant(); + generateAppointmentsListForUser(getApplicationContext()); + generateAppointmentsListForConsultant(getApplicationContext()); } else { bottomNav.inflateMenu(R.menu.consultant_main_user_bottomnav); - generateAppointmentsListForUser(); + generateAppointmentsListForUser(getApplicationContext()); } - }else{ + }else { bottomNav.inflateMenu(R.menu.consultant_main_nouser_bottomnav); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction().replace(R.id.ConsultantMain_Frame, @@ -87,7 +90,7 @@ protected void onCreate(Bundle savedInstanceState) { new Fragment_Consultant_Categories()).commit(); } - private void generateAppointmentsListForUser() { + public static void generateAppointmentsListForUser(Context context) { new Thread(new Runnable() { @@ -132,30 +135,7 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO try { for (int i = 0; i < jsonArray.length(); i++) { - JSONObject response_element = new JSONObject(String.valueOf(jsonArray.getJSONObject(i))); - - Appointment newAppointment = new Appointment(response_element.getString("c_id"), response_element.getString("c_name"), response_element.getString("u_name") - , response_element.getString("c_image"), response_element.getString("u_image"), response_element.getString("b_time") - , response_element.getString("end_time")); - - - Intent intent = new Intent(Consultant_Main.this, Notification.class); - PendingIntent pendingIntent = PendingIntent.getBroadcast(Consultant_Main.this, - Integer.parseInt(response_element.getString("booking_id")), intent, 0); - AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); - Date date = new Date(); - Calendar calendar = Calendar.getInstance(); - try { - date = UsefulFunctions.DateFunc.StringToDate(response_element.getString("b_time")); - } catch (ParseException e) { - e.printStackTrace(); - } - calendar.setTime(date); - Log.d("Notification", "sendNotification: "+calendar.getTime()); - alarmManager.set(AlarmManager.RTC_WAKEUP, - calendar.getTimeInMillis()-1000*60*10, pendingIntent); - - Fragment_Appointments_For_User.appointmentsArrayList.add(newAppointment); + Fragment_Appointments_For_User.appointmentsArrayList.add(UpdatingAppointmentAndNotification(i, jsonArray, context)); } Log.i("Appointments_For_User:::::", Fragment_Appointments_For_User.appointmentsArrayList.toString()); @@ -173,7 +153,7 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO }).start(); } - private void generateAppointmentsListForConsultant() { + public static void generateAppointmentsListForConsultant(Context context) { new Thread(new Runnable() { @@ -219,31 +199,7 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO try { for (int i = 0; i < jsonArray.length(); i++) { - JSONObject response_element = new JSONObject(String.valueOf(jsonArray.getJSONObject(i))); - - Appointment newAppointment = new Appointment(response_element.getString("c_id"), response_element.getString("c_name"), response_element.getString("u_name") - , response_element.getString("c_image"), response_element.getString("u_image"), response_element.getString("b_time") - , response_element.getString("end_time")); - - - Intent intent = new Intent(Consultant_Main.this, Notification.class); - PendingIntent pendingIntent = PendingIntent.getBroadcast(Consultant_Main.this, - Integer.parseInt(response_element.getString("booking_id")), intent, 0); - AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); - Date date = new Date(); - Calendar calendar = Calendar.getInstance(); - try { - date = UsefulFunctions.DateFunc.StringToDate(response_element.getString("b_time")); - } catch (ParseException e) { - e.printStackTrace(); - } - calendar.setTime(date); - Log.d("Notification", "sendNotification: "+calendar.getTime()); - alarmManager.set(AlarmManager.RTC_WAKEUP, - calendar.getTimeInMillis()-1000*60*10, pendingIntent); - - - Fragment_Appointments_For_Consultants.appointmentsArrayList.add(newAppointment); + Fragment_Appointments_For_Consultants.appointmentsArrayList.add(UpdatingAppointmentAndNotification(i, jsonArray, context)); } Log.i("Appointments_For_Consultant:::::", Fragment_Appointments_For_Consultants.appointmentsArrayList.toString()); @@ -261,6 +217,33 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO }).start(); } + private static Appointment UpdatingAppointmentAndNotification(int i, JSONArray jsonArray, Context context) throws JSONException { + JSONObject response_element = new JSONObject(String.valueOf(jsonArray.getJSONObject(i))); + + Appointment newAppointment = new Appointment(response_element.getString("c_id"), response_element.getString("c_name"), response_element.getString("u_name") + , response_element.getString("c_image"), response_element.getString("u_image"), response_element.getString("b_datetime") + , response_element.getString("end_time")); + + + Intent intent = new Intent(context, Notification.class); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, + Integer.parseInt(response_element.getString("booking_id")), intent, 0); + AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE); + Date date = new Date(); + Calendar calendar = Calendar.getInstance(); + try { + date = UsefulFunctions.DateFunc.StringToDate(response_element.getString("b_datetime")); + } catch (ParseException e) { + e.printStackTrace(); + } + calendar.setTime(date); + Log.d("Notification", "sendNotification: "+calendar.getTime()); + alarmManager.set(AlarmManager.RTC_WAKEUP, + calendar.getTimeInMillis()-1000*60*10, pendingIntent); + + return newAppointment; + } + public static void SetDateTimeDay(int position, ArrayList myConsultants, TextView date, TextView time, TextView day) { diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantsLibrary.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantsLibrary.java index a8929080..54e26151 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantsLibrary.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/ConsultantsLibrary.java @@ -56,6 +56,7 @@ public void onClick(View v, int position) { intent.putExtra("language", consultantsList.get(position).getLanguage()); intent.putExtra("timing_to", consultantsList.get(position).getTiming_end()); intent.putExtra("timing_from", consultantsList.get(position).getTiming_start()); + intent.putExtra("available_days", consultantsList.get(position).getAvailable_days()); intent.putExtra("qualification", consultantsList.get(position).getQualification()); intent.putExtra("profilePic", consultantsList.get(position).getProfilePic_src()); startActivity(intent); diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_Consultants.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_Consultants.java index 167d01c5..491a191d 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_Consultants.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_Consultants.java @@ -31,10 +31,11 @@ public void onCreate(Bundle savedInstanceState) { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v= inflater.inflate(R.layout.fragment_consultus_appointments_for_consultant, container, false); +// Consultant_Main.generateAppointmentsListForConsultant(getContext()); + View v= inflater.inflate(R.layout.fragment_consultus_appointments_for_consultant, + container, false); recyclerView=v.findViewById(R.id.Appointments_For_Consultant_RecyclerView); - setAdapter(appointmentsArrayList); return v; } diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_User.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_User.java index 8da714c8..7abc56db 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_User.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Appointments_For_User.java @@ -34,11 +34,11 @@ public void onCreate(Bundle savedInstanceState) { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment +// Consultant_Main.generateAppointmentsListForUser(getContext()); View v = inflater.inflate(R.layout.fragment_consultus_appointments_for_user, container, false); - recyclerView = v.findViewById(R.id.Appointments_For_Users_RecyclerView); - if(MainActivity.ACCOUNT!=null){ TextView tv_l=v.findViewById(R.id.MyC_Login); tv_l.setVisibility(View.INVISIBLE); @@ -48,6 +48,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, } private void setAdapter(ArrayList list) { + Log.i("SetAdapter:", "Working"); setOnClickListener(); Appointments_For_User_RecyclerViewAdapter adapter = new Appointments_For_User_RecyclerViewAdapter(list, listener); diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Consultant_Categories.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Consultant_Categories.java index fe4cbaf8..660b726d 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Consultant_Categories.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Fragment_Consultant_Categories.java @@ -43,6 +43,7 @@ public void onCreate(Bundle savedInstanceState) { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.fragment_consultant__categories, container, false); Log.i("Categories", "Initiated"); @@ -113,8 +114,8 @@ public void getList(String category) { response_element.getString("u_id"), response_element.getString("image"), response_element.getString("cat_name"), response_element.getString("c_office"), response_element.getString("c_language"), response_element.getString("c_from_time"), - response_element.getString("c_to_time"), response_element.getString("c_qualification"), - response_element.getString("c_fee")); + response_element.getString("c_to_time"), response_element.getString("c_aval_days"), + response_element.getString("c_qualification"), response_element.getString("c_fee")); ConsultantsLibrary.consultantsList.add(consultant); } diff --git a/app/src/main/java/com/spacECE/spaceceedu/MainActivity.java b/app/src/main/java/com/spacECE/spaceceedu/MainActivity.java index 9d21ec0f..d223c4f9 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/MainActivity.java +++ b/app/src/main/java/com/spacECE/spaceceedu/MainActivity.java @@ -99,6 +99,9 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + + //disabled night mode AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); diff --git a/app/src/main/java/com/spacECE/spaceceedu/Utils/UsefulFunctions.java b/app/src/main/java/com/spacECE/spaceceedu/Utils/UsefulFunctions.java index 014051fe..d36018d7 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/Utils/UsefulFunctions.java +++ b/app/src/main/java/com/spacECE/spaceceedu/Utils/UsefulFunctions.java @@ -47,6 +47,10 @@ public static Date StringToDate(String date) throws ParseException { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date); } + public static Date String1ToDate(String date) throws ParseException { + return new SimpleDateFormat("MMM dd, yyyy").parse(date); + } + public static Date StringToTime(String date) throws ParseException { return new SimpleDateFormat("HH:mm:ss").parse(date); } diff --git a/app/src/main/res/layout/activity_consultant_profile.xml b/app/src/main/res/layout/activity_consultant_profile.xml index 582390d6..d5d26ab1 100644 --- a/app/src/main/res/layout/activity_consultant_profile.xml +++ b/app/src/main/res/layout/activity_consultant_profile.xml @@ -49,16 +49,14 @@ From 3e15b651d1006e743bafae0648928ba3765af609 Mon Sep 17 00:00:00 2001 From: lord Date: Sat, 8 Jan 2022 20:45:59 +0530 Subject: [PATCH 2/5] avinash changes --- .github/workflows/android.yml | 113 ++++++++++ .idea/misc.xml | 2 + app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 8 +- .../ConsultUS/ConsultantProfile.java | 9 +- .../Consultant_AppointmentConfirmation.java | 60 +++--- .../ConsultUS/Consultant_GetAppointment.java | 199 ++++++++++-------- .../spaceceedu/ConsultUS/Consultant_Main.java | 14 +- .../com/spacECE/spaceceedu/FragmentMain.java | 4 +- .../spaceceedu/LibForSmall/AddBook.java | 37 ++++ .../spacECE/spaceceedu/LibForSmall/Book.java | 72 +++++-- .../LibForSmall/{ChatUS.java => Chat_Us.java} | 2 +- .../Fragment_LibForSmall_Books.java | 64 ++++++ .../LibForSmall_RecycleAdapter.java | 58 +++++ .../LibForSmall/LibForSmall_SplashScreen.java | 98 +++++++++ .../spaceceedu/LibForSmall/Library_Main.java | 27 +++ .../spaceceedu/LibForSmall/Library_main.java | 113 ---------- .../spaceceedu/LibForSmall/My_books.java | 58 ----- .../LibForSmall/libraryDetailed.java | 4 + app/src/main/res/drawable/all_books.xml | 9 + app/src/main/res/layout/activity_chat_us.xml | 2 +- .../main/res/layout/activity_library_main.xml | 14 +- .../res/layout/fragment_library_itemlist.xml | 15 ++ .../main/res/layout/library_list_listitem.xml | 82 ++++++++ 24 files changed, 740 insertions(+), 326 deletions(-) create mode 100644 .github/workflows/android.yml rename app/src/main/java/com/spacECE/spaceceedu/LibForSmall/{ChatUS.java => Chat_Us.java} (87%) create mode 100644 app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Fragment_LibForSmall_Books.java create mode 100644 app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_RecycleAdapter.java create mode 100644 app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java create mode 100644 app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java delete mode 100644 app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_main.java delete mode 100644 app/src/main/java/com/spacECE/spaceceedu/LibForSmall/My_books.java create mode 100644 app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java create mode 100644 app/src/main/res/drawable/all_books.xml create mode 100644 app/src/main/res/layout/fragment_library_itemlist.xml create mode 100644 app/src/main/res/layout/library_list_listitem.xml diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 00000000..f0eee4df --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,113 @@ +name: Android CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew build + + apk: + name: Generate APK + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v1 + - name: Setup JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Build APK + run: bash ./gradlew assembleDebug --stacktrace + - name: Upload APK + uses: actions/upload-artifact@v1 + with: + name: apk + path: app/build/outputs/apk/debug/app-debug.apk + release: + name: Release APK + needs: apk + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + steps: + - name: Download APK from build + uses: actions/download-artifact@v1 + with: + name: apk + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + - name: Upload Release APK + id: upload_release_asset + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: apk/app-debug.apk + asset_name: MensaApp.apk + asset_content_type: application/zip + + - name: Send mail + uses: dawidd6/action-send-mail@v3 + with: + # Required mail server address: + server_address: smtp.gmail.com + # Required mail server port: + server_port: 465 + # Optional (recommended): mail server username: + username: ${{secrets.MAIL_USERNAME}} + # Optional (recommended) mail server password: + password: ${{secrets.MAIL_PASSWORD}} + # Required mail subject: + subject: Github Actions job result + # Required recipients' addresses: + to: spacece_web_dev@spacece.co, spacece-web-test@spacece.co + # Required sender full name (address can be skipped): + from: GitHub Android Builder # + # Optional whether this connection use TLS (default is true if server_port is 465) + secure: true + # Optional plain body: + body: Build job of ${{github.repository}} completed successfully! + # Optional HTML body read from file: + html_body: file://README.html + # Optional carbon copy recipients: + #cc: kyloren@example.com,leia@example.com + # Optional blind carbon copy recipients: + #bcc: r2d2@example.com,hansolo@example.com + # Optional recipient of the email response: + reply_to: noreplly@spacece.co + # Optional Message ID this message is replying to: + #in_reply_to: + # Optional unsigned/invalid certificates allowance: + ignore_cert: true + # Optional converting Markdown to HTML (set content_type to text/html too): + convert_markdown: true + # Optional attachments: + #attachments: attachments.zip,git.diff,./dist/static/*.js + # Optional priority: 'high', 'normal' (default) or 'low' + priority: low diff --git a/.idea/misc.xml b/.idea/misc.xml index 64bed12f..802b28a6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -94,6 +94,7 @@ + @@ -148,6 +149,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index b6223d4b..8fcd03fe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,6 +67,6 @@ dependencies { implementation 'io.agora.rtc:full-sdk:3.2.1' - implementation 'com.wdullaer:materialdatetimepicker:3.0.0' + implementation 'com.wdullaer:materialdatetimepicker:4.2.3' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ffbcacbc..78891716 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -37,8 +37,9 @@ - + + @@ -88,10 +89,7 @@ android:name=".Authentication.LoginActivity" android:exported="true" /> - { if(Date_picked & Time_picked & Duration>0){ - //tv_confirmation.setText(BOOKING_DAY+BOOKING_TIME); try { if(validTime(timing_from, timing_to, BOOKING_TIME)){ - tv_confirmation.setText("Appointment booked on " + date + time); - Instamojo.getInstance().initialize(this, Instamojo.Environment.TEST); - Instamojo.getInstance().initiatePayment(this, orderID, this); + tv_confirmation.setText("Confirm Appointment on " + date + time); +// Instamojo.getInstance().initialize(this, Instamojo.Environment.TEST); +// Instamojo.getInstance().initiatePayment(this, orderID, this); //now book appointment in on payment success class BookAppointment(); } else { @@ -166,45 +164,36 @@ public void onClick(View v) { } private void datePicker(){ - //date picker - -// Calendar[] ddd = AvailableDays(); -// -// DatePickerDialog datePickerDialog = DatePickerDialog.newInstance( -// new DatePickerDialog.OnDateSetListener() { -// @Override -// public void onDateSet(DatePickerDialog view, int year,int monthOfYear, int dayOfMonth) { -// Date_picked =true; //to mark date is pciked -// date = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year + " "; -// BOOKING_DAY = format("%04d:%02d:%02d ", year, (monthOfYear+1), dayOfMonth); -// calendar.setText(date); -// -// if(!Time_picked){ //is time is not picked before launch time picker -// timePicker(); -// } -// DateAndTimePicked(); //checks if time falls between the consultant range -// } -// }, ddd[0].get(Calendar.YEAR), ddd[0].get(Calendar.MONTH), ddd[0].get(Calendar.DATE)); -// -// Calendar abc = Calendar.getInstance(); -// datePickerDialog.setMinDate(abc); -// abc.add(Calendar.DATE, 30); -// datePickerDialog.setMaxDate(abc); -// -//// datePickerDialog.setSelectableDays(ddd); -// -// datePickerDialog.show(getFragmentManager(), "hello1"); - - - - + //date picker + Calendar[] ddd = AvailableDays(EncodeAvailableDays(available_days)); + DatePickerDialog datePickerDialog = DatePickerDialog.newInstance( + new DatePickerDialog.OnDateSetListener() { + @Override + public void onDateSet(DatePickerDialog view, int year,int monthOfYear, int dayOfMonth) { + Date_picked =true; //to mark date is picked + date = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year + " "; + BOOKING_DAY = format("%04d-%02d-%02d", year, (monthOfYear+1), dayOfMonth); + calendar.setText(date); + + if(!Time_picked){ //is time is not picked before launch time picker + timePicker(); + } + DateAndTimePicked(); //checks if time falls between the consultant range + } + }, ddd[0].get(Calendar.YEAR), ddd[0].get(Calendar.MONTH), ddd[0].get(Calendar.DATE)); + Calendar abc = Calendar.getInstance(); + datePickerDialog.setMinDate(abc); + abc.add(Calendar.DATE, 30); + datePickerDialog.setMaxDate(abc); + datePickerDialog.setDisabledDays(ddd); + datePickerDialog.show(getSupportFragmentManager(), "hello1"); } - private ArrayList days(String AvailableDays) { + private ArrayList EncodeAvailableDays(String AvailableDays) { String Days[] = AvailableDays.split(","); ArrayList wording = new ArrayList<>(); @@ -227,35 +216,41 @@ private ArrayList days(String AvailableDays) { return wording; } - private Calendar[] AvailableDays() { + private Calendar[] AvailableDays(ArrayList AvailableDaysEncoded) { - ArrayList DaysAvailable = new ArrayList(); - ArrayList DaysOfWeek = days(available_days); + ArrayList DaysAvailable = new ArrayList<>(); Calendar[] ddd = {}; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { Calendar today = Calendar.getInstance(); for (int i = 0; i < 30; i++) { - if(DaysOfWeek.contains(today.get(Calendar.DAY_OF_WEEK))) { - DaysAvailable.add(today.getTime()); + if(!AvailableDaysEncoded.contains(today.get(Calendar.DAY_OF_WEEK))) { + DaysAvailable.add((Calendar) today.clone()); } today.add(Calendar.DATE, 1); } - today = new GregorianCalendar(); ddd = new Calendar[DaysAvailable.size()]; for (int i = 0; i < DaysAvailable.size(); i++) { - today.setTime(DaysAvailable.get(i)); - ddd[i] = today; - System.out.println(ddd[i]); + ddd[i] = (Calendar) DaysAvailable.get(i).clone(); } return ddd; } return ddd; } - private void timePicker(){ + + + + private void timePicker() { + + Date MinTime = null; + try { + MinTime = UsefulFunctions.DateFunc.StringToTime(timing_from); + } catch (ParseException e) { + e.printStackTrace(); + } TimePickerDialog timePickerDialog = TimePickerDialog.newInstance( new TimePickerDialog.OnTimeSetListener() { @@ -263,8 +258,6 @@ private void timePicker(){ @Override public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) { Time_picked = true; //same as above - mHour = hourOfDay; - mMinute = minute; time = format("%02d:%02d", hourOfDay, minute); BOOKING_TIME = format("%02d:%02d:00", hourOfDay, minute); clock.setText(time); @@ -274,12 +267,24 @@ public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int seco } DateAndTimePicked(); //same as above } - }, mHour, mMinute, false); + }, MinTime.getHours(), MinTime.getMinutes(), false); + + try { + MinTime = UsefulFunctions.DateFunc.StringToTime(timing_from); + Timepoint minTime = new Timepoint(MinTime.getHours(), + MinTime.getMinutes()+1, MinTime.getSeconds()); + Date MaxTime = UsefulFunctions.DateFunc.StringToTime(timing_to); + Timepoint maxTime = new Timepoint(MaxTime.getHours(), + MaxTime.getMinutes()-1, MaxTime.getSeconds()); -// timePickerDialog.setSelectableTimes(new Timepoint[]{new Timepoint(15, 26)}); + timePickerDialog.setMinTime(minTime); + timePickerDialog.setMaxTime(maxTime); + } catch (ParseException e) { + e.printStackTrace(); + } - timePickerDialog.show(getFragmentManager(), "hello"); + timePickerDialog.show(getSupportFragmentManager(), "hello"); } @@ -328,7 +333,8 @@ public void run() { RequestBody fromBody = new FormBody.Builder() .add("u_id", MainActivity.ACCOUNT.getAccount_id()) .add("c_id", consultant_id) - .add("b_time", BOOKING_DAY + BOOKING_TIME) + .add("time", BOOKING_TIME) + .add("b_date", BOOKING_DAY) .add("end_time", valueOf(Duration)) .build(); @@ -340,40 +346,65 @@ public void run() { Call call = client.newCall(request); call.enqueue(new Callback() { - @Override - public void onFailure(@NotNull Call call, @NotNull IOException e) { - System.out.println("Registration Error ApI " + e.getMessage()); - } - - @Override - public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { - - runOnUiThread(new Runnable() { - @Override - public void run() { - try { - System.out.println(response.body().string()); - jsonObject = new JSONObject(response.body().string()); - System.out.println(jsonObject); - if(jsonObject.getString("status").equals("success")){ - Toast.makeText(Consultant_GetAppointment.this,"Booking Confirmed", - Toast.LENGTH_LONG).show(); - startActivity(new Intent(getApplicationContext(), Consultant_AppointmentConfirmation.class)); - finishAffinity(); - } else { - Toast.makeText(Consultant_GetAppointment.this,"Booking Failed", - Toast.LENGTH_LONG).show(); - } - } catch (JSONException | IOException e) { - e.printStackTrace(); - } - } - }); - } + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + System.out.println("Registration Error ApI " + e.getMessage()); + } + + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + + String data = response.body().string(); + try { + jsonObject = new JSONObject(data); + System.out.println(jsonObject); + + runOnUiThread(new Runnable() { + @Override + public void run() { + try { + if(jsonObject.getString("status").equals("success")){ + Toast.makeText(Consultant_GetAppointment.this,"Booking Confirmed", + Toast.LENGTH_LONG).show(); + + Intent intent = new Intent(getApplicationContext(), Consultant_AppointmentConfirmation.class); + intent.putExtra("bookingId", jsonObject.getString("Booking id")); + intent.putExtra("bookedOn", jsonObject.getString("b_date") + + " "+ jsonObject.getString("booking_time")); + intent.putExtra("time", Duration); + + startActivity(intent); + finishAffinity(); + } else if(jsonObject.getString("status").equals("fail")) { + Toast.makeText(Consultant_GetAppointment.this,"Booking Failed, Try another time", + Toast.LENGTH_LONG).show(); + } + else { + Toast.makeText(Consultant_GetAppointment.this,"Booking Failed, Try Later", + Toast.LENGTH_LONG).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + }); + + } catch (JSONException e) { + e.printStackTrace(); + } + + } }); } }).start(); + + + +// + + + } @Override diff --git a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java index 9e5f1241..79a5b710 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java +++ b/app/src/main/java/com/spacECE/spaceceedu/ConsultUS/Consultant_Main.java @@ -73,11 +73,11 @@ protected void onCreate(Bundle savedInstanceState) { if(MainActivity.ACCOUNT!=null) { if (MainActivity.ACCOUNT.isCONSULTANT()) { bottomNav.inflateMenu(R.menu.consultant_main_consultants_bottomnav); - generateAppointmentsListForUser(getApplicationContext()); - generateAppointmentsListForConsultant(getApplicationContext()); + generateAppointmentsListForUser(getApplicationContext(), MainActivity.ACCOUNT.getAccount_id()); + generateAppointmentsListForConsultant(getApplicationContext(), MainActivity.ACCOUNT.getAccount_id()); } else { bottomNav.inflateMenu(R.menu.consultant_main_user_bottomnav); - generateAppointmentsListForUser(getApplicationContext()); + generateAppointmentsListForUser(getApplicationContext(), MainActivity.ACCOUNT.getAccount_id()); } }else { bottomNav.inflateMenu(R.menu.consultant_main_nouser_bottomnav); @@ -90,7 +90,7 @@ protected void onCreate(Bundle savedInstanceState) { new Fragment_Consultant_Categories()).commit(); } - public static void generateAppointmentsListForUser(Context context) { + public static void generateAppointmentsListForUser(Context context, String id) { new Thread(new Runnable() { @@ -103,7 +103,7 @@ public static void generateAppointmentsListForUser(Context context) { public void run() { OkHttpClient client = new OkHttpClient(); RequestBody fromBody = new FormBody.Builder() - .add("u_id", MainActivity.ACCOUNT.getAccount_id()) + .add("u_id", id) .build(); Request request = new Request.Builder() @@ -153,7 +153,7 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO }).start(); } - public static void generateAppointmentsListForConsultant(Context context) { + public static void generateAppointmentsListForConsultant(Context context, String id) { new Thread(new Runnable() { @@ -166,7 +166,7 @@ public static void generateAppointmentsListForConsultant(Context context) { public void run() { OkHttpClient client = new OkHttpClient(); RequestBody fromBody = new FormBody.Builder() - .add("c_id", MainActivity.ACCOUNT.getAccount_id()) + .add("c_id", id) .build(); Request request = new Request.Builder() diff --git a/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java b/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java index ba7effd8..893e5116 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java +++ b/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java @@ -16,7 +16,7 @@ import com.spacECE.spaceceedu.Authentication.Account; import com.spacECE.spaceceedu.ConsultUS.ConsultUs_SplashScreen; import com.spacECE.spaceceedu.LearnOnApp.LearnOn_List_SplashScreen; -import com.spacECE.spaceceedu.LibForSmall.Library_main; +import com.spacECE.spaceceedu.LibForSmall.LibForSmall_SplashScreen; import com.spacECE.spaceceedu.VideoLibrary.VideoLibrary_Activity_SplashScreen; import com.synnapps.carouselview.CarouselView; import com.synnapps.carouselview.ImageListener; @@ -93,7 +93,7 @@ public void onClick(View view) { cv_libraryBooks.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(getContext(), Library_main.class); + Intent intent = new Intent(getContext(), LibForSmall_SplashScreen.class); startActivity(intent); } }); diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/AddBook.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/AddBook.java index 0e4bf52f..57fa54fe 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/AddBook.java +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/AddBook.java @@ -4,6 +4,14 @@ import androidx.appcompat.app.AppCompatActivity; import com.spacECE.spaceceedu.R; +import org.json.JSONObject; + +import okhttp3.Call; +import okhttp3.FormBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; + public class AddBook extends AppCompatActivity { @Override @@ -11,4 +19,33 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_book); } + + public void addBook(String name, String author,String edition,String description,String category,String price){ + String addbook=""; + + new Thread(new Runnable() { + + JSONObject jsonObject; + @Override + public void run() { + OkHttpClient client = new OkHttpClient(); + RequestBody fromBody = new FormBody.Builder() + .add("name",name) + .add("author",author) + .add("edition",edition) + .add("description",description) + .add("category",category) + .add("price",price) + .add("isAPI","true") + .build(); + + Request request = new Request.Builder() + .url(addbook) + .post(fromBody) + .build(); + + Call call = client.newCall(request); + } + }); + } } \ No newline at end of file diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java index c6e2da12..60914850 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java @@ -1,27 +1,69 @@ package com.spacECE.spaceceedu.LibForSmall; -import java.util.Date; +import org.jetbrains.annotations.NotNull; public class Book { - String name; - Date date; - Integer valid; + String product_id; + String product_title; + String product_price; + String product_keywords; + String product_image; - public Book(String name, Date date, Integer valid) { - this.name = name; - this.date = date; - this.valid = valid; + public Book(String product_id, String product_title, String product_price, String product_keywords, String product_image) { + this.product_id = product_id; + this.product_title = product_title; + this.product_price = product_price; + this.product_keywords = product_keywords; + this.product_image = product_image; } - public String getName() { - return name; + public String getProduct_id() { + return product_id; } - public Date getDate() { - return date; + public void setProduct_id(String product_id) { + this.product_id = product_id; } - public Integer getValid() { - return valid; + public String getProduct_title() { + return product_title; } -} + + public void setProduct_title(String product_title) { + this.product_title = product_title; + } + + public String getProduct_price() { + return product_price; + } + + private void setProduct_price(String product_price) { + this.product_price = product_price; + } + + public String getProduct_keywords() { + return product_keywords; + } + + public void setProduct_keywords(String product_keywords) { + this.product_keywords = product_keywords; + } + + public String getProduct_image() { + return product_image; + } + + public void setProduct_image(String product_image) { + this.product_image = product_image; + } + + @NotNull + @Override + public String toString() { + return "product_id= " + product_id + + " product_title= " + product_title + + "\nproduct_keywords= " + product_keywords + + "\nproduct_price= " + product_price + + "\nproduct_image= " + product_image; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/ChatUS.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Chat_Us.java similarity index 87% rename from app/src/main/java/com/spacECE/spaceceedu/LibForSmall/ChatUS.java rename to app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Chat_Us.java index 4caa9b29..0d386495 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/ChatUS.java +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Chat_Us.java @@ -4,7 +4,7 @@ import androidx.appcompat.app.AppCompatActivity; import com.spacECE.spaceceedu.R; -public class ChatUS extends AppCompatActivity { +public class Chat_Us extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Fragment_LibForSmall_Books.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Fragment_LibForSmall_Books.java new file mode 100644 index 00000000..f3954a86 --- /dev/null +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Fragment_LibForSmall_Books.java @@ -0,0 +1,64 @@ +package com.spacECE.spaceceedu.LibForSmall; + +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import com.spacECE.spaceceedu.R; + +import java.util.ArrayList; + +public class Fragment_LibForSmall_Books extends Fragment { + private RecyclerView ListRecyclerView; + private LibForSmall_RecycleAdapter.RecyclerViewClickListener listener; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + + } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + + View v = inflater.inflate(R.layout.fragment_library_itemlist, container, false); + v.setBackgroundColor(Color.WHITE); + + Window window = getActivity().getWindow(); + window.setStatusBarColor(Color.rgb(200,100,50)); + + + + ListRecyclerView = v.findViewById(R.id.library_RecyclerView); + ArrayList list = Library_Main.list; + setAdapter(list); + + return v; + } + private void setAdapter(ArrayList myList) { + setOnClickListener(); + LibForSmall_RecycleAdapter adapter = new LibForSmall_RecycleAdapter(myList, listener); + RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getContext(), 1, LinearLayoutManager.VERTICAL, false); + ListRecyclerView.setLayoutManager(layoutManager); + ListRecyclerView.setItemAnimator(new DefaultItemAnimator()); + ListRecyclerView.setAdapter(adapter); + } + + private void setOnClickListener() { + listener = (v, position) -> { + Intent intent = new Intent(getContext(), libraryDetailed.class); + intent.putExtra("pos", position); + startActivity(intent); + }; + } + +} diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_RecycleAdapter.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_RecycleAdapter.java new file mode 100644 index 00000000..297ea0d7 --- /dev/null +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_RecycleAdapter.java @@ -0,0 +1,58 @@ +package com.spacECE.spaceceedu.LibForSmall; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; +import com.spacECE.spaceceedu.R; + +import java.util.ArrayList; + +public class LibForSmall_RecycleAdapter extends RecyclerView.Adapter{ + + ArrayList list; + + private final RecyclerViewClickListener listener; + + public LibForSmall_RecycleAdapter(ArrayList myList, RecyclerViewClickListener listener) { + this.list = myList; + this.listener = listener; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.library_list_listitem, parent, false); + return new MyViewHolder(itemView); + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + holder.book_name.setText(list.get(position).getProduct_title()); + } + + @Override + public int getItemCount() { + return list.size(); + } + + public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + private final TextView book_name; + public MyViewHolder(@NonNull View view) { + super(view); + book_name=view.findViewById(R.id.cardview_bookname); + view.setOnClickListener(this); + } + + @Override + public void onClick(View view) { + listener.onClick(view, getAdapterPosition()); + } + } + + public interface RecyclerViewClickListener { + void onClick(View v, int position); + } +} diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java new file mode 100644 index 00000000..0b28978a --- /dev/null +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java @@ -0,0 +1,98 @@ +package com.spacECE.spaceceedu.LibForSmall; + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import androidx.appcompat.app.AppCompatActivity; +import com.spacECE.spaceceedu.R; +import com.spacECE.spaceceedu.Utils.UsefulFunctions; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.Objects; + +public class LibForSmall_SplashScreen extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_splash_screen); + + LoadList(); + } + + void LoadList() { + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + final JSONObject apiCall; + try{ + apiCall = UsefulFunctions.UsingGetAPI("http://spacefoundation.in/test/SpacECE-PHP/Khanstore/allproductlist.php"); + JSONArray jsonArray = null; + try { + try { + assert apiCall != null; + } catch (AssertionError e) { + + e.printStackTrace(); + + runOnUiThread(() -> { + new AlertDialog.Builder(LibForSmall_SplashScreen.this) + .setTitle("Internet Not Working!") + .setMessage("Do you want to retry ?") + + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + LoadList(); + } + }) + + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(LibForSmall_SplashScreen.this, Library_Main.class); + startActivity(intent); + finish(); + } + }) + + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + }); + + } + jsonArray = apiCall.getJSONArray("data"); + } catch (JSONException e) { + e.printStackTrace(); + } + Library_Main.list = new ArrayList<>(); + try { + Log.d("TAG", "run: "+jsonArray.length()); + for (int i = 0; i < Objects.requireNonNull(jsonArray).length(); i++) { + JSONObject response_element = new JSONObject(String.valueOf(jsonArray.getJSONObject(i))); + Book temp = new Book(response_element.getString("product_id"), response_element.getString("product_title"), + response_element.getString("product_price"), response_element.getString("product_keywords"), + response_element.getString("product_image")); + Library_Main.list.add(temp); + } + } catch (JSONException e) { + e.printStackTrace(); + } + + Intent intent = new Intent(LibForSmall_SplashScreen.this, Library_Main.class); + startActivity(intent); + finish(); + + } catch ( Exception e) { + Log.i("EXCEPTION", e.toString()); + } + } + }); + + thread.start(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java new file mode 100644 index 00000000..10a2afd1 --- /dev/null +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java @@ -0,0 +1,27 @@ +package com.spacECE.spaceceedu.LibForSmall; + +import android.os.Bundle; + + +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; + +import com.spacECE.spaceceedu.R; + +import java.util.ArrayList; + +public class Library_Main extends AppCompatActivity { + public static ArrayList list = new ArrayList<>(); + + Fragment fragment=new Fragment_LibForSmall_Books(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_library_main); + getSupportFragmentManager().beginTransaction().replace(R.id.book_framelayout, fragment).commit(); + } +} + + + diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_main.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_main.java deleted file mode 100644 index b9ecea74..00000000 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_main.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.spacECE.spaceceedu.LibForSmall; - -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.util.Log; -import android.view.MenuItem; -import android.view.View; -import android.widget.Button; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.recyclerview.widget.RecyclerView; - -import com.google.android.material.bottomappbar.BottomAppBar; -import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.spacECE.spaceceedu.R; -import com.spacECE.spaceceedu.Utils.UsefulFunctions; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; - -public class Library_main extends AppCompatActivity { - - Button books; - - RecyclerView recyclerView; - public FloatingActionButton floatingActionButton; - - ArrayList book_name,book_price,book_category; - BottomAppBar bottomAppBar; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_library_main); - - ArrayList Books = new ArrayList<>(); - - boolean[] COMPLETED = {false}; - JSONObject[] apiCall = {null}; - - floatingActionButton=findViewById(R.id.floatingActionBtnBottom); - floatingActionButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent=new Intent(Library_main.this, AddBook.class); - startActivity(intent); - } - }); - - bottomAppBar=findViewById(R.id.bottomAppBar); - bottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - - if(item.getItemId()==R.id.menuChat){ - Intent i=new Intent(Library_main.this, ChatUS.class); - startActivity(i); - } - if(item.getItemId()==R.id.menuBook){ - Intent i=new Intent(Library_main.this, My_books.class); - startActivity(i); - } - if(item.getItemId()==R.id.menuMaps){ - Intent i=new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse("geo:47.4925,19.0513")); - Intent chooser=Intent.createChooser(i,"Lauch Maps"); - startActivity(chooser); - - } - return false; - } - }); - - Thread thread = new Thread(new Runnable() { - - @Override - public void run() { - - try { - apiCall[0] = UsefulFunctions.UsingGetAPI("http://educationfoundation.space/ConsultUs/api_user_appoint?user=raju%20rastogi"); - try { - Log.i("Object Obtained: ", apiCall[0].get("data").toString()); - } catch (JSONException e) { - Log.i("API Response:", "Error"); - e.printStackTrace(); - } - - JSONArray jsonArray = null; - try { - jsonArray = apiCall[0].getJSONArray("data"); - Log.i("API : ", apiCall[0].toString()); - } catch (JSONException e) { - e.printStackTrace(); - } - - - } catch (RuntimeException runtimeException) { - Log.i("RUNTIME EXCEPTION:::", "Server did not respons"); - } - } - }); - - thread.start(); - - - } -} - - - diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/My_books.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/My_books.java deleted file mode 100644 index 637f093f..00000000 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/My_books.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.spacECE.spaceceedu.LibForSmall; - -import android.os.Bundle; -import android.util.Log; -import androidx.appcompat.app.AppCompatActivity; -import com.spacECE.spaceceedu.R; -import com.spacECE.spaceceedu.Utils.UsefulFunctions; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; -import java.util.Date; - -public class My_books extends AppCompatActivity { - - public static ArrayList books = new ArrayList(); - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - boolean[] COMPLETED = {false}; - JSONObject[] apiCall = {null}; - - setContentView(R.layout.activity_my_books); - - Thread thread = new Thread(() -> { - - try { - apiCall[0] = UsefulFunctions.UsingGetAPI("http://educationfoundation.space/ConsultUs/api_user_appoint?user=raju%20rastogi"); - try { - Log.i("Object Obtained: ", apiCall[0].get("data").toString()); - } catch (JSONException e) { - Log.i("API Response:", "Error"); - e.printStackTrace(); - } - - JSONArray jsonArray = null; - try { - jsonArray = apiCall[0].getJSONArray("data"); - Log.i("API : ", apiCall[0].toString()); - } catch (JSONException e) { - e.printStackTrace(); - } - - - } catch (RuntimeException runtimeException) { - Log.i("RUNTIME EXCEPTION:::", "Server did not respons"); - } - }); - - books.add(new Book("The number system", new Date(), 30)); - Date abc = new Date(); - Log.i("Object", abc.toString()); - - } -} diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java new file mode 100644 index 00000000..c6e14a84 --- /dev/null +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java @@ -0,0 +1,4 @@ +package com.spacECE.spaceceedu.LibForSmall; + +public class libraryDetailed { +} diff --git a/app/src/main/res/drawable/all_books.xml b/app/src/main/res/drawable/all_books.xml new file mode 100644 index 00000000..14929532 --- /dev/null +++ b/app/src/main/res/drawable/all_books.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_chat_us.xml b/app/src/main/res/layout/activity_chat_us.xml index cc3fd069..ab124217 100644 --- a/app/src/main/res/layout/activity_chat_us.xml +++ b/app/src/main/res/layout/activity_chat_us.xml @@ -4,6 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".LibForSmall.ChatUS"> + tools:context=".LibForSmall.Chat_Us"> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_library_main.xml b/app/src/main/res/layout/activity_library_main.xml index 997e864c..d71238a4 100644 --- a/app/src/main/res/layout/activity_library_main.xml +++ b/app/src/main/res/layout/activity_library_main.xml @@ -8,7 +8,7 @@ tools:context=".MainActivity"> - + app:layout_constraintTop_toBottomOf="@+id/reccomendations" /> diff --git a/app/src/main/res/layout/fragment_library_itemlist.xml b/app/src/main/res/layout/fragment_library_itemlist.xml new file mode 100644 index 00000000..06d4b072 --- /dev/null +++ b/app/src/main/res/layout/fragment_library_itemlist.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/library_list_listitem.xml b/app/src/main/res/layout/library_list_listitem.xml new file mode 100644 index 00000000..a7ab1854 --- /dev/null +++ b/app/src/main/res/layout/library_list_listitem.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From ae25cc0003d94af09acc1af777fa72dbf2fc9174 Mon Sep 17 00:00:00 2001 From: lord Date: Sun, 9 Jan 2022 19:30:16 +0530 Subject: [PATCH 3/5] github --- .github/workflows/android.yml | 116 ++++++++++------------------------ 1 file changed, 35 insertions(+), 81 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index f0eee4df..ae33e23c 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -12,22 +12,25 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: set up JDK 11 - uses: actions/setup-java@v2 - with: - java-version: '11' - distribution: 'adopt' - cache: gradle + - uses: actions/checkout@v2 + - name: set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + cache: gradle + + - name: Java version print + run: echo 'java-version' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew build --stacktrace --warning-mode=all - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: Build with Gradle - run: ./gradlew build - apk: name: Generate APK - needs: test + needs: build runs-on: ubuntu-latest steps: - name: Checkout @@ -42,72 +45,23 @@ jobs: uses: actions/upload-artifact@v1 with: name: apk - path: app/build/outputs/apk/debug/app-debug.apk - release: - name: Release APK - needs: apk - if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest - steps: - - name: Download APK from build - uses: actions/download-artifact@v1 - with: - name: apk - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} - - name: Upload Release APK - id: upload_release_asset - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.TOKEN }} + path: app/build/outputs/apk/debug/app-debug.apk + + - name: Send mail + if: always() + uses: dawidd6/action-send-mail@v2 with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: apk/app-debug.apk - asset_name: MensaApp.apk - asset_content_type: application/zip - - - name: Send mail - uses: dawidd6/action-send-mail@v3 - with: - # Required mail server address: - server_address: smtp.gmail.com - # Required mail server port: - server_port: 465 - # Optional (recommended): mail server username: - username: ${{secrets.MAIL_USERNAME}} - # Optional (recommended) mail server password: - password: ${{secrets.MAIL_PASSWORD}} - # Required mail subject: - subject: Github Actions job result - # Required recipients' addresses: - to: spacece_web_dev@spacece.co, spacece-web-test@spacece.co - # Required sender full name (address can be skipped): - from: GitHub Android Builder # - # Optional whether this connection use TLS (default is true if server_port is 465) - secure: true - # Optional plain body: - body: Build job of ${{github.repository}} completed successfully! - # Optional HTML body read from file: - html_body: file://README.html - # Optional carbon copy recipients: - #cc: kyloren@example.com,leia@example.com - # Optional blind carbon copy recipients: - #bcc: r2d2@example.com,hansolo@example.com - # Optional recipient of the email response: - reply_to: noreplly@spacece.co - # Optional Message ID this message is replying to: - #in_reply_to: - # Optional unsigned/invalid certificates allowance: - ignore_cert: true - # Optional converting Markdown to HTML (set content_type to text/html too): - convert_markdown: true - # Optional attachments: - #attachments: attachments.zip,git.diff,./dist/static/*.js - # Optional priority: 'high', 'normal' (default) or 'low' - priority: low + # mail server settings + server_address: smtp.gmail.com + server_port: 465 + # user credentials + username: ${{ secrets.EMAIL_USERNAME }} + password: ${{ secrets.EMAIL_PASSWORD }} + # email subject + subject: ${{ github.job }} job of ${{ github.repository }} has ${{ job.status }} + # email body as text + body: ${{ github.job }} job in worflow ${{ github.workflow }} of ${{ github.repository }} has ${{ job.status }} + # comma-separated string, send email to + to: spacece_web_dev@spacece.co, spacece-web-test@spacece.co + # from email name + from: SpacECE Technology Team \ No newline at end of file From cf6cfca21a90251fbda8c563a53acad454a575d7 Mon Sep 17 00:00:00 2001 From: lord Date: Sun, 9 Jan 2022 19:58:17 +0530 Subject: [PATCH 4/5] github --- app/build.gradle | 26 +++++++++++----------- app/src/main/res/layout/activity_topic.xml | 3 +-- build.gradle | 2 +- gradle.properties | 3 ++- settings.gradle | 2 +- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8fcd03fe..20e7d2ec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ plugins { } android { - compileSdk 30 + compileSdk 31 defaultConfig { applicationId "com.spacECE.spaceceedu" @@ -33,26 +33,26 @@ android { dependencies { - implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.2' implementation 'androidx.gridlayout:gridlayout:1.0.0' - implementation 'androidx.annotation:annotation:1.2.0' - implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' + implementation 'androidx.annotation:annotation:1.3.0' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.0' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.firebase:firebase-messaging:22.0.0' + implementation 'com.google.firebase:firebase-messaging:23.0.0' implementation 'androidx.navigation:navigation-fragment:2.3.5' implementation 'androidx.navigation:navigation-ui:2.3.5' - testImplementation 'junit:junit:4.+' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - implementation 'com.google.android.gms:play-services-auth:19.2.0' + implementation 'com.google.android.gms:play-services-auth:20.0.1' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'com.google.android.material:material:1.2.1' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'com.google.android.material:material:1.4.0' implementation 'com.squareup.picasso:picasso:2.71828' - implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:10.0.5' + implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:11.0.1' implementation 'com.synnapps:carouselview:0.1.5' implementation 'androidx.drawerlayout:drawerlayout:1.1.1' @@ -65,7 +65,7 @@ dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.3' - implementation 'io.agora.rtc:full-sdk:3.2.1' + implementation 'io.agora.rtc:full-sdk:3.6.0.1' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' diff --git a/app/src/main/res/layout/activity_topic.xml b/app/src/main/res/layout/activity_topic.xml index dfee703b..40833e1a 100644 --- a/app/src/main/res/layout/activity_topic.xml +++ b/app/src/main/res/layout/activity_topic.xml @@ -22,8 +22,7 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" - app:autoPlay="false" - app:showFullScreenButton="true" /> + app:autoPlay="false" /> Date: Tue, 11 Jan 2022 14:27:29 +0530 Subject: [PATCH 5/5] avinash --- .idea/misc.xml | 5 +- app/build.gradle | 3 +- app/src/main/AndroidManifest.xml | 2 + .../com/spacECE/spaceceedu/FragmentMain.java | 33 ++ .../spacECE/spaceceedu/LibForSmall/Book.java | 59 +++- .../LibForSmall/LibForSmall_SplashScreen.java | 8 +- .../spaceceedu/LibForSmall/Library_Main.java | 37 +++ .../LibForSmall/libraryDetailed.java | 42 ++- ...ty_consultant_appointment_confirmation.xml | 4 +- .../res/layout/activity_library_detailed.xml | 285 ++++++++++++++++++ .../main/res/layout/activity_library_main.xml | 70 +++-- app/src/main/res/layout/fragment_main.xml | 70 ++++- app/src/main/res/menu/app_bar_menu.xml | 21 +- .../main/res/xml/demo_040_carousel_scene.xml | 137 +++++++++ build.gradle | 2 +- settings.gradle | 6 +- 16 files changed, 734 insertions(+), 50 deletions(-) create mode 100644 app/src/main/res/layout/activity_library_detailed.xml create mode 100644 app/src/main/res/xml/demo_040_carousel_scene.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 802b28a6..8a643afb 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -123,6 +123,7 @@ + @@ -144,7 +145,7 @@ - + @@ -160,6 +161,8 @@ + + diff --git a/app/build.gradle b/app/build.gradle index 20e7d2ec..e97ee7b9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'com.google.firebase:firebase-messaging:23.0.0' implementation 'androidx.navigation:navigation-fragment:2.3.5' implementation 'androidx.navigation:navigation-ui:2.3.5' + implementation 'androidx.compose.animation:animation-core:1.1.0-rc01' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' @@ -53,8 +54,8 @@ dependencies { implementation 'com.google.android.material:material:1.4.0' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:11.0.1' - implementation 'com.synnapps:carouselview:0.1.5' implementation 'androidx.drawerlayout:drawerlayout:1.1.1' + implementation 'com.synnapps:carouselview:0.1.5' // implementation 'com.squareup.retrofit2:retrofit:2.9.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78891716..e1837a30 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -73,6 +73,8 @@ android:name=".ActivityDetailsActivity" android:exported="true" /> + + diff --git a/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java b/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java index 893e5116..6a749937 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java +++ b/app/src/main/java/com/spacECE/spaceceedu/FragmentMain.java @@ -11,6 +11,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.cardview.widget.CardView; +import androidx.constraintlayout.helper.widget.Carousel; import androidx.fragment.app.Fragment; import com.spacECE.spaceceedu.Authentication.Account; @@ -44,8 +45,13 @@ public class FragmentMain extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v= inflater.inflate(R.layout.fragment_main,container,false); + + //old + CarouselView carouselView = v.findViewById(R.id.MainFragement_NewsCarousel); + carouselView.setPageCount(mImages.length); + carouselView.setImageListener(new ImageListener() { @Override public void setImageForPosition(int position, ImageView imageView) { @@ -53,6 +59,33 @@ public void setImageForPosition(int position, ImageView imageView) { } }); + //new + + Carousel carousel = v.findViewById(R.id.carousel); + + carousel.setAdapter(new Carousel.Adapter() { + + @Override + public int count() { + return mImages.length; + } + + @Override + public void populate(View view, int index) { + ((ImageView)view).setImageResource(mImages[index]); + } + + @Override + public void onNewItem(int index) { + carousel.transitionToIndex(index, 2000); + } + + }); + + + + + //Navigating to VideoLibrary/Consultation activity via OnClick cv_consultation=v.findViewById(R.id.CardView_Consultation); cv_videoLibrary=v.findViewById(R.id.CardView_VideoLibrary); diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java index 60914850..51186cef 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Book.java @@ -8,13 +8,63 @@ public class Book { String product_price; String product_keywords; String product_image; + String product_brand; + String product_desc; + String exchange_price; + String rent_price; + String deposit; - public Book(String product_id, String product_title, String product_price, String product_keywords, String product_image) { + public Book(String product_id, String product_title, String product_price, String product_keywords, String product_image, String product_brand, String product_desc, String exchange_price, String rent_price, String deposit) { this.product_id = product_id; this.product_title = product_title; this.product_price = product_price; this.product_keywords = product_keywords; this.product_image = product_image; + this.product_brand = product_brand; + this.product_desc = product_desc; + this.exchange_price = exchange_price; + this.rent_price = rent_price; + this.deposit = deposit; + } + + public String getProduct_brand() { + return product_brand; + } + + public void setProduct_brand(String product_brand) { + this.product_brand = product_brand; + } + + public String getProduct_desc() { + return product_desc; + } + + public void setProduct_desc(String product_desc) { + this.product_desc = product_desc; + } + + public String getExchange_price() { + return exchange_price; + } + + public void setExchange_price(String exchange_price) { + this.exchange_price = exchange_price; + } + + public String getRent_price() { + return rent_price; + } + + public void setRent_price(String rent_price) { + this.rent_price = rent_price; + } + + public String getDeposit() { + return deposit; + } + + public void setDeposit(String deposit) { + this.deposit = deposit; } public String getProduct_id() { @@ -64,6 +114,11 @@ public String toString() { " product_title= " + product_title + "\nproduct_keywords= " + product_keywords + "\nproduct_price= " + product_price + - "\nproduct_image= " + product_image; + "\nproduct_image= " + product_image + + "\nproduct_brand= "+ product_brand+ + "\nproduct_desc= "+ product_desc + + "\nexchange_price= "+ exchange_price + + "\nrent_price= "+ rent_price+ + "\ndeposit= "+deposit; } } \ No newline at end of file diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java index 0b28978a..e35f8110 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/LibForSmall_SplashScreen.java @@ -74,9 +74,11 @@ public void onClick(DialogInterface dialog, int which) { Log.d("TAG", "run: "+jsonArray.length()); for (int i = 0; i < Objects.requireNonNull(jsonArray).length(); i++) { JSONObject response_element = new JSONObject(String.valueOf(jsonArray.getJSONObject(i))); - Book temp = new Book(response_element.getString("product_id"), response_element.getString("product_title"), - response_element.getString("product_price"), response_element.getString("product_keywords"), - response_element.getString("product_image")); + Book temp = new Book(response_element.getString("product_id"),response_element.getString("product_title"), + response_element.getString("product_price"),response_element.getString("product_keywords"), + response_element.getString("product_image"),response_element.getString("product_desc"), + response_element.getString("product_brand"), response_element.getString("rent_price"), + response_element.getString("exchange_price"),response_element.getString("deposit")); Library_Main.list.add(temp); } } catch (JSONException e) { diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java index 10a2afd1..64e1a069 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/Library_Main.java @@ -1,11 +1,18 @@ package com.spacECE.spaceceedu.LibForSmall; +import android.content.Intent; import android.os.Bundle; +import android.view.MenuItem; +import android.view.View; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.spacECE.spaceceedu.MainActivity; import com.spacECE.spaceceedu.R; import java.util.ArrayList; @@ -14,12 +21,42 @@ public class Library_Main extends AppCompatActivity { public static ArrayList list = new ArrayList<>(); Fragment fragment=new Fragment_LibForSmall_Books(); + public FloatingActionButton floatingActionButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_library_main); getSupportFragmentManager().beginTransaction().replace(R.id.book_framelayout, fragment).commit(); + + floatingActionButton=findViewById(R.id.floatingActionBtnBottom); + floatingActionButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent i=new Intent(Library_Main.this,AddBook.class); + startActivity(i); + } + }); + + BottomNavigationView bottomNavigationView=findViewById(R.id.bottomAppBar); + bottomNavigationView.setSelectedItemId(R.id.menuBook); + + bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem item) { + switch (item.getItemId()){ + case R.id.menuChat: + Intent i=new Intent(Library_Main.this,Chat_Us.class); + startActivity(i); + + case R.id.menuHome: + Intent intent=new Intent(Library_Main.this, MainActivity.class); + startActivity(intent); + } + return false; + } + }); + } } diff --git a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java index c6e14a84..193882e5 100644 --- a/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java +++ b/app/src/main/java/com/spacECE/spaceceedu/LibForSmall/libraryDetailed.java @@ -1,4 +1,44 @@ package com.spacECE.spaceceedu.LibForSmall; -public class libraryDetailed { +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.view.Window; +import android.widget.Button; +import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; +import com.spacECE.spaceceedu.R; + +public class libraryDetailed extends AppCompatActivity { + + TextView book,author,edition,desc,price,condition,owner; + Button callbtn,orderbtn; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_library_detailed); + + Window window = this.getWindow(); + window.setStatusBarColor(Color.rgb(200,100,50)); + + book=findViewById(R.id.book_name); + author=findViewById(R.id.author_name); + edition=findViewById(R.id.edition_name); + desc=findViewById(R.id.desc_name); + price=findViewById(R.id.price_name); + condition=findViewById(R.id.condition_name); + owner=findViewById(R.id.owner_name); + callbtn=findViewById(R.id.call_btn); + orderbtn=findViewById(R.id.order_btn); + + Intent intent=getIntent(); + int pos=intent.getIntExtra("pos",1); + Book books=Library_Main.list.get(pos); + + book.setText(books.getProduct_title()); + desc.setText(books.getProduct_desc()); + price.setText(books.getProduct_price()); + + } } diff --git a/app/src/main/res/layout/activity_consultant_appointment_confirmation.xml b/app/src/main/res/layout/activity_consultant_appointment_confirmation.xml index cfcb2c65..77d6b428 100644 --- a/app/src/main/res/layout/activity_consultant_appointment_confirmation.xml +++ b/app/src/main/res/layout/activity_consultant_appointment_confirmation.xml @@ -18,7 +18,7 @@ app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/news2" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +