|
|
|
|
@@ -7,7 +7,9 @@ import android.content.DialogInterface;
|
|
|
|
|
import android.databinding.DataBindingUtil;
|
|
|
|
|
import android.support.design.widget.BottomSheetBehavior;
|
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
|
import android.view.View;
|
|
|
|
|
import android.widget.ArrayAdapter;
|
|
|
|
|
import android.widget.Button;
|
|
|
|
|
|
|
|
|
|
import com.annimon.stream.Stream;
|
|
|
|
|
import com.annimon.stream.function.Predicate;
|
|
|
|
|
@@ -18,7 +20,7 @@ import java.util.List;
|
|
|
|
|
|
|
|
|
|
import it.integry.integrywmsnative.R;
|
|
|
|
|
import it.integry.integrywmsnative.core.di.BindableString;
|
|
|
|
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
|
|
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
|
|
|
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|
|
|
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
|
|
|
|
import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
|
|
|
|
|
@@ -31,7 +33,7 @@ public class DialogVenditaFiltroAvanzato {
|
|
|
|
|
private AlertDialog currentAlert;
|
|
|
|
|
private Context currentContext;
|
|
|
|
|
|
|
|
|
|
private RunnableArgs<List<OrdineVenditaInevasoDTO>> currentOnFilterDone;
|
|
|
|
|
private RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
|
|
|
|
|
|
|
|
|
|
private List<OrdineVenditaInevasoDTO> currentOrderList;
|
|
|
|
|
private List<OrdineVenditaInevasoDTO> currentFilteredOrderList;
|
|
|
|
|
@@ -42,16 +44,22 @@ public class DialogVenditaFiltroAvanzato {
|
|
|
|
|
private Predicate<OrdineVenditaInevasoDTO> currentTermConsPredicate = null;
|
|
|
|
|
private Predicate<OrdineVenditaInevasoDTO> currentAutomezzoPredicate = null;
|
|
|
|
|
|
|
|
|
|
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) {
|
|
|
|
|
return new DialogVenditaFiltroAvanzato(context, ordersList, onDismiss).currentAlert;
|
|
|
|
|
private boolean firstInit = true;
|
|
|
|
|
|
|
|
|
|
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
|
|
|
|
return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) {
|
|
|
|
|
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
|
|
|
|
return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
|
|
|
|
currentContext = context;
|
|
|
|
|
currentOrderList = ordersList;
|
|
|
|
|
currentOnFilterDone = onDismiss;
|
|
|
|
|
|
|
|
|
|
DialogVenditaFiltroAvanzatoViewModel viewModel = new DialogVenditaFiltroAvanzatoViewModel();
|
|
|
|
|
DialogVenditaFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel();
|
|
|
|
|
|
|
|
|
|
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
|
|
|
|
|
|
|
|
|
@@ -61,26 +69,36 @@ public class DialogVenditaFiltroAvanzato {
|
|
|
|
|
.setView(contentView.getRoot())
|
|
|
|
|
.setPositiveButton(context.getText(R.string.confirm), null)
|
|
|
|
|
.setNegativeButton(context.getText(R.string.abort), null)
|
|
|
|
|
.setNeutralButton(context.getText(R.string.reset), (dialogInterface, i) -> {
|
|
|
|
|
resetAll(viewModel);
|
|
|
|
|
});
|
|
|
|
|
.setNeutralButton(context.getText(R.string.reset), null);
|
|
|
|
|
|
|
|
|
|
contentView.setViewmodel(viewModel);
|
|
|
|
|
initViewModel(viewModel);
|
|
|
|
|
initViewModel(viewModel, contentView);
|
|
|
|
|
initView(contentView, viewModel);
|
|
|
|
|
|
|
|
|
|
currentAlert = alertDialog.create();
|
|
|
|
|
currentAlert.setCanceledOnTouchOutside(false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
currentAlert.setOnShowListener(dialogInterface -> {
|
|
|
|
|
|
|
|
|
|
Button button = ((AlertDialog) dialogInterface).getButton(AlertDialog.BUTTON_NEUTRAL);
|
|
|
|
|
button.setOnClickListener(view -> {
|
|
|
|
|
// TODO Do something
|
|
|
|
|
resetAll(viewModel);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
currentAlert.setOnDismissListener(dialogInterface -> {
|
|
|
|
|
if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList);
|
|
|
|
|
if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList, viewModel);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
refreshList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void resetAll(DialogVenditaFiltroAvanzatoViewModel viewModel) {
|
|
|
|
|
viewModel.numOrds.set(null);
|
|
|
|
|
viewModel.numOrds.set(null);
|
|
|
|
|
viewModel.cliente.set(null);
|
|
|
|
|
viewModel.dataConsegna.set(null);
|
|
|
|
|
@@ -143,67 +161,96 @@ public class DialogVenditaFiltroAvanzato {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel) {
|
|
|
|
|
private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) {
|
|
|
|
|
|
|
|
|
|
firstInit = true;
|
|
|
|
|
|
|
|
|
|
BindableString.resetListeners(viewModel.numOrds);
|
|
|
|
|
BindableString.registerListener(viewModel.numOrds, value -> {
|
|
|
|
|
if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null;
|
|
|
|
|
else {
|
|
|
|
|
String numOrdTrimmed = value.replaceAll(" ", "");
|
|
|
|
|
String[] numOrdsSplitted = numOrdTrimmed.split(",");
|
|
|
|
|
//String numOrdTrimmed = value.replaceAll(" ", "");
|
|
|
|
|
String[] numOrdsSplitted = value.split("[,\\ ]");
|
|
|
|
|
|
|
|
|
|
List<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
|
|
|
|
|
.withoutNulls()
|
|
|
|
|
.map(Integer::parseInt).toList();
|
|
|
|
|
|
|
|
|
|
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
|
|
|
|
|
try{
|
|
|
|
|
List<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
|
|
|
|
|
.filter(x -> !UtilityString.isNullOrEmpty(x))
|
|
|
|
|
.map(Integer::parseInt).toList();
|
|
|
|
|
|
|
|
|
|
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
|
|
|
|
|
|
|
|
|
|
bindings.inputNumOrds.setErrorEnabled(false);
|
|
|
|
|
bindings.inputNumOrds.setError("");
|
|
|
|
|
} catch (NumberFormatException ex) {
|
|
|
|
|
currentNumOrdsPredicate = null;
|
|
|
|
|
|
|
|
|
|
bindings.inputNumOrds.setErrorEnabled(true);
|
|
|
|
|
bindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
refreshList();
|
|
|
|
|
if(!firstInit) refreshList();
|
|
|
|
|
});
|
|
|
|
|
viewModel.numOrds.refresh();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BindableString.resetListeners(viewModel.cliente);
|
|
|
|
|
BindableString.registerListener(viewModel.cliente, value -> {
|
|
|
|
|
if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null;
|
|
|
|
|
else {
|
|
|
|
|
currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
refreshList();
|
|
|
|
|
if(!firstInit) refreshList();
|
|
|
|
|
});
|
|
|
|
|
viewModel.cliente.refresh();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BindableString.resetListeners(viewModel.dataConsegna);
|
|
|
|
|
BindableString.registerListener(viewModel.dataConsegna, value -> {
|
|
|
|
|
if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null;
|
|
|
|
|
else {
|
|
|
|
|
currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
refreshList();
|
|
|
|
|
if(!firstInit) refreshList();
|
|
|
|
|
});
|
|
|
|
|
viewModel.dataConsegna.refresh();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BindableString.resetListeners(viewModel.terminiConsegna);
|
|
|
|
|
BindableString.registerListener(viewModel.terminiConsegna, value -> {
|
|
|
|
|
if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null;
|
|
|
|
|
else {
|
|
|
|
|
currentTermConsPredicate = o -> o.getTermCons() != null && o.getTermCons().toLowerCase().contains(value);
|
|
|
|
|
currentTermConsPredicate = o -> o.getTermCons() != null && o.getTermCons().equalsIgnoreCase(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
refreshList();
|
|
|
|
|
if(!firstInit) refreshList();
|
|
|
|
|
});
|
|
|
|
|
viewModel.terminiConsegna.refresh();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BindableString.resetListeners(viewModel.automezzo);
|
|
|
|
|
BindableString.registerListener(viewModel.automezzo, value -> {
|
|
|
|
|
if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null;
|
|
|
|
|
else {
|
|
|
|
|
currentAutomezzoPredicate = o -> o.getCodAuto().toLowerCase().contains(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
refreshList();
|
|
|
|
|
if(!firstInit) refreshList();
|
|
|
|
|
});
|
|
|
|
|
viewModel.automezzo.refresh();
|
|
|
|
|
|
|
|
|
|
if(firstInit) refreshList();
|
|
|
|
|
firstInit = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@@ -233,9 +280,9 @@ public class DialogVenditaFiltroAvanzato {
|
|
|
|
|
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
|
|
|
|
.filter(x ->
|
|
|
|
|
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) &&
|
|
|
|
|
(currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) &&
|
|
|
|
|
(currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) &&
|
|
|
|
|
(currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x)))
|
|
|
|
|
(currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) &&
|
|
|
|
|
(currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) &&
|
|
|
|
|
(currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x)))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
currentFilteredOrderList = tmpStream.toList();
|
|
|
|
|
@@ -258,12 +305,6 @@ public class DialogVenditaFiltroAvanzato {
|
|
|
|
|
(currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x)))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//if(currentNumOrdsPredicate != null) tmpStream = tmpStream.filter(currentNumOrdsPredicate);
|
|
|
|
|
//if(currentClientePredicate != null) tmpStream = tmpStream.filter(currentClientePredicate);
|
|
|
|
|
//if(currentDataConsPredicate != null) tmpStream = tmpStream.filter(currentDataConsPredicate);
|
|
|
|
|
//if(currentTermConsPredicate != null) tmpStream = tmpStream.filter(currentTermConsPredicate);
|
|
|
|
|
//if(currentClientePredicate != null) tmpStream = tmpStream.filter(currentClientePredicate);
|
|
|
|
|
|
|
|
|
|
currentFilteredOrderList = tmpStream.toList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|