customerUpdate method

void customerUpdate(
  1. BuildContext context, {
  2. bool isRejected = false,
})

Implementation

void customerUpdate(
  BuildContext context, {
  bool isRejected = false,
}) async {
  Helper.progressDialog(context, "");
  GenericUploadResponse? outlet1;
  GenericUploadResponse? outlet2;

  try {
    // if (outletImages.length >= 2) {
    //   outlet1 = outletImages[0];
    //   outlet2 = outletImages[1];
    // }

    var body = {
      "profile": {
        "partnerId": partners.value.profile?.partnerId,
        "partnerTypeId": partners.value.profile?.partnerTypeId,
        "partnerType": partners.value.profile?.partnerType,
        "partnerName": partners.value.profile?.partnerName,
        "partnerNameNe": partners.value.profile?.partnerNameNe,
        "parentId": partners.value.profile?.parentId,
        "firstName": partners.value.profile?.firstName,
        "lastName": partners.value.profile?.lastName,
        "emailId": profileEmailController.text,
        "phone": profileMobileController.text,
        // "reason": profileReasonController.text,
        "alternatePhone": profileLandPhoneController.text,
        "levelId": partners.value.profile?.levelId,
        "commercialChannelId": partners.value.profile?.commercialChannelId,
        "status": partners.value.profile?.status,
        "approvalAction": partners.value.profile?.approvalAction,
        "approvalStatus": partners.value.profile?.approvalStatus,
        "approvalRemarks": partners.value.profile?.approvalRemarks,
        "language": partners.value.profile?.language,
        "preferredCustomerName":
            partners.value.profile?.preferredCustomerName,
        "levelName": partners.value.profile?.levelName,
        "parentName": partners.value.profile?.parentName,
        "statusName": partners.value.profile?.statusName,
        "address": partners.value.profile?.address?.toJson(),
        "hierarchyId": partners.value.profile?.hierarchyId,
        "reason": profileReasonController.text,
        "fields": partners.value.profile?.fields
            ?.map((field) => field.toJson())
            .toList(),
        "fullName": profileNameController.text,
        "approvalStatusName": partners.value.profile?.approvalStatusName,
        "profileGroup": {
          "company": [
            {
              "field": "partnerId",
              "value": partners.value.profile?.parentId,
              "dataType": null,
              "editable": false
            },
            {
              "field": "customerCode",
              "value": partners.value.profile?.profileGroup?.company
                      ?.firstWhereOrNull(
                          (data) => data.field == "customerCode")
                      ?.value ??
                  "",
              "dataType": null,
              "editable": false
            },
            {
              "field": "vatable",
              "value": partners.value.profile?.profileGroup?.company
                      ?.firstWhereOrNull((data) => data.field == "vatable")
                      ?.value ??
                  "",
              "dataType": null,
              "editable": false
            },
            {
              "field": "vatNumber",
              "value": partners.value.profile?.profileGroup?.company
                      ?.firstWhereOrNull((data) => data.field == "vatNumber")
                      ?.value ??
                  "",
              "dataType": null,
              "editable": false
            },
            {
              "field": "pgpUploadId",
              "value": partners.value.profile?.profileGroup?.company
                  ?.firstWhereOrNull((data) => data.field == "pgpUploadId")
                  ?.value,
              "dataType": null,
              "editable": false
            },
            {
              "field": "minOrderQuantityPerMonth",
              "value": partners.value.profile?.profileGroup?.company
                  ?.firstWhereOrNull(
                      (data) => data.field == "minOrderQuantityPerMonth")
                  ?.value,
              "dataType": null,
              "editable": false
            },
            {
              "field": "maxOrderQuantityPerMonth",
              "value": partners.value.profile?.profileGroup?.company
                  ?.firstWhereOrNull(
                      (data) => data.field == "maxOrderQuantityPerMonth")
                  ?.value,
              "dataType": null,
              "editable": false
            },
            {
              "field": "orderTypeNames",
              "value": partners.value.profile?.profileGroup?.company
                  ?.firstWhereOrNull((data) => data.field == "orderTypeNames")
                  ?.value,
              "dataType": null,
              "editable": false
            },
            {
              "field": "evdNumber",
              "value": partners.value.profile?.profileGroup?.company
                  ?.firstWhereOrNull((data) => data.field == "evdNumber")
                  ?.value,
              "dataType": null,
              "editable": false
            },
            {
              "field": "payTo",
              "value": partners.value.profile?.profileGroup?.company
                  ?.firstWhereOrNull((data) => data.field == "payTo")
                  ?.value,
              "dataType": null,
              "editable": false
            },
            {
              "field": "accountNumber",
              "value": orderAccController.text,
              "dataType": null,
              "editable": false
            },
            {
              "field": "tin",
              "value": orderTinController.text,
              "dataType": null,
              "editable": false
            },
            {
              "field": "orderType",
              "value": selectedOrderType.join(", "),
              "dataType": null,
              "editable": false
            },
            {
              "field": "voucherNumber",
              "value": orderVoucherActivationNumberController.text,
              "dataType": null,
              "editable": false
            },
            {
              "field": "loginMsisdn",
              "value": orderOtpMobileNumberController.text,
              "dataType": null,
              "editable": false
            },
            {
              "field": "minOrderQuantity",
              "value": orderMinOrderQtController.text,
              "dataType": null,
              "editable": false
            },
            {
              "field": "maxOrderQuantity",
              "value": orderMaxOrderQtController.text,
              "dataType": null,
              "editable": false
            },
          ]
        },
        "eloadTillDate": profileELoadController.text,
        "partnerCode": partners.value.profile?.partnerCode,
        "outletId": partners.value.profile?.outletId,
        "approvalId": partners.value.profile?.approvalId,
        "pricingSegment": partners.value.profile?.pricingSegment,
        "pricingSegmentName": partners.value.profile?.pricingSegmentName,
        "hasServiceParent": partners.value.profile?.hasServiceParent,
        "serviceParent": serviceParentList,
        "idNumber": partners.value.profile?.idNumber,
        "locationType": selectedLocationType.value.id,
        "locationTypeName": selectedLocationType.value.type,
        "marketSegment": partners.value.profile?.marketSegment,
        "marketSegmentName": partners.value.profile?.marketSegmentName,
        "erpDcId": partners.value.profile?.erpDcId,
        "erpDsoId": partners.value.profile?.erpDsoId,
        "erpAccountNumber": partners.value.profile?.erpAccountNumber,
        "erpDsoAccountId": partners.value.profile?.erpDsoAccountId,
        "erpLocationId": partners.value.profile?.erpLocationId,
        "availableBalance": partners.value.profile?.availableBalance,
        "currentBalance": partners.value.profile?.currentBalance,
        "partnerMaxLimit": partners.value.profile?.partnerMaxLimit,
        "warehouseType": selectedWarehouseRestriction.value.dropDownId,
        "warehouseTypeName": selectedWarehouseRestriction.value.dropDownValue,
        "operatorWarehouses": selectedWarehouseOperators.isNotEmpty
            ? selectedWarehouseOperators
            : null,
        "contractRenewed": partners.value.profile?.contractRenewed,
        "bulkUploadStatus": partners.value.profile?.bulkUploadStatus,
      },
      "addressDetails": {
        "address":
            addressEditList.value?.map((address) => address.toJson()).toList()

        // partners.value.addressDetails?.address!.length == 2
        //     ? {
        //         "addressType": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .addressType,
        //         "locationId1": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationId1,
        //         "locationId2": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationId2,
        //         "locationId3": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationId3,
        //         "locationId4": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationId4,
        //         "multiLocationId1": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .multiLocationId1,
        //         "multiLocationId2": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .multiLocationId2,
        //         "multiLocationId3": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .multiLocationId3,
        //         "multiLocationId4": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .multiLocationId4,
        //         "postalCode": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .postalCode,
        //         "streetName": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .streetName,
        //         "streetNameNe": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .streetNameNe,
        //         "building": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .building,
        //         "buildingNe": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .buildingNe,
        //         "locationName1": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationName1,
        //         "locationName2": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationName2,
        //         "locationName3": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationName3,
        //         "locationName4": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .locationName4,
        //         "lattitude": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .lattitude,
        //         "longitude": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .longitude,
        //         "id": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .id,
        //         "defaultAddress": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .defaultAddress,
        //         "addressIdentifier": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .addressIdentifier,
        //         "rootLocationId": partners.value.addressDetails?.address
        //             ?.firstWhere((element) => element.addressType == 2)
        //             .rootLocationId
        //       }
        //     : {}
        ,
        "shipToParty": partners.value.addressDetails?.shipToParty,
        "sellToParty": partners.value.addressDetails?.sellToParty,
        "billToParty": partners.value.addressDetails?.billToParty,
        "payer": partners.value.addressDetails?.payer,
        "shipToParty_partnerId":
            partners.value.addressDetails?.shipToPartyPartnerId,
        "sellToParty_partnerId":
            partners.value.addressDetails?.sellToPartyPartnerId,
        "billToParty_partnerId":
            partners.value.addressDetails?.billToPartyPartnerId,
        "payer_partnerId": partners.value.addressDetails?.payerPartnerId
      },
      "signatory": partners.value.signatory,
      "account": partners.value.account,
      "additionalInfo": partners.value.additionalInfo,
      "orderRules": {
        "offers": partners.value.orderRules?.offers
            ?.map((address) => address.toJson())
            .toList()
      },
      "contactDetails": partners.value.contactDetails
          ?.map((address) => address.toJson())
          .toList(),
      "creditType": partners.value.creditType?.toJson(),
      "wallet": partners.value.wallet?.toJson(),
      "warehouse": partners.value.warehouse,
      "documents": [
        {
          "documentId": pgpImage.value.documentId,
          "documentName": pgpImage.value.documentName,
          "documentType": "pgpUploadId"
        },
      ]
    };
    String jsonString = jsonEncode(body);
    log(jsonString);
    String requestTime = "";
    String responseTime = "";
    await ApiClient()
        .customerUpdate(
      body: body,
      xUserId: SecureStorageService.readSecureData(
        SecureStorageService.xUserId,
      ) ?? "",
      id: 7,
    )
        .then((value) {
      if (value.responseMessage != null && value.transactionId != null) {
        Helper.close();
        Helper.logEvent(
          "RESPONSE_EVENT",
          success: true,
          isFinal: true,
          endPoint: "${Api.customerUpdate}/7",
          responseDate: responseTime,
          screenName: "customerManagement",
          buttonName: "update",
          requestDate: requestTime,
        );
        final Localization localization = Localization.getInstance();
        Helper.messageDialog(
          context,
          localization.translate("success"),
          value.responseMessage ?? "",
          isUDIDRequired: false,
          isSuccess: true,
          isTitlerequired: true,
          isDismissible: false,
          onTap: () {
            if (levelId == "10") {
              Helper.close();
            } else {
              Helper.close();
              Helper.close();
            }
            resetWholeEditData();
          },
        );
      } else {
        Helper.close();
      }
    }).catchError(
      (error) {
        GenericResponse res = GenericResponse.fromJson(error?.response?.data);
        ConditionalLogs().customLog("$error");
        Helper.close();
        Helper.logEvent(
          "RESPONSE_EVENT",
          failure: true,
          isFinal: true,
          endPoint: "${Api.customerUpdate}/7",
          responseDate: responseTime,
          screenName: "customerManagement",
          buttonName: "update",
          requestDate: requestTime,
        );
        final Localization localization = Localization.getInstance();
        Helper.messageDialog(
          Get.context!,
          localization.translate("tryAgain"),
          res.responseMessage ?? localization.translate("unknownError"),
        );
      },
    );
  } catch (e, st) {
    Helper.close();
    ConditionalLogs().customLog("$st");
  }
}