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_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_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;

View File

@@ -21,8 +21,11 @@ import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
import com.wdullaer.materialdatetimepicker.time.Timepoint;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import butterknife.BindString;
@@ -389,13 +392,9 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
private void showDatePickerDialog() {
Calendar nowDate = Calendar.getInstance();
Calendar maxdate = Calendar.getInstance();
maxdate.add(Calendar.DAY_OF_YEAR, 7);
//maxdate.add(Calendar.MONTH, 1);
int nowYear = nowDate.get(Calendar.YEAR);
int nowMonth = nowDate.get(Calendar.MONTH);
int nowDay = nowDate.get(Calendar.DAY_OF_MONTH);
final int nowYear = nowDate.get(Calendar.YEAR);
final int nowMonth = nowDate.get(Calendar.MONTH);
final int nowDay = nowDate.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(
new DatePickerDialog.OnDateSetListener() {
@@ -426,9 +425,10 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
nowDay
);
datePickerDialog.setSelectableDays(generateEnabledDays());
datePickerDialog.vibrate(false);
datePickerDialog.setMinDate(nowDate);
datePickerDialog.setMaxDate(maxdate);
//datePickerDialog.autoDismiss(true);
datePickerDialog.show(BaseActivity.currentActivity.getFragmentManager(), choosetext);
}
@@ -436,36 +436,57 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
private void showTimePickerDialog(){
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 nowMinute = nowDate.get(Calendar.MINUTE);
int nowSecond = nowDate.get(Calendar.SECOND);
int selectedDayIndex = dateOfOrder.get(Calendar.DAY_OF_WEEK);
StoreWorkDayModel storeWorkDayModelOfSelectedDay = new StoreWorkDayModel();
ArrayList<String> workingParts = new ArrayList<>();
switch (selectedDayIndex){
case 1:
storeWorkDayModelOfSelectedDay = storeShiftModel.getSundayShift();
workingParts = storeShiftModel.getSundayShift();
break;
case 2:
storeWorkDayModelOfSelectedDay = storeShiftModel.getMondayShift();
workingParts = storeShiftModel.getMondayShift();
break;
case 3:
storeWorkDayModelOfSelectedDay = storeShiftModel.getTuesdayShift();
workingParts = storeShiftModel.getTuesdayShift();
break;
case 4:
storeWorkDayModelOfSelectedDay = storeShiftModel.getWednesdayShift();
workingParts = storeShiftModel.getWednesdayShift();
break;
case 5:
storeWorkDayModelOfSelectedDay = storeShiftModel.getThursdayShift();
workingParts = storeShiftModel.getThursdayShift();
break;
case 6:
storeWorkDayModelOfSelectedDay = storeShiftModel.getFridayShift();
workingParts = storeShiftModel.getFridayShift();
break;
case 7:
storeWorkDayModelOfSelectedDay = storeShiftModel.getSaturdayShift();
workingParts = storeShiftModel.getSaturdayShift();
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.newInstance(
@@ -494,17 +515,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
true
);
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.setSelectableTimes(generateEnabledTimePoints(workingParts));
timePickerDialog.vibrate(false);
//timePickerDialog.setMinTime(nowHour, nowMinute, nowSecond);
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));
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));
ArrayList<Calendar> enabledDayList = new ArrayList<>();
int breakStartHour = Integer.valueOf(storeWorkDayModelOfSelectedDay.getBreakStartTime().substring(0,2));
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));
for(int i = 1; i < 8; i++){
int hour = shiftStartHour;
int minute = shiftStartMinute;
Calendar calendar = Calendar.getInstance();
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<>();
// öğleden tatilinden önceki kısım
while (hour <= breakStartHour){
enabledTimePointList.add(new Timepoint(hour, minute));
minute++;
if(minute == 60){
minute = 0;
hour += 1;
}
try {
for(String part : workingParts){
part = part.replace(" ", "");
String[] array = part.split("-");
String partStart = array[0];
String partEnd = array[1];
if(hour == breakStartHour && minute == breakStartMinute){
break;
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));
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()]);
}
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 java.util.ArrayList;
public class StoreShiftModel {
@SerializedName("1")
private StoreWorkDayModel mondayShift;
@SerializedName("monday")
private ArrayList<String> mondayShift;
@SerializedName("2")
private StoreWorkDayModel tuesdayShift;
@SerializedName("tuesday")
private ArrayList<String> tuesdayShift;
@SerializedName("3")
private StoreWorkDayModel wednesdayShift;
@SerializedName("wednesday")
private ArrayList<String> wednesdayShift;
@SerializedName("4")
private StoreWorkDayModel thursdayShift;
@SerializedName("thursday")
private ArrayList<String> thursdayShift;
@SerializedName("5")
private StoreWorkDayModel fridayShift;
@SerializedName("friday")
private ArrayList<String> fridayShift;
@SerializedName("6")
private StoreWorkDayModel saturdayShift;
@SerializedName("saturday")
private ArrayList<String> saturdayShift;
@SerializedName("7")
private StoreWorkDayModel sundayShift;
@SerializedName("sunday")
private ArrayList<String> sundayShift;
public StoreWorkDayModel getMondayShift() {
return mondayShift;
public ArrayList<String> getMondayShift() {
return mondayShift != null ? mondayShift : new ArrayList<String>();
}
public void setMondayShift(StoreWorkDayModel mondayShift) {
this.mondayShift = mondayShift;
public ArrayList<String> getTuesdayShift() {
return tuesdayShift != null ? tuesdayShift : new ArrayList<String>();
}
public StoreWorkDayModel getTuesdayShift() {
return tuesdayShift;
public ArrayList<String> getWednesdayShift() {
return wednesdayShift != null ? wednesdayShift : new ArrayList<String>();
}
public void setTuesdayShift(StoreWorkDayModel tuesdayShift) {
this.tuesdayShift = tuesdayShift;
public ArrayList<String> getThursdayShift() {
return thursdayShift != null ? thursdayShift : new ArrayList<String>();
}
public StoreWorkDayModel getWednesdayShift() {
return wednesdayShift;
public ArrayList<String> getFridayShift() {
return fridayShift != null ? fridayShift : new ArrayList<String>();
}
public void setWednesdayShift(StoreWorkDayModel wednesdayShift) {
this.wednesdayShift = wednesdayShift;
public ArrayList<String> getSaturdayShift() {
return saturdayShift != null ? saturdayShift : new ArrayList<String>();
}
public StoreWorkDayModel getThursdayShift() {
return thursdayShift;
public ArrayList<String> getSundayShift() {
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;
}
}