new store delivery time service

This commit is contained in:
2019-08-04 18:59:42 +03:00
parent 02460cb7c0
commit 3a525e68e0
3 changed files with 232 additions and 130 deletions

View File

@@ -29,7 +29,7 @@ public class ApiEndPoints {
public static final String API_GET_STORE_INFO = PREFIX + "getStoreInfo" + SUFFIX; public static final String API_GET_STORE_INFO = PREFIX + "getStoreInfo" + SUFFIX;
public static final String API_CHECK_CAMPAIGN_PIZZAPASS = PREFIX + "detectPizzaPassCampaign" + SUFFIX + "&token="; public static final String API_CHECK_CAMPAIGN_PIZZAPASS = PREFIX + "detectPizzaPassCampaign" + SUFFIX + "&token=";
public static final String API_CHECK_CAMPAIGN_KEBAPPASS = PREFIX + "detectKebapPassCampaign" + SUFFIX + "&token="; public static final String API_CHECK_CAMPAIGN_KEBAPPASS = PREFIX + "detectKebapPassCampaign" + SUFFIX + "&token=";
public static final String API_CHECK_DELIVERY_TIME = PREFIX + "checkDeliveryTimeService" + SUFFIX; public static final String API_CHECK_DELIVERY_TIME = PREFIX + "checkDeliveryTimeServiceNew" + SUFFIX;
public static final String API_GET_DELIVERY_TIME_OF_STORE = PREFIX + "getDeliveryTimeForStore" + SUFFIX; public static final String API_GET_DELIVERY_TIME_OF_STORE = PREFIX + "getDeliveryTimeForStore" + SUFFIX;

View File

@@ -21,8 +21,11 @@ import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog; import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
import com.wdullaer.materialdatetimepicker.time.Timepoint; import com.wdullaer.materialdatetimepicker.time.Timepoint;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import butterknife.BindString; import butterknife.BindString;
@@ -389,13 +392,9 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
private void showDatePickerDialog() { private void showDatePickerDialog() {
Calendar nowDate = Calendar.getInstance(); Calendar nowDate = Calendar.getInstance();
Calendar maxdate = Calendar.getInstance(); final int nowYear = nowDate.get(Calendar.YEAR);
maxdate.add(Calendar.DAY_OF_YEAR, 7); final int nowMonth = nowDate.get(Calendar.MONTH);
//maxdate.add(Calendar.MONTH, 1); final int nowDay = nowDate.get(Calendar.DAY_OF_MONTH);
int nowYear = nowDate.get(Calendar.YEAR);
int nowMonth = nowDate.get(Calendar.MONTH);
int nowDay = nowDate.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance( DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(
new DatePickerDialog.OnDateSetListener() { new DatePickerDialog.OnDateSetListener() {
@@ -426,9 +425,10 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
nowDay nowDay
); );
datePickerDialog.setSelectableDays(generateEnabledDays());
datePickerDialog.vibrate(false); datePickerDialog.vibrate(false);
datePickerDialog.setMinDate(nowDate); datePickerDialog.setMinDate(nowDate);
datePickerDialog.setMaxDate(maxdate);
//datePickerDialog.autoDismiss(true); //datePickerDialog.autoDismiss(true);
datePickerDialog.show(BaseActivity.currentActivity.getFragmentManager(), choosetext); datePickerDialog.show(BaseActivity.currentActivity.getFragmentManager(), choosetext);
} }
@@ -436,36 +436,57 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
private void showTimePickerDialog(){ private void showTimePickerDialog(){
Calendar nowDate = Calendar.getInstance(); Calendar nowDate = Calendar.getInstance();
int orderYear = dateOfOrder.get(Calendar.YEAR);
int orderMonth = dateOfOrder.get(Calendar.MONTH);
int orderDay = dateOfOrder.get(Calendar.DAY_OF_MONTH);
int nowYear = nowDate.get(Calendar.YEAR);
int nowMonth = nowDate.get(Calendar.MONTH);
int nowDay = nowDate.get(Calendar.DAY_OF_MONTH);
int nowHour = nowDate.get(Calendar.HOUR_OF_DAY); int nowHour = nowDate.get(Calendar.HOUR_OF_DAY);
int nowMinute = nowDate.get(Calendar.MINUTE); int nowMinute = nowDate.get(Calendar.MINUTE);
int nowSecond = nowDate.get(Calendar.SECOND); int nowSecond = nowDate.get(Calendar.SECOND);
int selectedDayIndex = dateOfOrder.get(Calendar.DAY_OF_WEEK); int selectedDayIndex = dateOfOrder.get(Calendar.DAY_OF_WEEK);
StoreWorkDayModel storeWorkDayModelOfSelectedDay = new StoreWorkDayModel(); ArrayList<String> workingParts = new ArrayList<>();
switch (selectedDayIndex){ switch (selectedDayIndex){
case 1: case 1:
storeWorkDayModelOfSelectedDay = storeShiftModel.getSundayShift(); workingParts = storeShiftModel.getSundayShift();
break; break;
case 2: case 2:
storeWorkDayModelOfSelectedDay = storeShiftModel.getMondayShift(); workingParts = storeShiftModel.getMondayShift();
break; break;
case 3: case 3:
storeWorkDayModelOfSelectedDay = storeShiftModel.getTuesdayShift(); workingParts = storeShiftModel.getTuesdayShift();
break; break;
case 4: case 4:
storeWorkDayModelOfSelectedDay = storeShiftModel.getWednesdayShift(); workingParts = storeShiftModel.getWednesdayShift();
break; break;
case 5: case 5:
storeWorkDayModelOfSelectedDay = storeShiftModel.getThursdayShift(); workingParts = storeShiftModel.getThursdayShift();
break; break;
case 6: case 6:
storeWorkDayModelOfSelectedDay = storeShiftModel.getFridayShift(); workingParts = storeShiftModel.getFridayShift();
break; break;
case 7: case 7:
storeWorkDayModelOfSelectedDay = storeShiftModel.getSaturdayShift(); workingParts = storeShiftModel.getSaturdayShift();
break; break;
} }
if(orderYear == nowYear && orderMonth == nowMonth && orderDay == nowDay){
ArrayList<String> realPartsOfToday = new ArrayList<>();
for(String part : workingParts){
if(isPartAvailable(part)){
realPartsOfToday.add(part);
}
}
if(!realPartsOfToday.isEmpty()){
workingParts.clear();
workingParts.addAll(realPartsOfToday);
}
}
TimePickerDialog timePickerDialog = TimePickerDialog timePickerDialog =
TimePickerDialog.newInstance( TimePickerDialog.newInstance(
@@ -494,17 +515,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
true true
); );
timePickerDialog.setSelectableTimes(generateEnabledTimePoints(workingParts));
int shiftStartHour = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftStartTime().substring(0,2));
int shiftStartMinute = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftStartTime().substring(3, 5));
int shiftEndHour = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftEndTime().substring(0,2));
int shiftEndMinute = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftEndTime().substring(3, 5));
//timePickerDialog.setMinTime(new Timepoint(shiftStartHour, shiftStartMinute));
//timePickerDialog.setMaxTime(new Timepoint(shiftEndHour, shiftEndMinute));
timePickerDialog.setSelectableTimes(generateEnabledTimePoints(storeWorkDayModelOfSelectedDay));
timePickerDialog.vibrate(false); timePickerDialog.vibrate(false);
//timePickerDialog.setMinTime(nowHour, nowMinute, nowSecond); //timePickerDialog.setMinTime(nowHour, nowMinute, nowSecond);
timePickerDialog.show(BaseActivity.currentActivity.getFragmentManager(), choosetext); timePickerDialog.show(BaseActivity.currentActivity.getFragmentManager(), choosetext);
@@ -937,61 +948,179 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
} }
*/ */
private Timepoint[] generateEnabledTimePoints(StoreWorkDayModel storeWorkDayModelOfSelectedDay){ private Calendar[] generateEnabledDays(){
int shiftStartHour = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftStartTime().substring(0,2)); ArrayList<Calendar> enabledDayList = new ArrayList<>();
int shiftStartMinute = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftStartTime().substring(3, 5));
int shiftEndHour = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftEndTime().substring(0,2));
int shiftEndMinute = Integer.valueOf(storeWorkDayModelOfSelectedDay.getShiftEndTime().substring(3, 5));
int breakStartHour = Integer.valueOf(storeWorkDayModelOfSelectedDay.getBreakStartTime().substring(0,2)); for(int i = 1; i < 8; i++){
int breakStartMinute = Integer.valueOf(storeWorkDayModelOfSelectedDay.getBreakStartTime().substring(3, 5));
int breakEndHour = Integer.valueOf(storeWorkDayModelOfSelectedDay.getBreakEndTime().substring(0,2));
int breakEndMinute = Integer.valueOf(storeWorkDayModelOfSelectedDay.getBreakEndTime().substring(3, 5));
int hour = shiftStartHour; Calendar calendar = Calendar.getInstance();
int minute = shiftStartMinute; ArrayList<String> dayParts = new ArrayList<>();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
switch ((dayOfWeek + i) % 7){
case 0:
dayParts = storeShiftModel.getSaturdayShift();
break;
case 1:
dayParts = storeShiftModel.getSundayShift();
break;
case 2:
dayParts = storeShiftModel.getMondayShift();
break;
case 3:
dayParts = storeShiftModel.getTuesdayShift();
break;
case 4:
dayParts = storeShiftModel.getWednesdayShift();
break;
case 5:
dayParts = storeShiftModel.getThursdayShift();
break;
case 6:
dayParts = storeShiftModel.getFridayShift();
break;
}
if(!dayParts.isEmpty()){
calendar.add(Calendar.DAY_OF_YEAR, i);
enabledDayList.add(calendar);
}
}
Calendar calendar = Calendar.getInstance();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
ArrayList<String> todayParts = new ArrayList<>();
switch (dayOfWeek){
case 1:
todayParts = storeShiftModel.getSundayShift();
break;
case 2:
todayParts = storeShiftModel.getMondayShift();
break;
case 3:
todayParts = storeShiftModel.getTuesdayShift();
break;
case 4:
todayParts = storeShiftModel.getWednesdayShift();
break;
case 5:
todayParts = storeShiftModel.getThursdayShift();
break;
case 6:
todayParts = storeShiftModel.getFridayShift();
break;
case 7:
todayParts = storeShiftModel.getSaturdayShift();
break;
}
if(isDayAvailable(todayParts)){
enabledDayList.add(Calendar.getInstance());
}
return enabledDayList.toArray(new Calendar[enabledDayList.size()]);
}
private Timepoint[] generateEnabledTimePoints(ArrayList<String> workingParts){
ArrayList<Timepoint> enabledTimePointList = new ArrayList<>(); ArrayList<Timepoint> enabledTimePointList = new ArrayList<>();
// öğleden tatilinden önceki kısım try {
while (hour <= breakStartHour){ for(String part : workingParts){
enabledTimePointList.add(new Timepoint(hour, minute)); part = part.replace(" ", "");
minute++; String[] array = part.split("-");
if(minute == 60){ String partStart = array[0];
minute = 0; String partEnd = array[1];
hour += 1;
}
if(hour == breakStartHour && minute == breakStartMinute){ int partStartHour = Integer.valueOf(partStart.substring(0,2));
break; int partStartMinute = Integer.valueOf(partStart.substring(3, 5));
int partEndHour = Integer.valueOf(partEnd.substring(0,2));
int partEndMinute = Integer.valueOf(partEnd.substring(3, 5));
int hour = partStartHour;
int minute = partStartMinute;
while (hour <= partEndHour){
enabledTimePointList.add(new Timepoint(hour, minute));
minute++;
if(minute == 60){
minute = 0;
hour += 1;
}
if(hour == partEndHour && minute > partEndMinute){
break;
}
}
} }
}catch (Exception e){
return enabledTimePointList.toArray(new Timepoint[enabledTimePointList.size()]);
} }
// öğle tatilinden sonraki kısım
if(breakEndMinute == 59){
breakEndMinute = 0;
breakEndHour += 1;
}
hour = breakEndHour;
minute = breakEndMinute;
while (hour <= shiftEndHour){
enabledTimePointList.add(new Timepoint(hour, minute));
minute++;
if(minute == 60){
minute = 0;
hour += 1;
}
if(hour == shiftEndHour && minute == shiftEndMinute){
break;
}
}
return enabledTimePointList.toArray(new Timepoint[enabledTimePointList.size()]); return enabledTimePointList.toArray(new Timepoint[enabledTimePointList.size()]);
} }
private boolean isDayAvailable(ArrayList<String> parts){
if(parts.size() < 2){
return false;
}
for(String part : parts){
if(isPartAvailable(part)){
return true;
}
}
return false;
}
private boolean isPartAvailable(String part){
try {
Date nowDate = Calendar.getInstance().getTime();
DateFormat dateFormat = new SimpleDateFormat("HH:mm");
String nowTimeString = dateFormat.format(nowDate);
part = part.replace(" ", "");
String[] array = part.split("-");
String partStart = array[0];
String partEnd = array[1];
int partStartHour = Integer.valueOf(partStart.substring(0,2));
int partStartMinute = Integer.valueOf(partStart.substring(3, 5));
int partEndHour = Integer.valueOf(partEnd.substring(0,2));
int partEndMinute = Integer.valueOf(partEnd.substring(3, 5));
Calendar partStartCalendar = Calendar.getInstance();
partStartCalendar.set(Calendar.HOUR_OF_DAY, partStartHour);
partStartCalendar.set(Calendar.MINUTE, partStartMinute);
partStartCalendar.set(Calendar.SECOND, 0);
Date partStartDate = partStartCalendar.getTime();
Calendar partEndCalendar = Calendar.getInstance();
partEndCalendar.set(Calendar.HOUR_OF_DAY, partEndHour);
partEndCalendar.set(Calendar.MINUTE, partEndMinute);
partEndCalendar.set(Calendar.SECOND, 0);
Date partEndDate = partEndCalendar.getTime();
if(partStartDate.after(nowDate) && partEndDate.after(nowDate)){
return true;
}
else {
return false;
}
/*
String[] array2 = nowTimeString.split(":");
String nowHourString = array2[0];
String nowMinuteString = array2[1];
int nowHour = Integer.valueOf(nowHourString);
int nowMinute = Integer.valueOf(nowMinuteString);
return nowHour >= partStartHour && nowHour <= partEndHour &&
nowMinute >= partStartMinute && nowMinute <= partEndMinute;
*/
}catch (Exception e){
return false;
}
}
} }

