*/}\n\n
\n Domain:{\" \"}\n *\n \n\n
\n \n
\n \n Terms of service:{\" \"}\n *\n \n\n \n \n \n \n setTermsOfServiceUrl(\"URL\")}\n />\n URL\n \n \n setTermsOfServiceUrl(\"Do not show\")}\n />\n Do not show\n \n
\n \n \n {termsOfServiceUrl === \"URL\" ? (\n \n \n \n ) : (\n \n )}\n
\n \n\n
\n \n Cancellation Policy:{\" \"}\n *\n \n\n \n \n \n \n setCancellationPolicyUrl(\"URL\")}\n />\n URL\n \n \n setCancellationPolicyUrl(\"Do not show\")}\n />\n Do not show\n \n
\n \n \n {cancellationPolicyUrl === \"URL\" ? (\n \n \n \n ) : (\n \n )}\n
\n \n\n
\n \n Privacy Policy:{\" \"}\n *\n \n\n \n \n \n \n setPrivacyPolicyUrl(\"URL\")}\n />\n URL\n \n \n setPrivacyPolicyUrl(\"Do not show\")}\n />\n Do not show\n \n
\n \n \n {privacyPolicyUrl === \"URL\" ? (\n \n \n \n ) : (\n \n )}\n
\n \n\n
\n \n Contact Us:{\" \"}\n *\n \n\n \n \n \n \n setContactUsUrl(\"URL\")}\n />\n URL\n \n \n setContactUsUrl(\"Do not show\")}\n />\n Do not show\n \n
\n \n \n {contactUsUrl === \"URL\" ? (\n \n \n \n ) : (\n \n )}\n
\n \n\n
\n\n
\n \n After signup user should redirect to confirmation page on Sikka\n marketplace?\n \n\n \n \n \n {\n // marketPlaceListingValues[\"redirectToConfirmationPage\"] = \"Yes\";\n // setMarketPlaceListingValues(Object.assign({}, marketPlaceListingValues));\n // }}\n defaultChecked={\n marketPlaceListingValues.redirectToConfirmationPage\n ? marketPlaceListingValues.redirectToConfirmationPage ===\n \"Yes\"\n : true\n }\n innerRef={register()}\n />\n Yes\n \n \n {\n // marketPlaceListingValues[\"redirectToConfirmationPage\"] = \"No, Redirect user to my web page\";\n // setMarketPlaceListingValues(Object.assign({}, marketPlaceListingValues));\n // }}\n defaultChecked={\n marketPlaceListingValues.redirectToConfirmationPage\n ? marketPlaceListingValues.redirectToConfirmationPage ===\n \"No, Redirect user to my web page\"\n : false\n }\n innerRef={register()}\n />\n No, Redirect user to my web page\n \n
\n \n \n {watch(\"redirectToConfirmationPage\") === \"Yes\" ? (\n <>\n
\n \n Confirmation page header line (Max 100 characters):{\" \"}\n *\n \n\n \n {\n setValue(\"confirmationPageHeader\", e.target.value);\n }}\n placeholder=\"Thank you for your $servicename$ subscription\"\n innerRef={register({\n required: \"Confirmation Page Header Line is required\",\n maxLength: 100,\n })}\n />\n \n \n \n\n
\n \n Below text will be displayed after user successfully purchase\n your service from marketplace. (Thank you note for user):{\" \"}\n *\n \n\n \n {\n setThankYouNote(value);\n setValue(\"thankYouNotesAfterPurchase\", value);\n }}\n modules={modules}\n formats={formats}\n style={{\n border: \"1px solid #d8e2ef\",\n borderRadius: \"0.2rem\",\n }}\n {...register(\"thankYouNotesAfterPurchase\", {\n required: isEditMode\n ? false\n : \"Thank you note is required\",\n validate: () => {\n return removeTags(thankYouNote) ? true : false;\n },\n })}\n value={thankYouNote}\n />\n\n {errors.thankYouNotesAfterPurchase && (\n \n )}\n \n \n\n
\n \n Confirmation Image:{\" \"}\n *\n \n\n \n \n \n setConfirmationImage(\"Default\")}\n />\n Default\n \n \n setConfirmationImage(\"Upload New\")}\n />\n Upload New\n \n
\n \n \n\n {confirmationImage === \"Default\" ? (\n \n \n \n ) : (\n \n {\n setConfirmationImage(files);\n }}\n multiple={false}\n accept=\"image/*\"\n placeholder={\n \n
\n
\n \n Upload confirmation image\n
\n \n
\n }\n />\n \n \n \n \n )}\n \n >\n ) : (\n <>\n
\n \n Redirect to partner page URL:{\" \"}\n *\n \n\n \n \n \n \n >\n )}\n\n
\n \n Confirmation email header line (Max 100 characters):{\" \"}\n *\n \n\n \n \n \n \n
\n \n Content for on Confirmation Email (sent to customer):\n *\n \n\n {/* \n \n */}\n \n {\n setContentConfirmationEmail(value);\n setValue(\"contentConfirmationEmail\", value);\n }}\n modules={modules}\n formats={formats}\n style={{\n border: \"1px solid #d8e2ef\",\n borderRadius: \"0.2rem\",\n }}\n {...register(\"contentConfirmationEmail\", {\n required: \"Content for on Confirmation Email is required\",\n validate: () => {\n return removeTags(contentConfirmationEmail) ? true : false;\n },\n })}\n />\n \n {errors?.contentConfirmationEmail && (\n \n )}\n \n
\n \n \n \n \n Would you allow us to create freshdesk ticket?\n \n *\n \n \n
\n \n \n
\n {/*
\n \n \n \n \n Partner Logo\n \n *\n \n \n \n \n \n \n \n
\n \n \n \n \n Partner Tagline\n \n *\n \n \n\n \n \n
\n \n \n
*/}\n
\n \n \n \n \n Need Sikka Apps License?\n \n *\n \n \n {\n setNeedSikkaAppsLicense(selectedOption);\n }}\n />\n \n {needSikkaAppsLicense?.value == \"Yes\" ? (\n <>\n \n \n API License\n \n *\n \n \n \n \n >\n ) : (\n <>>\n )}\n
\n \n \n
\n\n
\n \n Automatic Registration Handshake\n \n\n \n {\n return {\n value: index,\n label: option,\n };\n })}\n defaultValue={defaultSelectedHandshake}\n value={{\n value: automaticRegistrationHandshakeIdx,\n label:\n automaticRegistrationHandshake[\n automaticRegistrationHandshakeIdx\n ],\n }}\n onChange={(selectedOption) =>\n setAutomaticRegistrationHandshakeIdx(selectedOption.value)\n }\n />\n \n \n\n {automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\" && (\n <>\n
\n
\n \n \n \n POST URL for New Purchase:{\" \"}\n \n *\n \n \n\n \n \n \n \n \n \n \n \n \n \n POST URL for Partner Cancellation:{\" \"}\n \n *\n \n \n\n \n \n \n \n \n \n \n\n
\n \n The following information will be pushed to partner's server:\n \n\n \n \n \n \n Curl\n \n \n \n JSON\n \n \n \n Sikka\n \n
\n \n \n
\n {/* */}\n \n \n {sampleInfo.map((info, index) => {\n return (\n \n {\n return watch(\"postApiFields\").length > 0;\n },\n })}\n defaultChecked={marketPlaceListingValues?.postApiFields?.includes(\n info\n )}\n />\n {info}\n \n );\n })}\n \n
\n \n \n >\n )}\n {automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"No\" && (\n <>\n
\n
\n \n \n \n For Support:{\" \"}\n \n *\n \n \n\n \n \n \n \n \n \n \n \n \n \n For Registration:{\" \"}\n \n *\n \n \n\n \n \n \n \n \n \n \n >\n )}\n \n
\n {\n setStep(step - 1);\n location.reload();\n }}\n >\n Prev\n \n\n {step < 3 && (\n \n Next\n \n )}\n \n \n \n );\n};\n\nexport default MarketPlaceListing;\n","import React, { useContext, useState } from \"react\";\nimport { toast } from \"react-toastify\";\nimport { Col, Row, Card, CardBody, Button } from \"reactstrap\";\nimport AppContext, { PublishAppContext } from \"../../../context/Context\";\nimport APICall from \"../../../services/apiCall\";\nimport SikkaCardHeader from \"../../common/SikkaCardHeader\";\nimport Loader from \"../../common/Loader\";\n\nconst removeRandomLastString = (str) => {\n let removeRandomString = \"\";\n if (str.includes(\"-\")) {\n let findDash = str.lastIndexOf(\"-\");\n removeRandomString = str\n .substring(0, findDash)\n .replace(/ /g, \"\")\n .trim();\n } else {\n removeRandomString = str;\n }\n\n return { removeRandomString, orignalString: str };\n};\n\nconst FinalPublish = () => {\n const {\n marketplaceBackgroundImage,\n promotionalImage1,\n promotionalImage2,\n promotionalImage3,\n automaticRegistrationHandshakeIdx,\n description,\n thankYouNote,\n contentConfirmationEmail,\n categoryIndex,\n partnerDetails,\n confirmationImage,\n applicationList,\n selectedApplication,\n partnerlogoImage,\n apiLicenseValue,\n selectedFreshdeskOptionValue,\n needSikkaAppsLicense,\n partnerTagline,\n isEditMode,\n setIsEditMode,\n getApplicationInfomation,\n } = useContext(PublishAppContext);\n const [isClicked, setisClicked] = useState(false);\n \n\n const { loginUserDetails } = useContext(AppContext);\n\n const category = [\n \"Business Intelligence\",\n \"Acquire & Retain\",\n \"Client Financing\",\n \"Financial Health\",\n \"Manufacturer and Distributor\",\n \"Lab Services\",\n ];\n\n const automaticRegistrationHandshake = [\"Yes\", \"No\"];\n\n const handlePublishApplication = () => {\n setisClicked(true);\n const marketPlaceListingValues = JSON.parse(\n sessionStorage.getItem(\"publish-app-details\")\n );\n let partnerId = applicationList.find(\n (data) => data.publish_app_partner_id !== \"\"\n )?.publish_app_partner_id;\n let addBody = {\n dev_id: `${loginUserDetails.parent_dev_id}`, //paret_dev_id\n app_id: `${selectedApplication.app_id}`,\n scrm_account_id: \"\", //for now blank\n partner_name: `${partnerDetails.partner_name}`, // get from partner_details API\n master_customer_id: `${partnerDetails.master_customer_id}`, // get from partner_details API\n address: `${partnerDetails.dev_address}`, //dev_address from partner_details API\n city: `${partnerDetails.dev_city}`, //dev_city from partner_details API\n state: `${partnerDetails.dev_state}`, //dev_state from partner_details API\n zip_code: `${partnerDetails.dev_zip}`, //dev_zip from partner_details API\n country: `${partnerDetails.dev_country}`, //dev_country from partner_details API\n contact_person_name: `${partnerDetails.dev_name}`, //dev_name from partner_details API\n contact_person_phone: `${partnerDetails.dev_phone}`, //dev_phone from partner_details API\n contact_person_email: `${partnerDetails.username}`, //username from partner_details API\n app_logo: `${selectedApplication.app_logo}`, //get from partner_all_apps\n service_name: `${\n removeRandomLastString(selectedApplication.app_name).removeRandomString\n }`, //app_name from partner_all_apps\n check_out_process: \"Registration Only\", //hardcoded\n domain_name:\n marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain.toString()\n : \"\", //value should be comma separated\n service_domain:\n marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain[0]\n : \"\"\n : marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain.toString()\n : \"\", // \"if user select multiple domains then first else same as domain_name\",\n img_bytes_marketplace_background_image: marketplaceBackgroundImage[0]?.base64?.split(\n \",\"\n )[1], //Image bytes same as app_logo in add edit application\n img_name_marketplace_background_image:\n marketplaceBackgroundImage[0]?.path, // Image name same as app_logo in add edit application\n img_bytes_promotional1: promotionalImage1[0]?.base64?.split(\",\")[1],\n img_name_promotional1: promotionalImage1[0]?.path,\n img_bytes_promotional2: promotionalImage2[0]?.base64?.split(\",\")[1],\n img_name_promotional2: promotionalImage2[0]?.path,\n img_bytes_promotional3: promotionalImage3[0]?.base64?.split(\",\")[1],\n img_name_promotional3: promotionalImage3[0]?.path,\n terms_of_service: marketPlaceListingValues.termsOfServiceURL\n ? marketPlaceListingValues.termsOfServiceURL\n : \"\", // IF URL redio button checekd then pass URL else keep it blank\n cancellation_policy: marketPlaceListingValues.cancellationPolicyURL\n ? marketPlaceListingValues.cancellationPolicyURL\n : \"\", // IF URL redio button checekd then pass URL else keep it blank\n privacy_policy: marketPlaceListingValues.privacyPolicyURL\n ? marketPlaceListingValues.privacyPolicyURL\n : \"\", // IF URL redio button checekd then pass URL else keep it blank\n contact_us: marketPlaceListingValues.contactUsURL\n ? marketPlaceListingValues.contactUsURL\n : \"\", // IF URL redio button checekd then pass URL else keep it blank\n head_line: `${marketPlaceListingValues.headline}`,\n description: `${description}`,\n\n // category: `${category[categoryIndex]}`,\n // category_id: `${categoryIndex}`, // Hidden as per requirements due to add static value like revnue cycle\n\n confirmation_page_type:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? \"Confirmation Page\"\n : \"Redirect to Partner Page\", // if redio yes selected then value should be 'Confirmation Page' else value should be 'Redirect to Partner Page'\n thank_you_note:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? `${thankYouNote}`\n : marketPlaceListingValues.redirectToPartnerPageURL, //if radio button yes selected then Thank you note for user if radio button No selected then Redirect to partner page URL\n thank_you_note_header:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? `${marketPlaceListingValues.confirmationPageHeader}`\n : \"\", // IF redio yes selected then Confirmation page header line if redio no selected then blank\n confirmation_page_partner_url:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? \"\"\n : \"Redirect to partner page URL\", //if redio button yes selected then blank else value of Redirect to partner page URL\n img_bytes_confirmation_image:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? marketPlaceListingValues.confirmationImage !== \"Default\"\n ? confirmationImage[0]?.base64?.split(\",\")[1]\n : \"\"\n : \"\", //if redio button yes selected and upload image then bytes else blank\n img_name_confirmation_image:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? marketPlaceListingValues.confirmationImage !== \"Default\"\n ? confirmationImage[0]?.path\n : \"\"\n : \"\", //if redio button yes selected and upload image then name else blank\n confirmation_email_header: marketPlaceListingValues.confirmationEmailHeaderLine\n ? `${marketPlaceListingValues.confirmationEmailHeaderLine}`\n : \"\",\n confirmation_email: contentConfirmationEmail\n ? `${contentConfirmationEmail}`\n : \"\",\n automatic_registration_handshake: `${\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx]\n }`, //drop down\n for_support:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? \"\"\n : marketPlaceListingValues.forSupport, //if yes selected in dropdown then blank\n for_registration:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? \"\"\n : marketPlaceListingValues.forRegistration, //if yes selected in dropdown then blank\n post_url_for_new_purchase:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? marketPlaceListingValues.postURLForNewPurchase\n : \"\", //if No selected in dropdown then blank\n post_url_for_cancellation:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? marketPlaceListingValues.postURLForPartnerCancellation\n : \"\", //if No selected in dropdown then blank\n post_api_body_type: marketPlaceListingValues.postApiBodyType\n ? `${marketPlaceListingValues.postApiBodyType}`\n : \"\",\n post_api_fields: marketPlaceListingValues.postApiFields\n ? marketPlaceListingValues.postApiFields.toString()\n : \"\", //selected checkbox\n partner_id: partnerId ? partnerId : \"\", // You need to check the response of partner_all_apps API and if any of the apps has value in publish_app_partner_id field then pass it\n receive_earning_type: \"Not Applicable\", //Fixed value\n add_updated_by: loginUserDetails.user_name,\n // ............................\n\n need_api_license: needSikkaAppsLicense.value,\n api_license: apiLicenseValue,\n logo_url: partnerlogoImage.replace(\"data:image/png;base64,\", \"\"),\n tagline: partnerTagline,\n create_support_ticket:\n selectedFreshdeskOptionValue?.selectedFreshdeskOption?.value,\n support_ticket_email:\n selectedFreshdeskOptionValue?.selectedFreshdeskOptionForNotification\n ?.value,\n };\n\n let updateBody = {\n partner_id: partnerId ? partnerId : \"\",\n service_domain:\n marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain[0]\n : \"--\"\n : marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain.toString()\n : \"--\",\n description: `${description}`,\n\n terms_of_service: marketPlaceListingValues.termsOfServiceURL\n ? marketPlaceListingValues.termsOfServiceURL\n : \"--\", // IF URL redio button checekd then pass URL else keep it blank\n cancellation_policy: marketPlaceListingValues.cancellationPolicyURL\n ? marketPlaceListingValues.cancellationPolicyURL\n : \"--\", // IF URL redio button checekd then pass URL else keep it blank\n privacy_policy: marketPlaceListingValues.privacyPolicyURL\n ? marketPlaceListingValues.privacyPolicyURL\n : \"--\", // IF URL redio button checekd then pass URL else keep it blank\n contact_us: marketPlaceListingValues.contactUsURL\n ? marketPlaceListingValues.contactUsURL\n : \"--\",\n img_confirm_image_empty:false,\n confirmation_page_type:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? \"Confirmation Page\"\n : \"Redirect to Partner Page\",\n confirmation_email_header: marketPlaceListingValues.confirmationEmailHeaderLine\n ? `${marketPlaceListingValues.confirmationEmailHeaderLine}`\n : \"--\",\n thank_you_note:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? `${thankYouNote}`\n : marketPlaceListingValues.redirectToPartnerPageURL,\n automatic_registration_handshake: `${\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx]\n }`,\n thank_you_note_header:\n marketPlaceListingValues.redirectToConfirmationPage === \"Yes\"\n ? `${marketPlaceListingValues.confirmationPageHeader}`\n : \"--\",\n\n for_support:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? \"--\"\n : marketPlaceListingValues.forSupport, //if yes selected in dropdown then blank\n for_registration:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? \"--\"\n : marketPlaceListingValues.forRegistration,\n\n post_url_for_new_purchase:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? marketPlaceListingValues.postURLForNewPurchase\n : \"--\", //if No selected in dropdown then blank\n post_url_for_cancellation:\n automaticRegistrationHandshake[automaticRegistrationHandshakeIdx] ===\n \"Yes\"\n ? marketPlaceListingValues.postURLForPartnerCancellation\n : \"--\",\n post_api_body_type: marketPlaceListingValues.postApiBodyType\n ? `${marketPlaceListingValues.postApiBodyType}`\n : \"--\",\n post_api_fields: marketPlaceListingValues.postApiFields\n ? marketPlaceListingValues.postApiFields.toString()\n : \"--\",\n\n service_name: `${\n removeRandomLastString(selectedApplication.app_name).removeRandomString\n }`,\n head_line: `${marketPlaceListingValues.headline}`,\n domain_name:\n marketPlaceListingValues.domain.length > 0\n ? marketPlaceListingValues.domain.toString()\n : \"--\",\n\n create_support_ticket:\n selectedFreshdeskOptionValue?.selectedFreshdeskOption?.value,\n support_ticket_email:\n selectedFreshdeskOptionValue?.selectedFreshdeskOptionForNotification\n ?.value,\n need_api_license: needSikkaAppsLicense.value,\n api_license: apiLicenseValue,\n confirmation_email: contentConfirmationEmail,\n };\n\n if (!isEditMode) {\n APICall.servertrip(\n \"POST\",\n \"publish_application\",\n loginUserDetails,\n undefined,\n addBody\n ).then(\n (res) => {\n toast.success(\"Application successfully published\");\n sessionStorage.removeItem(\"publish-app-details\");\n window.location.reload();\n setisClicked(false);\n },\n (error) => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n toast.error(resMessage);\n window.location.reload();\n setisClicked(false);\n }\n );\n } else {\n if (selectedApplication.publish_app_service_id) {\n updateBody[\"service_id\"] = selectedApplication.publish_app_service_id;\n }\n if (promotionalImage1[0]?.path) {\n updateBody[\"img_name_promotional1\"] = promotionalImage1[0]?.path;\n updateBody[\"img_promotional1\"] = promotionalImage1[0]?.base64?.split(\n \",\"\n )[1];\n }\n if (promotionalImage2[0]?.path) {\n updateBody[\"img_name_promotional2\"] = promotionalImage2[0]?.path;\n updateBody[\"img_promotional2\"] = promotionalImage2[0]?.base64?.split(\n \",\"\n )[1];\n }\n if (promotionalImage3[0]?.path) {\n updateBody[\"img_name_promotional3\"] = promotionalImage3[0]?.path;\n updateBody[\"img_promotional3\"] = promotionalImage3[0]?.base64?.split(\n \",\"\n )[1];\n }\n if (marketplaceBackgroundImage[0]?.path) {\n updateBody[\"img_marketplace_background_image_name\"] =\n marketplaceBackgroundImage[0]?.path;\n updateBody[\n \"img_marketplace_background_image\"\n ] = marketplaceBackgroundImage[0]?.base64?.split(\",\")[1];\n }\n\n if (confirmationImage == \"Default\") {\n updateBody[\"img_name_confirmation_image\"] = \"\";\n updateBody[\"img_confirmation_image\"] = \"\";\n updateBody[\"img_confirm_image_empty\"] = true;\n }\n if (confirmationImage[0]?.path) {\n updateBody[\"img_name_confirmation_image\"] = confirmationImage[0]?.path;\n updateBody[\n \"img_confirmation_image\"\n ] = confirmationImage[0]?.base64?.split(\",\")[1];\n }\n APICall.servertrip(\n \"PUT\",\n \"update_publish_app_details\",\n loginUserDetails,\n undefined,\n updateBody\n ).then(\n (res) => {\n toast.success(\"Application updated successfully.\");\n sessionStorage.removeItem(\"publish-app-details\");\n window.location.reload();\n setisClicked(false);\n },\n (error) => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n toast.error(resMessage);\n window.location.reload();\n setisClicked(false);\n }\n );\n }\n };\n\n return (\n
\n \n \n \n \n \n Please confirm your application details before publishing it to\n Sikka Marketplace.\n
\n \n \n Note: Please goto https://www.sikkasoft.com to see your published\n application. You can distribute your application url to your\n user/customer to signup for your app.\n
\n \n
\n \n \n );\n};\n\nexport default FinalPublish;\n","import React, { useState, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Card, Form, Nav, ProgressBar } from \"react-bootstrap\";\nimport { useForm } from \"react-hook-form\";\nimport WizardModal from \"../../common/wizard/WizardModal\";\nimport AppContext, {\n AuthWizardContext,\n PublishAppContext,\n} from \"../../../context/Context\";\nimport classNames from \"classnames\";\nimport IconButton from \"../../common/IconButton\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport Flex from \"../../common/Flex\";\nimport AccountInformation from \"./AccountInformation\";\nimport ApplicationInformation from \"./ApplicationInformation\";\nimport MarketPlaceListing from \"./MarketPlaceListing\";\nimport FinalPublish from \"./FinalPublish\";\n\nconst Publish = ({ variant, validation, progressBar }) => {\n const { isRTL } = useContext(AppContext);\n const { user, setUser, step, setStep } = useContext(AuthWizardContext);\n\n const {\n selectedApplication,\n setMarketPlaceListingValues,\n isEditMode,onlyOneTimeFill, setOnlyOneTimeFill\n } = useContext(PublishAppContext);\n\n const {\n register,\n handleSubmit,\n errors,\n setError,\n setValue,\n clearErrors,\n watch,\n } = useForm();\n\n const [modal, setModal] = useState(false);\n\n const navItems = [\n {\n icon: \"lock\",\n label: \"Application\",\n },\n {\n icon: \"user\",\n label: \"Marketplace Listing\",\n },\n {\n icon: \"thumbs-up\",\n label: \"Publish\",\n },\n ];\n\n const onSubmitData = (data) => {\n setUser({ ...user, ...data });\n setStep(step + 1);\n \n };\n const onError = () => {\n if (!validation) {\n clearErrors();\n setStep(step + 1);\n }\n };\n\n const toggle = () => setModal(!modal);\n\n const handleNavs = () => {\n let targetStep = 3;\n if (step !== 3) {\n if (targetStep < step) {\n setStep(targetStep);\n } else {\n // handleSubmit(onSubmitData, onError)();\n setStep(step + 1);\n }\n } else {\n toggle();\n }\n };\n\n return (\n <>\n
\n
\n \n \n \n {progressBar && }\n \n {step === 1 && (\n <>\n \n \n >\n )}\n {step === 2 && (\n \n \n
\n )}\n\n {step === 3 && (\n \n \n
\n )}\n \n \n {/* */}\n \n >\n );\n};\n\nexport const NavItem = ({ index, step, handleNavs, icon, label }) => {\n return (\n
\n index : step > 2,\n active: step === index,\n })}\n style={{ cursor: \"default\" }}\n // onClick={() => handleNavs(index)}\n >\n \n \n \n \n \n {label}\n \n \n );\n};\n\nexport const NavItemPill = ({ index, step, handleNavs, icon, label }) => {\n return (\n
\n index,\n active: step === index,\n })}\n onClick={() => {\n if (handleNavs) {\n handleNavs(index)\n }\n }}\n >\n \n \n {label}\n \n \n \n );\n};\n\nPublish.propTypes = {\n variant: PropTypes.oneOf([\"pills\"]),\n validation: PropTypes.bool,\n progressBar: PropTypes.bool,\n};\n\nNavItemPill.propTypes = {\n index: PropTypes.number.isRequired,\n step: PropTypes.number.isRequired,\n handleNavs: PropTypes.func.isRequired,\n icon: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n};\n\nNavItem.propTypes = NavItemPill.propTypes;\n\nexport default Publish;\n","import React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport {\n Badge,\n Card,\n CardBody,\n CardFooter,\n CardHeader,\n Col,\n FormFeedback,\n FormGroup,\n FormText,\n Input,\n Label,\n Row,\n} from \"reactstrap\";\nimport Loader from \"../../common/Loader\";\nimport APIPortalTable from \"../../common/Table/APIPortalTable\";\nimport {\n BrowserRouter as Router,\n Switch,\n Route,\n Link,\n Redirect,\n useParams,\n useRouteMatch,\n useHistory,\n} from \"react-router-dom\";\nimport TicketDetails from \"./TicketDetails\";\nimport {\n FreshDeskSelect,\n Priority,\n PriorityComponent,\n Status,\n StatusComponent,\n} from \"./Freshdesk\";\nimport {\n faArrowAltCircleRight,\n faArrowLeft,\n faArrowLeftLong,\n faArrowRight,\n faArrowRightLong,\n faBackspace,\n faBuilding,\n faClose,\n faFilter,\n faInbox,\n faMessage,\n faMinus,\n faSearch,\n faSync,\n faTicket,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport ButtonIcon from \"../../common/ButtonIcon\";\nimport { useRef } from \"react\";\nimport SikkaCardHeader from \"../../common/SikkaCardHeader\";\nimport SikkaSelect from \"../../common/SikkaSelect/SikkaSelect\";\nimport SoftBadge from \"../../common/SoftBadge\";\nimport { PrioritySelect } from \"./FreshdeskCommon\";\nimport apiCall from \"../../../services/apiCall\";\nimport AppContext from \"../../../context/Context\";\nimport { ToastPosition, toast } from \"react-toastify\";\n\nconst getDateByNumbers = (days) => {\n const currentDate = new Date();\n let whichDays = days;\n let previousDate = new Date(currentDate);\n previousDate.setDate(currentDate.getDate() - whichDays);\n\n let properFormattedDate = previousDate.toISOString().split(\"T\")[0];\n\n return properFormattedDate;\n};\nconst priorityData = [\n { id: 1, label: \"low\" },\n { id: 2, label: \"medium\" },\n { id: 3, label: \"high\" },\n { id: 4, label: \"urgent\" },\n];\nconst statusData = [\n { label: \"Open\", id: 2 },\n { label: \"Pending\", id: 3 },\n { label: \"Resolved\", id: 4 },\n { label: \"Closed\", id: 5 },\n];\nconst makeQuery = (params, keyName, whichType) => {\n whichType = whichType || \"\";\n if (whichType === \"date\") {\n let query = \"\";\n\n console.log(\"keyName\", keyName, params);\n params?.map((item, itemIndex) => {\n if (itemIndex === 0) {\n query = \"(\";\n }\n const addSymbol = [\"Today\"].includes(item?.label) ? \"\" : \"<\";\n\n if (item?.value || item?.value === 0) {\n if (itemIndex < params.length - 1) {\n query =\n query +\n `${keyName}:${addSymbol}'${getDateByNumbers(\n Number(item?.value)\n )}' OR `;\n } else {\n query =\n query +\n `${keyName}:${addSymbol}'${getDateByNumbers(\n Number(item?.value)\n )}')`;\n }\n } else {\n query = query;\n }\n });\n return query;\n } else {\n let query = \"\";\n params?.map((item, itemIndex) => {\n if (itemIndex === 0) {\n query = \"(\";\n }\n if (item?.value || item?.value === 0) {\n if (itemIndex < params.length - 1) {\n query = query + `${keyName}:${item?.value} OR `;\n } else {\n query = query + `${keyName}:${item?.value})`;\n }\n } else {\n query = query;\n }\n });\n return query;\n }\n};\n\nconst QueryList = [\n { name: \"Unresolved\", query: `(status:2 AND status:3)` },\n {\n name: \"Overdue\",\n query: `(due_by:<'${getDateByNumbers(0)}') AND (status:2 OR status:3)`,\n },\n {\n name: \"Due Today\",\n query: `(due_by:'${getDateByNumbers(0)}') AND (status:2 OR status:3)`,\n },\n {\n name: \"Open\",\n query: `(status:2 AND status:10 AND status:11 AND status:12 )`,\n },\n { name: \"On Hold\", query: `(status:8)` },\n];\n\nconst Tickets = ({\n allTickets,\n isLoading,\n FetchData,\n HeaderTitle,\n backButton,\n setIsLoading,\n CompanyName,\n setAllTickets,\n actions,\n response,\n setResponse,\n companyid,\n}) => {\n companyid = companyid || \"\";\n const { loginUserDetails, isDark } = useContext(AppContext);\n const [selected_status, setSelected_status] = useState(null);\n\n useMemo(() => {\n if (sessionStorage.getItem(\"selected_status\")) {\n setSelected_status(sessionStorage.getItem(\"selected_status\"));\n } else {\n setSelected_status(null);\n }\n }, [sessionStorage.getItem(\"selected_status\")]);\n\n let TempColumns = [\n {\n csvFormatter: (cell, row, rowIndex) => {\n if (cell === \"\") {\n return \"--\";\n } else {\n return cell;\n }\n },\n enableResizing: true,\n size: 500,\n sort: true,\n csvExport: true,\n accessorKey: \"subject\",\n header: \"Subject\",\n Cell: ({ cell, row }) => {\n return (\n <>\n
\n {cell.getValue()}\n \n >\n );\n },\n },\n {\n csvFormatter: (cell, row, rowIndex) => {\n if (cell === \"\") {\n return \"--\";\n } else {\n return cell;\n }\n },\n sort: true,\n csvExport: true,\n accessorKey: \"priority\",\n header: \"Priority\",\n Cell: ({ cell, row }) => {\n let realIndex = Priority.findIndex(\n (item) => `${item.id}` === cell.getValue()\n );\n return (\n <>\n
\n >\n );\n },\n enableColumnFilter: true,\n filterFn: (row, id, filterValue) => {\n let priorityValue = Priority.find((item) => {\n return item?.id == row.getValue(id);\n });\n return (\n priorityValue?.lable?.toLowerCase() === filterValue?.toLowerCase()\n );\n },\n },\n {\n csvFormatter: (cell, row, rowIndex) => {\n if (cell === \"\") {\n return \"--\";\n } else {\n return cell;\n }\n },\n sort: true,\n csvExport: true,\n accessorKey: \"status\",\n header: \"Status\",\n\n Cell: ({ cell, row }) => {\n let getStatusIndex = Status.findIndex(\n (item) => `${item.id}` === cell.getValue()\n );\n return (\n <>\n
\n {Status[getStatusIndex]?.lable}\n \n >\n );\n },\n enableColumnFilter: true,\n filterFn: (row, id, filterValue) => {\n let statusValue = statusData.find((item) => {\n return item?.id == row.getValue(id);\n });\n return statusValue?.label?.toLowerCase() === filterValue?.toLowerCase();\n },\n },\n {\n csvFormatter: (cell, row, rowIndex) => {\n if (cell === \"\") {\n return \"--\";\n } else {\n return cell;\n }\n },\n sort: true,\n csvExport: true,\n accessorKey: \"created_at\",\n header: \"Created\",\n Cell: ({ cell, row }) => {\n let date = new Date(cell.getValue()).toDateString();\n return (\n <>\n
\n {date}\n \n >\n );\n },\n sortingFn: (rowA, rowB, columnId) => {\n let dateA = Date.parse(rowA?.original[columnId]);\n let dateB = Date.parse(rowB?.original[columnId]);\n if (dateA < dateB) {\n return -1;\n } else if (dateA > dateB) {\n return 1;\n } else {\n return 0;\n }\n },\n },\n {\n csvFormatter: (cell, row, rowIndex) => {\n if (cell === \"\") {\n return \"--\";\n } else {\n return cell;\n }\n },\n sort: true,\n csvExport: true,\n accessorKey: \"due_by\",\n header: \"Due By\",\n Cell: ({ cell, row }) => {\n let date = new Date(cell.getValue()).toDateString();\n return (\n <>\n
\n {date}\n \n >\n );\n },\n sortingFn: (rowA, rowB, columnId) => {\n let dateA = Date.parse(rowA?.original[columnId]);\n let dateB = Date.parse(rowB?.original[columnId]);\n if (dateA < dateB) {\n return -1;\n } else if (dateA > dateB) {\n return 1;\n } else {\n return 0;\n }\n },\n },\n ];\n const [columns, setColumns] = useState(TempColumns);\n const [isFilterShow, setIsFilterShow] = useState(false);\n const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10 });\n\n const [FilterValue, setFilterValue] = useState({});\n const [customLink, setCustomLink] = useState(\"\");\n const [companies, setCompanies] = useState([]);\n const [isCompanyLoading, setisCompanyLoading] = useState(true);\n\n const defaultSelectedCompany = sessionStorage.getItem(\"lastSelected\")\n ? JSON.parse(sessionStorage.getItem(\"lastSelected\"))\n : {\n value: \"All\",\n label: \"All\",\n };\n const [selectedCompany, setSelectedCompany] = useState(\n defaultSelectedCompany\n );\n\n const [RefreshButtonLabel, setRefreshButtonLabel] = useState(\n \"Refresh All Data\"\n );\n const [pageNumber, setPageNumber] = useState(1);\n\n const DateKeys = [\"due_by\", \"fr_due_by\", \"created_at\", \"updated_at\"];\n\n useEffect(() => {\n const getKeys = Object.keys(FilterValue);\n const OnlyValueContainsKeys = getKeys.filter((item) => {\n let keyValues = FilterValue[item];\n if (keyValues.length > 0) {\n return item;\n }\n });\n let customLinkBuild =\n CompanyName || selectedCompany.label !== \"All\"\n ? `company_name:\"${CompanyName || selectedCompany.label}\" ${\n OnlyValueContainsKeys.length > 0 ? \"AND\" : \"\"\n } `\n : \"\";\n\n const makeAndQuery = () => {\n let custom = \"\";\n OnlyValueContainsKeys.map((key, keyIndex) => {\n let keyValues = FilterValue[key];\n // if (keyValues.length > 0) {\n if (keyIndex < OnlyValueContainsKeys.length - 1) {\n if (DateKeys.includes(key)) {\n custom = custom + ` ${makeQuery(keyValues, key, \"date\")} AND`;\n } else {\n custom = custom + ` ${makeQuery(keyValues, key)} AND`;\n }\n } else {\n if (DateKeys.includes(key)) {\n custom = custom + ` ${makeQuery(keyValues, key, \"date\")}`;\n } else {\n custom = custom + ` ${makeQuery(keyValues, key)}`;\n }\n }\n });\n\n return custom;\n };\n const makeAndQueryValue = makeAndQuery();\n setCustomLink(`${customLinkBuild}${makeAndQueryValue}`);\n }, [FilterValue, CompanyName, selectedCompany]);\n\n const FetchFilterAPI = (optionalValue) => {\n sessionStorage.removeItem(\"selected_status\");\n setIsLoading(true);\n let params = {\n link: `\"${customLink.trim()}\"`,\n };\n if (\n typeof optionalValue !== \"object\" &&\n typeof optionalValue === \"string\"\n ) {\n params = {\n link: `\"${optionalValue.trim()}\"`,\n };\n }\n\n let decodedURL = params.link;\n if (decodedURL !== `\"\"`) {\n apiCall\n .servertrip(\"GET\", \"freshdesk_tickets_filter\", loginUserDetails, params)\n .then(\n (res) => {\n const items = res.data?.items;\n setAllTickets(items);\n setIsLoading(false);\n },\n (error) => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n setIsLoading(false);\n setAllTickets([]);\n toast.error(resMessage);\n }\n );\n } else {\n toast.error(\"Please select atleast one Options.\");\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n if (selected_status && CompanyName) {\n let findStatusIndex = QueryList.findIndex(\n (item) => item.name === selected_status\n );\n let formatQuery =\n `company_name:'${CompanyName}' AND ` + QueryList[findStatusIndex].query;\n\n setCustomLink(formatQuery);\n FetchFilterAPI(formatQuery);\n setIsFilterShow(true);\n // sessionStorage.removeItem(\"selected_status\");\n } else {\n if (!selected_status && !CompanyName && selectedCompany.value === \"All\") {\n FetchData(null, 100, 1, 1000);\n }\n }\n }, [selected_status, CompanyName, selectedCompany]);\n\n const isActionAllowed = (actionName) => {\n // actionName is name of controlID\n let particularAction = actions?.handlers?.find(\n (aName) => aName === actionName\n );\n if (particularAction) return true;\n else return false;\n };\n\n const FetchCompanies = () => {\n let params={\n user_dev_id:loginUserDetails.dev_id\n }\n setisCompanyLoading(true);\n apiCall.servertrip(\"GET\", \"freshdesk_all_companies\", loginUserDetails,params).then(\n (res) => {\n const items = res.data.items;\n setisCompanyLoading(false);\n const itemOptions = [{ id: \"All\", name: \"All\" }, ...items].map(\n (item) => {\n return {\n value: item?.id,\n label: item?.name,\n };\n }\n );\n setCompanies(itemOptions);\n },\n (error) => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n setisCompanyLoading(false);\n toast.error(resMessage);\n }\n );\n };\n useEffect(() => {\n if (\n isActionAllowed(\"liFreshdeskCompaniesButton\") &&\n loginUserDetails?.is_partner === \"0\"\n ) {\n FetchCompanies();\n }\n }, []);\n const FetchCompanyTickets = (useCompanyId, per_page, page, maxData) => {\n setIsLoading(true);\n let params = {\n company_id: useCompanyId || loginUserDetails?.freshdesk_id,\n per_page_data: per_page,\n page_number: page,\n max_data: maxData,\n // how_much: \"all\",\n };\n\n apiCall\n .servertrip(\"GET\", \"freshdesk_company_tickets\", loginUserDetails, params)\n .then(\n (res) => {\n const items = res.data.items;\n setResponse(res.data);\n setAllTickets(items);\n setIsLoading(false);\n },\n (error) => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n setIsLoading(false);\n toast.error(resMessage);\n }\n );\n };\n useEffect(() => {\n if (isFilterShow) {\n setRefreshButtonLabel(\"Refresh Filter Data\");\n } else {\n if (loginUserDetails?.is_partner === \"0\") {\n if (\n selectedCompany.value &&\n selectedCompany.label &&\n selectedCompany.value !== \"All\"\n ) {\n FetchCompanyTickets(selectedCompany.value);\n setRefreshButtonLabel(\"Refresh Partner Data\");\n } else {\n setRefreshButtonLabel(\"Refresh All Data\");\n }\n } else {\n setRefreshButtonLabel(\"Refresh All Data\");\n }\n }\n }, [selectedCompany, isFilterShow]);\n\n useEffect(() => {\n setPageNumber(response?.page);\n }, [response]);\n\n return (\n <>\n
\n \n {HeaderTitle}\n >\n }\n >\n {\n setIsFilterShow(!isFilterShow);\n }}\n >\n \n Filter\n \n\n {\n if (isFilterShow) {\n if (selected_status && CompanyName) {\n let findStatusIndex = QueryList.findIndex(\n (item) => item.name === selected_status\n );\n let formatQuery =\n `company_name:'${CompanyName}' AND ` +\n QueryList[findStatusIndex].query;\n\n // setCustomLink(formatQuery);\n FetchFilterAPI(formatQuery);\n } else {\n sessionStorage.removeItem(\"selected_status\");\n FetchFilterAPI(customLink);\n }\n } else {\n // sessionStorage.removeItem(\"selected_status\");\n if (loginUserDetails.is_partner === \"0\") {\n if (selectedCompany.value === \"All\") {\n FetchData(null, 100, pageNumber, 1000);\n } else {\n FetchCompanyTickets(\n selectedCompany.value,\n 100,\n pageNumber,\n 100\n );\n }\n } else {\n FetchData(\n loginUserDetails?.freshdesk_id,\n 100,\n pageNumber,\n 100\n );\n }\n }\n }}\n >\n \n {RefreshButtonLabel}\n \n {backButton && backButton}\n \n\n {isActionAllowed(\"liFreshdeskCompaniesButton\") &&\n loginUserDetails?.is_partner === \"0\" ? (\n \n \n {\n setSelectedCompany(selectedOption);\n if (loginUserDetails?.is_partner === \"0\") {\n sessionStorage.setItem(\n \"lastSelected\",\n JSON.stringify(selectedOption)\n );\n }\n }}\n // value={companies && {id:companies[0]?.id,label:companies[0]?.label}}\n defaultValue={selectedCompany}\n />\n \n
\n ) : (\n <>>\n )}\n\n {((loginUserDetails.is_partner === \"0\" &&\n selectedCompany.value !== \"All\") ||\n companyid ||\n loginUserDetails.is_partner === \"1\") &&\n !isFilterShow && (\n \n \n\n \n \n {\"Page : \"}\n \n {pageNumber}\n \n \n\n {\n let countPageNumber = pageNumber - 1;\n setPageNumber(countPageNumber);\n if (loginUserDetails?.is_partner === \"1\") {\n FetchCompanyTickets(null, 100, countPageNumber, 100);\n } else {\n FetchCompanyTickets(\n companyid || selectedCompany?.value,\n 100,\n countPageNumber,\n 100\n );\n }\n }}\n disabled={!(pageNumber > 1)}\n >\n \n Previous\n \n\n {\n let countPageNumber = pageNumber + 1;\n setPageNumber(countPageNumber);\n if (loginUserDetails?.is_partner === \"1\") {\n FetchCompanyTickets(null, 100, countPageNumber, 100);\n } else {\n FetchCompanyTickets(\n companyid || selectedCompany?.value,\n 100,\n countPageNumber,\n 100\n );\n }\n }}\n disabled={!(allTickets?.length > 99)}\n >\n Next\n \n \n \n
\n )}\n\n \n \n \n \n {isFilterShow && (\n <>\n \n >\n )}\n
\n \n >\n );\n};\n\nexport default Tickets;\n\nexport const CustomReactSelect = ({\n label,\n options,\n GetSelectedOption,\n rest,\n isMultipleSelect,\n}) => {\n let isOptionsContainsIdAndLable =\n options.length > 0\n ? Object.keys(options[0]).includes(\"id\") ||\n Object.keys(options[0]).includes(\"label\")\n ? true\n : false\n : false;\n options = !isOptionsContainsIdAndLable\n ? [...options].map((option, index) => {\n return { id: index, label: option };\n })\n : [...options];\n\n return (\n <>\n
\n \n \n {\n return {\n value: option?.id,\n label: `${option?.label}`,\n };\n })}\n isMulti={isMultipleSelect}\n isSearchable={true}\n onChange={(selectedOption) => {\n if (GetSelectedOption) {\n GetSelectedOption(selectedOption);\n }\n }}\n />\n \n
\n >\n );\n};\n\n// IN FILTER DATA ID IS VALUE SO YOU HAVE TO DEFINE REAL VALUE IN ID PROPERTY. SEE EXAMPLE IN created_at\nconst filterData = [\n {\n filterName: \"status\",\n filterOptions: statusData,\n GetSelectedOption: (e) => {},\n isMultipleSelect: true,\n defaultValue: {},\n },\n {\n filterName: \"priority\",\n filterOptions: priorityData,\n GetSelectedOption: (e) => {},\n isMultipleSelect: true,\n defaultValue: {},\n },\n {\n filterName: \"created_at\",\n filterOptions: [\n { id: 0, label: \"Today\" },\n { id: 1, label: \"Yesterday\" },\n { id: 7, label: \"This Week\" },\n { id: 8, label: \" Last 7 Days\" },\n { id: 31, label: \"This Month\" },\n { id: 30, label: \"Last 30 Days\" },\n { id: 60, label: \"Last 60 Days\" },\n { id: 180, label: \"Last 180 Days\" },\n ],\n GetSelectedOption: (e) => {},\n isMultipleSelect: true,\n defaultValue: {},\n },\n // {\n // filterName: \"updated_at\",\n // filterOptions: [\n // { id: 0, label: \"Today\" },\n // { id: 1, label: \"Yesterday\" },\n // { id: 7, label: \"This Week\" },\n // { id: 8, label: \" Last 7 Days\" },\n // { id: 31, label: \"This Month\" },\n // { id: 30, label: \"Last 30 Days\" },\n // { id: 60, label: \"Last 60 Days\" },\n // { id: 180, label: \"Last 180 Days\" },\n // ],\n // GetSelectedOption: (e) => {},\n // isMultipleSelect: true,\n // defaultValue: {},\n // },\n {\n filterName: \"due_by\",\n filterOptions: [\n { id: 0, label: \"Today\" },\n { id: 1, label: \"Yesterday\" },\n { id: 7, label: \"This Week\" },\n { id: 8, label: \" Last 7 Days\" },\n { id: 31, label: \"This Month\" },\n { id: 30, label: \"Last 30 Days\" },\n { id: 60, label: \"Last 60 Days\" },\n { id: 180, label: \"Last 180 Days\" },\n ],\n GetSelectedOption: (e) => {},\n isMultipleSelect: true,\n defaultValue: {},\n },\n // {\n // filterName: \"fr_due_by\",\n // filterOptions: [\n // { id: 0, label: \"Today\" },\n // { id: 1, label: \"Yesterday\" },\n // { id: 7, label: \"This Week\" },\n // { id: 8, label: \" Last 7 Days\" },\n // { id: 31, label: \"This Month\" },\n // { id: 30, label: \"Last 30 Days\" },\n // { id: 60, label: \"Last 60 Days\" },\n // { id: 180, label: \"Last 180 Days\" },\n // ],\n // GetSelectedOption: (e) => {},\n // isMultipleSelect: true,\n // defaultValue: {},\n // },\n {\n filterName: \"type\",\n filterOptions: [\"Question\", \"Problem\", \"Task\"].map((item) => {\n return { id: item, label: item };\n }),\n GetSelectedOption: (e) => {},\n isMultipleSelect: true,\n defaultValue: {},\n },\n // {\n // filterName: \"source\",\n // filterOptions: [\n // { id: 1, label: \"Email\" },\n // { id: 2, label: \"Portal\" },\n // { id: 3, label: \"Phone\" },\n // { id: 7, label: \"Chat\" },\n // { id: 9, label: \"Feedback Widget\" },\n // { id: 10, label: \"Outbound Email\" },\n // ],\n // GetSelectedOption: (e) => {},\n // isMultipleSelect: true,\n // defaultValue: {},\n // },\n];\nconst TicketsFilter = ({\n HeaderTitle,\n setFilterValue,\n FetchFilterAPI,\n FetchData,\n setCloseButton,\n}) => {\n const [Value, setValue] = useState({});\n\n useEffect(() => {\n setFilterValue(Value);\n }, [Value]);\n\n // const ResetFunction = () => {\n // FetchData();\n // setValue({});\n // setFilterValue({});\n // sessionStorage.removeItem(\"selected_status\");\n // };\n return (\n <>\n
\n
\n \n {\n setCloseButton(false);\n }}\n >\n \n {/* Close */}\n \n \n\n \n \n \n {filterData.map((filterItem) => {\n return (\n <>\n {\n setValue({ ...Value, [filterItem.filterName]: e });\n }}\n />\n >\n );\n })}\n \n
\n \n \n \n Filter\n \n \n
\n \n \n \n >\n );\n};\n","import React, { useState } from \"react\";\nimport { Redirect } from \"react-router-dom\";\n\nconst withRedirect = (OriginalComponent) => {\n const UpdatedComponent = (props) => {\n // State\n const [redirect, setRedirect] = useState(false);\n const [redirectUrl, setRedirectUrl] = useState(\"/\");\n if (redirect) {\n return
;\n }\n\n return
;\n };\n\n return UpdatedComponent;\n};\n\nexport default withRedirect;\n"],"sourceRoot":""}