xCMD_xOnAddDett method

Future xCMD_xOnAddDett()

Implementation

Future xCMD_xOnAddDett() async {
  var x = await xInitList_AddDetts();
  var t;
  if (x.length == 1) {
    var p = xTabs.value.firstWhereOrNull((element) => element.key == x.first.key);
    if (p == null)
      xTabs_ChangeActive(x.first.key, forceAdd: true);
    else
      xTabs_ChangeActive(x.first.key);
    t = x.first.key;
  } else {
    var p = xTab_Active != null ? xTabs.value.firstWhereOrNull((element) => element.key == xTab_Active!.key) : null;
    if (p != null) {
      t = p.key;
      xTabs_ChangeActive(t);
    } else {
      t = await showDialog(
          context: context,
          builder: (context) {
            return XAlertDialog(
                height: null,
                title_Text: "Scegli quale dettaglio aggiungere:",
                actionsBTNarea_Child: Row(children: [
                  Expanded(
                      child: XBtnbase(
                    label: "Chiudi",
                    backGroundColor: Colors.grey[800],
                    label_Style: XStyles.xStyTextForLabel(textColor: XColors.undo),
                    onPressed: () => Navigator.pop(context, null),
                  ))
                ]),
                title_Style: XStyles.xStyTextForTextBase(),
                child: Column(
                    mainAxisSize: MainAxisSize.min,
                    children: x
                        .map((e) => Row(children: [
                              Expanded(
                                  child: XBtnbase(
                                margin: EdgeInsets.symmetric(vertical: 5),
                                label: e.label,
                                backGroundColor: Colors.grey[800],
                                height: 35,
                                onPressed: () {
                                  var x = xTabs.value.firstWhereOrNull((element) => element.key == e.key);
                                  if (x == null)
                                    xTabs_ChangeActive(e.key, forceAdd: true);
                                  else
                                    xTabs_ChangeActive(e.key);
                                  Navigator.pop(context, e.key);
                                },
                                label_Style: XStyles.xStyTextForSubLabel(textColor: e.backgroundColor),
                              ))
                            ]))
                        .toList()));
          });
    }
  }

  if (t != null && t != "" && t == xTab_Active!.key) {
    var y = xTab_Active!.itemClass!.getCloneFull();
    var xclObject = await xOnAddNewDett_INTERNAL(y);
    XFDataItem? res = null;
    if (widget.xIsActive_AddItem_DefaultBL) {
      if (xTab_Active != null && xTab_Active!.xElencoToView != null && xTab_Active!.xElencoToView!.xCells_EditType != null) {
        if (xTab_Active!.xElencoToView!.xCells_EditType!.value == XEnums.editType.scheda.value) {
          res = await xOnBefore_AddDett(xclObject).then((value) async => value != null ? xOnAfterActionOnDett_INTERNAL(value) : null);
        }
        // FORM-xPreview_Dialog
        else if (xTab_Active!.xElencoToView!.xCells_EditType!.value == XEnums.editType.form.value) {
          var _view = XView("AddView");
          _view.cols.addAll(xTab_Active!.xElencoToView!.liCols_EditData ?? []);
          if (xclObject == null) {
            xclObject = XFDataItem(Uuid().v4());
            xclObject.isNew = true;
          }
          xclObject = await xOnBefore_AddDett(xclObject);
          res = await xPreview_Dialog(xTab_Active!.xElencoToView!.liCols_EditData!.isEmpty ? xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view ?? xTab_Active!.xElencoToView!.viewDetts! : _view, xclObject, isWeb: kIsWeb);
          if (res != null) {
            await xOnAfter_AddDett(res);
            await xOnAfterActionOnDett_INTERNAL(res);
          }
        } else if (xTab_Active!.xElencoToView!.xCells_EditType!.value == XEnums.editType.stepByStep.value) {
          var _view = XView("AddView");
          _view.cols.addAll(xTab_Active!.xElencoToView!.liCols_EditData ?? []);
          if (xclObject == null) {
            xclObject = XFDataItem(Uuid().v4());
            xclObject.isNew = true;
          }

          xclObject = await xOnBefore_AddDett(xclObject);
          res = await xEditDialog_xOnAddItem(xTab_Active!.xElencoToView!.liCols_EditData!.isEmpty ? xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view ?? xTab_Active!.xElencoToView!.viewDetts! : _view, xclObject!, setState);
          if (res != null) {
            await xOnAfter_AddDett(res);
            await xOnAfterActionOnDett_INTERNAL(res);
          }
        } else {
          if (xTab_Active!.xElencoToView!.isEditable) {
            res = xclObject;
            res != null ? await xOnAfterActionOnDett_INTERNAL(res) : null;
          } else {
            var _view = XView("AddView");
            _view.cols.addAll(xTab_Active!.xElencoToView!.liCols_EditData ?? []);
            if (xclObject == null) {
              xclObject = XFDataItem(Uuid().v4());
              xclObject.isNew = true;
            }
            xclObject = await xOnBefore_AddDett(xclObject);
            res = await xEditDialog_xOnAddItem(xTab_Active!.xElencoToView!.liCols_EditData!.isEmpty ? xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view ?? xTab_Active!.xElencoToView!.viewDetts! : _view, xclObject!, setState);
            if (res != null) {
              await xOnAfter_AddDett(res);
              await xOnAfterActionOnDett_INTERNAL(res);
            }
          }
        }
      } else {
        if (widget.xOnBeforeAddDettLayout != null) {
          res = xclObject != null
              ? widget.xOnBeforeAddDettLayout == null
                  ? null
                  : await widget.xOnBeforeAddDettLayout!(xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view!, xclObject, setState)
              : null;
        } else {
          res = xclObject != null ? await xLayout_DialogAddItem(xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view!, xclObject, setState) : null;
        }
      }
    }

    var resBeforeAddItemInList;
    if (res != null) {
      resBeforeAddItemInList = await xOnBeforeAddDettToList(res);
      editedPage.value = true; //x ADD
    }
    var liToAddItem = itemInEdit_Clone.getProp(t);
    var x = xTabs.value.firstWhereOrNull((element) => element.key == xTab_Active!.key);
    if (res != null) {
      liToAddItem.add(resBeforeAddItemInList);

      if (x != null) {
        xTab_CurrentIndex = x.idx;
      } else {
        xTab_CurrentIndex = xTab_Active!.idx;
      }
    } else {
      if (liToAddItem.isNotEmpty) {
      } else {}
    }
    calcDoc(null, liToAddItem);
  }
}