View File

@@ -2,83 +2,56 @@ package ch.pizzamaxx.android.model;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
public class StoreShiftModel { public class StoreShiftModel {
@SerializedName("1") @SerializedName("monday")
private StoreWorkDayModel mondayShift; private ArrayList<String> mondayShift;
@SerializedName("2") @SerializedName("tuesday")
private StoreWorkDayModel tuesdayShift; private ArrayList<String> tuesdayShift;
@SerializedName("3") @SerializedName("wednesday")
private StoreWorkDayModel wednesdayShift; private ArrayList<String> wednesdayShift;
@SerializedName("4") @SerializedName("thursday")
private StoreWorkDayModel thursdayShift; private ArrayList<String> thursdayShift;
@SerializedName("5") @SerializedName("friday")
private StoreWorkDayModel fridayShift; private ArrayList<String> fridayShift;
@SerializedName("6") @SerializedName("saturday")
private StoreWorkDayModel saturdayShift; private ArrayList<String> saturdayShift;
@SerializedName("7") @SerializedName("sunday")
private StoreWorkDayModel sundayShift; private ArrayList<String> sundayShift;
public StoreWorkDayModel getMondayShift() { public ArrayList<String> getMondayShift() {
return mondayShift; return mondayShift != null ? mondayShift : new ArrayList<String>();
} }
public void setMondayShift(StoreWorkDayModel mondayShift) { public ArrayList<String> getTuesdayShift() {
this.mondayShift = mondayShift; return tuesdayShift != null ? tuesdayShift : new ArrayList<String>();
} }
public StoreWorkDayModel getTuesdayShift() { public ArrayList<String> getWednesdayShift() {
return tuesdayShift; return wednesdayShift != null ? wednesdayShift : new ArrayList<String>();
} }
public void setTuesdayShift(StoreWorkDayModel tuesdayShift) { public ArrayList<String> getThursdayShift() {
this.tuesdayShift = tuesdayShift; return thursdayShift != null ? thursdayShift : new ArrayList<String>();
} }
public StoreWorkDayModel getWednesdayShift() { public ArrayList<String> getFridayShift() {
return wednesdayShift; return fridayShift != null ? fridayShift : new ArrayList<String>();
} }
public void setWednesdayShift(StoreWorkDayModel wednesdayShift) { public ArrayList<String> getSaturdayShift() {
this.wednesdayShift = wednesdayShift; return saturdayShift != null ? saturdayShift : new ArrayList<String>();
} }
public StoreWorkDayModel getThursdayShift() { public ArrayList<String> getSundayShift() {
return thursdayShift; return sundayShift != null ? sundayShift : new ArrayList<String>();
} }
public void setThursdayShift(StoreWorkDayModel thursdayShift) {
this.thursdayShift = thursdayShift;
}
public StoreWorkDayModel getFridayShift() {
return fridayShift;
}
public void setFridayShift(StoreWorkDayModel fridayShift) {
this.fridayShift = fridayShift;
}
public StoreWorkDayModel getSaturdayShift() {
return saturdayShift;
}
public void setSaturdayShift(StoreWorkDayModel saturdayShift) {
this.saturdayShift = saturdayShift;
}
public StoreWorkDayModel getSundayShift() {
return sundayShift;
}
public void setSundayShift(StoreWorkDayModel sundayShift) {
this.sundayShift = sundayShift;
}
} }