{"version":3,"sources":["assets/imgs/iconos/ico_user.png","assets/imgs/no-image.jpeg","extensions/string.extension.js","store/actions.js","store/reducers.js","store/configureStore.js","hooks/blockingHook.js","hooks/authHook.js","services/service.js","Interceptor.js","components/CustonHooks/inputFormHook.js","components/Helpers/generalUpload.js","services/helper.service.js","services/backoffice/userProfile.service.js","components/Helpers/selectUsers.js","services/message.service.js","services/storage.service.js","services/metaPixel.service.js","services/user.service.js","services/backend.service.js","components/header/header.notification.js","components/CustonHooks/imgCache.js","components/header/header.js","components/blockScreen/blockScreen.js","hooks/shouldShowPrompt.js","hooks/iosInstallPrompt.js","hooks/webInstallPrompt.js","components/pwa/installPWA.js","services/contactUs.service.js","components/modalContact/modalContact.js","services/chat.service.js","components/wrapperChats/searches.js","components/wrapperChats/ttlsChats.js","components/wrapperChats/avatarChats.js","components/wrapperChats/listChats.js","components/wrapperChats/newGroup.js","components/wrapperChats/listGroups.js","components/wrapperChats/listContact.js","components/wrapperChats/itemConversation.js","components/wrapperChats/chatConversations.js","components/wrapperChats/profileChat.js","components/wrapperChats/wrapperChats.js","components/footer/footerHome.js","components/layouts.js","components/protectedRoute.js","hooks/cart.hook.js","services/ecommerce.service.js","pages/discount/orderDetail.js","services/companyHoliday.service.js","components/sliderHome/sliderHome.js","services/companyPost.service.js","services/courseView.service.js","services/audience.service.js","components/cardMain/cardMain.js","services/rewards.service.js","components/rewardsHome/rewardsHome.js","pages/home/home.js","pages/login/recoverPassword.js","components/footer/footerFull.js","pages/login/login.js","pages/register/registerAside.js","pages/register/registerHeader.js","pages/register/register.js","components/legals/legals.js","pages/register/noticeMessage.js","pages/register/socialMedia.js","pages/register/registerFooter.js","pages/register/VerifyAccount.js","pages/register/membership.js","pages/register/membershipPayment.js","services/surveyUserProfile.service.js","components/sideAdvertising/sideAdvertising.js","pages/surveys/listSurveys.js","services/surveyQuestion.service.js","services/surveyUserProfileAnswer.service.js","services/surveyScale.service.js","enums/surveyTypes.js","pages/surveys/answersSurvey.js","pages/surveys/boxSurveys.js","components/advertisingSection/advertisingSection.js","pages/surveys/surveys.js","services/acknowledgment.service.js","pages/board/acknowledgementModal.js","components/CustonHooks/FormHook.js","components/Helpers/SelectCustom.js","pages/board/formAcknowledgement.js","pages/board/acknowledgementRanking.js","pages/board/boardText.js","pages/board/board.js","components/hubItemProvider/hubItemProvider.js","components/itemPurchaseDetails/itemPurchaseDetails.js","components/itemPurchase/itemPurchase.js","components/boxPayMethod/itemPayMethod/itemPayMethod.js","components/boxPayMethod/boxPayMethod.js","components/asidePurchase/asidePurchase.js","components/toolDiscount/toolDiscount.js","pages/discount/discount.js","services/directoryService.service.js","services/categoryService.service.js","pages/directory/itemDirectory.js","services/backoffice/companyCustomize.service.js","pages/directory/directory.js","pages/ambassador/itemSocial.js","pages/ambassador/ambassador.js","pages/prideMusic/itemSocial.js","components/GenericSection/prideMusicCard.js","services/genericSection.service.js","pages/prideMusic/prideMusic.js","pages/interestGroup/itemSocial.js","components/GenericSection/interestGroupCard.js","pages/interestGroup/interestGroup.js","pages/directory/itemSocial.js","pages/directory/rating.js","pages/directory/detailsDirectory.js","components/providerImage/providerImage.js","components/providerVideo/providerVideo.js","services/googleAds.service.js","components/itemProduct/itemProduct.js","pages/discount/provider/provider.js","pages/discount/paymentCanceled.js","pages/discount/shoppingHistory/purchasedItemDetails/index.js","pages/discount/shoppingHistory/purchasedItem/index.js","pages/discount/shoppingHistory/pagination.js","pages/discount/shoppingHistory/shoppingHistory.js","pages/discount/cashPayment/cashPayment.js","services/companyEventType.service.js","backoffice/control/searchCompEventType.js","backoffice/components/titleAdmin/titleAdmin.js","backoffice/components/headingAdmin/headingAdmin.js","backoffice/control/adminCompanyEventType.js","pages/rewards/itemRewardCupon.js","pages/rewards/wrapperCategoriesRewards.js","pages/rewards/headRewards.js","pages/rewards/rewards.js","pages/rewards/redemptionHistory.js","pages/rewards/accountStatus.js","services/postulantJob.service.js","components/userActivity/userActivity.js","services/genderIdentity.service.js","pages/profile/preferences.js","pages/profile/pending.js","pages/profile/profile.js","services/compayPostView.service.js","pages/companyPost/itemMorePost.js","pages/companyPost/asideOurCompany.js","pages/blogCompany/blogCompanyPrimary.js","pages/companyPost/itemMorePostSecondary.js","pages/companyPost/asideBlogCompanySecondary.js","pages/blogCompany/blogCompanySecondary.js","pages/companyPost/itemMorePostGallery.js","pages/companyPost/asideBlogCompanyGallery.js","pages/blogCompany/blogGallery.js","components/companyPost/companyPostAttachment.js","pages/companyPost/editorCommentsBox.js","pages/companyPost/itemsComment.js","services/companyPostComment.service.js","pages/companyPost/commentsBox.js","enums/companyPostCategoryTypes.js","pages/companyPost/companyPostPrimary.js","pages/companyPost/companyPostSecondary.js","pages/caringCommunity/itemCaring.js","pages/caringCommunity/caringCommunity.js","pages/jobBank/itemJobPublished.js","services/jobBank.service.js","pages/jobBank/asideCategoriesJobs.js","pages/jobBank/jobBankHeader.js","pages/jobBank/jobBank.js","pages/jobBank/applicantForm.js","pages/jobBank/detailsJobs.js","pages/jobBank/applicantSent.js","pages/jobBank/listNewJobs.js","pages/jobBank/candidatesNominated.js","pages/jobBank/jobsPublished.js","utils/ValidacionMail.js","pages/jobBank/FormJob.js","pages/jobBank/FormSection.js","pages/jobBank/registerJobs.js","pages/jobBank/FormEditJob.js","pages/jobBank/FormEditSectionJob.js","pages/jobBank/editJob.js","backoffice/components/inputFile/inputFile.js","pages/courseAdmin/headerCourse.js","pages/courseAdmin/eventCardInformative.js","services/ticketsEvent.service.js","pages/courseAdmin/eventForm.js","pages/courseAdmin/boxListCourse.js","pages/courseAdmin/boxTickets.js","pages/courseAdmin/courseView.js","pages/courseAdmin/eventApproveModal.js","pages/courseAdmin/eventApprove.js","pages/companyPost/companyGallery.js","pages/login/resetPassword.js","services/helpContact.service.js","pages/help/help.js","pages/audience/cardAudience.js","pages/audience/listOldItems.js","pages/audience/listItems.js","pages/audience/boxListAudience.js","pages/audience/lastItemAudience.js","pages/audience/audience.js","hooks/useWindowViewport.js","pages/ecommerce/boxListEcommerce.js","pages/ecommerce/ecommerce.js","pages/registerServices/formPersonal.js","pages/registerServices/formAdditional.js","services/payment.service.js","services/newAccountService.service.js","pages/registerServices/formCheckoutPay.js","pages/registerServices/messageFinish.js","services/directoryType.service.js","pages/registerServices/registerServices.js","pages/registerServices/cardTokenizationResult.js","pages/register/successfulReg.js","components/companyPost/searchGalleries.js","pages/companyPost/adminGallery.js","services/attendee.service.js","backoffice/components/checkbox/checkbox.js","components/Helpers/audienceUsers.js","services/course.service.js","enums/eventTypes.js","backoffice/components/inputAdd/inputAdd.js","utils/ConvertBase64ToBlob.js","components/courseAdmin/searchCourse.js","backoffice/course/adminCourse.js","backoffice/users/users.js","backoffice/components/cardModule/cardModule.js","backoffice/admin/admin.js","backoffice/users/userDetails.js","backoffice/users/bulkLoad.js","services/survey.service.js","backoffice/surveyAdmin/searchSurvey.js","backoffice/surveyAdmin/adminSurvey.js","backoffice/surveyScale/searchSurveyScale.js","backoffice/surveyScale/adminSurveyScale.js","backoffice/surveyScale/searchSurveyScaleAnswer.js","backoffice/surveyScale/editSurveyScaleAnswer.js","backoffice/surveyScale/editSurveyScale.js","backoffice/surveyScale/detailsSurveyScale.js","backoffice/adminBoard/searchBoard.js","backoffice/adminBoard/adminBoard.js","services/surveyAnswerType.service.js","backoffice/surveyAdmin/editAnswerType.js","backoffice/surveyAdmin/searchAnswerTypes.js","backoffice/surveyAdmin/adminAnswerTypes.js","backoffice/surveyAdmin/searchQuestion.js","services/surveyAnswerConfig.service.js","backoffice/surveyAdmin/searchAnswers.js","backoffice/surveyAdmin/answer.js","backoffice/components/alertResult.js","backoffice/surveyAdmin/editQuestionAnswer.js","backoffice/surveyAdmin/editQuestion.js","backoffice/surveyAdmin/editSurvey.js","backoffice/surveyAdmin/detailsSurvey.js","backoffice/surveyAdmin/surveyChart.js","backoffice/surveyAdmin/surveyAnswerList.js","backoffice/surveyAdmin/surveyResults.js","services/deparment.service.js","backoffice/control/searchDepartment.js","backoffice/control/adminDeparment.js","services/branchOffice.service.js","backoffice/control/branchOffice/searchBranchOffice.js","backoffice/control/branchOffice/branchOffice.js","services/jobRole.service.js","backoffice/control/jobRoles/editJobRole.js","backoffice/control/jobRoles/searchJobRoles.js","backoffice/control/jobRoles/adminJobRole.js","backoffice/control/notice/listNotice.js","backoffice/control/notice/editNotice.js","backoffice/control/notice/notice.js","backoffice/control/companyCustomize/companyCustomize.js","backoffice/control/control.js","services/acknowledgmentLadder.service.js","backoffice/adminBoard/editLevel.js","backoffice/adminBoard/searchLevel.js","backoffice/adminBoard/editCategory.js","backoffice/adminBoard/detailsCategory.js","backoffice/ourCompanyAdmin/editor.js","backoffice/ourCompanyAdmin/searchCompanyPost.js","backoffice/ourCompanyAdmin/galleries/adminGallery.js","backoffice/ourCompanyAdmin/companyPost.js","services/backoffice/rewardProductFilter.service.js","backoffice/rewardProductFilter/searchProductFilter.js","backoffice/rewardProductFilter/rewardProductFilter.js","backoffice/rewardProductFilter/editProductFilter.js","backoffice/rewardProductFilter/detailsProductFilter.js","services/adminAudience.service.js","backoffice/audience/searchAdminAudience.js","backoffice/audience/adminAudience.js","backoffice/genericSection/searchAdminGenericSection.js","backoffice/genericSection/searchAdminContactInfos.js","backoffice/genericSection/adminGenericSection.js","control/header.js","control/operator.js","services/control/rewardProduct.service.js","control/reward/adminReward.js","control/reward/editReward.js","control/reward/detailsReward.js","services/control/rewardCoupon.service.js","control/reward/bulkLoadReward.js","services/control/rewardCategory.service.js","control/reward/adminRewardCategory.js","control/reward/editRewardCategory.js","control/reward/detailsRewardCategory.js","services/control/rewardProvider.service.js","control/reward/adminRewardProvider.js","control/reward/editRewardProvider.js","control/reward/detailsRewardProvider.js","services/control/company.service.js","control/company/searchCompany.js","control/company/adminCompany.js","control/company/editCompany.js","control/company/detailsCompany.js","control/reward/controlReward.js","App.js","registerServiceWorker.js","index.js","assets/imgs/R_C.png","assets/imgs/pdf.png","assets/imgs/red-pay-logo.png","assets/imgs/iconos/ico_recompensas.png","assets/imgs/icon-images.png","assets/imgs/imgInfografia.jpg","assets/imgs/video-yt.jpg","assets/imgs/ico_ticket.svg","assets/imgs/contact_us.jpg","assets/imgs/banner-bolsatrabajo.png","assets/imgs/red-pay.png","assets/imgs/company_Holiday.jpg","assets/imgs/chrome.png","assets/imgs/landing/bglogin.svg","assets/imgs/landing/scr.gif","assets/imgs/landing/icon_play.png","assets/imgs/landing/pmusic01.png","assets/imgs/landing/pmusic01.gif","assets/imgs/landing/pmusic02.png","assets/imgs/landing/pmusic02.gif","assets/imgs/landing/pmusic03.png","assets/imgs/landing/pmusic03.gif","assets/imgs/landing/rewards-01.png","assets/imgs/landing/rewards-02.png","assets/imgs/landing/rewards-03.png","assets/imgs/landing/rewards-04.png","assets/imgs/landing/EMPRENDEDOR01.png","assets/imgs/landing/EMPRENDEDOR02.png","assets/imgs/landing/EMPRENDEDOR03.png","assets/imgs/register/imgBg_register.png","assets/imgs/bg-section.jpg","assets/imgs/banner-beneficios.jpeg","assets/imgs/banner-music.jpg","assets/imgs/banner-grupos.png","assets/imgs/banner-rewards.png","assets/imgs/excel.png","assets/imgs/word.png","assets/imgs/icon-yt.png","assets/imgs/palomitas.png","assets/imgs/banner_help.png","assets/imgs/dashboard/bg_pridetalks.svg","assets/imgs/visa_logo.png","assets/imgs/mastercard_logo.png","assets/imgs/amex_logo.png","assets/imgs/cheque.png","assets/imgs/bg_package.png","assets/imgs/bg_package_lt.png"],"names":["module","exports","String","prototype","removeAccents","this","normalize","replace","setCartQuantity","payload","type","setUserSettings","initState","userSettings","companyId","roleName","countrySetting","cultureCode","isoCurrency","currency","cartQuantity","blocking","calendarStrings","lastDay","sameDay","nextDay","lastWeek","nextWeek","sameElse","accountSettings","activateRegistration","productSubscription","refreshingToken","createStore","state","arguments","length","undefined","action","applyMiddleware","thunk","stack","requestCounter","removeFromStack","requestId","filter","item","url","setBlocking","isBlocking","store","getState","dispatch","validateToken","token","access","refresh","window","location","href","currentDate","Date","refreshAt","expireAt","refreshToken","async","reload","callApi","SkipValidationToken","NoBlocking","RefreshToken","then","result","responseCode","setToken","data","setMinutes","getMinutes","expiresIn","localStorage","JSON","stringify","userId","removeItem","getToken","parse","fetchIntercept","register","request","config","isGoogleAnalytics","includes","headers","Authorization","urlRequest","push","id","addToStack","requestError","error","Promise","reject","response","status","responseError","method","body","options","fetch","handleResponse","catch","handleError","callApiFileStorage","isFileResponse","callApiFile","contentType","callApiNoBlocking","blob","text","e","ok","_data","msg","statusText","console","log","message","useInputSingleForm","callback","initialValues","inputs","setInputs","useState","handleSubmit","event","preventDefault","handleInputChange","persist","target","name","checked","value","GeneralUpload","props","files","setFiles","isMultiple","IsMultipe","React","createElement","FormGroup","className","Label","for","TitleLabel","FaCloudUploadAlt","Input","onChange","fileList","targetfiles","i","file","size","process","swal","icon","handleOnChangeFiles","multiple","accept","required","disabled","helperService","getGenericCatalog","alert","responseMessage","userProfileService","getAll","pageIndex","pageCount","filterBy","orderBy","ascending","totalPages","list","getById","create","param","Swal","fire","edit","uploadMigrationFile","formData","FormData","append","getUsersByFilter","params","Departments","JobRoleId","BranchOfficeId","getCatalogs","editAdditionalEmail","getUsersByFilterPage","PageIndex","PageCount","VerifyAccount","SelectUsers","_ref","selectUser","title","usersFilter","configInit","setConfigInit","departaments","setDepartaments","userSelec","setUserSelec","dataUsers","setDataUsers","totalCount","usersNotInFilter","setUsersNotInFilter","dataAllUsers","setDataAllUsers","setPageCount","jobRoles","setJobRoles","handleOnSearch","model","map","join","parseInt","NotInList","start","end","user","userProfileId","totalPa","Math","trunc","Number","isInteger","pageitems","slice","EventFilter","datauser","JointUser","setCheck","userData","usersAll","itemAll","find","check","useEffect","label","departmentName","departmentId","jobRoleId","getCatalogJobRole","Row","gutter","Col","xs","md","sm","Form","Item","htmlFor","MultiSelect","overrideStrings","labelledBy","Select","defaultValue","Option","key","Button","htmlType","onClick","FaChevronRight","Table","hover","localUsers","users","_data$department2","middleName","lastName","firstName","department","_data$department3","_item$department","employeeNo","handleSelectUser","_data$department","x","colSpan","Pagination","prev","last","next","first","ellipsis","maxButtons","boundaryLinks","pages","activePage","onSelect","page","messageService","getMessage","getMessageById","createMessage","f","updateDraftMessage","updateMessage","deleteMessage","createWelcomeMessage","getUnreadCount","getMessageByGroup","getGroupMessageById","MessageId","PageTotal","storageService","uploadFiles","Id","Des","deleteStorage","handleRsponse","addStorage","updateStorage","metaPixelService","trackEvent","currentUrl","fbq","pixelId","pixelData","saveEvent","access_token","customEvent","simpleEvent","testCode","test_event_code","userService","login","logout","forgotPassword","resetPassword","editProfile","ProfileImage","GenderIdentityId","GenderIdentityFlag","nickname","trim","additionalEmail","Notification","Preferences","Mobile","updateStyle","validateEmailAccount","registerPixelUserInfo","RegisterPixelUserInfo","client_user_agent","navigator","userAgent","pixelUserInfo","pixelCustomData","content_name","setTimeout","verifyAccount","backendService","widgets","userProfile","userProfileActivity","active","GetNotificationData","CountNotificationUser","getCompanyCustomize","sendNotification","items","vibrate","tag","requireInteraction","serviceWorker","ready","userProfileEventTypeNotificationId","targetId","showNotification","companyEventTypeNotificationMessage","self","addEventListener","notification","close","waitUntil","clients","matchAll","clientList","client","focus","openWindow","ImgCache","Object","assign","src","toString","alt","Header","_notificationInfo$not","_notificationInfo$not2","_notificationInfo$not3","_notificationInfo$not4","_notificationInfo$not5","_notificationInfo$not6","_notificationInfo$not7","_notificationInfo$not8","windowDimensions","messages","history","useHistory","useSelector","notificationInfo","setNotificationInfo","notificationInfoData","companyLogo","setCompanyLogo","connection","setConnection","dropdownOpen","setDropdownOpen","toggle","prevState","performance","navigation","requestPermission","dataConsent","GetnotificationApi","ShowPush","ShowNotif","pathname","setPathname","useLocation","urls","activeLink","setActiveLink","getCurrentRoute","visible","setVisible","setWidgets","surveyWidget","messageWidget","rewardWidget","courseWidget","providerWidget","logoCrls","on","listaEventos","date","setDate","getDate","expirationDays","expirationDate","HubConnectionBuilder","withUrl","withAutomaticReconnect","build","profile","setProfileInfo","getProfileInfo","visibleMenu","setVisibleMenu","rel","FaFacebookF","FaInstagram","FaXTwitter","FaYoutube","FaTiktok","Link","to","handleMenu","IoMdMenu","Dropdown","noCaret","as","quantity","Tooltip","placement","trigger","FacebookShareButton","FaFacebook","TwitterShareButton","WhatsappShareButton","FaWhatsapp","LinkedinShareButton","FaLinkedin","Alert","color","isOpen","onDismiss","InputGroup","readOnly","InputGroupText","clipboard","writeText","FaCopy","Fragment","index","link","FaBellSlash","genderIdentityFlag","urlProfileImage","reward","miPerfil","Tag","Menu","style","document","getElementsByTagName","removeChild","FaSignOutAlt","BlockScreen","Modal","width","height","display","justifyContent","alignItems","paddingRight","border","setInstallPromptSeenToday","promptName","today","moment","toISOString","setItem","getUserShouldBePromptedToInstall","daysToWaitBeforePromptingAgain","lastPrompt","getItem","getInstallPromptLastSeenAt","daysSinceLastPrompt","diff","isNaN","useShouldShowPrompt","userShouldBePromptedToInstall","setUserShouldBePromptedToInstall","handleUserSeeingInstallPrompt","isIOS","standalone","ua","isIPad","match","isIPhone","useIosInstallPrompt","useWebInstallPrompt","installPromptEvent","setInstallPromptEvent","beforeInstallPromptHandler","removeEventListener","handleInstallDeclined","handleInstallAccepted","prompt","userChoice","choice","outcome","InstallPWA","iosInstallPrompt","handleIOSInstallDeclined","webInstallPrompt","handleWebInstallDeclined","handleWebInstallAccepted","centered","Card","borderTopRightRadius","borderTopLeftRadius","backgroundColor","marginTop","CardBody","CardTitle","CardText","margin","borderRadius","padding","contactUsService","sendContactMessage","ModalContact","TextArea","form","useForm","values","useWatch","submittable","setSubmittable","openModal","setOpenModal","contact","setContact","subject","email","textMessage","validateFields","validateOnly","showContact","open","imgContactUS","layout","autoComplete","rules","min","rows","Space","resetFields","submitMyForm","shape","CloseOutlined","chatService","sendMessage","chatMessage","getContacts","getContactsOpt","offset","limit","contacts","activeContacts","hasMore","getChats","getMessages","receiverId","dateTime","updateRead","managementGroup","group","getGroups","contactStatus","contactId","blockedContact","contactUnlocked","Searches","placeHolder","handleSearch","placeholder","BsSearch","TtlsChats","AvatarChats","img","titleImg","flagClass","ListChats","showChat","chatNotification","setNotifications","chats","setChats","chatsSearch","setChatsSearch","unread","keys","filteredChat","image","filteredChats","unshift","toUpperCase","chatFiltered","contactsFiltered","identityFlagName","Moment","format","lastMessageDate","NewGroup","isOpenGroup","lastOpenGroup","updateGroup","setContacts","contactsSearch","setContactsSearch","setForm","infoGroupSec","secInfoGroupSec","findContact","setFindContact","buttonRef","useRef","sec","handelForm","URL","createObjectURL","Image","handleCheckbox","1","aria-describedby","2","contactFiltered","urlImage","ref","onSubmit","current","Name","Contacts","ExpirationDate","ListGroups","groups","setGroups","groupsSearch","setGroupsSearch","setUpdateGroup","openGroup","setOpenGroup","handleUpdateGroup","BsPersonAdd","groupFiltered","groupsFiltered","chat","handleOpenChat","fOpenGroup","ListContact","blockedContacts","setBlockedContacts","setOffset","setHasMore","isLoading","setIsLoading","loadContacts","useCallback","prevContacts","prevOffset","observer","lastContactRef","node","disconnect","IntersectionObserver","entries","isIntersecting","observe","flag","openBlocked","setOpenBlocked","handleOpenBlocked","FaTimesCircle","filteredContacts","isLastContact","FaCommentDots","paddingBottom","BsChevronLeft","ItemConversation","source","author","checkMnj","chatMnj","ChatConversations","currentChat","newMessageReceived","openChat","setMessages","newMessage","setNewMessage","setDateTime","disabledHasMore","setDisabledHasMore","blockedChat","setBlockedChat","inputElementRef","at","msgExist","some","messageId","isSender","messagesUnread","m","timelineRef","byMe","toggleUserBlocked","direction","DropdownToggle","FaEllipsisV","DropdownMenu","DropdownItem","InfiniteScroll","dataLength","loadMore","flexDirection","inverse","loader","scrollableTarget","senderName","locked","scrollTo","scrollHeight","receiver","FaPaperPlane","ProfileChat","backgroundImage","data-toggle","aria-haspopup","aria-expanded","aria-labelledby","WrapperChats","activeSec","setActiveSec","setOpenChat","icoOpen","setIcoOpen","btnMenu","setBtnMenu","showNavbar","setShowNavbar","funtMenu","setChat","notifications","setNewMessageReceived","setChatNotification","conversationNotification","setConversationNotification","chatRef","selectedChat","receiveMessage","updateNotifications","notifyReading","timestamp","floor","now","toogleOpenChat","$","toggleClass","noScroll","BsArrowsAngleContract","BsArrowsAngleExpand","3","4","5","FaUsers","FaBook","FooterHome","LayoutFull","useDispatch","activeMenu","setStateMenu","activeBtn","setStateBtn","MyFun","setWindowDimensions","innerWidth","handleResize","sampleLocation","children","LayoutLess","customizeValues","CompanyLogo","LayoutOperator","collapsed","setCollapsed","setActiveMenu","currentRoute","setCurrentRoute","currentSubMenu","setCurrentSubmenu","toggleMenuMobile","dataRoutes","routeName","parent","AiFillSetting","LogoCompany","FaChevronLeft","FaBars","BiBuilding","IoBusiness","AiFillDatabase","collapsedStorage","route","toggleCollapsed","defaultOpenKeys","selectedKeys","mode","inlineCollapsed","closeSidenav","LayoutBackoffice","surveyId","useParams","setColor","gap","CiMenuBurger","customValues","primaryColor","innerHTML","secondaryColor","appendChild","setCustom","AiOutlineRight","AiOutlineLeft","ProtectedRoute","component","Component","allowedRoles","rest","isAuthorized","setIsAuthorized","userRole","setUserRole","aspNetRoleName","role","toLowerCase","Route","render","Redirect","cartHook","assembleCart","isCaringCommunity","setCartName","cartName","initialCart","setQuantity","getCart","addItem","product","provider","cpride","ProductId","productId","Price","productPrice","Quantity","Code","productCode","UrlImage","urlLogoClrs","Descripcion","description","ProviderId","providerId","Total","foundProvider","cart","p","isNew","foundProduct","Items","itemProvider","ProviderName","Logo","total","onChangeQuantity","deleteItem","deleteItemDetail","getItems","itemtemp","ProductPrice","Cant","clean","ecommerceService","getProviders","categoryId","getProviderProducts","CompanyProducts","getPaymentMethods","payOrder","getPurchaseOrder","getPurchaseOrderDetail","downloadSaleAsPDF","require","saveAs","payMembership","OrderDetail","constructor","super","orderDetail","orderId","setState","productType","bind","componentWillMount","span","Result","subTitle","extra","orderNumber","connect","useCompanyHoliday","createCompanyHoliday","updateCompanyHoliday","deleteCompanyHoliday","getCompanyHolidays","getCompanyHolidayById","compayHolidayId","getCompanyHolidayWithFilesById","getCompanyHolidayFront","typeId","clickCountCompanyHoliday","companyHolidayId","handleCountResponse","SliderHome","sliderItems","setSliderItems","video","setVideo","temp","ch","imagePath","isVideo","iframe","videoPath","vidRef","modal","setModal","play","handleClickCount","itemKey","Splide","pagination","arrows","autoplay","rewind","perMove","perPage","rewindByDrag","speed","drag","SplideSlide","IoPlay","C_H","marginLeft","marginRight","dangerouslySetInnerHTML","__html","controls","preload","autoPlay","companyPostService","images","update","postType","deletet","getPostUsers","DepartmentId","getCompanyPostFilesById","companyPostId","getCompanyPostImagesById","getAllFront","dateFilter","getCompanyPostImagesByIdFront","getCompanyPostImagesPathByIdFront","getCompanyPostImagesPathById","getLastCompanyPostFront","postCategoryId","getLatest","getLatestGallery","courseViewService","getCourse","getFileById","entityId","entityTypeId","sequence","completeCourse","courseId","CourseId","getCourseComplete","GetUserProfileCourse","getLatestCourse","getCourseById","audienceService","getPending","getComplete","updateComplete","elements","getAudiceImageById","auditoriumId","getLastOrDefault","insertView","CardMain","listAudienceO","setListAudienceO","hoy","dayjs","_item$files$","path","Badge","conferenceDate","substring","FaPlay","rewardsService","rewardsFilterByDate","rewardsStatement","redemptionHistory","rewardProducts","redeemCoupon","couponUrl","click","rewardCategories","downloadCoupon","LatestRewardProducts","RewardsHome","setRewardProducts","Home","lastPost","setLastPost","directoryItems","setDirectoryItems","auditoriumItems","setAuditoriumItems","ourWorld","setOurWorld","lastCourse","setLastCourse","myModal","setMyModal","getWidthDimensions","_data$directoryInfoWi","auditoriumWidget","listSorted","sort","a","b","abs","directoryInfoWidget","getLatestPost","getOrWorld","listCourse","setDoodle","overlay","setOverlay","handleOverlay","RecoverPassword","toggleLogeo","account","setAccount","isRecovery","setisRecovery","isGranted","setisGranted","additionalEmailVal","setAdditionalEmailVal","isCorporateUser","setIsCorporateUser","CompanyId","IsRegistered","AdditionalEmail","row","lg","IoMail","validateAccount","FooterFull","AnioActual","fecha","getFullYear","LogoPrideCom","marginBottom","viewBox","d","Login","showLogeo","setShowLogeo","showPassword","setShowPassword","scrollTop","setScrollTop","btnmenu","setBtnmenu","toggleMenu","CargarLogeo","settings","dots","infinite","slidesToShow","slidesToScroll","centerPadding","autoplaySpeed","pauseOnHover","swipeToSlide","centerMode","responsive","breakpoint","visibleAlert","setVisibleAlert","plecaPrideMX","setPlecaPrideMX","handleScroll","scrollY","setPreload","WOW","live","init","defaultOptions","loop","animationData","LogoPrideJson","rendererSettings","preserveAspectRatio","bgLogin","RiHomeHeartFill","TypeAnimation","repeat","Infinity","username","password","verifica","IoKey","togglePassword","IoEyeOffOutline","IoEyeOutline","ImgScroll","IconPlay","Pmusic01","Pmusic01g","data-name","Pmusic02","Pmusic02g","Pmusic03","Pmusic03g","Slider","Rewards01","Rewards02","Rewards03","Rewards04","Emprendedor01","Emprendedor02","Emprendedor03","chrome","Lottie","RegisterAside","imgBg","RegisterHeader","subtitle","Register","referralToken","setUser","lastname","birthday","pronoun","validatePassword","setValidatePassword","oneCharacter","oneN","oneLetterL","oneLetterU","min8Characters","setCurrentDate","subtract","registerUser","CountryStateTypeId","MaritalStatusTypeId","NationalityTypeId","PostalCode","RFC","iniciales","fechanac","ReferralToken","gender","MiddleName","mobileConfirm","mobile","handleInputValue","onFinish","xl","DatePicker","picker","handleBirthday","_str","_date","showToday","onFocus","setFieldValue","disabledDate","pattern","RegExp","noSpace","test","Password","onBlur","IoCheckmarkCircle","dependencies","getFieldValue","validator","_","Error","resolve","Legals","NoticeMessage","success","cx","cy","r","fill","SocialMedia","RegisterFooter","verify","setVerify","UserId","search","split","backLink","Membership","userName","productName","PaymentMethodId","Products","MembershipPayment","FaHome","useSurveyUserProfile","createSurveyUserProfile","completeSurveyUserProfile","deleteSurveyUserProfile","getSurveysUserProfile","SideAdvertising","fade","adaptiveHeight","ListSurveys","surveys","onSelectSurvey","handleTempQuestions","surveyActive","setSurveyActive","survey","surveyUserProfileId","questionCount","calendar","endDate","useQuestion","createQuestion","updateQuestion","deleteQuestion","getQuestions","getFrontQuestions","getFrontQuestionsList","getQuestionAnswerList","questionId","useSurveyUserProfileAnswer","createSurveyUserProfileAnswer","updateSurveyUserProfileAnswer","deleteSurveyUserProfileAnswer","getSurveysUserProfileAnswer","getSurveysUserProfileAnswersByQuestionId","idQuestion","addSurveyMultimedia","SurveyAnswerConfigId","SurveyId","InputValues","getAnsweredByQuestionId","useSurveyScale","getSurveyScales","deleteSurveyScale","getSurveyScaleById","deleteSurveyScaleAnswer","getSurveyScaleAnswers","scaleId","createSurveyScaleAnswer","updateSurveyScaleAnswer","createSurveyScale","updateSurveyScale","getScaleAnswers","SurveyTypes","AnswersSurvey","question","setQuestionIndexSave","questionIndexSave","setLastSave","getQuestionIndex","setPreviousClick","previousClick","previous","questionIndex","userAnswer","setUserAnswer","answerData","setAnswersData","SelectedAnswerId","setSelectedAnswerId","SelectedValue","setSelectedValue","scaleAnswers","setScaleAnswers","answersSelected","setAnswersSelected","imagesToUpload","setImagesToUpload","getAnswers","surveyAnswerTypeId","getScaleAsnwers","surveyScaleId","surveyQuestionId","filterData","surveyAnswerConfigId","answers","selectedAnswerId","SurveyUserProfileAnswerId","surveyUserProfileAnswerId","SurveyUserProfileId","SurveyQuestionId","SelectedAnswerConfigId","Value","answerValue","_result$answers$","_result$answers$2","selectedAnswerConfigId","uploadImageAnswer","validFormats","isNotValid","Array","from","forEach","_userAnswer$SurveyUse","upd","isSurveyCompleted","nextStep","ins","step","stepAnswer","AnswerComponent","_answerData$","answerTypeId","answer","handleOptionChange","isImage","scope","scaleAnswer","sca","scaleValue","onSelectScale","alreadyExists","s","isScaleOptionChecked","BsCheckCircle","frameborder","handleTextChange","BoxSurveys","questions","lastSave","slider","slickGoTo","handleQuestionChange","questionSave","slickPrev","slickNext","findIndex","componentWillReceiveProps","nextProps","_this$props","_this$props$survey","_this$props2","_this$props2$survey","handleKeyDown","keyCode","beforeChange","swipe","GrClose","c","onKeyDown","AdvertisingSection","HolType","banner","setBanner","defaultBanner","setDefaultBanner","holyday","setHolyday","bannerItem","random","PictureCourse","Surveys","activeAsideSurvey","setStateAsideSurvey","AsidePurchaseBox","showTempQuestions","setShowTempQuestions","selectedSurvey","setSelectedSurvey","surveysData","setSurveysData","pendingSurveys","resolvedSurveys","getSurveys","BsThreeDots","resetBoxSurveys","addClass","FaCheck","modifiedDate","useAcknowledgment","createAcknowledgment","updateAcknowledgment","getAcknowledgments","getAcknowledgment","getAcknowledgmentsType","getAcknowledgmentUserProfile","createAcknowledgmentUserProfile","getUserProfileDestinataries","getAcknowledgmentUserProfileTop1","getUserProfileTop10","getAcknowledgmentUserModule","AcknowledgementModal","tabindex","isActive","data-dismiss","aria-label","setShow","aria-hidden","top10","count","useInputForm","handleInputFileChange","SelectCustom","_props$defaultOption","setItems","_props$controller","controller","getCatalog","selectName","handleOnChange","selectvalue","selectValue","defaultOption","valueField","textField","extraOption","FormAcknowledgement","acknowledgement","acknowledgmentTypeId","userProfileTo","destinataries","setDestinataries","cleanForm","onSave","destinatary","updateRanking","AcknowledgementRanking","setShowAcknowledgementModal","TextBoard","acknowledgements","setAcknowledgements","setIsActive","MyFunBoard","descritption","locale","validTo","Board","showAcknowledgementModal","setTop10","acknowledgmentUserProfile","setAcknowledgmentUserProfile","getUserProfile","getRanking","isActiveBoard","setActiveBoard","activeForm","setActiveForm","MyFormBoard","acknowledgment","logo","HubItemProvider","providersOptions","providersOption","providerLogo","ItemPurchaseDetails","toLocaleString","minimumFractionDigits","maximumFractionDigits","ItemPurchase","activeAccordion","setStateAccordion","activeChevron","setStateChevron","data-parent","itemDetail","ItemPayMethod","onCloseClick","onlyOneClick","setOnlyOneClick","paymentMethodId","urlLogo","BoxPayMethod","paymentMethods","setPaymentMethods","AsidePurchase","activeAside","setCart","setTotal","providerName","dangerMode","buttons","willDelete","LogRedPay","ToolDiscount","setStateAside","Discount","bannerBeneficios","directoryInfoService","getAllByCompany","statusId","endpoint","insertDirectory","getMyDirectory","updateDirectory","deleteDirectory","DirectoryInfoId","approveDirectory","rejectDirectory","setDirectoryScore","setDirectoryView","approveDirectoryGrace","PubliMax","DaysGrace","getSettingsUser","updateDirectoryReward","directoryInfoId","enableReward","getDirectoryLatest","categoryServiceService","getCategoryCatalog","getCategoryCatalogFilterByCompany","getSubCategoriesFilterByCategory","getSubCategoriesCatalogByCatId","ItemDirectory","_directoryItem$fullNa","_directoryItem$direct","_directoryItem$create","_directoryItem$locati","directoryItem","isAdmin","setdirectoryInfoToAuthorize","convertToArray","profileId","sectionOn","updateListP","updateListA","noPost","noDaysGrace","estrellas","setEstrellas","avrScore","setAvrScore","avrText","setAvrText","avrScoreA","setAvrScoreA","avrScoreB","setAvrScoreB","avrScoreC","setAvrScoreC","setEdit","editA","setEditA","editB","setEditB","editC","setEditC","isEval","setIsEval","evalA","setEvalA","evalB","setEvalB","evalC","setEvalC","activeBoxTooltip","setBoxTooltip","directoryRatings","directoryContacts","service","average","reduce","score","toFixed","serviceRating","directoryRatingTypeId","priceRating","qualityRating","uno","dos","tres","cuatro","cinco","infoType","averagefloor","userScore","userProfileAsp","directoryInfoStatusName","showCancelButton","confirmButtonColor","confirmButtonText","cancelButtonText","isConfirmed","creatorEmail","approveService","FaCheckCircle","dataToAuth","rejectService","isEnableRewards","ImgRecompensas","contactImage","itemImage","indice","fullName","isPay","directoryDescription","createUserName","categoryServiceName","subCategoryServiceName","companyCustomizeService","getByCompanyId","CompanyCustomizeId","CustomizeValues","CompanyLogoFile","showCloseButton","allowOutsideClick","allowEscapeKey","Directory","setSectionOn","dataCompany","setDataCompany","setIsAdmin","isFiltered","setIsFiltered","directoryInfo","setDirectoryInfo","directoryInfoToAuthorize","locationFilter","setLocationFilter","categoryFilter","setCategoryFilter","subCategoryFilter","setSubCategoryFilter","profileData","setProfileData","searchTerm","setSearchTerm","selectedFilter","setSelectedFilter","selectLocation","selectCategory","selectSubCategory","txtFilter","filteredDirectory","setFilteredDirectory","handleSelectFilter","subs","getDataCompany","getListos","locations","Set","categories","array","obj","updateFilterResult","directory","categoryServiceId","subCategoryServiceId","word","contactTypeId","contactValue","delayDebounceFn","em","fn","ln","db","zp","postalCode","ph","content_type","search_string","clearTimeout","object","NoPost","NoDaysGrace","FreePost","filterBlock","setFilterBlock","BsArrowRight","BsFilter","locationItem","categoryItem","categoryName","subCategoryItem","SubCategoryServiceId","subCategoryName","cleanFilter","handlFilterBlock","fSectionOn","toAuthorize","ItemSocial","tooltip","socialIcoName","Whisper","controlId","speaker","socialUrl","socialIco","Ambassador","contactTypeName","BsInstagram","BsFacebook","BsLinkedin","BsYoutube","BsLink","BsApple","BsSoundwave","BsTiktok","PrideMusicCard","imageUrl","genericContactInfo","contactTypes","mainContact","g","contactInfo","BsSpotify","BiWorld","useGenericSection","getGenericItemByCompanyAndSection","sectionId","getGenericItemByCompany","getGenericItemSectionsByCompany","getGenericItemContactTypes","createGenericSectionItem","genericItem","getGenericItemImageById","genericItemId","deleteContactInfo","createContactInfos","contactInfos","updateGenericSectionItem","PrideMusic","setData","loadData","newItems","bannerMusic","lastitem","pop","genericSectionItemId","overflow","renderTooltip","BiHelpCircle","InterestGroupCard","BiPhone","iconImage","InterestGroup","bannerGroups","tooltipOpen","setTooltipOpen","Rating","max","RatingItem","_ref2","colored","RatingDone","_ref3","range","DetailsDirectory","setDirectoryItem","setProfileId","phoneNumbers","setPhoneNumbers","setEmail","DirectoryId","isActiveDirectory","_data$Item$directoryC","_data$Item$directoryC2","_data$Item$directoryC3","phonesArrays","emailvalue","directoryInfoStatusId","_response$directoryCo","_response$directoryCo2","_response$directoryCo3","updateScore","rating","setScoreGroup","insertScore","validaUsuario","startsWith","FaMapMarkerAlt","FaPhone","itemSocial","directoryContactId","urlString","origin","FaEdit","BsChevronRight","FaSave","flex","Progress","variant","minWidth","textAlign","fontSize","ProviderImage","urlImageVideo","ProviderVideo","urlVideo","allow","allowfullscreen","googleAds","cartEvent","googleId","gtag","ItemProduct","toggleModal","imgEmpty","addPruchaseItem","button","closeOnEsc","timer","ModalBody","restrictions","Provider","providerProducts","products","info","PaymentCanceled","_PaymentCanceled","displayName","PurchasedItemDetails","subTotal","PurchasedItem","collapse","setCollapse","Collapse","details","download","itemTypeToComponent","ITEM_TYPES","PAGE","isDisabled","ELLIPSIS","FIRST_PAGE_LINK","PREVIOUS_PAGE_LINK","_ref4","NEXT_PAGE_LINK","_ref5","LAST_PAGE_LINK","_ref6","PaginatedPage","createUltimatePagination","ShoppingHistory","shoppingHistory","setShoppingHistory","setPage","currentPage","CashPayment","SuccessImg","companyEventTypeService","createCompanyActionType","updateCompanyActionType","getCompanyEventType","deletetCompanyEventType","getByEventId","eventId","getAllowedToAddressCompanyEventTypes","getByCompanyAndEventType","eventTypeName","SearchCompanyEventType","forwardRef","_dataGrid$map","dataGrid","setDataGrid","searchText","setSearchText","searchedColumn","setSearchedColumn","searchInput","getCompanyEventTypes","refreshDataGrid","useImperativeHandle","confirm","dataIndex","columnsEvents","fixed","filterDropdown","setSelectedKeys","clearFilters","stopPropagation","onPressEnter","SearchOutlined","handleReset","filterIcon","filtered","onFilter","record","onFilterDropdownOpenChange","_searchInput$current","select","Highlighter","highlightStyle","searchWords","autoEscape","textToHighlight","sorter","points","sortDirections","dataEvents","companyEventTypeId","eventType","eventTypeDesc","isRewarded","isNotification","audience","isAudienceAddressed","records","onNewUserRegistry","wrap","handleRowSelect","handleDelete","MySwal","FaTrash","columns","dataSource","triggerDesc","triggerAsc","cancelSort","emptyText","scroll","y","TitleAdmin","btnBack","HeadingAdmin","btnAdd","isDropdown","menuDropdown","btnDropdownName","menu","FaChevronDown","PlusCircleOutlined","AdminCompanyEventType","gridRef","showEdit","setShowEdit","errorReward","setErrorReward","errorNotification","setErrorNotification","companyEventType","CompanyEventTypeId","EventTypeId","IsRewarded","Reward","CompanyEventTypeNotificationId","IsNotification","allowedToAddressCompanyEventTypes","setAllowedToAddressCompanyEventTypes","Boolean","NotificationMessage","IsAudienceAddressed","OnNewUserRegistry","res","eventTypeId","gridItem","companyEventTypeNotificationId","notificationMessage","Active","ItemRewardCupon","btnSubmit","setBtnSubmit","rewardCategoryDescription","rewardProductFilterId","RewardProductFilterId","setCategoryActive","getRewardProducts","WrapperCategoriesRewards","rewardCategory","categoryActive","rewardCategoryId","urlIcon","HeadRewards","imagePoints","Rewards","setReward","setRewardCategory","RedemptionHistory","setRewardsFilterByDate","setRedemptionHistory","getRedemptionHistory","startDate","dateRange","productUrlImage","productTitle","poductDescription","rewardOrderUserProfileId","FaDownload","AccountStatus","setRewardsStatement","getRewardsStatement","columnsStatus","unix","dataStatus","concept","postulanteService","agregarPostulante","getPostulants","getCV","GetByUserId","verifyPostulant","jobId","approvePostulant","postulantId","companyName","rejectPostulant","UserActivity","activeTab","setActiveTab","userActivity","setUserActivity","userDirectry","setUserDirectory","userPostulant","setUserPostulant","Nav","tabs","NavItem","NavLink","TabContent","TabPane","tabId","isArray","createDate","dataDirectoryInfo","closeOnClickOutside","postulant","jobTitle","jobLocation","jobCategory","jobCompanyName","postulationDate","genderIdentityService","changePreference","setChangePreference","userNotification","setUserNotification","userEmailNotification","setUserEmailNotification","pref","setPreferences","EmailNotification","handleChange","originValues","setOriginValues","_props$profile$additi","preferences","emailNotification","load","Pending","asideShow","allClose","pending","setPending","Profile","setDisabled","statusGender","setStatusGender","changeImage","setChangeImage","selectedIdentity","setSelectedIdentity","setNickname","backupIdentity","setBackupIdentity","genderIdentityCatalog","setGenderIdentityCatalog","selectedGenderIdentityFlag","setSelectedGenderIdentityFlag","identityFlag","setIdentityFlag","btnImage","setBtnImage","inputClass","setInputClass","placeHolderText","setPlaceHolderText","handleDisabled","genderData","_data$additionalEmail","genderIdentityId","_profile$additionalEm","onGenderChange","onNickChange","setAsideshow","modalUser","setModalUser","toggleModalUser","MdOutlineEdit","jobRole","seniority","genderName","FaFlag","IoClose","companyPostViewService","InsertRead","DeleteReadPost","InsertLike","DeleteLikePost","getDateFilters","getByFilters","filterDate","getByMonthFilters","ItemMorePost","post","setCurrentFilter","setIsOpen","yearsCounting","setYearCounting","year","countingPostsByYear","counter","months","month","BiChevronDown","activeItem","filterMonthDate","selectActiveItem","ind","BiChevronRight","AsideOurCompany","filters","BlogCompanyPrimary","posts","setPosts","selectedPost","setSelectedPost","currentFilter","setFilter","getPosts","handleSelectPost","lastMonthConverted","publishDate","child","isRead","getPost","CompanyPostId","iconPath","lastMonth","getFilters","card","imageEmpty","bgGallery","goToGallery","ItemMorePostSecondary","BiMinus","BiPlus","BiChevronUp","AsideBlogCompanySecondary","BlogCompanySecondary","ItemMorePostGallery","getGallery","counterSelected","setCounterSelected","formattingDate","AsideBlogCompanyGallery","postGalleryId","setLastFiter","filterId","setFilterId","BlogGallery","gallery","setGallery","selectedGallery","setSelectedGallery","lastFiter","setImages","getCurrentImagesGallery","imageslist","thumbnail","dateLastFilter","IoArrowBackOutline","SlideshowLightbox","setCurrentGallerySelect","CompanyPostAttachment","setlocalStorage","getAttachments","fileName","IoIosAttach","IsDelete","EntityId","EntityTypeId","Sequence","storage","EditorCommentsBox","editorState","setEditorState","EditorState","createEmpty","blocks","convertToRaw","getCurrentContent","block","clickSave","Editor","onEditorStateChange","wrapperClassName","editorClassName","toolbarClassName","toolbar","ItemsComment","showAnswerComment","setShowAnswerComment","showParentAnswer","setShowParentAnswer","contenido","SubComment","dataArray","comment","profileUser","companyPostCommentId","handleAnswerComment","isReport","eliminar","report","comments","companyPostCommentService","newComment","newSubComment","reportComment","TypeId","IdPadre","IdHijo","getReportById","deleteComment","CommentsBox","bandera","updateCountComment","reportId","setBandera","setComments","getComment","err","SubcommentId","newSubComm","Comment","ReportComment","CommentId","SubCommentId","GetReportComment","arrayresult","DeleteComment","newComm","History","CompanyPostCategoryTypes","CompanyPostPrimary","postComment","setPostComment","commentBandera","setCommentBandera","postTotalLikes","setPostTotalLikes","showCommentBox","setShowCommentBox","sectionActive","setSectionActive","userComment","setUserComment","setcurrentFilter","totalComments","postLikes","postId","clearVariable","order","totalPost","like","totalLikes","formatDate","getMonth","getPostDateFilter","titleComponent","totalViews","handleOnUnLike","handleOnLike","CompanyPostCategoryId","isShow","handleCommentBox","CompanyPostSecondary","getProfile","activeView","setStateView","ItemCaring","CommunitiesData","setCommunitiesData","getCommunities","community","urlSite","CaringCommunity","allowFullScreen","ItemJobPublished","job","misEmpl","deleteJob","activateJob","jobPublished","publicationDate","mxnPesos","Intl","NumberFormat","companyImage","maxWidth","salary","createUser","JobBankService","getJobById","insertJob","updateJob","getCategories","getJobAll","occupationFilter","getJobsByUserId","GetJobsToApprove","authorizeJob","approve","getJobSections","insertJobSections","updateJobSections","AsideCategoriesJobs","setCategories","category","JobBankHeader","setFilters","searchPage","setTotalCount","bannerBolsaTrabajo","prefix","FaSearch","JobBank","jobs","setJobs","setPages","setTotalPages","setCurrentPage","setOrder","returnPreviousPage","advanceNextPage","ApplicantForm","closeForm","fileValidator","setFileValidator","valMessage","setValMessage","archivo","setArchivo","archivoNombre","archivoURL","getFile","urlCurriculum","barra","lastIndexOf","nombre","File","container","DataTransfer","add","querySelector","imageExt","validateFile","fileData","ext","exec","phoneNumber","town","colony","lang","formdata","DetailsJobs","setJob","showApplicantForm","setShowApplicantForm","hasAlreadyApplied","setHasAlreadyApplied","getJobsById","sections","sectionsDescriptions","jobSection","section","jobSectionTypeId","authorize","BsCalendar2","ApplicantSent","ListNewJobs","_item$jobCategory","_item$jobCategory$","publicatedBy","tituloInJobs","CandidatesNominated","candidates","setCandidates","AiOutlineFileText","cancelButtonColor","FaTimes","goBack","boxShadow","JobsPublished","activeJobs","setActiveJobs","inactiveJobs","setInactiveJobs","activePages","setActivePages","activeTotalCount","setActiveTotalCount","activeTotalPages","setActiveTotalPages","activeCurrentPage","setActiveCurrentPage","inactivePages","setInactivePages","inactiveTotalCount","setInactiveTotalCount","inactiveTotalPages","setInactiveTotalPages","inactiveCurrentPage","setInactiveCurrentPage","getActiveJobsByUserId","getInactiveJobsByUserId","returnActivePreviousPage","advanceActiveNextPage","returnInactivePreviousPage","advanceInactiveNextPage","ValidacionEmail","FormJob","datos","setDatos","toggleView","selectedOption","setSelectedOption","setOptions","setImage","jobCategoryId","descripcion","categoria","mail","infoSalarial","ubicacion","titleCompany","imagen","element","__isNew__","setImageModal","imgModal","maxLength","CreatableSelect","closeMenuOnSelect","isMulti","classNamePrefix","errormessage","minLength","onKeyPress","charCode","which","charStr","fromCharCode","handleImageUploadRemove","draftToHtml","inline","inDropdown","maxHeight","objectFit","FormSection","setSections","sectionValues","setSectionValues","JobSectionTypeId","JobSection","Description","descriptionHtml","newSectionValues","validSections","JobSections","JobId","flatMap","RegisterJobs","viewForm","setViewForm","FormEditJob","defaultContentState","setDefaultContentState","blocksFromHtml","htmlToDraft","contentBlocks","entityMap","contentState","ContentState","createFromBlockArray","createWithContent","chargeData","imageFile","punto","updateImage","FormEditSectionJob","_job$jobSection$find","defaultEditorState","EditJob","InputFile","onFilesSelected","valueFile","oneFile","maxFiles","nameFile","deleteImage","inputFileRef","setFormat","acceptedFiles","setAcceptedFiles","cleanInput","handleFileChange","newFiles","filesToUpload","dataTransfer","currentFile","_currentFile$type$spl","_currentFile$type","sizeCurrentFile","round","fileType","showAlert","selectedFilesUpload","currentImg","dimensions","onload","filesReceived","textAlert","onDrop","onDragOver","AiOutlineCloudUpload","AiOutlineFileDone","hidden","_file$name","MdClear","handleRemoveFile","AiOutlineCheckCircle","HeaderCourse","EventCardInformative","paragraph","ticketsEventService","getAvailableToSale","getByUser","GetEventSectors","getToAuthorize","changeStatus","isApproved","EventForm","_eventTicket$eventTic","_eventTicket$eventTic2","_eventTicket$eventTic3","_eventTicket$eventTic4","_eventTicket$eventOwn","_eventTicket$eventOwn2","currentStep","setCurrentStep","eventSectors","setEventSectors","setPicker","eventTicket","setEventTicket","idEventTicket","eventName","eventSector","eventDescription","eventPriceTicket","eventAudience","eventNote","eventTicketBanner","eventTicketPromo","eventTicketAd","eventTicketVideo","eventPlaceName","eventStreetName","eventZipCode","eventState","eventCity","eventNeighboor","eventPhone","eventDate","eventHour","eventTicketDateStart","eventTicketDateEnd","eventTicketHourStart","eventTicketHourEnd","eventTime","eventOwnerPhone","eventOwnerEmail","eventOwnerBankName","eventOwnerName","eventOwnerBank","eventOwnerClabe","eventOwnerFileBankAccount","eventOwnerInvoice","eventOwnerCompanyReason","eventOwnerRFC","eventOwnerFileConstancy","handleInput","handleFile","handleFileRemove","handleDate","disabledDateStart","startOf","Steps","0","show","showCount","FaDollarSign","FaPerson","_d","TimePicker","_t","time","handleTime","_time","minuteStep","showNow","RangePicker","handleTimeRange","FaClock","Checkbox","handleBackStep","BoxListCourse","setCompleteCourse","propCourseId","course","setCourse","modalConfig","setModalConfig","fullscreen","toggleCourse","downloadFile","fileb64","linkSource","downloadLink","handleVideoUrl","imageBox","itemFile","imageLink","excellImage","wordImage","pdfImage","noImage","imageBoxLink","isPdf","pdfImg","imageYouTube","frame","youtubeid","second","third","imageBack","idBillboardSelected","setIdBillboardSelected","billboardCurrentSelected","setBillboardCurrentSelected","selectedBillboardId","setDetailActive","modalCard","setModalCard","itemModal","setItemModal","toggleCard","detailActive","handleDetailActive","urlMedia","courseMediaTypeId","BsEye","iconYT","handleOnFiles","courseFiles","handleComplete","ReactPlayer","BoxTickets","events","setEvents","countEventsToApprove","setCountEventsToApprove","List","header","footer","bordered","renderItem","handleOpenView","eventUrl","eventImage","celebrationDate","locationName","CourseView","setUserProfile","dataGridCompleted","setDataGridCompleted","setActive","getCourseCompleted","isCompleted","imgHeader","Tabs","defaultActiveKey","EventApproveModal","onClose","currentItem","isApprovalView","isModalOpen","setIsModalOpen","videoStop","setVideoStop","Drawer","ticketsEventId","ticketsEventSectorName","creationDate","showModal","textTransform","onCancel","playing","EventApprove","setOpen","currentEvent","setCurrentEvent","CompanyGallery","imagesList","ResetPassword","Email","ConfirmPassword","Flex","vertical","contactInfoService","createContact","Help","setContactInfo","businessName","reset","HelpBanner","pills","CardAudience","publishedItems","onLive","handleLinkConference","AiOutlinePlayCircle","publishedDate","es","ListOldItems","Spin","tip","background","Empty","ListItems","BoxListAudience","listAudienceP","activeKey","setActiveKey","LastItemAudience","bgPridetalks","Audience","setListAudienceP","lastItemPublished","setLastItemPublished","windowWidth","windowHeight","setWindowWidth","setWindowHeight","updateWindowViewport","innerHeight","useWindowViewport","videoWidth","setVideoWidth","videoHeight","setVideoHeight","settingsVideo","setSettingsVideo","titleVideo","idAudience","conferenceUrl","contents","itemToOpenInModal","getCompanyHolidaysSide","justify","align","handleCancel","keyboard","frameBorder","BoxListEcommerce","Ecommerce","FormPersonal","correo","contacto1","contacto1DirectoryContactId","contacto2","contacto2DirectoryContactId","subcategoria","band","setBand","indexImagen","setIndexImagen","handleInputStateValue","_props$data","_props$data2","_props$data3","personal","hasOwnProperty","reg","contacto1optDirectoryContactId","_props$data$directory","_props$data$directory2","_props$data$directory3","Datepersonal","onFinishFailed","errorInfo","fields","initialValue","hasfeedback","PrintImage","arrayIamge","newImagen","splice","deleteImg","quantityImage","blobs","reader","FileReader","readAsDataURL","onloadend","prevDatos","setFile","BsInfoCircle","paddingTop","position","FormAdditional","activeTab3","currentSocialMedia","setCurrentSocialMedia","website","websiteId","facebook","facebookId","instagram","instagramId","linkedin","linkedinId","twitter","twitterId","tiktok","tiktokId","Data","additional","toBack","FaExclamation","paymentService","sendRedPayCardToken","directoryId","verifyCard","newAccountService","getMaritalStatusCatalog","getNacionalityCatalog","getStateCatalog","FormCheckoutPay","cvv","cardNumber","LastName","CardExpirationMonth","CardExpirationYear","Street2Del","Street2Col","City","Street","streetNumber","cardTypeName","setcardTypeName","cvvMaxLenght","setcvvMaxLenght","cardImage","setCardImage","Cards","cvvPlaceholder","setCvvPlaceholder","states","setStates","showCVV","setShowCVV","definedCardType","cardType","visaLogo","masterCardLogo","amexLogo","fnGetCardTypeReq","showButtonPackages","amount","freePost","cheque","_result$data","_result$data2","_result$data3","_result$data4","countryId","content_category","getCardType","urlRedirect","regex","hasFeedback","minlength","countryStateTypeId","amountToVerify","BtnRP","MessageFinish","FaUser","directoryTypeService","getDirectoryType","ItemSelectedPackages","myprops","directoryTypeSelected","directoryTypeName","shortDescription","bg_package_lt","RegisterServices","dataState","activeStep3","setActiveStep3","pubToEdit","setPublicationToEdit","isEdit","setIdEdit","loadPicture","setLoadPicture","directoryType","setDirectoryType","setShowButtonPackages","viewPackage","setViewPackage","setDirectoryTypeSelected","monthlyPrice","isDoneLoadImg","setIsDoneLoadImg","_register$personal","_register$personal2","_register$personal3","_register$additional","_register$additional4","_register$additional7","_register$additional10","_register$additional13","_register$additional16","_register$additional2","_register$additional3","_register$additional5","_register$additional6","_register$additional8","_register$additional9","_register$additional11","_register$additional12","_register$additional14","_register$additional15","_register$additional17","_register$additional18","directoryTypeId","newResult","lstContact","lstContact2","setRegister","subirForm","pay","didClose","showDays","directoryInfoCount","directoryInfoExceptionFreePost","Amount","AmountToVerify","HasTax","hasTax","DirectoryInfoCount","IsShow","urlImages","setUrlImages","triggerEffect","setTriggerEffect","prevRegister","promises","itemimage","nombreArchivo","lastModified","all","handlViewPackage","steps","steps2","newItem","deleteFile","currentFiles","filterIfIsFreePost","itemType","benefits","beneficio","bg_package","BsExclamation","CardTokenizationResult","isSuccess","class","stroke","stroke-width","stroke-linecap","stroke-miterlimit","x1","y1","x2","y2","SuccessfulReg","SearchGalleries","galleryImageCount","AdminGallery","companyInit","Title","Subtitle","Text","localfiles","setLocalFiles","setuserSelec","setPostType","newImages","setNewImages","selectedItem","setSelectedItem","PostType","ListUser","CardColumns","CardImg","top","handleDeleteImageGallery","handleImageGallerySelected","imageList","handleChangeImageGallery","handleOnNewGallery","UserProfileId","EmployeeNo","handleOnCancel","attendeeService","getAttendeeUsers","handleValueCheck","checkStatus","setCheckStatus","handleCheck","AudienceUsers","showBtn","setUsers","showSelect","setShowSelect","usersRemove","setUsersRemove","closeModal","FaPlus","val","handleSelectUserAll","courseService","createCourse","createEventCalendar","updateCourse","deleteCourse","getCourseFilesById","getCoursesPaginated","getTypes","EventTypes","InputAdd","maxQuantity","minQuantity","handleCurrentNumber","valueInt","minusNumber","FaMinus","minHeight","addNumber","base64ToBlob","b64Data","filename","sliceSize","byteCharacters","atob","byteArrays","byteNumbers","charCodeAt","byteArray","Uint8Array","Blob","withReactContent","SearchCourse","tableConfig","setTableConfig","types","setTypes","courseMediaTypeName","dataCourses","filterItems","arrow","pointAtCenter","pageSize","simple","handleSelectPage","AdminCourse","createCalendarEvent","setCreateCalendarEvent","setIsAudienceAddressed","iframeData","setIframeData","fileUpdated","setFileUpdated","initTraining","setInitTraining","CourseMediaTypeId","StartDate","EndDate","UrlMedia","EventId","clearObjInitTraining","onChangeDate","handleDeleteImage","handleOnNewCourse","RoleId","_files$0$fileName$spl","_files$","_files$$fileName","allowEmpty","allowClear","fragment","createRange","createContextualFragment","firstChild","handleIframe","FaInfoCircle","videoYT","OkBtn","CancelBtn","ImgInfog","Users","_tableData$list$map","_tableData$list","disablePagination","setDisablePagination","tableData","setTableData","getUsers","menuProps","handleMenuClick","fullname","age","old","branchOffice","branchOfficeName","jobRoleName","goUserDetail","aspNetUserId","Search","enterButton","onSearch","_e","Divider","dashed","orientation","defaultCurrent","CardModule","FaExternalLinkAlt","Admin","MenuAdministrador","getGenericItemSections","sectionName","UserDetails","catalogs","setCatalogs","aspNetRolesCatalog","branchOfficeCatalog","departmentCatalog","jobRoleCatalog","IsConfirmed","setIsConfirmed","roleId","branchOfficeId","hiringDate","extension","emailConfirmed","IsCorporateUser","dateStr","handleDateHiring","succeded","BulkLoad","getRootProps","getInputProps","useDropzone","FaUpload","upload","useSurvey","createSurvey","updateSurvey","deleteSurvey","getSurveysById","getSurveysInfoById","getChartData","surveyGroupId","downloadCSV","SearchSurvey","columnsSurveys","defaultSortOrder","no","dataSurveys","surveyedCount","answeredCount","estatus","goToSurvey","handleDownload","FaPowerOff","AdminSurvey","setRefresh","SearchSurveyScale","surveyScales","setSurveyScales","surveyScale","AdminSurveyScale","SearchSurveyScaleAnswer","surveyScaleAnswers","setSurveyScaleAnswers","EditSurveyScaleAnswer","setAnswer","SurveyScaleAnswerId","SurveyScaleId","ScaleValue","AnswerOrder","currentAnswer","currentQuestion","EditSurveyScale","setSurveyScale","refreshAnswer","setRefreshAnswer","showEditAnswer","setShowEditAnswer","selectedAnswer","setSelectedAnswer","handleOnCancelEditQuestion","gutters","handleOnNewScaleAnswer","onCancelEdit","handleOnSaveEditQuestion","onSelectAnswer","surveyScaleAnswerId","answerOrder","DetailsSurveyScale","back","SearchBoard","acknowledgmentTypes","setAcknowledgmentTypes","acknowledgmentType","validFrom","showAcknowledgmentType","AdminBoard","useSurveyAnswerType","createSurveyAnswerType","updateSurveyAnswerType","deleteSurveyAnswerType","getSurveyAnswerTypes","EditAnswerType","setSurvey","SurveyAnswerTypeId","newP","currentAnswerType","SearchSurveyAnswerType","onSelectAnswerType","AdminAnswerTypes","selectedAnswerType","setSelectedAnswerType","handleOnNew","handleOnCancelEdit","handleOnSaveEdit","SearchQuestion","questionsData","setQuestionsData","setSurveyQuestions","columnsQuestions","typeQuestion","handleItems","handleSelectQuestion","onSelectQuestion","isSurveyAlreadyStarted","answerType","FaEllipsisVertical","useAnswerConfig","createAnswerConfig","updateAnswerConfig","deleteAnswerConfig","getAnswerConfigs","SearchAnswer","_answerData$map","columnsAnswers","dataAnswers","handleSelectAnswer","EditAnswer","Answer","IsRight","IsImage","StepAnswer","stepOptions","setStepOptions","surveyQuestions","onSaveAnswer","showConfirmButton","isMultipleOption","AlertResult","html","EditQuestionAnswer","setQuestion","Question","refreshAnswers","setRefreshAnswers","editAnswer","handleOnSaveEditAnswer","isRight","EditQuestion","onSaveParent","scalesValues","setScalesValues","answerValues","setAnswerValues","EditSurvey","refreshQuestions","setRefreshQuestions","showEditQuestion","setShowEditQuestion","selectedQuestion","setSelectedQuestion","IsFullAnswered","disabledSubmit","setDisabledSubmit","clearObj","handleOnCancelEditAnswer","isFullAnswered","IsAlreadyStarted","isAlreadyStarted","Estatus","dateString","editQuestion","handleOnNewQuestion","DetailsSurvey","SurveyChart","chartData","setChartData","setKeys","chartGrouping","chartGroupId","anwerTypeId","_result$filter","dataValues","dataValuesParsed","_result$filter2","keyValues","keyValuesParsed","questionTitle","fontFamily","ResponsivePie","right","bottom","left","innerRadius","padAngle","cornerRadius","activeOuterRadiusOffset","borderWidth","borderColor","modifiers","arcLinkLabelsSkipAngle","arcLinkLabelsTextColor","arcLinkLabelsThickness","arcLinkLabelsColor","arcLabelsSkipAngle","arcLabelsTextColor","defs","stagger","rotation","lineWidth","spacing","legends","anchor","translateX","translateY","itemsSpacing","itemWidth","itemHeight","itemTextColor","itemDirection","itemOpacity","symbolSize","symbolShape","effects","ResponsiveBar","indexBy","valueScale","indexScale","colors","scheme","axisTop","axisRight","axisBottom","tickSize","tickPadding","tickRotation","legend","legendPosition","legendOffset","axisLeft","labelSkipWidth","labelSkipHeight","labelTextColor","dataFrom","ariaLabel","SurveyAnswerList","answerList","setAnswerList","getAnswerList","answerText","SurveyResults","splidejs","surveyResult","setSurveyResult","surveyInfo","handleToggleGroupChange","questionList","getSurveyInfo","handleArrowPrev","splide","go","handleArrowNext","Radio","Group","deparmentService","createDeparment","updateDeparment","getDeparment","deletetDeparment","SearchDepartment","columnsDepartment","dataDepartment","AdminDeparment","deparmentInit","setDepartmentInit","DepartmentName","SearchDeparment","branchOfficeService","deleteBranchOffice","SearchBranchOffice","columnsBranchOffice","dataBranchOffice","branchoffice","BranchOffice","initBranchOff","setInitBranchOff","BranchOfficeName","cleanObj","useJobRole","createJobRole","updateJobRole","deleteJobRole","getJobRoles","EditJobRole","currentJobRole","SearchJobRole","jobsData","setJobsData","getColumnSearchProps","columnsJobRoles","dataJobRoles","onSelectJobRole","AdminJobRoles","selectedJobRole","setSelectedJobRole","ListNotice","CompanyHolidaysData","setCompanyHolidaysData","columnsNotice","dataNotice","notice","onSelectCompanyHoliday","EditNotice","_props$currentCompany","setUrlVideo","filesVideo","setFilesVideo","holidayType","setHolidayType","selectedTypeId","setSelectedTypeId","CompanyHoliday","setCompanyHoliday","CompanyHolidayId","WorkingDay","IsVideo","Iframe","dimensionsImage","setDimensionsImage","videoUpdated","setVideoUpdated","selectBeforeOption","setSelectBeforeOption","toggleMyModal","showVideo","setShowVideo","handleValueIframe","handleSelectTypeId","handleInputDate","strDate","currentCompanyHoliday","handleGridItem","workingDay","fileVideo","setFields","minDate","maxDate","addonBefore","handleVideoRemove","Notice","selectedCompanyHoliday","setSelectedCompanyHoliday","CompanyCustomize","setValues","PrimaryColor","SecondaryColor","logoSaved","setLogoSaved","customize","setCustomize","handleQuantity","logoFile","companyCustomizeId","ColorPicker","hex","showText","Control","useAcknowledgmentLadder","deleteAcknowledgment","EditLevel","setShowEditLevel","currentLevel","addLevel","updateLevel","level","setLevel","noAcknowledgment","preview","setPreview","SearchLevel","levels","setSelectLevel","deleteLevel","EditCategory","setAcknowledgmentTypeId","setIsNew","setAcknowledgment","setLevels","showEditLevel","selectLevel","setAcknowledgmentFixed","aux","companyAcknowledgmentLadderId","DetailsCategory","EditorPost","content","contentBlock","urlEnabled","uploadEnabled","uploadCallback","onerror","alignmentEnabled","previewImage","inputAccept","SearchCompanyPost","currentWriter","columnsCompany","views","writter","setCompanyInit","imagesUpdated","setImagesUpdate","imagesToSave","handleRemoveFiles","blobFile","CompanyPost","localAttachments","setLocalAttachments","thumbUpdated","setThumbUpdated","PDFUpdated","setPDFUpdated","typeFile","clearCompanyInit","companyPostCategoryId","productFilterService","deleteProductFilter","SearchProductFilter","rewardProductFilterData","setRewardProductFilterData","rewardProductFilter","getRewardProductFilters","stock","pf","productDescription","filterStock","AdminProductFilter","EditProductFilter","minCouponCount","setMinCouponCount","setCatalog","productCatalog","productFilter","setProductFilter","RewardProductId","Points","RewardCount","FilterStock","ParentStock","rewardProduct","rewardProductId","rewardCount","parentStock","DetailsProductFilter","adminAudienceService","SearchAdminAudience","AdminAudience","templateShow","setTemplateShow","setCreateEventCalendar","setAudience","AudienceId","ConferenceUrl","StartTime","Duracion","PubDate","fileSaved","setFileSaved","toggleTemplate","handleCloseForm","handleDateEvent","minutePubDate","minute","hourPubDate","hour","hours","convertedCD","AuditoriumId","ConferenceDate","errorFields","errorField","scrollToField","needConfirm","onChangeTime","timeStr","SearchAdminGenericSection","setPageSize","handleGenericItems","genericSectionTypeId","genericSectionName","pageS","SearchAdminContactInfos","typeContact","isContact","isValue","showValue","addSocialMedia","currentItemSocialMedia","genericContactInfoId","toggleSocialMedia","prepareUpdateContactInfo","handleContactInfoDelete","hideOnSinglePage","AdminGenericSection","setContactTypes","setAddSocialMedia","socialMedia","setSocialMedia","setGenericItem","socialInfo","setSocialInfo","localFilesUpdated","setLocalFilesUpdated","filesSaved","setFilesSaved","formSocialMedia","formItem","setCurrentItemSocialMedia","btnMainContact","setBtnMainContact","clearObjSocialInfo","clearObjGenericItem","handleInputGeneric","cleanFormSocialMedia","fileConverted","itemSave","saveGenericItem","updateGenericItem","itemsToSave","saveSocialInfo","RiLoopLeftFill","contactType","handleAddContactInfo","newContactInfos","nameButton","Operator","rewardProductService","titleAdmin","lowStock","popUpText","urlPdf","isBarCode","isVisible","posX","posY","restriction","twoValidation","rewardProviderId","filePDF","fileImage","isValidSize","get","deleteRewardProduct","getTestCoupon","AdminReward","rewardsData","setRewardsData","rewards","showSorterTooltip","showFolio","Switch","checkedChildren","CheckOutlined","unCheckedChildren","defaultChecked","barcode","availableFolio","FaPen","getPreview","sizesPages","setSizesPages","defaultPageSize","onChangePage","EditReward","rewardProvider","ev","objectUrl","imgPdf","handleBarcode","handleVisible","InputNumber","DetailsReward","rewardCouponService","couponData","BulkLoadReward","company","dateStrings","convertedDateInitial","convertedDateFinal","showSearch","optionFilterProp","filterOption","input","option","_option$label","filterSort","optionA","optionB","_optionA$label","_optionB$label","localeCompare","rewardCategoryService","deleteCategory","AdminRewardCategory","getRewardcategories","EditRewardCategory","FaQuestion","DetailsRewardCategory","rewardProviderService","logoImage","deleteProvider","AdminRewardProvider","getRewardProviders","rewardsUrlLogo","setRewardsUrlLogo","urlCopied","setUrlCopied","idProvider","currentUrlSelected","copyNumberCard","FaPaste","EditRewardProvider","DetailsRewardProvider","companyService","getByDomain","domain","deleteCompany","getRVOL","SearchCompany","statusValue","companiesData","setCompaniesData","companies","getCompanies","stat","primeDomain","AdminCompany","statusSelected","setStatus","EditCompany","isRvol","setIsRvol","companyRVOL","setCompanyRVOL","setCompany","telephone1","telephone2","rvolCompany","handleCheckChange","CompanyName","idSelect","LinkOutlined","suffix","InfoCircleOutlined","PhoneOutlined","MailOutlined","FaKey","DetailsCompany","ControlReward","tap","withLayout","Layout","App","exact","Pages","z","isLocalhost","hostname","registerValidSW","swUrl","registration","onupdatefound","installingWorker","installing","onstatechange","onUpdate","onSuccess","RootComponent","loadGTM","gtmLoaded","script","head","Router","ReactDOM","getElementById","indexOf","unregister","checkValidServiceWorker","registerServiceWorker","waiting","postMessage","caches","names","delete"],"mappings":"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,QAAU,IAA0B,6C,kBCA3CD,EAAOC,QAAU,kpM,oBCAjBD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,sC,gECA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,qC,8DCA3CD,EAAOC,QAAU,u0N,oBCAjBD,EAAOC,QAAU,IAA0B,oC,oBCA3CD,EAAOC,QAAU,IAA0B,qC,83+JCA3CD,EAAOC,QAAU,IAA0B,iC,kBCA3CD,EAAOC,QAAU,8uX,oBCAjBD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,0C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,kC,kBCA3CD,EAAOC,QAAU,0zE,oBCAjBD,EAAOC,QAAU,IAA0B,uC,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,2C,kBCA3CD,EAAOC,QAAU,k1Z,kBCAjBD,EAAOC,QAAU,02P,kBCAjBD,EAAOC,QAAU,k7Q,oBCAjBD,EAAOC,QAAU,IAA0B,oC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,2C","file":"static/js/main.a46d0dbf.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/ico_user.0962f88d.png\";","module.exports = __webpack_public_path__ + \"static/media/no-image.b3159f4d.jpeg\";","String.prototype.removeAccents = function () {\n   return this.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n}","export const setCountrySetting = (payload) => {\n  return {\n    type: \"Set_CountrySetting\",\n    payload,\n  };\n};\n\nexport const setCartQuantity = (payload) => {\n  return {\n    type: \"Set_CartQuantity\",\n    payload,\n  };\n};\n\nexport const toggleBlocking = (payload) => {\n  return {\n    type: \"Toggle_Blocking\",\n    payload,\n  };\n};\n\nexport const setUserSettings = (payload) => {\n  return {\n    type: \"Set_UserSettings\",\n    payload,\n  };\n};\n\nexport const setAccountSettings = (payload) => {\n  return {\n    type: \"Set_AccountSettings\",\n    payload,\n  };\n};\n\nexport const setRefreshingToken = () => {\n  return {\n    type: \"Set_RefreshingToken\",\n  };\n};\n","const initState = {\n  userSettings: {\n    companyId: 0,\n    roleName: \"\",\n  },\n  countrySetting: {\n    cultureCode: \"es-MX\",\n    isoCurrency: \"MXN\",\n    currency: \"$\",\n  },\n  cartQuantity: 0,\n  blocking: false,\n  calendarStrings: {\n    lastDay: \"[ayer]\",\n    sameDay: \"[hoy]\",\n    nextDay: \"[mañana]\",\n    lastWeek: \"[el] dddd [anterior]\",\n    nextWeek: \"[el] dddd\",\n    sameElse: \"[el] DD [de] MMMM [de] yyyy\",\n  },\n  accountSettings: {\n    activateRegistration: false,\n    productSubscription: 0,\n  },\n  refreshingToken: false,\n};\n\nexport const reducers = (state = initState, action) => {\n  switch (action.type) {\n    case \"Set_CountrySetting\":\n      return {\n        ...state,\n        countrySetting: action.payload,\n      };\n    case \"Set_CartQuantity\":\n      return {\n        ...state,\n        cartQuantity: action.payload,\n      };\n    case \"Toggle_Blocking\":\n      return {\n        ...state,\n        blocking: action.payload,\n      };\n    case \"Set_UserSettings\":\n      return {\n        ...state,\n        userSettings: action.payload,\n      };\n    case \"Set_AccountSettings\":\n      return {\n        ...state,\n        accountSettings: action.payload,\n      };\n    case \"Set_RefreshingToken\":\n      return {\n        ...state,\n        refreshingToken: !state.refreshingToken,\n      };\n    default:\n      return state;\n  }\n};\n","import { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport { reducers } from \"./reducers\";\n\nexport default createStore(reducers, applyMiddleware(thunk));;","import { toggleBlocking } from \"../store/actions\";\nimport store from \"../store/configureStore\";\n\nlet stack = [];\nlet requestCounter = 0; \n\nexport const addToStack = (urlRequest) => {\n  const requestId = requestCounter++; \n  stack.push({ id: requestId, url: urlRequest }); \n  setBlocking();\n  return requestId; \n};\n\nexport const removeFromStack = (requestId) => {\n  if (stack.length > 0) {\n    stack = stack.filter((item) => item.url !== requestId);\n    setBlocking();\n  }\n};\n\nconst setBlocking = () => {\n  const isBlocking = stack.length > 0;\n\n  if (store.getState().blocking !== isBlocking) {\n    store.dispatch(toggleBlocking(isBlocking));\n  }\n};\n","import { callApi } from \"../services/service\";\nimport { setRefreshingToken } from \"../store/actions\";\nimport store from \"../store/configureStore\";\n\nexport const validateToken = (token) => {\n  if (!token.access && !token.refresh) return (window.location.href = \"/login\");\n  const currentDate = new Date();\n  const refreshAt = new Date(token.refreshAt);\n  if (currentDate > refreshAt) {\n    const expireAt = new Date(token.expireAt);\n    refreshToken(token.refresh, currentDate > expireAt);\n  }\n};\n\nexport const refreshToken = async (refreshToken, reload) => {\n  const refreshingToken = store.getState().refreshingToken;\n  if (!refreshingToken) {\n    store.dispatch(setRefreshingToken());\n    callApi(`/auth/refreshtoken`, \"PUT\", undefined, {\n      SkipValidationToken: true,\n      NoBlocking: !reload,\n      RefreshToken: refreshToken,\n    }).then((result) => {\n      store.dispatch(setRefreshingToken());\n      if (result.responseCode === \"00\") {\n        setToken(result.data);\n        if (reload) window.location.reload();\n      } else {\n        window.location.href = \"/login\";\n      }\n    });\n  }\n};\n\nexport const setToken = (data) => {\n  const expireAt = new Date();\n  expireAt.setMinutes(expireAt.getMinutes() + data.expiresIn);\n\n  const refreshAt = new Date();\n  refreshAt.setMinutes(refreshAt.getMinutes() + (data.expiresIn - 2));\n\n  const token = {\n    access: data.token,\n    refresh: data.refreshToken,\n    expireAt: expireAt,\n    refreshAt: refreshAt,\n  };\n\n  localStorage[\"_tpride\"] = JSON.stringify(token);\n  localStorage[\"userId\"] = data.userId;\n  localStorage[\"roleName\"] = data.roleName;\n  localStorage.removeItem(\"isFirstTime\");\n};\n\nexport const getToken = (data) => {\n  if (localStorage[\"_tpride\"]) return JSON.parse(localStorage[\"_tpride\"]);\n  else\n    return {\n      access: \"\",\n      refresh: \"\",\n      expireAt: \"\",\n      refreshAt: \"\",\n    };\n};\n","/**\n * Communication with the API\n * @param {*} url\n * @param {*} method\n * @param {*} body\n * @param {*} contentType\n */\n\nimport { registerInterceptor } from \"../Interceptor\";\n\nexport const callApi = async (url, method, body, headers) => {\n  const options = {\n    method: method,\n    headers: {\n      \"Content-Type\": \"application/json\",\n      ...headers,\n    },\n    body: JSON.stringify(body),\n  };\n\n  return fetch(`${process.env.REACT_APP_API_URL}${url}`, options)\n    .then((response) => handleResponse(response, false))\n    .catch(handleError);\n};\n\nexport const callApiFileStorage = async (\n  url,\n  method,\n  body,\n  isFileResponse = true\n) => {\n  const options = {\n    method: method,\n    body: body,\n  };\n\n  return fetch(`${process.env.REACT_APP_API_URL}${url}`, options)\n    .then((response) => handleResponse(response, isFileResponse))\n    .catch(handleError);\n};\n\nexport const callApiFile = async (\n  url,\n  method,\n  body,\n  contentType = \"application/json\"\n) => {\n  const options = {\n    method: method,\n    headers: {\n      \"Content-Type\": contentType,\n    },\n    body: JSON.stringify(body),\n  };\n\n  return fetch(`${process.env.REACT_APP_API_URL}${url}`, options)\n    .then((response) => handleResponse(response, true))\n    .catch(handleError);\n};\n\nexport const callApiNoBlocking = (url, method, body) =>\n  callApi(url, method, body, { NoBlocking: true });\n\nconst handleResponse = (response, isFileResponse) => {\n  if (!isFileResponse)\n    return response.text().then((text) => {\n      let data;\n\n      try {\n        data = text && JSON.parse(text);\n      } catch (e) {\n        data = text;\n      }\n\n      if (!response.ok) {\n        const error =\n          data === \"\"\n            ? { msg: response.statusText }\n            : data ?? { msg: response.statusText };\n        return Promise.reject(error);\n      }\n\n      return data;\n    });\n  else return response.blob();\n};\n\nconst handleError = (error) => {\n  console.log(\"error\", error);\n  if (error.message === \"Failed to fetch\")\n    error.message = \"El servicio no se encuentra disponible temporalmente\";\n  return Promise.reject(error);\n};\n","import fetchIntercept from \"fetch-intercept\";\nimport { addToStack, removeFromStack } from \"./hooks/blockingHook\";\nimport { getToken, validateToken } from \"./hooks/authHook\";\n\nexport const registerInterceptor = fetchIntercept.register({\n  request: function (url, config) {\n    const isGoogleAnalytics = url.includes(\"google-analytics.com\");\n\n    if (config) {\n      const token = getToken();\n      if (!config.headers) config.headers = {};\n      config.headers.Authorization = \"Bearer \" + token.access;\n\n      if (!isGoogleAnalytics && !config.headers.NoBlocking) {\n        addToStack(url);\n      }\n\n      if (!config.headers.SkipValidationToken) validateToken(token);\n    }\n    return [url, config];\n  },\n\n  requestError: function (error) {\n    const isGoogleAnalytics = error.url.includes(\"google-analytics.com\");\n\n    if (!isGoogleAnalytics) {\n      removeFromStack(error.url);\n    }\n\n    return Promise.reject(error);\n  },\n\n  response: function (response) {\n    const isGoogleAnalytics = response.url.includes(\"google-analytics.com\");\n\n    if (!isGoogleAnalytics) {\n      removeFromStack(response.url);\n    }\n\n    if (response.status === 401) {\n      const token = getToken();\n      validateToken(token);\n    }\n\n    return response;\n  },\n\n  responseError: function (error) {\n    const isGoogleAnalytics = error.url.includes(\"google-analytics.com\");\n\n    if (!isGoogleAnalytics) {\n      removeFromStack(error.url);\n    }\n\n    return Promise.reject(error);\n  },\n});","import { useState } from 'react';\n\nconst useInputSingleForm = (callback, initialValues) => {\n    const [inputs, setInputs] = useState(initialValues);\n\n    const handleSubmit = (event) => {\n        if (event)\n            event.preventDefault();\n        callback();\n    }\n    const handleInputChange = (event) => {\n        if (event.persist !== undefined) event.persist();\n        if (event.target.type === 'checkbox') {\n            setInputs(inputs => ({ ...inputs, [event.target.name]: event.target.checked }));\n        } else {\n            setInputs(inputs => ({ ...inputs, [event.target.name]: event.target.value }));\n        }\n    }\n\n    return {\n        handleSubmit,\n        handleInputChange,\n        inputs,\n        setInputs\n    };\n}\nexport default useInputSingleForm;\n","import React, { useState } from 'react';\nimport { FormGroup, Label, Input } from \"reactstrap\";\nimport swal from \"sweetalert\"\nimport {FaCloudUploadAlt } from \"react-icons/fa\";\n\nexport function GeneralUpload(props) {\n\n    const [files, setFiles] = useState([]);\n    const [isMultiple] = useState(props.IsMultipe != null ? props.IsMultipe : false);\n\n    const maxSize = process.env.REACT_APP_MAX_FILESIZE;\n\n    const handleOnChangeFile = (event) => {\n\n        let fileList = [];\n        if (event.target.files != null && event.target.files.length > 0) {\n\n            var targetfiles = event.target.files;\n\n            for (var i = 0; i < targetfiles.length; i++) {\n                var file = targetfiles[i];\n                var size = file.size / 1024 / 1024;\n                if (size < maxSize) {\n                    fileList = [...fileList, file];\n                } else {\n                    swal({ text: 'Los archivos debe ser menores a ' + maxSize + ' MB.', icon: \"error\" });\n                    event.target.value = null;\n                    break;\n                }\n\n            }\n            setFiles(fileList);\n        }\n        if (props.handleOnChangeFiles) props.handleOnChangeFiles(fileList);\n    }\n\n    return (\n        <FormGroup className=\"form-dashboard-group-upload\">\n            <Label for={props.TitleLabel}><FaCloudUploadAlt /> {props.TitleLabel}</Label>\n            <Input id={props.TitleLabel} type=\"file\" onChange={handleOnChangeFile} multiple={isMultiple} accept={props.accept} {...{ required: props.required && \"required\" }} disabled={props.disabled}/>\n        </FormGroup>\n    );\n}\n","import { callApi } from './service'\n\nexport const helperService = {\n    getGenericCatalog\n};\n\nasync function getGenericCatalog(method) {\n    return callApi(method, 'GET').then((result) => {\n        if (result.responseCode)\n            if (result.responseCode === '00')\n                return result.data;\n            else {\n                alert(result.responseMessage);\n                return null;\n            }\n        else {\n            return result;\n        }\n    }, () => {\n        if (method === '/backoffice/colaborator') {\n            return [{ text: 'Jorge Rial', value: 1 }]\n        }\n    });\n}\n\n","import { callApi, callApiFileStorage, callApiNoBlocking } from '../service'\nimport Swal from \"sweetalert2\";\n\nexport const userProfileService = {\n    getAll,\n    getById,\n    create,\n    edit,\n    uploadMigrationFile,\n    getUsersByFilter,\n    getCatalogs,\n    editAdditionalEmail,\n    getUsersByFilterPage,\n    VerifyAccount\n};\n\nasync function getAll(pageIndex, pageCount, filterBy, filter, orderBy, ascending) {\n    return callApiNoBlocking(`/BackOffice/UserProfile?pageIndex=${pageIndex}&pageCount=${pageCount}&filterBy=${filterBy}&filter=${filter}&orderBy=${orderBy}&ascending=${ascending}`, 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return { totalPages: 0, list: [] };\n            }\n        });\n}\n\nasync function getById(id) {\n    return callApi('/Account/Get?userId=' + id, 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return {};\n            }\n        });\n}\n\nasync function getCatalogs() {\n    return callApi('/BackOffice/UserProfileCatalogs', 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return {};\n            }\n        });\n}\n\nasync function create(param) {\n    return callApi('/Account/Create', 'POST', param)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                Swal.fire({ text: \"Usuario guardado exitosamente\", icon: \"success\" })\n                    .then(() => window.location.href = \"/admin/users\");\n            } else {\n                Swal.fire({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n\n\nasync function edit(param) {\n    return callApi('/Account/Edit', 'POST', param)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                Swal.fire({ text: \"Usuario actualizado exitosamente\", icon: \"success\" })\n                    .then(() => window.location.href = \"/admin/users\");\n            } else {\n                Swal.fire({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n\nasync function editAdditionalEmail(param) {\n    return callApi('/Account/EditAdditionalEmail', 'POST', param)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                Swal.fire({ text: \"Correo actualizado correctamente.\", icon: \"success\" });\n            } else {\n                Swal.fire({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\nasync function uploadMigrationFile(companyId, file) {\n    const formData = new FormData();\n    formData.append(\"file\", file);\n    return callApiFileStorage('/Account/UploadMigrationFile?companyId=' + companyId, 'POST', formData, false)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                Swal.fire({ text: \"El proceso de carga de usuarios inició correctamente\", icon: \"success\" }).then(() => {\n                    window.location.href = \"/admin/users\";\n                })\n                return true;\n            } else {\n                Swal.fire({ text: result.responseMessage, icon: \"error\" });\n                return false;\n            }\n        });\n}\n\nasync function getUsersByFilter(params) {\n    return callApi('/backoffice/UserProfile/GetByFilter/' + params.Departments + '/' + params.JobRoleId + '/' + params.BranchOfficeId, 'GET').then((result) => {\n\n        if (result.responseCode === '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function getUsersByFilterPage(params) {\n    return callApiNoBlocking('/backoffice/UserProfile/GetByFilterPage/' + params.Departments + '/' + params.JobRoleId + '/' + params.BranchOfficeId + '/' + params.PageIndex + '/' + params.PageCount, 'GET',).then((result) => {\n\n        if (result.responseCode === '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function VerifyAccount(param) {\n    return callApi(`/Account/VerifyEmailAccount?userId=${param}`, 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                Swal.fire({ text: \"Correo verificado correctamente\", icon: \"success\" })\n                return result.data; \n            } else {\n                Swal.fire({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n","import React, {useEffect, useState} from 'react';\nimport {helperService} from '../../services/helper.service';\nimport {userProfileService} from '../../services/backoffice/userProfile.service';\nimport MultiSelect from \"react-multi-select-component\";\nimport {FaChevronRight} from \"react-icons/fa\";\nimport {Col, Form, Row, Button, Select} from \"antd\";\nimport {Table} from \"reactstrap\";\nimport {Pagination} from \"rsuite\";\n\nexport const SelectUsers = ({ selectUser, title, filter, usersFilter }) => {\n    const [configInit,setConfigInit] = useState({\n        Departments: [],\n        JobRoleId: 0\n    })\n    const [departaments, setDepartaments] = useState([]);\n    const [userSelec, setUserSelec] = useState([]);\n    const [dataUsers, setDataUsers] = useState({\n        list: [],\n        totalPages: 1,\n        totalCount: 0,\n        pageIndex: 1\n    });\n    const [usersNotInFilter, setUsersNotInFilter] = useState([]);\n    const [dataAllUsers, setDataAllUsers] = useState([]);\n    const [pageCount, setPageCount] = useState(10);\n    const [jobRoles, setJobRoles] = useState([]);\n\n    const EventFilter = (result, pageIndex) => {\n        if (result) {\n            if (filter) {\n                setDataUsers({ ...dataUsers,\n                    list: result.list,\n                    totalCount: result.totalCount,\n                    totalPages: result.totalPages,\n                    pageIndex: pageIndex\n                });\n\n                const datauser = { list:\n                    result.list, totalCount: result.totalCount,\n                    totalPages: result.totalPages,\n                    pageIndex: pageIndex\n                }\n                if (dataAllUsers.length > 0) {\n                    const datauser = {\n                        list: result.list,\n                        totalCount: result.totalCount,\n                        totalPages: result.totalPages,\n                        pageIndex: pageIndex\n                    }\n                    JointUser(datauser, dataAllUsers);\n                } else if (userSelec.length > 0) setCheck(datauser);\n            }\n            else {\n                setDataUsers({ ...dataUsers,\n                    list: result.list,\n                    totalCount: result.totalCount,\n                    totalPages: result.totalPages,\n                    pageIndex: pageIndex\n                });\n                const datauser = {\n                    list: result.list,\n                    totalCount: result.totalCount,\n                    totalPages: result.totalPages,\n                    pageIndex: pageIndex\n                }\n                if (dataAllUsers.length > 0) {\n                    JointUser(datauser, dataAllUsers);\n                } else if (userSelec.length > 0) { setCheck(datauser); }\n            }\n        }\n    }\n\n    const handleOnSearch = (pageIndex) => {\n        if (configInit.Departments.length > 0) {\n            const model = {\n                Departments: configInit.Departments.map(e => e.value).join(\",\"), JobRoleId: parseInt(configInit.JobRoleId) === 0 ? 0 : configInit.JobRoleId, BranchOfficeId: 0,\n                PageIndex: pageIndex,\n                PageCount: pageCount,\n            };\n\n            if (usersFilter !== undefined) {\n                if (usersNotInFilter.length === 0 || parseInt(pageIndex) === 1) {\n                    userProfileService.getUsersByFilter(model)\n                        .then((result) => {\n                            let NotInList = result;\n                            let start = (model.PageCount * pageIndex) - model.PageCount;\n                            let end = (model.PageCount * pageIndex);\n\n                            usersFilter.map((user) => NotInList = NotInList.filter((item) => parseInt(item.userProfileId) !== user.id));\n\n                            let totalPa = Math.trunc(NotInList.length / model.PageCount);\n                            totalPa = Number.isInteger(totalPa) ? totalPa : Math.trunc(totalPa) + 1;\n                            let pageitems = NotInList.slice(start, end);\n                            setUsersNotInFilter(NotInList);\n                            setDataUsers({\n                                ...dataUsers,\n                                list: pageitems,\n                                totalCount: NotInList.length,\n                                totalPages: totalPa,\n                                pageIndex: pageIndex\n                            });\n                        });\n                }\n                else {\n                    let start = (model.PageCount * pageIndex) - model.PageCount;\n                    let end = (model.PageCount * pageIndex);\n                    let pageitems = usersNotInFilter.slice(start, end);\n                    let totalPa = (usersNotInFilter.length / model.PageCount);\n                    totalPa = Number.isInteger(totalPa) ? totalPa : Math.trunc(totalPa) + 1;\n                    setDataUsers({\n                        ...dataUsers,\n                        list: pageitems,\n                        totalCount: usersNotInFilter.length,\n                        totalPages: totalPa,\n                        pageIndex: pageIndex\n                    });\n                }\n            } else userProfileService.getUsersByFilterPage(model).then((result) => EventFilter(result, pageIndex));\n        }\n    }\n\n    const handleSelectUser = (event, data) => {\n        let localUsers = [];\n        data.check = event.target.checked;\n        if (data.check) {\n            localUsers = [...userSelec, {\n                id: data.userProfileId,\n                name: `${data.middleName} ${data.lastName} ${data.firstName}`,\n                department: data.department?.departmentName\n            }];\n            setUserSelec(localUsers);\n        } else {\n            localUsers = userSelec.filter((item) => parseInt(item.id) !== parseInt(data.userProfileId));\n            setUserSelec(localUsers);\n        }\n        selectUser(localUsers);\n        if (dataAllUsers.length > 0) {\n            let itemAll = dataAllUsers.find((x) => parseInt(x.userProfileId) === parseInt(data.userProfileId));\n            itemAll.check = data.check;\n        }\n    };\n\n    const JointUser = (userData, usersAll) => {\n        userData.list.map(data => {\n            let itemAll = usersAll.find((item) => parseInt(item.userProfileId) === parseInt( data.userProfileId));\n            data.check = itemAll.check;\n        });\n        setDataUsers({\n            ...dataUsers,\n            list: userData.list,\n            totalCount: userData.totalCount,\n            totalPages: userData.totalPages,\n            pageIndex: userData.pageIndex\n        });\n    }\n\n    const setCheck = (userData) => {\n        userData.list.map(data => {\n            let itemAll = userSelec.find((item) => parseInt(item.id) === parseInt(data.userProfileId));\n            if (itemAll) data.check = true;\n        });\n\n        setDataUsers({\n            ...dataUsers,\n            list: userData.list,\n            totalCount: userData.totalCount,\n            totalPages: userData.totalPages,\n            pageIndex: userData.pageIndex\n        });\n    }\n\n    const handleSelectUserAll = (event) => {\n        setUserSelec([]);\n        let localUsers = [];\n        let status = event.target.checked;\n        dataUsers.list.map(data => data.check = event.target.checked);\n\n        if (dataAllUsers.length === 0) {\n            const model = {\n                Departments: configInit.Departments.map(e => e.value).join(\",\"),\n                JobRoleId: parseInt(configInit.JobRoleId === '' ? 0 : configInit.JobRoleId), BranchOfficeId: 0\n            };\n\n            userProfileService.getUsersByFilter(model)\n                .then((result) => {\n                    if (result) {\n                        let users = result;\n                        users.map(data => {\n                            if (status && !data.check) {\n                                userSelec.push({\n                                    id: data.userProfileId,\n                                    name: `${data.middleName} ${data.lastName} ${data.firstName}`,\n                                    department: data.department?.departmentName\n                                })\n                                setUserSelec([...userSelec]);\n                                localUsers = userSelec;\n                            }\n\n                            data.check = status;\n                        });\n                        selectUser(localUsers);\n                        setDataAllUsers(users);\n                    }\n                });\n        } else {\n            let users = dataAllUsers;\n            users.map(data => {\n                if (status && !data.check) {\n                    userSelec.push({\n                        id: data.userProfileId,\n                        name: `${data.middleName} ${data.lastName} ${data.firstName}`,\n                        department: data.department?.departmentName\n                    })\n                    setUserSelec([...userSelec]);\n                    localUsers = userSelec;\n                }\n\n                data.check = status;\n            });\n            selectUser(localUsers);\n            setDataAllUsers(users);\n            JointUser(dataUsers, users);\n        }\n\n    }\n\n    const handleSelectPage = (page) => handleOnSearch(page);\n\n    const getDepartaments = () => {\n        helperService.getGenericCatalog(\"/backoffice/Department\")\n            .then((result) => {\n                if (result) setDepartaments(result.map(item => ({\n                    label: item.departmentName,\n                    value: item.departmentId\n                })))\n                else setDepartaments([]);\n            });\n    }\n\n    const getCatalogJobRole = async () => {\n        helperService.getGenericCatalog(\"/backoffice/JobRole\")\n            .then((result) => {\n                if (result) setJobRoles(result.map(item => {\n                    return {\n                        \"label\": item.name,\n                        \"value\": item.jobRoleId\n                    }\n                }));\n            });\n    }\n\n    const handleSelectJobRole = (value) => setConfigInit({...configInit, JobRoleId: value})\n\n    useEffect(() => {\n        getDepartaments();\n        getCatalogJobRole();\n    }, []);\n\n    useEffect(() => {\n        handleOnSearch(1);\n    }, [usersFilter]);\n\n    return (\n        <Row gutter={16}>\n            <Col xs={24}><h5>{title}</h5></Col>\n            <Col md={12} sm={24} xs={24}>\n                <Form.Item\n                    label={'Grupos'}\n                    htmlFor={'DepartmentId'}\n                >\n                    <MultiSelect\n                        name=\"DepartmentId\"\n                        options={departaments}\n                        value={configInit.Departments}\n                        onChange={(e) => setConfigInit({ ...configInit, Departments: e })}\n                        overrideStrings={{\n                            \"allItemsAreSelected\": \"Todos los grupos.\",\n                            \"clearSearch\": \"Borrar búsqueda\",\n                            \"noOptions\": \"Sin opciones\",\n                            \"search\": \"Buscar\",\n                            \"selectAll\": \"Seleccionar todo\",\n                            \"selectSomeItems\": \"Selecciona una opción\"\n                        }}\n                        labelledBy={''}/>\n                </Form.Item>\n            </Col>\n            <Col md={12} sm={24} xs={24}>\n                <Form.Item\n                    label=\"Categorías\"\n                    htmlFor={'JobRoleId'}\n                    name={'JobRoleId'}\n                >\n                    <Select\n                        name={'JobRoleId'}\n                        onChange={handleSelectJobRole}\n                        defaultValue={configInit.JobRoleId}\n                    >\n                        <Select.Option key={0} value={0}>Todos</Select.Option>\n                        {\n                            jobRoles.map(item => {\n                                return (\n                                    <Select.Option key={item.value} value={item.value}>{item.label}</Select.Option>\n                                )\n                            })\n                        }\n                    </Select>\n                </Form.Item>\n            </Col>\n            <Col xs={24}>\n                <div className={'form-backoffice-footer'}>\n                    <Button type=\"primary\" htmlType={'button'} onClick={() => handleOnSearch(1)}>\n                        <p>Consultar</p>\n                        <FaChevronRight />\n                    </Button>\n                </div>\n            </Col>\n            <Col xs={24}>\n                <div className=\"table-responsive\">\n                    <Table className=\"admin-table\" hover>\n                        <thead>\n                        <tr>\n                            <th>No. Usuario</th>\n                            <th>Nombre de Usuario</th>\n                            <th>Grupo</th>\n                            <th>\n                                {dataUsers.list.length > 0 ?\n                                    <label className=\"toggler-wrapper dark\" htmlFor=\"checkboxAll\">\n                                        <input type=\"checkbox\" id=\"checkboxAll\" onClick={handleSelectUserAll} />\n                                        <div className=\"toggler-slider\">\n                                            <div className=\"toggler-knob\"></div>\n                                        </div>\n                                        <p>Seleccionar</p>\n                                    </label>\n                                    : \"Seleccionar\"}\n                            </th>\n                        </tr>\n                        </thead>\n                        <tbody>\n                        {dataUsers.list.length > 0 ? dataUsers.list.map(item => (\n                                <tr key={item.userProfileId}>\n                                    <td>{item.employeeNo}</td>\n                                    <td>{item.middleName} {item.lastName} {item.firstName}</td>\n                                    <td>{item.department?.departmentName}</td>\n                                    <td>\n                                        <label className=\"toggler-wrapper dark\" htmlFor={`check-${item.userProfileId}`}>\n                                            <input type=\"checkbox\" id={`check-${item.userProfileId}`} onClick={(event) => handleSelectUser(event, item)} checked={item.check} />\n                                            <div className=\"toggler-slider\">\n                                                <div className=\"toggler-knob\"></div>\n                                            </div>\n                                        </label>\n                                    </td>\n                                </tr>\n                            )) :\n                            <tr key={1}>\n                                <td colSpan=\"4\" className=\"text-center\"><p>No hay registros</p></td>\n                            </tr>\n                        }\n                        </tbody>\n                    </Table>\n                    {\n                        dataUsers.list.length > 0 ?\n                            <div className={'admin-table-footer'}>\n                                <Pagination\n                                    prev last next first\n                                    size=\"lg\"\n                                    ellipsis maxButtons={10}\n                                    boundaryLinks pages={dataUsers.totalPages}\n                                    activePage={dataUsers.pageIndex}\n                                    onSelect={handleSelectPage}\n                                />\n                            </div>\n                            : \"\"\n                    }\n                </div>\n            </Col>\n        </Row>\n    );\n}\n","import { callApi, callApiFileStorage } from './service'\nimport swal from \"sweetalert\"\n\nexport const messageService = {\n    getMessage,\n    getMessageById,\n    createMessage,\n    updateDraftMessage,\n    updateMessage,\n    deleteMessage,\n    createWelcomeMessage,\n    getUnreadCount,\n    getMessageByGroup,\n    getGroupMessageById\n}\n\nasync function getMessage(type, orderBy, status) {\n    return callApi('/backend/Message?type=' + type + '&orderBy=' + orderBy + '&status=' + status, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return []\n        }\n    });\n}\n\nasync function getMessageById(id) {\n    return callApi('/backend/Message/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function createMessage(params, files) {\n    var data = new FormData();\n    if (files)\n        for (var i = 0; i < files.length; i++) {\n            var f = files[i];\n            data.append('files', f, f.name);\n        }\n    data.append(\"model\", JSON.stringify(params))\n\n    return callApiFileStorage('/backoffice/Message', 'POST', data, false)\n        .then((result) => {\n            if (result.responseCode === '00') {\n                swal({ text: \"Creación exitosa\", icon: \"success\" })\n                return result.data\n            }\n            else if(result.responseCode === '06'){\n                swal({ text: \"No puedes enviarte un mensaje a ti mismo\", icon: \"error\" })\n                return false\n            }\n            else {\n                swal({ text: result.responseMessage, icon: \"error\" })\n                return null\n            }\n\n        });\n}\n\nasync function createWelcomeMessage(params, files) {\n    var data = new FormData();\n    if (files)\n    for (var i = 0; i < files.length; i++) {\n        var f = files[i];\n        data.append('files', f, f.name);\n    }\n    data.append(\"model\", JSON.stringify(params))\n\n    return callApi('/backoffice/WelcomeMessage', 'POST', data, {\n        SkipValidationToken: true,\n      })\n        .then((result) => {\n            if (result.responseCode === '00') {\n                return result.data\n            }\n            else if(result.responseCode === '06'){\n                return false\n            }\n            else {\n                return null\n            }\n\n        });\n}\n\nasync function updateDraftMessage(params, files) {\n    var data = new FormData();\n    if (files)\n        for (var i = 0; i < files.length; i++) {\n            var f = files[i];\n            data.append('files', f, f.name);\n        }\n    data.append(\"model\", JSON.stringify(params))\n\n    return callApiFileStorage('/backoffice/Message', 'PUT', data, false)\n        .then((result) => {\n            if (result.responseCode === '00') {\n                swal({ text: \"Actualizado correctamente\", icon: \"success\" })\n                return result.data\n            }\n            else {\n                swal({ text: result.responseMessage, icon: \"error\" })\n                return null\n            }\n        });\n}\n\nasync function updateMessage(params) {\n    var data = new FormData()\n    data.append(\"model\", JSON.stringify(params))\n\n    return callApiFileStorage('/backend/Message', 'PUT', data, false).then((result) => {\n        if (result.responseCode === '00') {\n            return result.data\n        }\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function deleteMessage(id) {\n    return callApi('/backend/Message/' + id, 'DELETE').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function getUnreadCount() {\n    return callApi('/backend/Message/GetUnreadCount', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return []\n        }\n    });\n}\n//Para obtener solo los mensajes enviados por el usuario\nasync function getMessageByGroup(orderBy) {\n    return callApi('/backend/Message/Group?orderBy=' + orderBy, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n//Para obtener los datos de Detalles de Mensaje del que fue seleccionado de la petición de arriba\nasync function getGroupMessageById(MessageId,PageIndex,PageTotal) {\n    return callApi('/backend/Message/ByMessageId/' + MessageId + '/' + PageIndex  + '/' + PageTotal, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n","import { callApi, callApiFileStorage } from './service'\n\nexport const storageService = {\n    uploadFiles,\n    deleteStorage,\n    addStorage,\n    updateStorage\n};\n\nasync function uploadFiles(files) {\n\n    var data = new FormData();\n    data.append(\"model\", JSON.stringify({ Id: 1, Des: 'aaaaa' }));\n\n    for (var i = 0; i < files.length; i++) {\n        var f = files[i];\n        data.append('files', f, f.name);\n    }\n\n    return callApiFileStorage('/backoffice/uploadFiles', 'POST', data);\n}\nasync function deleteStorage(params) {\n    return callApi('/backoffice/Storage', 'DELETE', params).then((result) => handleRsponse(result));\n}\nasync function addStorage(params, file) {\n    var data = new FormData();\n    data.append(\"model\", JSON.stringify(params));\n    data.append('files', file, file.name);\n    return callApiFileStorage('/backoffice/Storage', 'POST', data).then((result) => handleRsponse(result));\n}\nasync function updateStorage(params, file) {\n    var data = new FormData();\n    data.append(\"model\", JSON.stringify(params));\n    data.append('files', file, file.name);\n    return callApiFileStorage('/backoffice/Storage', 'PUT', data).then((result) => handleRsponse(result));\n}\n\nfunction handleRsponse(result) {\n    if (result.responseCode === '00')\n        return result.data;\n    else {\n        alert(result.responseMessage);\n        return null;\n    }\n}","import React, { Fragment, useEffect, useState } from \"react\";\nimport useInputSingleForm from \"../components/CustonHooks/inputFormHook\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { callApi } from './service'\n\nexport const metaPixelService = {\n    trackEvent,\n    saveEvent,\n    customEvent,\n    simpleEvent\n}\n\nconst token = process.env.REACT_APP_PIXEL_TOKEN\nconst pixelId = process.env.REACT_APP_PIXEL_ID\n\nconst testData = {\n    \"id\": 0,\n    \"section\": 'LearningCenter',\n    \"content_type\": 'Link',\n}\n\nasync function trackEvent(type, name, data, currentUrl) {\n    window.fbq(\"init\", pixelId);\n    window.fbq(type, name, data);\n\n    var params = {\n        type: name,\n        pixelData: data,\n        url: currentUrl\n    }\n\n    callApi('/backend/PixelTrack', 'POST', params, {\n        SkipValidationToken: true,\n      }).then((result) => {\n        if (result.responseCode !== '00') {\n            console.log('error',result);\n        }\n    });\n}\n\nasync function saveEvent(type, name, data) {\n    data = {...data, access_token: token}\n    window.fbq(\"init\", pixelId);\n    window.fbq(type, name, data);\n}\n\nasync function customEvent(type, name, data = null) {\n    window.fbq(\"init\", pixelId);\n    if(data){\n        window.fbq(type, name, data);\n    } else {\n        window.fbq(type, name);\n    }\n}\n\nasync function simpleEvent(type, name, testCode = null) {\n    window.fbq(\"init\", pixelId);\n    if(testCode){\n        window.fbq(type, name, {test_event_code: testCode});\n    } else {\n        window.fbq(type, name);\n    }\n    var params = {\n        type: name,\n        pixelData: {}\n    }\n    callApi('/backend/PixelTrack', 'POST', params).then((result) => {\n        if (result.responseCode !== '00') {\n            console.log('error',result);\n        }\n    });\n}\n\n// fbq('track', 'ViewContent', {\n//     content_name: 'Content Title',\n//     content_category: 'Learning',\n//     content_ids: ['1234'],\n//     content_type: 'product',\n//     value: 0.50,\n//     currency: 'MXN'\n//    }); {test_event_code: 'test123'}\n","import { callApi, callApiFileStorage } from \"./service\";\nimport swal from \"sweetalert\";\nimport { welcomeMessage } from \"./welcomeMessage.service\";\nimport { metaPixelService } from \"./metaPixel.service\";\nimport { setToken } from \"../hooks/authHook\";\n\nexport const userService = {\n    login,\n    logout,\n    forgotPassword,\n    resetPassword,\n    editProfile,\n    updateStyle,\n    validateEmailAccount,\n    register,\n    verifyAccount\n};\n\n/**\n * Login\n */\nasync function login(params) {\n  return callApi(\"/Auth/Login\", \"POST\", params, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    if (result.responseCode === \"00\") setToken(result.data);\n\n    return result;\n  });\n}\n\n/**\n * Logout\n */\nasync function logout() {\n  localStorage.removeItem(\"_rtpride\");\n  localStorage.removeItem(\"_tpride\");\n  localStorage.removeItem(\"userId\");\n  localStorage.removeItem(\"roleName\");\n  localStorage.removeItem(\"isFirstTime\"); //use for notifications\n}\n\n/*\n Send email to recovery password\n */\nasync function forgotPassword(params) {\n  return callApi(\"/Auth/ForgotPassword\", \"POST\", params, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    if (result.responseCode === \"00\") {\n      swal({\n        text: \"Se ha enviado un link a tu correo para reestablecer tu contraseña\",\n        icon: \"success\",\n      }).then(() => (window.location.href = \"/login\"));\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n  });\n}\n\nasync function validateEmailAccount(params) {\n  return callApi(\"/Auth/ValidateEmailAccount\", \"POST\", params, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n  });\n}\n\n/*\n Set the new user password\n */\nasync function resetPassword(params) {\n  return callApi(\"/Auth/ResetPassword\", \"POST\", params, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    if (result.responseCode === \"00\") {\n      swal({\n        text: \"Tu contraseña ha sido restablecida.\",\n        icon: \"success\",\n      }).then(() => (window.location.href = \"/login\"));\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n  });\n}\n\nasync function editProfile(data, companyId) {\n  const formData = new FormData();\n  formData.append(\"CompanyId\", companyId);\n  formData.append(\n    \"ProfileImage\",\n    data.ProfileImage != null ? data.ProfileImage[0] : null\n  );\n  if (data.GenderIdentityId && data.GenderIdentityId != 0) {\n    formData.append(\"GenderIdentityId\", data.GenderIdentityId);\n    formData.append(\"GenderIdentityFlag\", data.GenderIdentityFlag);\n  }\n  if (data.nickname != null && data.nickname != \"undefined\") {\n    if (data.nickname.trim() == \"\") {\n      formData.append(\"nickname\", \"a5cdc20f-c8fe-48df-be43-fc56f43a198a\");\n    } else {\n      formData.append(\"nickname\", data.nickname);\n    }\n  }\n  if (data.additionalEmail != null && data.additionalEmail != \"undefined\") {\n    if (data.additionalEmail.trim() == \"\") {\n      formData.append(\n        \"additionalEmail\",\n        \"a5cdc20f-c8fe-48df-be43-fc56f43a198a\"\n      );\n    } else {\n      formData.append(\"additionalEmail\", data.additionalEmail);\n    }\n  }\n\n  if (data.Notification != null) {\n    formData.append(\"Notification\", data.Notification );\n  }\n\n  if (data.Preferences != null)\n    formData.append(\"Preferences\", data.Preferences);\n\n  if (data.Mobile != null) formData.append(\"Mobile\", data.Mobile);\n  return callApiFileStorage(\n    \"/Account/EditProfile\",\n    \"POST\",\n    formData,\n    false\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return swal({\n        text: \"El perfil se actualizó correctamente\",\n        icon: \"success\",\n      }).then((value) => (window.location.href = \"/profile\"));\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n      return false;\n    }\n  });\n}\n\nasync function updateStyle(data){\n\n    return callApi('/Account/UpdateColor', 'POST', data,{\n        SkipValidationToken: true,\n      })\n        .then((result) => {\n            if (result.responseCode === \"00\") {                \n                return true;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return false;\n            }\n        });\n}\nfunction currentURL() {\n  return window.location.href\n}\nfunction getUserAgent() {\n  return window.navigator.userAgent;\n}\n\nasync function register(model) {\n  // window.location.href = \"/successfull-register\";\n  return callApi(\"/Auth/Register\", \"POST\", model, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    if (result.responseCode === \"00\") {\n      // welcomeMessage.sendMessage(result.data); \n      var pixelUserInfoObj = JSON.parse(result.data);\n      var registerPixelUserInfo = pixelUserInfoObj.RegisterPixelUserInfo;\n      registerPixelUserInfo.client_user_agent = getUserAgent();\n      var ped = { content_name: \"Registro\" };\n      var pixelData = { pixelUserInfo: registerPixelUserInfo, pixelCustomData: ped };\n      metaPixelService.trackEvent('track','CompleteRegistration', pixelData, currentURL());\n\n      setTimeout(() => {\n        window.location.href = \"/successfull-register\"\n      }, 2300);\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n  });\n}\n\nasync function verifyAccount(params) {\n  return callApi(\"/Auth/VerifyAccount\", \"POST\", params, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    //WelcomeMessage();\n    return result;\n  });\n}\n","import { callApi, callApiNoBlocking } from \"./service\";\n\nexport const backendService = {\n  widgets,\n  userProfile,\n  userSettings,\n  userProfileActivity,\n  GetNotificationData,\n  CountNotificationUser,\n  getCompanyCustomize,\n};\n\nasync function widgets() {\n  return callApiNoBlocking(\"/Home/Widgets\", \"GET\").then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      return null;\n    }\n  });\n}\n\nasync function CountNotificationUser() {\n  return callApi(\"/Home/GetNotificationCount\", \"GET\").then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      return null;\n    }\n  });\n}\n\nasync function GetNotificationData() {\n  return callApiNoBlocking(\"/Home/GetNotification\", \"GET\").then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      return null;\n    }\n  });\n}\n\n/*\nGet user profile info\n */\n\nasync function userProfile() {\n  return callApi(\n    `/BackEnd/Profile?UserId=${localStorage[\"userId\"]}`,\n    \"GET\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      return null;\n    }\n  });\n}\n\nasync function userSettings() {\n  return callApi(\"/Home/UserSettings\", \"GET\").then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      return {};\n    }\n  });\n}\n\nasync function userProfileActivity(active) {\n  return callApi(\"/BackOffice/Attendee/GetUserActivity/\" + active, \"GET\").then(\n    (result) => {\n      if (result.responseCode === \"00\") {\n        return result.data;\n      } else {\n        return {};\n      }\n    }\n  );\n}\n\nasync function getCompanyCustomize(companyId) {\n  return callApi(\n    \"/BackEnd/CompanyCustomize/GetByCompanyId/\" + companyId,\n    \"GET\",\n    undefined,\n    { SkipValidationToken: true }\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      return {};\n    }\n  });\n}\n","/**\n * checks if Push notification and service workers are supported by your browser\n */\nfunction isPushNotificationSupported() {\n    return \"serviceWorker\" in navigator && \"PushManager\" in window;\n}\n\n/**\n * asks user consent to receive push notifications and returns the response of the user, one of granted, default, denied\n */\nfunction initializePushNotifications() {\n    // request user grant to show notification\n    return Notification.requestPermission(function (result) {\n        return result;\n    });\n}\n/**\n * shows a notification\n */\nasync function sendNotification(items) {\n    const options = {\n        body: \"\",\n        icon: \"./imgs/prideMxNotification.png\",\n        vibrate: [300, 100, 400],\n        tag: \"PrideMxNotif\",\n        requireInteraction: true\n    };\n\n    navigator.serviceWorker.ready.then(function (serviceWorker) {\n        items.map((item) => {\n            options.body = item.message;\n            options.tag += `${item.userProfileEventTypeNotificationId}${item.targetId}`;\n            serviceWorker.showNotification(item.companyEventTypeNotificationMessage, options);\n        });\n    });\n}\n\nwindow.self.addEventListener('notificationclick', (event) => {\n    console.log('On notification click: ', event.notification.tag);\n    event.notification.close();\n\n    // This looks to see if the current is already open and\n    // focuses if it is\n    event.waitUntil(window.clients.matchAll({\n        type: \"window\"\n    }).then((clientList) => {\n        for (const client of clientList) {\n            if (client.url === '/' && 'focus' in client)\n                return client.focus();\n        }\n        if (window.clients.openWindow)\n            return window.clients.openWindow('/');\n    }));\n});\n\nexport {\n    isPushNotificationSupported,\n    initializePushNotifications,\n    sendNotification\n};","import React from \"react\";\n\nexport const ImgCache = (props) => {\n    return <img {...props} src={props.src + \"?v=\" + new Date().toString()} alt=\"\" />\n}\n","import React, { useEffect, useState } from \"react\";\nimport { HubConnectionBuilder } from \"@microsoft/signalr\";\nimport { useHistory, useLocation, Link } from \"react-router-dom\";\nimport { FaFacebookF } from \"react-icons/fa6\";\nimport { FaInstagram, FaYoutube, FaTiktok } from \"react-icons/fa\";\nimport {\n  FacebookShareButton,\n  TwitterShareButton,\n  LinkedinShareButton,\n  WhatsappShareButton,\n} from \"react-share\";\nimport \"./header.scss\";\nimport { Tag } from \"rsuite\";\nimport { IoMdMenu } from \"react-icons/io\";\nimport { userService } from \"../../services/user.service\";\nimport { useSelector } from \"react-redux\";\nimport { backendService } from \"../../services/backend.service\";\nimport {\n  isPushNotificationSupported,\n  sendNotification,\n  initializePushNotifications,\n} from \"./header.notification\";\nimport { InputGroupText, Input, InputGroup, Alert } from \"reactstrap\";\nimport {\n  FaBellSlash,\n  FaCopy,\n  FaEnvelope,\n  FaFacebook,\n  FaLinkedin,\n  FaSignOutAlt,\n  FaWhatsapp,\n} from \"react-icons/fa\";\nimport { Dropdown, Button } from \"rsuite\";\nimport { FaXTwitter } from \"react-icons/fa6\";\nimport { ImgCache } from \"../CustonHooks/imgCache\";\nimport { Tooltip } from \"antd\";\nimport \"rsuite/dist/styles/rsuite-default.css\";\n\nexport function Header({ userProfile, windowDimensions, messages }) {\n  const history = useHistory();\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [notificationInfo, setNotificationInfo] = useState({\n    notificationInfoData: [],\n  });\n\n  const [companyLogo, setCompanyLogo] = useState(\"\");\n  const [connection, setConnection] = useState(null);\n\n  /* states for dropdowns */\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n  const toggle = () => {\n    setDropdownOpen((prevState) => !prevState);\n  };\n\n  /* end states for dropdowns */\n  const logout = () => {\n    const style = document.getElementsByTagName(\"style\");\n    document\n      .getElementsByTagName(\"head\")[0]\n      .removeChild(style[style.length - 1]);\n    userService.logout().then(() => {\n      history.push(\"/\");\n    });\n  };\n\n  const miPerfil = () => history.push(\"profile\");\n\n  useEffect(() => {\n    if (performance.navigation.type !== 1) {\n      let isFirstTime = localStorage[\"isFirstTime\"];\n      if (isFirstTime === undefined) {\n        localStorage[\"isFirstTime\"] = true;\n        if (isPushNotificationSupported()) {\n          initializePushNotifications().then(function (dataConsent) {\n            if (dataConsent === \"granted\") GetnotificationApi(true, false);\n          });\n        }\n      }\n    }\n    GetnotificationApi(false, true);\n  }, []);\n\n  const GetnotificationApi = (ShowPush, ShowNotif) => {\n    backendService.GetNotificationData().then((result) => {\n      if (result) {\n        if (ShowPush) sendNotification(result);\n        if (ShowNotif) setNotificationInfo({ notificationInfoData: result });\n      }\n    });\n  };\n\n  const [pathname, setPathname] = useState(useLocation());\n\n  let urls = window.location.href;\n\n  const [activeLink, setActiveLink] = useState(\"\");\n\n  const getCurrentRoute = () => {\n    if (\n      pathname.pathname === \"/audience\" ||\n      pathname.pathname == \"/course-view\" ||\n      pathname.pathname === \"/pride-music\" ||\n      pathname.pathname === \"/blog-company\" ||\n      pathname.pathname == \"/stories-pride\"\n    ) {\n      setActiveLink(\"categoriesPride\");\n    }\n    if (\n      // pathname.pathname === \"/messages\" ||\n      pathname.pathname == \"/rewards\" ||\n      pathname.pathname == \"/profile\" ||\n      // pathname.pathname == \"/diary\" ||\n      pathname.pathname == \"/surveys\"\n    ) {\n      setActiveLink(\"userInfo\");\n    }\n    if (\n      pathname.pathname === \"/interest-group\" ||\n      pathname.pathname == \"/caring-community\" ||\n      pathname.pathname == \"/discount\" ||\n      pathname.pathname == \"/job-bank\" ||\n      pathname.pathname == \"/register-job\" ||\n      pathname.pathname == \"/directory\"\n    ) {\n      setActiveLink(\"communityPride\");\n    }\n    if (pathname.pathname === \"/home\") setActiveLink(\"home\");\n    if (pathname.pathname === \"/admin\") setActiveLink(\"admin\");\n  };\n\n  useEffect(() => {\n    getCurrentRoute();\n  }, [pathname.pathname]);\n\n  const [visible, setVisible] = useState(false);\n  const onDismiss = () => setVisible(!visible);\n  const showAlert = () => setVisible(!visible);\n\n  const [widgets, setWidgets] = useState({\n    surveyWidget: {},\n    messageWidget: {},\n    rewardWidget: {},\n    courseWidget: {},\n    providerWidget: [{ id: 0, logoCrls: \"\" }],\n  });\n\n  useEffect(() => {\n    if (connection) {\n      connection\n        .start()\n        .then(() => {\n          connection.on(\"beNotified\", (notification) => {\n            const listaEventos = [];\n            listaEventos.push(notification);\n            sendNotification(listaEventos);\n            GetnotificationApi(false, true);\n          });\n        })\n        .catch((error) => console.log(error));\n    }\n    getCurrentRoute();\n  }, [connection]);\n\n  useEffect(() => {\n    backendService\n      .userSettings()\n      .then((result) => setCompanyLogo(result.companyLogo));\n    backendService.widgets().then((data) => {\n      if (data.surveyWidget != null) {\n        let date = new Date();\n        date.setDate(date.getDate() + data.surveyWidget.expirationDays);\n        data.surveyWidget.expirationDate = date;\n      }\n      setWidgets(data);\n    });\n    const connection = new HubConnectionBuilder()\n      .withUrl(`${process.env.REACT_APP_HUB_URL}/notification`, {\n        headers: { NoBlocking: true },\n      })\n      .withAutomaticReconnect()\n      .build();\n\n    setConnection(connection);\n  }, []);\n\n  const [profile, setProfileInfo] = useState({});\n\n  async function getProfileInfo() {\n    backendService.userProfile().then((data) => {\n      setProfileInfo(data);\n    });\n  }\n\n  useEffect(() => {\n    backendService.userSettings().then((result) => {\n      getProfileInfo();\n    });\n  }, []);\n\n  const [visibleMenu, setVisibleMenu] = useState(false);\n  const handleMenu = () => {\n    setVisibleMenu(!visibleMenu);\n  };\n\n  return (\n    <header className=\"wrapper_header\">\n      <div className=\"header_top\">\n        <div className=\"container_am\">\n          <div className=\"box_social\">\n            <span>Síguenos en </span>\n            <a\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"facebook\"\n              href=\"https://www.facebook.com/SomosPrideMx/\"\n            >\n              <FaFacebookF />\n            </a>\n\n            <a\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"instagram\"\n              href=\"https://instagram.com/somos_pridemx?igshid=YmMyMTA2M2Y=\"\n            >\n              <FaInstagram />\n            </a>\n\n            <a\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"twitter\"\n              href=\"https://twitter.com/SomosPrideMx\"\n            >\n              <FaXTwitter />\n            </a>\n\n            <a\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"twitter\"\n              href=\"https://www.youtube.com/@pridemx\"\n            >\n              <FaYoutube />\n            </a>\n\n            <a\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"twitter\"\n              href=\"https://www.linkedin.com/company/82353363\"\n            >\n              <i className=\"fab fa-linkedin-in\"></i>\n            </a>\n\n            <a\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"twitter\"\n              href=\"https://www.tiktok.com/@somos_pridemx\"\n            >\n              <FaTiktok />\n            </a>\n          </div>\n          {\n            {\n              \"Recursos Humanos\": (\n                <div className=\"box_user_admin\">\n                  <Link to=\"/admin\">Soy administrador</Link>\n                </div>\n              ),\n            }[roleName]\n          }\n        </div>\n      </div>\n      <div className=\"header_center\">\n        <div className=\"container_am\">\n          <div className=\"header_brand\">\n            <Button className=\" btn__menu__home\" onClick={handleMenu}>\n              <IoMdMenu />\n            </Button>\n            <a href={roleName === \"Operaciones\" ? \"/homeOps/1\" : \"/home\"}>\n              <ImgCache src={companyLogo} alt={\"Logo Kuimby\"} />\n            </a>\n            {/* <Doodle view='rwd__movil' init='particlesInit'/> */}\n          </div>\n\n          <nav className={`header_nav ${visibleMenu ? \"active\" : \"\"}`}>\n            <Dropdown noCaret title=\"Entretenimiento\">\n              <Dropdown.Item as={Link} href=\"course-view\">\n                Cartelera Pride{\" \"}\n                {widgets.courseWidget ? (\n                  <span className=\"veiw_badge\">\n                    {widgets.courseWidget.quantity}\n                  </span>\n                ) : (\n                  \"\"\n                )}\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/blog-company/gallery\">\n                Galería\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/audience\">\n                Pride Talks\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/pride-music\">\n                Pride Music\n              </Dropdown.Item>\n            </Dropdown>\n            <Dropdown noCaret title=\"Información\">\n              <Dropdown.Item as={Link} href=\"/blog-company\">\n                Mundo Pride\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/stories-pride\">\n                Orgullo Pride\n              </Dropdown.Item>\n              {/* <Dropdown.Item as={Link} href=\"/\">\n                Web Cómic\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/\">\n                Descargables\n              </Dropdown.Item> */}\n            </Dropdown>\n            <Dropdown noCaret title=\"Comunidad\">\n              <Dropdown.Item as={Link} href=\"/job-bank\">\n                Bolsa de trabajo{\" \"}\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/directory\">\n                Economía incluyente{\" \"}\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/interest-group\">\n                Grupos de interés\n              </Dropdown.Item>\n            </Dropdown>\n            <Dropdown noCaret title=\"Beneficios\">\n              <Dropdown.Item as={Link} href=\"/discount\">\n                Beneficios Pride\n              </Dropdown.Item>\n              <Dropdown.Item as={Link} href=\"/rewards\">\n                Rewards\n              </Dropdown.Item>\n            </Dropdown>\n          </nav>\n\n          <div className=\"header_user\">\n            <Tooltip placement=\"left\" title={\"Compartir página\"}>\n              <Dropdown\n                placement=\"bottomEnd\"\n                trigger={[\"click\"]}\n                title={<i className=\"icon-share\"></i>}\n                className=\"button-circle light share\"\n              >\n                <div className=\"sharing-content\">\n                  <p>Comparte esta página</p>\n                  <div className=\"icons\">\n                    <FacebookShareButton url={urls} className=\"facebook\">\n                      <FaFacebook size={24} />\n                    </FacebookShareButton>\n                    <TwitterShareButton url={urls} className=\"twitter\">\n                      <FaXTwitter size={24} />\n                    </TwitterShareButton>\n                    <WhatsappShareButton url={urls} className=\"whatsapp\">\n                      <FaWhatsapp size={24} />\n                    </WhatsappShareButton>\n                    <LinkedinShareButton url={urls} className=\"linkedin\">\n                      <FaLinkedin size={24} />\n                    </LinkedinShareButton>\n                  </div>\n                  <Alert color=\"success\" isOpen={visible} toggle={onDismiss}>\n                    ¡Link copiado!\n                  </Alert>\n                  <p>O copia el link</p>\n                  <div className=\"copy-paste\">\n                    <InputGroup>\n                      <Input type=\"text\" readOnly value={urls} />\n                      <InputGroupText>\n                        <button\n                          onClick={() => {\n                            navigator.clipboard.writeText(urls);\n                            showAlert();\n                          }}\n                        >\n                          <FaCopy />\n                        </button>\n                      </InputGroupText>\n                    </InputGroup>\n                  </div>\n                </div>\n              </Dropdown>\n            </Tooltip>\n\n            <Tooltip placement=\"left\" title={\"Notificaciones\"}>\n              <Dropdown\n                className=\"button-circle light notifications\"\n                trigger={[\"click\"]}\n                placement=\"bottomEnd\"\n                title={\n                  <>\n                    <i className=\"icon-notifications\"></i>\n                    <span className=\"quantity\">\n                      {notificationInfo?.notificationInfoData?.length}\n                    </span>\n                  </>\n                }\n              >\n                <div className=\"notifications-body\">\n                  <div className=\"notifications-title\">Notificaciones</div>\n                  <ul\n                    className={`notifications-content ${\n                      notificationInfo?.notificationInfoData?.length > 0\n                        ? \"\"\n                        : \"empty\"\n                    }`}\n                  >\n                    {notificationInfo?.notificationInfoData?.length > 0 ? (\n                      notificationInfo.notificationInfoData.map(\n                        (item, index) => (\n                          <li\n                            className=\"notifications-content-item\"\n                            key={index}\n                          >\n                            <a href={item.link} onClick={() => toggle(item)}>\n                              <span>\n                                {item.companyEventTypeNotificationMessage}\n                              </span>\n                              <p>{item.message}</p>\n                            </a>\n                          </li>\n                        )\n                      )\n                    ) : (\n                      <li className=\"notifications-content-empty\">\n                        <FaBellSlash />\n                        <span>No hay nuevas notificaciones</span>\n                      </li>\n                    )}\n                  </ul>\n                </div>\n              </Dropdown>\n            </Tooltip>\n\n            <Dropdown\n              noCaret\n              className=\"button-user\"\n              trigger={[\"click\"]}\n              placement=\"bottomEnd\"\n              title={\n                userProfile && userProfile.genderIdentityFlag ? (\n                  <>\n                    <div className={`avatar `}>\n                      <div\n                        className={`avatar-box rotating ${userProfile.genderIdentityFlag}`}\n                      ></div>\n                      <img\n                        src={userProfile && userProfile.urlProfileImage}\n                        alt=\"PMX\"\n                      />\n                    </div>\n                    <div className=\"user-info\">\n                      <p className=\"m-0 text fnt_bold\">{profile.firstName}</p>\n                      <p className=\"m-0\">{profile.reward} puntos</p>\n                    </div>\n                    {windowDimensions <= 575 ? (\n                      <>\n                        {notificationInfo?.notificationInfoData?.length >= 0 ? (\n                          <span className=\"dot_notif\"></span>\n                        ) : (\n                          \"\"\n                        )}\n                      </>\n                    ) : (\n                      \"\"\n                    )}\n                  </>\n                ) : (\n                  <>\n                    <div className={`avatar`}>\n                      <div className=\"avatar-box rotating\"></div>\n                      <img\n                        src={userProfile && userProfile.urlProfileImage}\n                        alt=\"PMX\"\n                      />\n                    </div>\n                    <div className=\"user-info\">\n                      <p className=\"m-0 text fnt_bold\">{profile.firstName}</p>\n                      <p className=\"m-0\">{profile.reward} puntos</p>\n                    </div>\n                    {windowDimensions <= 575 ? (\n                      <>\n                        {notificationInfo?.notificationInfoData?.length >= 0 ? (\n                          <span className=\"dot_notif\"></span>\n                        ) : (\n                          \"\"\n                        )}\n                      </>\n                    ) : (\n                      \"\"\n                    )}\n                  </>\n                )\n              }\n            >\n              {/*  <span className=\"quantity\">\n                       {notificationInfo?.notificationInfoData?.length} \n                      </span>*/}\n              <Dropdown.Item onClick={miPerfil} href=\"/profile\">\n                <i className=\"icon-user\"></i>\n                <p>Mi Perfil</p>\n              </Dropdown.Item>\n              {windowDimensions <= 575 ? (\n                <Dropdown\n                  className=\"dropdown-notifications notif__mobile\"\n                  placement=\"bottomEnd\"\n                  noCaret\n                  title={\n                    <>\n                      <i className=\"icon-notifications\"></i>\n                      <p>\n                        Notificaciones\n                        <Tag size=\"sm\" color=\"orange\">\n                          {notificationInfo?.notificationInfoData?.length}\n                        </Tag>\n                      </p>\n                    </>\n                  }\n                >\n                  <Dropdown.Menu\n                    title={\n                      <>\n                        <div className=\"notifications-body\">\n                          <div className=\"notifications-title\">\n                            Notificaciones\n                          </div>\n                          <ul\n                            className={`notifications-content ${\n                              notificationInfo?.notificationInfoData?.length > 0\n                                ? \"\"\n                                : \"empty\"\n                            }`}\n                          >\n                            {notificationInfo?.notificationInfoData?.length >\n                            0 ? (\n                              notificationInfo.notificationInfoData.map(\n                                (item, index) => (\n                                  <li\n                                    className=\"notifications-content-item\"\n                                    key={index}\n                                  >\n                                    <a\n                                      href={item.link}\n                                      onClick={() => toggle(item)}\n                                    >\n                                      <span>\n                                        {\n                                          item.companyEventTypeNotificationMessage\n                                        }\n                                      </span>\n                                      <p>{item.message}</p>\n                                    </a>\n                                  </li>\n                                )\n                              )\n                            ) : (\n                              <li className=\"notifications-content-empty\">\n                                <FaBellSlash />\n                                <span>No hay nuevas notificaciones</span>\n                              </li>\n                            )}\n                          </ul>\n                        </div>\n                      </>\n                    }\n                  ></Dropdown.Menu>\n                </Dropdown>\n              ) : (\n                \"\"\n              )}\n              <Dropdown.Item href=\"/logout\" onClick={logout}>\n                <i>\n                  <FaSignOutAlt />\n                </i>\n                <p> Cerrar sesión</p>\n              </Dropdown.Item>\n            </Dropdown>\n          </div>\n        </div>\n        <script src=\"/service-worker.js\" />\n      </div>\n    </header>\n  );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Modal } from \"reactstrap\";\nimport \"./blockScreen.scss\";\n\nexport const BlockScreen = () => {\n  const blocking = useSelector((state) => state.blocking);\n\n  return (\n    <Modal\n      isOpen={blocking}\n      className=\"modal_blocking\"\n      style={{\n        width: \"100%\",\n        height: \"100%\",\n        display: \"flex\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n        paddingRight: \"0 !important\",\n        border: \"0 !important\",\n      }}\n    >\n      <div className=\"loader\">\n        <div className=\"loader-inner\">\n          <div className=\"loader-line-wrap\">\n            <div className=\"loader-line\"></div>\n          </div>\n          <div className=\"loader-line-wrap\">\n            <div className=\"loader-line\"></div>\n          </div>\n          <div className=\"loader-line-wrap\">\n            <div className=\"loader-line\"></div>\n          </div>\n          <div className=\"loader-line-wrap\">\n            <div className=\"loader-line\"></div>\n          </div>\n          <div className=\"loader-line-wrap\">\n            <div className=\"loader-line\"></div>\n          </div>\n          <div className=\"loader-line-wrap\">\n            <div className=\"loader-line\"></div>\n          </div>\n        </div>\n      </div>\n    </Modal>\n  );\n};\n","import { useState } from 'react';\nimport moment from 'moment';\n\nconst getInstallPromptLastSeenAt = (promptName) => localStorage.getItem(promptName);\n\nconst setInstallPromptSeenToday = (promptName) => {\n    const today = moment().toISOString();\n    localStorage.setItem(promptName, today);\n};\n\nfunction getUserShouldBePromptedToInstall(promptName, daysToWaitBeforePromptingAgain) {\n    const lastPrompt = moment(getInstallPromptLastSeenAt(promptName));\n    const daysSinceLastPrompt = moment().diff(lastPrompt, 'days');\n    return isNaN(daysSinceLastPrompt) || daysSinceLastPrompt > daysToWaitBeforePromptingAgain;\n}\n\nconst useShouldShowPrompt = (promptName, daysToWaitBeforePromptingAgain = 30) => {\n    const [userShouldBePromptedToInstall, setUserShouldBePromptedToInstall] = useState(\n        getUserShouldBePromptedToInstall(promptName, daysToWaitBeforePromptingAgain)\n    );\n\n    const handleUserSeeingInstallPrompt = () => {\n        setUserShouldBePromptedToInstall(false);\n        setInstallPromptSeenToday(promptName);\n    };\n\n    return [userShouldBePromptedToInstall, handleUserSeeingInstallPrompt];\n};\nexport default useShouldShowPrompt;","import useShouldShowPrompt from './shouldShowPrompt';\n\nconst iosInstallPromptedAt = 'iosInstallPromptedAt';\n\nconst isIOS = () => {\n    // @ts-ignore\n    if (navigator.standalone) {\n        //user has already installed the app\n        return false;\n    }\n    const ua = window.navigator.userAgent;\n    const isIPad = !!ua.match(/iPad/i);\n    const isIPhone = !!ua.match(/iPhone/i);\n    return isIPad || isIPhone;\n};\n\nconst useIosInstallPrompt = () => {\n    const [userShouldBePromptedToInstall, handleUserSeeingInstallPrompt] = useShouldShowPrompt(iosInstallPromptedAt);\n\n    return [isIOS() && userShouldBePromptedToInstall, handleUserSeeingInstallPrompt];\n};\nexport default useIosInstallPrompt;","import { useState, useEffect } from 'react';\nimport useShouldShowPrompt from './shouldShowPrompt';\n\nconst webInstallPromptedAt = 'webInstallPromptedAt';\n\nconst useWebInstallPrompt = () => {\n    const [installPromptEvent, setInstallPromptEvent] = useState();\n    const [userShouldBePromptedToInstall, handleUserSeeingInstallPrompt] = useShouldShowPrompt(webInstallPromptedAt);\n\n    useEffect(() => {\n        const beforeInstallPromptHandler = event => {\n            event.preventDefault();\n\n            // check if user has already been asked\n            if (userShouldBePromptedToInstall) {\n                // store the event for later use\n                setInstallPromptEvent(event);\n            }\n        };\n        window.addEventListener('beforeinstallprompt', beforeInstallPromptHandler);\n        return () => window.removeEventListener('beforeinstallprompt', beforeInstallPromptHandler);\n    }, [userShouldBePromptedToInstall]);\n\n    const handleInstallDeclined = () => {\n        handleUserSeeingInstallPrompt();\n        setInstallPromptEvent(null);\n    };\n\n    const handleInstallAccepted = () => {\n        // show native prompt\n        installPromptEvent.prompt();\n\n        // decide what to do after the user chooses\n        installPromptEvent.userChoice.then(choice => {\n            // if the user declined, we don't want to show the prompt again\n            if (choice.outcome !== 'accepted') {\n                handleUserSeeingInstallPrompt();\n            }\n            setInstallPromptEvent(null);\n        });\n    };\n    return [installPromptEvent, handleInstallDeclined, handleInstallAccepted];\n};\nexport default useWebInstallPrompt;","import React from \"react\";\nimport { Modal, Card, CardText, CardBody, CardTitle } from \"reactstrap\";\nimport useIosInstallPrompt from \"../../hooks/iosInstallPrompt\";\nimport useWebInstallPrompt from \"../../hooks/webInstallPrompt\";\nimport {Button} from \"rsuite\";\n\nexport const InstallPWA = () => {\n  const [iosInstallPrompt, handleIOSInstallDeclined] = useIosInstallPrompt();\n  const [webInstallPrompt, handleWebInstallDeclined, handleWebInstallAccepted] =\n    useWebInstallPrompt();\n\n  if (!iosInstallPrompt && !webInstallPrompt) {\n    return null;\n  }\n  return (\n    <Modal isOpen centered>\n      <Card>\n        <img\n          className=\"mx-auto\"\n          style={{\n            borderTopRightRadius: \"50%\",\n            borderTopLeftRadius: \"50%\",\n            backgroundColor: \"#fff\",\n            marginTop: \"-50px\",\n          }}\n          width=\"100px\"\n          src=\"/pwa/imgs/icons/android-icon-512x512.png\"\n          alt=\"Icon\"\n        />\n        <CardBody>\n          <CardTitle className=\"text-center\">\n            <h3>Instalar App</h3>\n          </CardTitle>\n          {iosInstallPrompt && (\n            <>\n              <CardText className=\"text-center\">\n                Da clic en\n                <img\n                  src=\"pwa/imgs/icons/Navigation_Action.png\"\n                  style={{ margin: \"auto 8px 8px\" }}\n                  className=\"\"\n                  alt=\"Add to homescreen\"\n                  width=\"20\"\n                />\n                después &quot;Agregar al Inicio&quot;\n              </CardText>\n              <div className=\"d-flex justify-content-center\">\n                <Button style={{borderRadius: '50px', padding: '.5rem 1rem'}} onClick={handleIOSInstallDeclined}>Cerrar</Button>\n              </div>\n            </>\n          )}\n          {webInstallPrompt && (\n            <div className=\"d-flex justify-content-around\">\n              <Button style={{borderRadius: '50px', padding: '.5rem 1rem'}} color=\"primary\" onClick={handleWebInstallAccepted}>\n                Instalar\n              </Button>\n              <Button style={{borderRadius: '50px', padding: '.5rem 1rem'}} onClick={handleWebInstallDeclined}>Cerrar</Button>\n            </div>\n          )}\n        </CardBody>\n      </Card>\n    </Modal>\n  );\n};\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\n\nexport const contactUsService = {\n    sendContactMessage\n};  \n\nasync function sendContactMessage(params) {\n    return callApi('/Site/PrideMxContactUs', 'POST', params, {\"SkipValidationToken\" : true}).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: result.responseMessage, icon: \"success\" })\n            return result.responseMessage;\n        } else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null;\n        }\n    });\n}\n\n\n\n\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Modal, Form, Input, Space } from \"antd\";\nimport { CloseOutlined } from \"@ant-design/icons\";\nimport { contactUsService } from '../../services/contactUs.service';\n// import imgContactUS from \"../../assets/imgs/contact_us.jpg\";\nimport imgContactUS from \"../../assets/imgs/contact_us.jpg\";\nimport Swal from \"sweetalert2\";\nimport \"./modalContact.scss\";\n\n\n\nexport const ModalContact = (props) => {\n  const { TextArea } = Input;\n  const [form] = Form.useForm();\n  const values = Form.useWatch([], form);\n  const [submittable, setSubmittable] = useState(false);\n  const [openModal, setOpenModal] = useState(false);\n  const [contact, setContact] = useState({\n    subject: \"\",\n    email: \"\",\n    textMessage: \"\",\n  });\n  const submitMyForm = async (contact) => {\n    setSubmittable(false);\n    if (!contact.subject == \"\"  &&  !contact.email == \"\" && !contact.textMessage == \"\") \n    {\n      \n      await contactUsService.sendContactMessage(contact)\n      .then((result) => {\n        if (result) {\n          form.resetFields();\n          setOpenModal(!openModal);\n        }\n      });\n      \n      console.log(\"Mensaje enviado\");\n    }\n  };\n\n  useEffect(() => {\n    form.validateFields({\n        validateOnly: true,\n      })\n      .then(() => setSubmittable(true))\n      .catch(() => setSubmittable(false));\n  }, [form, values]);\n  \n\n  const showContact = () => {\n    setOpenModal(!openModal);\n  };\n\n  const handleInputChange = (e) => setContact({...contact, [e.target.name]: e.target.value})\n\n  return (\n    <>\n      <button className=\"link_footer\" onClick={showContact}>\n        Contacto\n      </button>\n      <Modal\n        className=\"wrapper_modal_contact\"\n        open={openModal}\n        centered\n        width={820}\n      >\n        <div className=\"contact_poster\">\n          <img\n            src={imgContactUS}\n            alt=\"Contácta al Equipo de PrideMx para más información\"\n            title=\"Contacto PrideMx\"\n            className=\"frm_contct_img_blur\"\n          />\n          <img\n            src={imgContactUS}\n            alt=\"Contácta al Equipo de PrideMx para más información\"\n            title=\"Contacto PrideMx\"\n            className=\"frm_contct_img\"\n          />\n          {/* <div className=\"box_mnj_contacto\">\n            <h2 className=\"form_contact_ttl xbold \">\n              El poder de la comunidad\n            </h2>\n            <h2 className=\"form_contact_ttl xthin\">\n              <i>en un solo espacio</i>\n            </h2>\n          </div> */}\n        </div>\n        <div className=\"contact_form\">\n          <div className=\"contact_pts\">\n            <div className=\"contact_pt_a\">\n              <h2 className=\"form_contact_ttl xthin\">Necesito</h2>\n              <h2 className=\"form_contact_ttl xbold\">más información</h2>\n            </div>\n            <Form\n              form={form}\n              name=\"validateOnly\"\n              layout=\"vertical\"\n              autoComplete=\"off\"\n              className=\"is_form_contact\"\n            >\n              <Form.Item label={\"Asunto\"} name={\"subject\"} rules=\n                {[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                ]}\n              >\n                <Input name=\"subject\" onChange={handleInputChange} />\n              </Form.Item>\n\n              <Form.Item label=\"Correo electrónico\" name={\"email\"} rules=\n                {[\n                  {\n                    type: \"email\",\n                    required: true,\n                    message: \"*Ingresa un correo electrónico valido\",\n                  },\n                ]}\n              >\n                <Input name=\"email\" onChange={handleInputChange} />\n              </Form.Item>\n\n              <Form.Item label=\"Mensaje\" name={\"textMessage\"} rules=\n                {[\n                  {\n                    required: true,\n                    message: \"*Ingresa un mensaje de al menos 10 caracteres.\",\n                    min: 10, \n                  },\n                ]}\n              >\n                <TextArea rows={2} name= \"textMessage\" onChange={handleInputChange} />\n              </Form.Item>\n\n              <Form.Item>\n                <Space>\n                  <Button type=\"primary\" htmlType=\"button\"  onClick={()=>submitMyForm(contact)} disabled={!submittable} >\n                    Enviar mensaje\n                  </Button>\n                </Space>\n              </Form.Item>\n            </Form>\n          </div>\n        </div>\n\n        <Button\n          shape=\"circle\"\n          icon={<CloseOutlined />}\n          size=\"small\"\n          onClick={showContact}\n          className=\"btn_closed\"\n        ></Button>\n      </Modal>\n    </>\n  );\n};\n","import { callApiNoBlocking } from \"./service\";\n\nexport const chatService = {\n  sendMessage,\n  getContacts,\n  getContactsOpt,\n  getChats,\n  getMessages,\n  updateRead,\n  managementGroup,\n  getGroups,\n  contactStatus,\n  blockedContact,\n  contactUnlocked,\n};\n\nasync function getContacts() {\n  return callApiNoBlocking(\"/chats/contacts\", \"GET\")\n    .then((result) => {\n      return result;\n    })\n    .catch((error) => {\n      console.log(error);\n      return [];\n    });\n}\n\nasync function getContactsOpt(offset, limit) {\n  return callApiNoBlocking(`/chats/contactsOpt?offset=${offset}&limit=${limit}`, \"GET\")\n    .then((result) => {\n      console.log(result);\n      return {\n        contacts: result.activeContacts,\n        hasMore: result.hasMore,\n      };\n    })\n    .catch((error) => {\n      console.log(error);\n      return { contacts: [], hasMore: false };\n    });\n}\n\n\nasync function sendMessage(chatMessage) {\n  return callApiNoBlocking(\"/chats/sendmessage\", \"POST\", chatMessage);\n}\n\nasync function getChats() {\n  return callApiNoBlocking(\"/chats\", \"GET\")\n    .then((result) => {\n      return result;\n    })\n    .catch((error) => {\n      console.log(error);\n      return undefined;\n    });\n}\n\nasync function getMessages(receiverId, dateTime) {\n  return callApiNoBlocking(\n    `/chats/messages/${receiverId}/${dateTime ? dateTime : \"\"}`,\n    \"GET\"\n  )\n    .then((result) => {\n      return result;\n    })\n    .catch((error) => {\n      console.log(error);\n      return [];\n    });\n}\n\nasync function updateRead(receiverId) {\n  return callApiNoBlocking(`/chats/updateread/${receiverId}`, \"PUT\");\n}\n\nasync function managementGroup(group) {\n  return callApiNoBlocking(\"/chats/groups\", \"POST\", group);\n}\n\nasync function getGroups() {\n  return callApiNoBlocking(\"/chats/groups\", \"GET\")\n    .then((result) => result)\n    .catch((error) => {\n      console.log(error);\n      return [];\n    });\n}\n\nasync function contactStatus(contactId) {\n  return callApiNoBlocking(`/chats/contactstatus/${contactId}`, \"GET\");\n}\n\nasync function blockedContact(contactId) {\n  return callApiNoBlocking(`/chats/blockedcontact/${contactId}`, \"PUT\");\n}\n\nasync function contactUnlocked(contactId) {\n  return callApiNoBlocking(`/chats/blockedcontact/${contactId}`, \"DELETE\");\n}","import React from \"react\";\nimport {Input} from \"reactstrap\";\nimport {BsSearch} from \"react-icons/bs\";\n\nexport function Searches({ placeHolder, handleSearch }) {\n    return (\n        <div className=\"searcher-container\">\n            <Input type=\"text\" placeholder={placeHolder} onChange={(e) => handleSearch(e.target.value)}/>\n            <label className=\"icon\"><BsSearch /></label>\n        </div>\n    );\n}\n","import React from \"react\";\n\nexport function TtlsChats(props) {\n  return <h6 className=\"title \">{props.title}</h6>;\n}\n","import React from \"react\";\n\nexport function AvatarChats({ img, titleImg, flagClass }) {\n  return (\n    <div className=\"flag-container\">\n      {flagClass && flagClass ? (<div className={`bg rotating ${flagClass}`}></div>) : (\"\")}\n      <div className=\"flag-container-avatar\">\n          <img src={img ? img : \"https://storagervadmindev.blob.core.windows.net/ctnprimecontentmx/BaseImage/Default-avatar.jpg\"} alt=\"Usuarios en Kuimby\" title={titleImg}/>\n      </div>\n    </div>\n  );\n}\n{\n  /* ====================\n     CLASES COLOR STATUS\n     ======================\n    .active\n    .occupied\n    .disconnected */\n}\n{\n  /*<span className=\"status_color active\"></span>*/\n}\n","import React, { useEffect, useState } from \"react\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { chatService } from \"./../../services/chat.service\";\nimport { Searches } from \"./searches\";\nimport { TtlsChats } from \"./ttlsChats\";\nimport { AvatarChats } from \"./avatarChats\";\n\nexport function ListChats({ showChat, chatNotification, setNotifications }) {\n  const [chats, setChats] = useState([]);\n  const [chatsSearch, setChatsSearch] = useState([]);\n\n  useEffect(() => {\n    chatService.getChats().then((result) => {\n      setChats(result);\n      setChatsSearch(result);\n      const unread = result.filter((item) => item.unread);\n      setNotifications(unread.map((i) => i.contactId));\n    });\n  }, []);\n\n  useEffect(() => {\n    if (Object.keys(chatNotification).length > 0) {\n      const filteredChat = chats.find(\n        (item) => item.contactId == chatNotification.contactId\n      );\n      if (filteredChat) {\n        chatNotification.name = filteredChat.name;\n        chatNotification.unread += filteredChat.unread;\n        chatNotification.image = filteredChat.image;\n      }\n\n      const filteredChats = chats.filter(\n        (item) => item.contactId != chatNotification.contactId\n      );\n      if (chatNotification.unread) filteredChats.unshift(chatNotification);\n\n      setChats(filteredChats);\n      setChatsSearch(filteredChats);\n    }\n  }, [chatNotification]);\n\n  const handleSearch = (text) => {\n    if (text) {\n      text = text.removeAccents().toUpperCase();\n      let chatFiltered = chats.filter((item) =>\n        item.name.removeAccents().toUpperCase().includes(text)\n      );\n      if (chatFiltered.length > 0) {\n        let contactsFiltered = Object.assign([], chatFiltered);\n        setChatsSearch(contactsFiltered);\n        return;\n      }\n\n      setChatsSearch([]);\n    } else setChatsSearch(chats);\n  };\n\n  return (\n    <div className=\"list-chats-container active\">\n      <TtlsChats title=\"Chats\" />\n      <Searches placeHolder=\"Buscar chat\" handleSearch={handleSearch} />\n      <TtlsChats title=\"Recientes\" />\n      {chatsSearch.map((item) => (\n        <div\n          className={`list-chats-container-item ${item.unread && \"new-mnj\"}`}\n          key={item.contactId}\n          onClick={() => showChat(item)}\n          title={item.name}\n        >\n          <AvatarChats img={item.image} titleImg={item.name} flagClass={item.identityFlagName}/>\n          <div className=\"info-chat\">\n            <div className=\"name\">{item.name}</div>\n            <div className=\"time\">\n              <Moment format=\"hh:mm a\">{item.lastMessageDate}</Moment>\n            </div>\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n}\n","import React, { useRef, useEffect, useState } from \"react\";\nimport { chatService } from \"./../../services/chat.service\";\nimport { TtlsChats } from \"./ttlsChats\";\nimport { AvatarChats } from \"./avatarChats\";\nimport moment from \"moment\";\nimport { Button } from \"rsuite\";\n\nexport function NewGroup({ isOpenGroup, lastOpenGroup, updateGroup }) {\n  const [contacts, setContacts] = useState([]);\n  const [contactsSearch, setContactsSearch] = useState([]);\n  const [form, setForm] = useState({\n    name: \"\",\n    expirationDate: \"\",\n    contacts: [],\n  });\n  const [infoGroupSec, secInfoGroupSec] = useState(\"1\");\n  const [findContact, setFindContact] = useState(\"\");\n  const buttonRef = useRef();\n  const toggle = (sec) => {\n    if (infoGroupSec !== sec) secInfoGroupSec(sec);\n  };\n\n  useEffect(() => {\n    chatService.getContacts().then((result) => {\n      setContacts(result.activeContacts);\n      setContactsSearch(result.activeContacts);\n    });\n  }, []);\n\n  useEffect(() => {\n    if (updateGroup) {\n      setForm({\n        name: updateGroup.name,\n        expirationDate: moment(updateGroup.expirationDate).format(\"YYYY-MM-DD\"),\n        contacts: updateGroup.contacts,\n      });\n    } else {\n      setForm({ name: \"\", expirationDate: \"\", contacts: [] });\n    }\n    console.log(\"form: \", form);\n  }, [updateGroup]);\n\n  const handleSearch = (text) => {\n    setFindContact(text);\n    if (text) {\n      text = text.removeAccents().toUpperCase();\n      let contactFiltered = contacts.filter((item) =>\n        item.name.removeAccents().toUpperCase().includes(text)\n      );\n      if (contactFiltered.length > 0) {\n        let contactsFiltered = Object.assign([], contactFiltered);\n        setContactsSearch(contactsFiltered);\n        return;\n      }\n\n      setContactsSearch([]);\n    } else setContactsSearch(contacts);\n  };\n\n  const handelForm = (e) => {\n    var value;\n    if (e.target.name == \"expirationDate\") {\n      value = moment(e.target.value).format(\"YYYY-MM-DD\");\n    } else if (e.target.name == \"Image\") {\n      value = URL.createObjectURL(e.target.files[0]);\n    } else {\n      value = e.target.value;\n    }\n    setForm({ ...form, [e.target.name]: value });\n    console.log(form.Image);\n  };\n\n  const handleCheckbox = (e) => {\n    if (e.target.checked)\n      setForm({ ...form, contacts: [...form.contacts, e.target.name] });\n    else\n      setForm({\n        ...form,\n        contacts: [...form.contacts.filter((item) => item != e.target.name)],\n      });\n  };\n\n  const onSubmit = () => {\n    if (form.name && form.contacts.length > 0) {\n      buttonRef.current.disabled = true;\n      chatService\n        .managementGroup({\n          Id: updateGroup ? updateGroup.id : null,\n          Name: form.name,\n          Image: \"\",\n          Contacts: form.contacts,\n          ExpirationDate: form.expirationDate ? form.expirationDate : null,\n        })\n        .then(() => {\n          buttonRef.current.disabled = false;\n          setForm({ name: \"\", expirationDate: \"\", contacts: [] });\n          toggle(1);\n          lastOpenGroup();\n        })\n        .catch((error) => {\n          buttonRef.current.disabled = false;\n          console.log(error);\n        });\n    }\n  };\n\n  const selectAllUsers = (value) => {\n    if (value.target.checked) {\n      setForm({ ...form, contacts: contactsSearch.map((user) => user.userId) });\n    } else {\n      setForm({ ...form, contacts: [] });\n    }\n  };\n\n  return (\n    <div className={`sec_new_group ${isOpenGroup}`}>\n      {\n        {\n          1: (\n            <div className=\"cont_new_group__info\">\n              {/* <div className=\"drawer_avatar_gp avatarINewGroup\">\n                <span className=\"toback\" onClick={lastOpenGroup}>\n                  <i className=\"fas fa-chevron-left\"></i>\n                </span>\n                <AvatarChats img={form.Image} />\n                <label\n                  for=\"GroupImage\"\n                  className=\"custom-file-upload icons\"\n                >\n                  <ion-icon name=\"camera-outline\"></ion-icon>\n                </label>\n                <input\n                  id=\"GroupImage\"\n                  type=\"file\"\n                  name=\"Image\"\n                  accept=\"image/*\"\n                  onChange={(e) => {\n                    handelForm(e);\n                  }}\n                />\n                <button type=\"submit\" className=\"icons ico_save\">\n                  <i className=\"fas fa-check\"></i>\n                </button>\n              </div> */}\n              <div className=\"drawer_info_gp\">\n                <div className=\"form-group mt-2\">\n                  <TtlsChats title=\"Asunto del grupo\" />\n                  <input\n                    type=\"text\"\n                    className=\"form-control mt-1\"\n                    name=\"name\"\n                    value={form.name}\n                    id=\"group\"\n                    aria-describedby=\"asuntoGrupo\"\n                    placeholder=\"Agrega un asunto al grupo\"\n                    onChange={(e) => handelForm(e)}\n                  />\n                </div>\n                <div className=\"form-group\">\n                  <TtlsChats title=\"Vigencia del grupo\" />\n                  <input\n                    className=\"form-control mt-1\"\n                    type=\"date\"\n                    id=\"expirationDate\"\n                    name=\"expirationDate\"\n                    value={form.expirationDate}\n                    onChange={(e) => handelForm(e)}\n                  />\n                </div>\n              </div>\n              <div className=\"text-center \">\n                <Button className=\"\" onClick={() => toggle(2)}>\n                  Siguiente <ion-icon name=\"arrow-forward-outline\"></ion-icon>\n                </Button>\n              </div>\n            </div>\n          ),\n          2: (\n            <div className=\"cont_new_group__contact\">\n              <div className=\"box_inputs\">\n                <div className=\"to_back_gr\" onClick={() => toggle(1)}>\n                  <i className=\"fas fa-chevron-left\"></i>\n                </div>\n                <div className=\"box_search_contact\">\n                  <label className=\"text fnt_medium\">\n                    Añadir participantes\n                  </label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Buscar contacto\"\n                    onChange={(e) => handleSearch(e.target.value)}\n                    value={findContact}\n                  />\n                </div>\n\n                <span className=\"ico_form\">\n                  <input type=\"checkbox\" onChange={selectAllUsers} />\n                  <small className=\"text fnt_medium\">\n                    {form.contacts.length}/{contactsSearch.length}\n                  </small>\n                </span>\n              </div>\n\n              <div className=\"box_list_contact\">\n                {contactsSearch.map((user) => (\n                  <div\n                    className=\"inputGroup\"\n                    key={user.userId}\n                    title={user.name}>\n                    <input\n                      id={user.userId}\n                      name={user.userId}\n                      type=\"checkbox\"\n                      onChange={handleCheckbox}\n                      checked={form.contacts.includes(user.userId)}\n                    />\n                    <label for={user.userId}>\n                      <AvatarChats img={user.urlImage} />\n                      <div className=\"name_chat text fnt_book\">{user.name}</div>\n                    </label>\n                  </div>\n                ))}\n              </div>\n              <div className=\"box_btns_options \">\n                <button\n                  className=\"btn primary minimum \"\n                  ref={buttonRef}\n                  disabled={!form.name || form.contacts.length == 0}\n                  onClick={onSubmit}>\n                  {updateGroup ? \"Actualizar\" : \"Crear\"} grupo\n                </button>\n              </div>\n            </div>\n          ),\n        }[infoGroupSec]\n      }\n    </div>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { chatService } from \"./../../services/chat.service\";\nimport { Searches } from \"./searches\";\nimport { TtlsChats } from \"./ttlsChats\";\nimport { AvatarChats } from \"./avatarChats\";\nimport { NewGroup } from \"./newGroup\";\nimport {BsPersonAdd} from \"react-icons/bs\";\nimport {Button, Space} from \"antd\";\n\nexport function ListGroups({ showChat }) {\n  const [groups, setGroups] = useState([]);\n  const [groupsSearch, setGroupsSearch] = useState([]);\n  const [updateGroup, setUpdateGroup] = useState(null);\n  const [openGroup, setOpenGroup] = useState(\"\");\n  const fOpenGroup = () => setOpenGroup(openGroup === \"\" ? \"open_new_group\" : \"\");\n\n  useEffect(() => {\n    if (openGroup === \"\") {\n      chatService.getGroups().then((result) => {\n        setGroups(result);\n        setGroupsSearch(result);\n      });\n      setUpdateGroup(null);\n    }\n  }, [openGroup]);\n\n  const handleSearch = (text) => {\n    if (text) {\n      text = text.removeAccents().toUpperCase();\n      let groupFiltered = groups.filter((item) =>\n        item.name.removeAccents().toUpperCase().includes(text)\n      );\n      if (groupFiltered.length > 0) {\n        let groupsFiltered = Object.assign([], groupFiltered);\n        setGroupsSearch(groupsFiltered);\n        return;\n      }\n\n      setGroupsSearch([]);\n    } else setGroupsSearch(groups);\n  };\n\n  const handleOpenChat = (group) => {\n    const chat = {\n      contactId: group.id,\n      name: group.name,\n      image: group.image,\n      readOnly: false,\n    };\n    showChat(chat);\n  };\n\n  const handleUpdateGroup = (group) => {\n    if (openGroup === \"\") setOpenGroup('open_new_group')\n    setUpdateGroup(group);\n    setOpenGroup('')\n  };\n\n  return (\n    <div className=\"sections-chat active list-chats-container list-users\">\n      <div className=\"list-users-options\">\n        <TtlsChats title=\"Grupos\" />\n        <button className=\"btn-new-group\" onClick={() => handleUpdateGroup()}>\n          <BsPersonAdd /> {\" \"}\n          <span>Crear grupo</span>\n        </button>\n      </div>\n      <Searches placeHolder=\"Buscar grupo\" handleSearch={handleSearch} />\n      <div className=\"overflow_wpr\">\n        {groupsSearch.map((group) => (\n          <div className=\"item\" key={group.id}>\n            <AvatarChats img={group.image} />\n            <div className=\"item-chat\">\n              <div className=\"name\">{group.name}</div>\n              <Space>\n                <Button className=\"btn-msg sm\" onClick={() => handleUpdateGroup(group)}>\n                  <i className=\"icon-edit\"></i>\n                </Button>\n                <Button className=\"btn-msg sm\" onClick={() => handleOpenChat(group)}>\n                  <i className=\"icon-message\"></i>\n                </Button>\n              </Space>\n            </div>\n          </div>\n        ))}\n      </div>\n      <NewGroup\n        isOpenGroup={openGroup}\n        lastOpenGroup={fOpenGroup}\n        updateGroup={updateGroup}\n      />\n    </div>\n  );\n}\n","import React, { useEffect, useState, useRef, useCallback } from \"react\";\nimport { chatService } from \"./../../services/chat.service\";\nimport { Searches } from \"./searches\";\nimport { TtlsChats } from \"./ttlsChats\";\nimport { AvatarChats } from \"./avatarChats\";\nimport { FaCommentDots, FaTimesCircle } from \"react-icons/fa\";\nimport { BsChevronLeft } from \"react-icons/bs\";\n\nexport function ListContact({ showChat }) {\n  const [contacts, setContacts] = useState([]);\n  const [blockedContacts, setBlockedContacts] = useState([]);\n  const [contactsSearch, setContactsSearch] = useState([]);\n  const [offset, setOffset] = useState(0);\n  const [hasMore, setHasMore] = useState(true);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const limit = 20; // Número de contactos a cargar por solicitud\n\n  // Cargar contactos con paginación\n  const loadContacts = useCallback(() => {\n    if (isLoading || !hasMore) return;\n\n    setIsLoading(true);\n    chatService.getContactsOpt(offset, limit).then((response) => {\n      if (response.contacts.length > 0) {\n        setContacts((prevContacts) => [...prevContacts, ...response.contacts]);\n        setContactsSearch((prevContacts) => [...prevContacts, ...response.contacts]);\n      }\n\n      setHasMore(response.hasMore);\n      setOffset((prevOffset) => prevOffset + limit);\n      setIsLoading(false);\n    });\n  }, [offset, hasMore, isLoading]);\n\n  useEffect(() => {\n    loadContacts();\n  }, []);\n\n  // Detectar scroll al final de la lista\n  const observer = useRef();\n  const lastContactRef = useCallback(\n    (node) => {\n      if (isLoading) return;\n      if (observer.current) observer.current.disconnect();\n      observer.current = new IntersectionObserver((entries) => {\n        if (entries[0].isIntersecting && hasMore) {\n          loadContacts();\n        }\n      });\n      if (node) observer.current.observe(node);\n    },\n    [isLoading, hasMore]\n  );\n\n  const handleSearch = (text) => {\n    if (text) {\n      text = text.toUpperCase();\n      let filteredContacts = contacts.filter((item) =>\n        item.name.toUpperCase().includes(text)\n      );\n\n      setContactsSearch(filteredContacts.length > 0 ? filteredContacts : []);\n    } else {\n      setContactsSearch(contacts);\n    }\n  };\n\n  const handleOpenChat = (user) => {\n    const chat = {\n      contactId: user.userId,\n      name: user.name,\n      image: user.urlImage,\n      identityFlagName: user.flag,\n      readOnly: false,\n    };\n    showChat(chat);\n  };\n\n  const [openBlocked, setOpenBlocked] = useState(\"\");\n  const handleOpenBlocked = () => {\n    setOpenBlocked(openBlocked === \"\" ? \"open\" : \"\");\n  };\n\n  return (\n    <div className=\"sections-chat active contacts-container list-users p-3\">\n      <div className=\"list-users-options\">\n        <TtlsChats title=\"Contactos\" />\n        <button className=\"btn-new-group\" onClick={handleOpenBlocked}>\n          <FaTimesCircle />\n          <span>Bloqueados</span>\n        </button>\n      </div>\n      <Searches placeHolder=\"Buscar contacto\" handleSearch={handleSearch} />\n\n      <div className=\"contacts-container-content\">\n        {contactsSearch.map((contact, index) => {\n          let isLastContact = index === contactsSearch.length - 1;\n\n          return (\n            <div\n              key={contact.userId}\n              ref={isLastContact ? lastContactRef : null}\n              className=\"item\"\n            >\n              <AvatarChats img={contact.urlImage} flagClass={contact.flag} />\n              <div className=\"item-chat\">\n                <p className=\"name\">{contact.name}</p>\n                <div className=\"options\">\n                  <span className=\"opt_chat\" onClick={() => handleOpenChat(contact)}>\n                    <FaCommentDots />\n                  </span>\n                </div>\n              </div>\n            </div>\n          );\n        })}\n        {isLoading && <p>Cargando más contactos...</p>}\n      </div>\n\n      <div className={`list-user-blocked ${openBlocked}`}>\n        <div className=\"d-flex-between\" style={{ paddingBottom: \"1rem\" }}>\n          <button type=\"button\" className=\"button-back\" onClick={handleOpenBlocked}>\n            <BsChevronLeft />\n          </button>\n          <h6>Usuarios bloqueados</h6>\n        </div>\n        {blockedContacts.map((contact) => (\n          <div className=\"item\" key={contact.userId}>\n            <AvatarChats img={contact.urlImage} flagClass={contact.flag} />\n            <div className=\"item-chat\">\n              <p className=\"name\">{contact.name}</p>\n              <div className=\"options\">\n                <span onClick={() => handleOpenChat(contact)}>\n                  <FaCommentDots />\n                </span>\n              </div>\n            </div>\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n}\n\n","import React from \"react\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\n\nexport function ItemConversation(props) {\n  return (\n    <div className={`box-item ${props.source}`}>\n      <div className=\"box-item-conversation\">\n        <div className=\"box-item-conversation-content\">\n          <div className=\"info-mnj\">\n            <span className=\"info-mnj-author\">{props.author}</span>\n            <span className=\"info-mnj-check\">\n              {props.source === \"out\" ? (\n                <span className=\"check-message\">\n                  {!props.checkMnj ? (\n                    <ion-icon name=\"chatbubble-outline\"></ion-icon>\n                  ) : (\n                    <ion-icon name=\"chatbubble\"></ion-icon>\n                  )}\n                </span>\n              ) : (\n                \"\"\n              )}\n            </span>\n          </div>\n          <p className=\"message\">{props.chatMnj}</p>\n        </div>\n        <div className=\"datatime-mnj\">\n          <Moment format=\"ddd D/MM/YY hh:mm a\">{props.dateTime}</Moment>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { chatService } from \"./../../services/chat.service\";\nimport { TtlsChats } from \"./ttlsChats\";\nimport { AvatarChats } from \"./avatarChats\";\nimport { ItemConversation } from \"./itemConversation\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\nimport {BsChevronLeft} from \"react-icons/bs\";\nimport { FaEllipsisV, FaPaperPlane, FaTimesCircle} from \"react-icons/fa\";\n\nimport {Dropdown, DropdownItem, DropdownMenu, DropdownToggle} from \"reactstrap\";\n\nexport function ChatConversations({\n  currentChat,\n  newMessageReceived,\n  notification,\n  toggle,\n  openChat,\n}) {\n  const [messages, setMessages] = useState([]);\n  const [newMessage, setNewMessage] = useState(\"\");\n  const [dateTime, setDateTime] = useState(null);\n  const [disabledHasMore, setDisabledHasMore] = useState(false);\n  const [blockedChat, setBlockedChat] = useState({});\n  const inputElementRef = useRef();\n  const buttonRef = useRef();\n\n  useEffect(() => {\n    if (Object.keys(currentChat).length > 0) {\n      chatService.getMessages(currentChat.contactId).then((result) => {\n        setMessages(result);\n        if (result.length > 0) {\n          setDateTime(result.at(-1).date);\n          chatService.updateRead(currentChat.contactId);\n        } else setDisabledHasMore(true);\n      });\n    }\n  }, [currentChat]);\n\n  useEffect(() => {\n    const msgExist = messages.some(item => item.messageId === newMessageReceived.messageId);\n\n    if (Object.keys(newMessageReceived).length > 0 && openChat && !msgExist ) {\n      setMessages([newMessageReceived, ...messages]);\n      if (!newMessageReceived.isSender)\n        chatService.updateRead(currentChat.contactId);\n    }\n  }, [newMessageReceived, openChat]);\n\n  useEffect(() => {\n    if (notification != \"\" && !notification.includes(\"blockedContact\")) {\n      let messagesUnread = messages.map((m) => {\n        if (m.messageId == notification) m.status = \"Read\";\n        return m;\n      });\n      setMessages(messagesUnread);\n    } else contactStatus();\n  }, [notification]);\n\n  const contactStatus = () => {\n    chatService.contactStatus(currentChat.contactId).then((result) => {\n      setBlockedChat(result);\n    });\n  };\n\n  const timelineRef = useRef();\n  const onSubmit = (e) => {\n    e.preventDefault();\n    if (newMessage != \"\") {\n      buttonRef.current.disabled = true;\n      timelineRef.current.scrollTo(0, timelineRef.current.scrollHeight);\n      const chatMessage = {\n        message: newMessage,\n        receiver: {\n          id: currentChat.contactId,\n          name: currentChat.name,\n          image: currentChat.image,\n          identityFlagName: currentChat.identityFlagName,\n        },\n      };\n      chatService.sendMessage(chatMessage).then(() => {\n        setNewMessage(\"\");\n        buttonRef.current.disabled = false;\n        inputElementRef.current.focus();\n      });\n    }\n  };\n\n  const loadMore = () => {\n    chatService.getMessages(currentChat.contactId, dateTime).then((result) => {\n      if (result.length > 0) {\n        setMessages([...messages, ...result]);\n        setDateTime(result.at(-1).date);\n      }\n      setDisabledHasMore(true);\n    });\n  };\n\n  const lockAndUnlock = async () => {\n    if (blockedChat.byMe)\n      await chatService.contactUnlocked(currentChat.contactId);\n    else await chatService.blockedContact(currentChat.contactId);\n\n    contactStatus();\n  };\n\n  const handleNewMessage = (event) => {\n    buttonRef.current.disabled = !event.target.value;\n    setNewMessage(event.target.value);\n  };\n\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n  const toggleUserBlocked = () => setDropdownOpen((prevState) => !prevState);\n\n  return (\n    <div className=\"sections-chat active conversations-container\">\n      <div className=\"conversations-container-chats\">\n        <button type=\"button\" className=\"button-back\" onClick={() => toggle(\"1\")}>\n          <BsChevronLeft />\n        </button>\n        <AvatarChats img={currentChat.image} flagClass={currentChat.identityFlagName}/>\n        <div className=\"info\">\n          <TtlsChats title={currentChat.name} />\n          {blockedChat && blockedChat.byMe == true && (<p>Usuario bloqueado</p>)}\n        </div>\n\n        <Dropdown className=\"btn-group\" isOpen={dropdownOpen} toggle={toggleUserBlocked} direction=\"top\">\n          <DropdownToggle><FaEllipsisV /></DropdownToggle>\n          <DropdownMenu>\n            <DropdownItem  onClick={lockAndUnlock}>\n              {blockedChat && blockedChat.byMe == true ? (\n                <p>Desbloquear usuario</p>\n              ) : (\n                <p>Bloquear usuario</p>\n              )}\n              <span><FaTimesCircle /></span>\n            </DropdownItem>\n          </DropdownMenu>\n        </Dropdown>\n      </div>\n      <div className=\"conversations-container-content\" id=\"scrollableDiv\" ref={timelineRef}>\n        <InfiniteScroll\n          dataLength={messages.length}\n          next={loadMore}\n          style={{ display: \"flex\", flexDirection: \"column-reverse\" }}\n          inverse={true}\n          hasMore={true && !disabledHasMore}\n          loader={<h4>Cargando...</h4>}\n          scrollableTarget=\"scrollableDiv\"\n        >\n          {messages.map((item) => {\n            return item.isSender ? (\n              <ItemConversation\n                key={item.messageId}\n                source=\"out\"\n                author=\"Tu.\"\n                checkMnj={item.status === \"Read\"}\n                dateTime={item.date}\n                chatMnj={item.message}\n              />\n            ) : (\n              <ItemConversation\n                key={item.messageId}\n                source=\"in\"\n                author={item.senderName}\n                checkMnj={true}\n                dateTime={item.date}\n                chatMnj={item.message}\n              />\n            );\n          })}\n        </InfiniteScroll>\n      </div>\n      <div className=\"conversations-container-typing\">\n        {!currentChat.readOnly && blockedChat && blockedChat.locked == false && (\n          <form onSubmit={onSubmit}>\n            <div className=\"form-group text\">\n              <textarea\n                className=\"form-control\"\n                id=\"message\"\n                placeholder=\"Escribe un mensaje aquí\"\n                value={newMessage}\n                onChange={handleNewMessage}\n                ref={inputElementRef}\n              ></textarea>\n              <button type=\"submit\" className=\"btn\" ref={buttonRef} disabled={true}>\n                <FaPaperPlane />\n              </button>\n            </div>\n          </form>\n        )}\n      </div>\n    </div>\n  );\n}\n","import React from \"react\";\n\nexport function ProfileChat(props) {\n    return (\n        <div className=\"sections_chat active_sec wrapper_profile_chat p-3\"\n        >\n            <div\n                className=\"sec_avatar_profile\"\n                style={{\n                    backgroundImage:\n                        'url(\"https://storagervadmindev.blob.core.windows.net/ctnprimecontentmx/1/Imgs/Profile/perfil_Mesa de trabajo 1.jpg\")',\n                }}\n            >\n                <span className=\"to_back\">\n                    <i className=\"fas fa-chevron-left\"></i>\n                </span>\n                <span className=\"to_edit_avatar\">\n                    <i className=\"fas fa-pen\"></i>\n                </span>\n\n                <div className=\"content_info_profile\">\n                    <h5 className=\"text fnt_medium m-0\">Laura Mertinez Carmona</h5>\n                    <div className=\"dropdown drawer_drop_status\">\n                        <span\n                            className=\" dropdown-toggle\"\n                            id=\"dropdownMenuStatus\"\n                            data-toggle=\"dropdown\"\n                            aria-haspopup=\"true\"\n                            aria-expanded=\"false\"\n                        >\n                            <span className=\"dots_status active\"></span>\n                            <span>Activo</span>\n                        </span>\n                        <div className=\"dropdown-menu\" aria-labelledby=\"dropdownMenuStatus\">\n                            <button className=\"dropdown-item\" type=\"button\">\n                                <span className=\"dots_status active\"></span>\n                                <span>Activo</span>\n                            </button>\n                            <div className=\"dropdown-divider\"></div>\n\n                            <button className=\"dropdown-item \" type=\"button\">\n                                <span className=\"dots_status occupied\"></span>\n                                <span>Ocupado</span>\n                            </button>\n                            <div className=\"dropdown-divider\"></div>\n\n                            <button className=\"dropdown-item\" type=\"button\">\n                                <span className=\"dots_status disconnected\"></span>\n                                <span>Desconectado</span>\n                            </button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div className=\"sec_info_profile\">\n                <div className=\"mb-3\">\n                    <h6>\n                        <span>\n                            <i className=\"far fa-envelope\"></i>\n                        </span>{\" \"}\n            Correo electrónico\n          </h6>\n                    <h5 className=\"text fnt_medium\">lmartinez@miempresa.com.mx</h5>\n                </div>\n                <div className=\"mb-3\">\n                    <h6>\n                        <span>\n                            <i className=\"far fa-building\"></i>\n                        </span>{\" \"}\n            Puesto\n          </h6>\n                    <h5 className=\"text fnt_medium\">Recursos Humanos</h5>\n                </div>\n                <div className=\"mb-3\">\n                    <h6>\n                        <span>\n                            <i className=\"fas fa-birthday-cake\"></i>\n                        </span>{\" \"}\n            Cumpleaños\n          </h6>\n                    <h5 className=\"text fnt_medium\">12 Diciembre 1990</h5>\n                </div>\n            </div>\n        </div>\n    );\n}\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { HubConnectionBuilder } from \"@microsoft/signalr\";\nimport { ListChats } from \"./listChats\";\nimport { ListGroups } from \"./listGroups\";\nimport { ListContact } from \"./listContact\";\nimport { ChatConversations } from \"./chatConversations\";\nimport { ProfileChat } from \"./profileChat\";\nimport { useSelector } from \"react-redux\";\nimport $ from \"jquery\";\nimport \"./wrapperChats.scss\";\nimport { FaBook, FaUsers } from \"react-icons/fa\";\nimport { BsArrowsAngleContract, BsArrowsAngleExpand } from \"react-icons/bs\";\n\nexport function WrapperChats(props, { windowDimensions }) {\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [activeSec, setActiveSec] = useState(\"1\");\n\n  const toggle = (sec) => {\n    if (activeSec !== sec) setActiveSec(sec);\n  };\n\n  const [openChat, setOpenChat] = useState(\"\");\n  const [icoOpen, setIcoOpen] = useState(\"resize-outline\");\n  const toogleOpenChat = () => {\n    setOpenChat(openChat === \"\" ? \"open\" : \"\");\n    setIcoOpen(\n      icoOpen === \"resize-outline\" ? \"remove-outline\" : \"resize-outline\"\n    );\n    $(\"body\").toggleClass(\"noScroll\");\n  };\n\n  const [btnMenu, setBtnMenu] = useState(\"\");\n  const [showNavbar, setShowNavbar] = useState(\"\");\n  const funtMenu = () => {\n    setBtnMenu(btnMenu === \"\" ? \"visible_menu\" : \"\");\n    setShowNavbar(showNavbar === \"\" ? \"show-navbar\" : \"\");\n  };\n\n  const [chat, setChat] = useState({});\n  const [notifications, setNotifications] = useState([]);\n  const [newMessageReceived, setNewMessageReceived] = useState({});\n  const [chatNotification, setChatNotification] = useState({});\n  const [conversationNotification, setConversationNotification] = useState(\"\");\n\n  const chatRef = useRef(null);\n  chatRef.current = { activeSec, openChat, chat, notifications };\n\n  const showChat = (selectedChat) => {\n    toggle(\"5\");\n    setChat(selectedChat);\n  };\n\n  const receiveMessage = (message) => {\n    if (chatRef.current.activeSec == \"5\") {\n      if (message.contactId == chatRef.current.chat.contactId) {\n        setNewMessageReceived(message);\n        if (chatRef.current.openChat) return;\n      }\n    } else if (chatRef.current.activeSec == \"1\")\n      setChatNotification({\n        contactId: message.contactId,\n        name: message.senderName,\n        image: \"\",\n        unread: 1,\n      });\n\n    let updateNotifications = chatRef.current.notifications.filter(\n      (item) => item != message.contactId\n    );\n    updateNotifications.push(message.contactId);\n    setNotifications(updateNotifications);\n  };\n\n  const notifyReading = (notification) => {\n    if (chatRef.current.activeSec == \"5\" && notification.isSender) {\n      if (\n        notification.contactId == chatRef.current.chat.contactId &&\n        notification.isSender\n      ) {\n        setConversationNotification(notification.messageId);\n        if (chatRef.current.openChat) return;\n      }\n    } else if (chatRef.current.activeSec == \"1\" && !notification.isSender)\n      setChatNotification({ contactId: notification.contactId, unread: 0 });\n\n    if (!notification.isSender) {\n      let updateNotifications = chatRef.current.notifications.filter(\n        (item) => item != notification.contactId\n      );\n      setNotifications(updateNotifications);\n    }\n  };\n\n  const blockedContact = (notification) => {\n    if (\n      chatRef.current.activeSec == \"5\" &&\n      notification == chatRef.current.chat.contactId\n    ) {\n      const timestamp = Math.floor(Date.now() / 1000);\n      setConversationNotification(`blockedContact ${timestamp}`);\n    }\n  };\n\n  useEffect(() => {\n    const connection = new HubConnectionBuilder()\n      .withUrl(`${process.env.REACT_APP_HUB_URL}/chat`, {\n        headers: { NoBlocking: true },\n      })\n      .withAutomaticReconnect()\n      .build();\n\n    connection\n      .start()\n      .then(() => {\n        console.log(\"Connected!\");\n        connection.on(\"ReceiveMessage\", receiveMessage);\n        connection.on(\"NotifyReading\", notifyReading);\n        connection.on(\"BlockedContact\", blockedContact);\n      })\n      .catch((e) => console.log(\"Connection failed: \", e));\n  }, []);\n\n  return (\n    <aside className={`chat-container ${openChat}`}>\n      <section className=\"chat-container-header\">\n        <article className=\"button-chat\">\n          <div className=\"part1\">\n            <span className={`btn-menu-chat ${btnMenu}`} onClick={funtMenu}>\n              <span></span>\n              <span></span>\n              <span></span>\n            </span>\n          </div>\n          <div className=\"part2\" onClick={toogleOpenChat}>\n            <p onClick={props.noScroll}>\n              <i className=\"icon-dots-vertical\"></i> <span>Chats</span>\n            </p>\n            {notifications.length > 0 && (\n              <span className=\"dots-notifications\">{notifications.length}</span>\n            )}\n            <div>\n              <span className=\"btn-expand\">\n                {openChat ? <BsArrowsAngleContract /> : <BsArrowsAngleExpand />}\n              </span>\n            </div>\n          </div>\n        </article>\n      </section>\n      <section className=\"chat-container-content\">\n        <article className={`chat-container-content-chats ${showNavbar}`}>\n          {\n            {\n              1: (\n                <ListChats\n                  showChat={showChat}\n                  chatNotification={chatNotification}\n                  setNotifications={setNotifications}\n                />\n              ),\n              2: <ListGroups showChat={showChat} />,\n              3: <ListContact showChat={showChat} />,\n              4: <ProfileChat />,\n              5: (\n                <ChatConversations\n                  currentChat={chat}\n                  newMessageReceived={newMessageReceived}\n                  notification={conversationNotification}\n                  toggle={toggle}\n                  openChat={openChat}\n                />\n              ),\n            }[activeSec]\n          }\n        </article>\n        <article className={`chat-container-content-navbar ${showNavbar}`}>\n          <nav className=\"chat\">\n            <div\n              className={`chat-item ${activeSec === \"1\" ? \"active\" : \"\"}`}\n              onClick={() => {\n                toggle(\"1\");\n                funtMenu();\n              }}\n            >\n              <i className=\"icon-dots-vertical\"></i>\n              <span className=\"name\">CHATS</span>\n            </div>\n            {roleName === \"Recursos Humanos\" && (\n              <div\n                className={`chat-item ${activeSec === \"2\" ? \"active\" : \"\"}`}\n                onClick={() => {\n                  toggle(\"2\");\n                  funtMenu();\n                }}\n              >\n                <FaUsers />\n                <span className=\"name\">GRUPOS</span>\n              </div>\n            )}\n            <div\n              className={`chat-item ${activeSec === \"3\" ? \"active\" : \"\"}`}\n              onClick={() => {\n                toggle(\"3\");\n                funtMenu();\n              }}\n            >\n              <FaBook />\n              <span className=\"name\">CONTACTOS</span>\n            </div>\n          </nav>\n        </article>\n      </section>\n    </aside>\n  );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ModalContact } from '../modalContact/modalContact'\nimport { WrapperChats } from '../wrapperChats/wrapperChats'\nimport \"./footer.scss\";\n\nexport function FooterHome(props) {\n  return (\n    <footer\n      className={`footer_home`}\n    >\n      <ul>\n        <li>\n            <ModalContact /> \n        </li>\n        <li>\n          <Link className=\"link_footer\" to=\"/ambienteseguro.pdf\" target=\"_blank\">\n            Decálogo\n          </Link>\n        </li>\n        <li>\n          <Link className=\"link_footer\" to=\"/avisoprivacidad.pdf\" target=\"_blank\">\n            Aviso de Privacidad\n          </Link>\n        </li>\n        <li>\n          <Link className=\"link_footer\" to=\"/terminosycondiciones.pdf\" target=\"_blank\">\n            Términos y Condiciones\n          </Link>\n        </li>\n      </ul>\n      <WrapperChats />\n    </footer>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Header } from \"./header/header\";\nimport { backendService } from \"../services/backend.service\";\nimport { useDispatch } from \"react-redux\";\nimport { setUserSettings, setAccountSettings } from \"../store/actions\";\nimport { BlockScreen } from \"./blockScreen/blockScreen\";\nimport { InstallPWA } from \"./pwa/installPWA\";\nimport { Footer } from \"./footer/footerHome\";\nimport { messageService } from \"../services/message.service\";\nimport { Menu, Button } from \"antd\";\nimport { FaBars, FaChevronLeft, FaSignOutAlt, FaUser } from \"react-icons/fa\";\nimport { IoBusiness } from \"react-icons/io5\";\nimport { BiBuilding } from \"react-icons/bi\";\nimport {\n  AiFillDatabase,\n  AiFillSetting,\n  AiOutlineLeft,\n  AiOutlineRight,\n} from \"react-icons/ai\";\nimport { Link, useHistory, useLocation, useParams } from \"react-router-dom\";\nimport LogoCompany from \"../assets/imgs/R_C.png\";\nimport { userService } from \"../services/user.service\";\nimport { ImgCache } from \"./CustonHooks/imgCache\";\nimport { FooterHome } from \"./footer/footerHome\";\nimport { CiMenuBurger } from \"react-icons/ci\";\n\nexport const LayoutFull = (props) => {\n  const dispatch = useDispatch();\n  const [activeMenu, setStateMenu] = useState(\"\");\n  const [profile, setProfileInfo] = useState();\n  const [messages, setMessages] = useState([]);\n\n  const MenuPurchaseBox = () =>\n    setStateMenu(activeMenu === \"\" ? \" is-show\" : \"\");\n\n  const [activeBtn, setStateBtn] = useState(\"\");\n  const BtnSet = () => setStateBtn(activeBtn === \"\" ? \" visible_menu\" : \"\");\n\n  const MyFun = () => {\n    BtnSet();\n    MenuPurchaseBox();\n  };\n  const getProfileInfo = () =>\n    backendService.userProfile().then((data) => setProfileInfo(data));\n\n  useEffect(() => {\n    backendService.userSettings().then((result) => {\n      dispatch(setUserSettings(result));\n      getProfileInfo();\n    });\n\n    messageService.getUnreadCount().then((data) => setMessages(data));\n  }, []);\n\n  const getWidthDimensions = () => window.innerWidth;\n  const [windowDimensions, setWindowDimensions] = useState(window.innerWidth);\n\n  useEffect(() => {\n    const handleResize = () => setWindowDimensions(getWidthDimensions());\n    window.addEventListener(\"resize\", handleResize);\n    return () => window.removeEventListener(\"resize\", handleResize);\n  }, []);\n\n  const sampleLocation = useLocation();\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, [sampleLocation]);\n\n  return (\n    <>\n      <BlockScreen />\n      <Header\n        MyFun={() => MyFun()}\n        activeBtn={activeBtn}\n        history={props.history}\n        userProfile={profile}\n        windowDimensions={windowDimensions}\n        messages={messages}\n      />\n      <main className=\"dashboard-wrapper\">\n        <div className=\"dashboard-container pridemx\">{props.children}</div>\n      </main>\n      {/* <Footer\n        MyFun={() => MyFun()}\n        activeBtn={activeBtn}\n        history={props.history}\n        userProfile={profile}\n        windowDimensions={windowDimensions}\n        messages={messages}\n      /> */}\n      <InstallPWA />\n    </>\n  );\n};\n\nexport const LayoutLess = (props) => {\n  localStorage.removeItem(\"_rtpride\");\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    backendService\n      .getCompanyCustomize(process.env.REACT_APP_COMPANY)\n      .then((result) => {\n        if (result) {\n          const customizeValues = JSON.parse(result.customizeValues);\n          dispatch(\n            setUserSettings({ companyLogo: customizeValues.CompanyLogo })\n          );\n          dispatch(setAccountSettings(JSON.parse(result.accountSettings)));\n        }\n      });\n  }, []);\n\n  const sampleLocation = useLocation();\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, [sampleLocation]);\n\n  return (\n    <section>\n      <BlockScreen />\n      {props.children}\n      <InstallPWA />\n    </section>\n  );\n};\n\nexport const LayoutOperator = (props) => {\n  const location = useLocation();\n  const [collapsed, setCollapsed] = useState(false);\n  const [activeMenu, setActiveMenu] = useState(false);\n  const [currentRoute, setCurrentRoute] = useState([]);\n  const [currentSubMenu, setCurrentSubmenu] = useState([]);\n  const [windowDimensions, setWindowDimensions] = useState(0);\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, [location]);\n\n  const toggleCollapsed = () => {\n    if (!collapsed) {\n      localStorage.removeItem(\"sidenavOperator\");\n      localStorage.setItem(\"sidenavOperator\", \"true\");\n    }\n    if (collapsed) {\n      localStorage.removeItem(\"sidenavOperator\");\n      localStorage.setItem(\"sidenavOperator\", \"false\");\n    }\n    setCollapsed(!collapsed);\n  };\n\n  const toggleMenuMobile = () => setActiveMenu(!activeMenu);\n\n  const dataRoutes = [\n    {\n      id: 1,\n      routeName: \"/operator\",\n      parent: \"\",\n      key: \"1\",\n    },\n    {\n      id: 2,\n      routeName: \"/operator/AdminCompany\",\n      parent: \"\",\n      key: \"2\",\n    },\n    {\n      id: 3,\n      routeName: \"/operator/controlreward/1\",\n      parent: \"3\",\n      key: \"3-1\",\n    },\n    {\n      id: 4,\n      routeName: \"/operator/providers/1\",\n      parent: \"3\",\n      key: \"3-2\",\n    },\n    {\n      id: 5,\n      routeName: \"/operator/categories/1\",\n      parent: \"3\",\n      key: \"3-3\",\n    },\n  ];\n\n  const getCurrentRoute = () => {\n    dataRoutes.map((route) => {\n      if (route.routeName === location.pathname) {\n        setCurrentRoute([route.key]);\n        currentSubMenu.push(route.parent);\n      }\n      return [currentRoute, currentSubMenu];\n    });\n  };\n\n  const logout = () => {\n    const style = document.getElementsByTagName(\"style\");\n    document\n      .getElementsByTagName(\"head\")[0]\n      .removeChild(style[style.length - 1]);\n    userService.logout().then(() => {\n      window.location.href = \"/\";\n    });\n  };\n\n  const getItem = (label, key, icon, children, type) => {\n    return { key, icon, children, label, type };\n  };\n\n  const list = [\n    window.innerWidth >= 768\n      ? {\n          label: \"Cuenta\",\n          key: \"1\",\n          icon: <AiFillSetting />,\n          children: [\n            {\n              key: \"1-1\",\n              label: (\n                <Button htmlType=\"button\" onClick={logout}>\n                  Cerrar sesión\n                </Button>\n              ),\n              icon: <FaSignOutAlt />,\n            },\n          ],\n        }\n      : null,\n    window.innerWidth <= 768\n      ? {\n          label: (\n            <Link to=\"/operator\" className=\"logo-link\">\n              <img src={LogoCompany} alt=\"\" className=\"logo\" />\n            </Link>\n          ),\n          key: \"3\",\n        }\n      : null,\n    window.innerWidth <= 768\n      ? {\n          label: (\n            <Button\n              className={`btn-bars ${activeMenu ? \"active\" : \"\"}`}\n              onClick={toggleMenuMobile}\n            >\n              {activeMenu ? <FaChevronLeft /> : <FaBars />}\n            </Button>\n          ),\n          key: \"2\",\n        }\n      : null,\n  ];\n\n  const items = [\n    window.innerWidth <= 768\n      ? getItem(\"Cuenta\", \"4\", <AiFillSetting />, [\n          getItem(\n            <Button htmlType=\"button\" onClick={logout}>\n              Cerrar sesión\n            </Button>,\n            \"4-1\",\n            <FaSignOutAlt />\n          ),\n        ])\n      : null,\n    getItem(\n      <Link to=\"/operator\">Mi Tablero</Link>,\n      \"1\",\n      <i className=\"icon-home\"></i>\n    ),\n    getItem(\n      <Link to=\"/operator/AdminCompany\">Empresas</Link>,\n      \"2\",\n      <BiBuilding />\n    ),\n    getItem(\"Control Rewards\", \"3\", <AiFillSetting />, [\n      getItem(\n        <Link to=\"/operator/controlreward/1\">Recompensas</Link>,\n        \"3-1\",\n        <i className=\"icon-gif\"></i>\n      ),\n      getItem(\n        <Link to=\"/operator/providers/1\">Proveedores</Link>,\n        \"3-2\",\n        <IoBusiness />\n      ),\n      getItem(\n        <Link to=\"/operator/categories/1\">Categorías</Link>,\n        \"3-3\",\n        <AiFillDatabase />\n      ),\n    ]),\n  ];\n\n  const closeSidenav = () =>\n    window.innerWidth <= 768 ? toggleMenuMobile() : null;\n\n  useEffect(() => {\n    const collapsedStorage = JSON.parse(\n      localStorage.getItem(\"sidenavOperator\")\n    );\n    const handleResize = () => setWindowDimensions(window.innerWidth);\n    window.addEventListener(\"resize\", handleResize);\n\n    if (windowDimensions <= 992) setCollapsed(true);\n    if (windowDimensions >= 992)\n      setCollapsed(collapsedStorage === true ? collapsedStorage : false);\n    if (windowDimensions <= 768) {\n      setCollapsed(false);\n      localStorage.removeItem(\"sidenavOperator\");\n      localStorage.setItem(\"sidenavOperator\", \"false\");\n    }\n    if (windowDimensions >= 768)\n      setActiveMenu(collapsedStorage === true ? collapsedStorage : false);\n\n    return () => window.removeEventListener(\"resize\", handleResize);\n  }, [windowDimensions]);\n\n  useEffect(() => {\n    setCollapsed(JSON.parse(localStorage.getItem(\"sidenavOperator\")));\n  }, []);\n\n  useEffect(() => {\n    getCurrentRoute();\n  }, [location.pathname]);\n\n  return (\n    <>\n      <BlockScreen />\n      <main\n        className={`dashboard-operator ${\n          window.innerWidth <= 768 ? \"mobile\" : \"\"\n        }`}\n      >\n        <aside\n          className={`dashboard-operator-aside ${collapsed ? \"mobile\" : \"\"} ${\n            activeMenu ? \"active\" : \"\"\n          }`}\n        >\n          {window.innerWidth >= 768 ? (\n            <>\n              <Link to=\"/operator\" className=\"logo-link\">\n                <img src={LogoCompany} alt=\"\" className=\"logo\" />\n              </Link>\n              <Button\n                type=\"primary\"\n                htmlType=\"button\"\n                icon={<FaChevronLeft />}\n                shape=\"circle\"\n                onClick={toggleCollapsed}\n              ></Button>\n            </>\n          ) : null}\n          <Menu\n            defaultOpenKeys={currentSubMenu}\n            selectedKeys={currentRoute}\n            mode=\"inline\"\n            items={items}\n            inlineCollapsed={collapsed}\n            className=\"mobile\"\n            onClick={closeSidenav}\n          />\n        </aside>\n        <section className={`dashboard-operator-content`}>\n          <Menu mode=\"horizontal\" items={list} />\n          {props.children}\n        </section>\n      </main>\n      <footer className=\"dashboard-operator-footer\">\n        <ul>\n          <li>\n            <Link to=\"/ambienteseguro.pdf\" target=\"_blank\">\n              Decálogo lessssss\n            </Link>\n          </li>\n          <li>\n            <Link to=\"/avisoprivacidad.pdf\" target=\"_blank\">\n              Aviso de Privacidad\n            </Link>\n          </li>\n          <li>\n            <Link to=\"/terminosycondiciones.pdf\" target=\"_blank\">\n              Términos y Condiciones\n            </Link>\n          </li>\n        </ul>\n      </footer>\n      <InstallPWA />\n    </>\n  );\n};\n\nexport const LayoutBackoffice = (props) => {\n  const location = useLocation();\n  const history = useHistory();\n  const [collapsed, setCollapsed] = useState(false);\n  const [activeMenu, setActiveMenu] = useState(false);\n  const [currentRoute, setCurrentRoute] = useState([]);\n  const [currentSubMenu, setCurrentSubmenu] = useState([]);\n  const dispatch = useDispatch();\n  const { id, surveyId } = useParams();\n  const [color, setColor] = useState(\"#000\");\n  const [companyLogo, setCompanyLogo] = useState(\"\");\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, [location]);\n\n  const toggleCollapsed = () => {\n    if (!collapsed) setCollapsed(true);\n    else setCollapsed(false);\n  };\n\n  const toggleMenuMobile = () => setActiveMenu(!activeMenu);\n\n  const dataRoutes = [\n    {\n      id: 1,\n      routeName: \"/admin\",\n      parent: \"\",\n      key: \"1\",\n    },\n    {\n      id: 2,\n      routeName: \"/admin/admin-diary\",\n      parent: \"\",\n      key: \"2\",\n    },\n    {\n      id: 3,\n      routeName: \"/admin/course\",\n      parent: \"\",\n      key: \"3\",\n    },\n    {\n      id: 3,\n      routeName: \"/admin/product-filter\",\n      parent: \"\",\n      key: \"4\",\n    },\n    {\n      id: 4,\n      routeName: \"/admin/AdminSurvey\",\n      parent: \"\",\n      key: \"5\",\n    },\n    {\n      id: 5,\n      routeName: `/admin/AdminSurveyScale/${surveyId}`,\n      parent: \"\",\n      key: \"5\",\n    },\n    {\n      id: 5,\n      routeName: `/admin/details-survey/${id}`,\n      parent: \"\",\n      key: \"5\",\n    },\n    {\n      id: 6,\n      routeName: `/admin/control`,\n      parent: \"\",\n      key: \"6\",\n    },\n    {\n      id: 7,\n      routeName: `/admin/company-post`,\n      parent: \"\",\n      key: \"7\",\n    },\n    {\n      id: 8,\n      routeName: `/admin/admin-audience`,\n      parent: \"\",\n      key: \"8\",\n    },\n    {\n      id: 9,\n      routeName: `/admin/users`,\n      parent: \"\",\n      key: \"9\",\n    },\n\n    {\n      id: 10,\n      routeName: `/admin/generic-section`,\n      parent: \"\",\n      key: \"10\",\n    },\n  ];\n\n  const getCurrentRoute = () => {\n    dataRoutes.map((route) => {\n      if (route.routeName === location.pathname) {\n        setCurrentRoute([route.key]);\n        currentSubMenu.push(route.parent);\n      }\n      return [currentRoute, currentSubMenu];\n    });\n  };\n\n  const logout = () => {\n    const style = document.getElementsByTagName(\"style\");\n    document\n      .getElementsByTagName(\"head\")[0]\n      .removeChild(style[style.length - 1]);\n    userService.logout().then(() => history.push(\"/\"));\n  };\n\n  const [windowDimensions, setWindowDimensions] = useState(window.innerWidth);\n\n  const getItem = (label, key, icon, children, type) => {\n    return { key, icon, children, label, type };\n  };\n\n  const setCustom = (customValues) => {\n    setColor(customValues.primaryColor);\n    const style = document.createElement(\"style\");\n    style.type = \"text/css\";\n    style.innerHTML = `:root {--primaryColor: ${customValues.primaryColor} !important; --secondaryColor: ${customValues.secondaryColor} !important;}`;\n    document.getElementsByTagName(\"head\")[0].appendChild(style);\n  };\n\n  const list = [\n    {\n      label: (\n        <a href={\"/\"} className={\"btn-primary\"}>\n          <i className={\"icon-home\"}></i>\n          <p>Muro Pride</p>\n        </a>\n      ),\n      key: \"4\",\n    },\n    window.innerWidth <= 1280\n      ? {\n          label: (\n            <div style={{ display: \"flex\", gap: \"1rem\" }}>\n              <a href=\"/admin\" className=\"logo-link\">\n                <ImgCache src={companyLogo} alt=\"Kuimby Social\" />\n              </a>\n            </div>\n          ),\n          key: \"3\",\n        }\n      : null,\n    window.innerWidth <= 992\n      ? {\n          label: (\n            <Button\n              className={`btn-bars ${activeMenu ? \"active\" : \"\"}`}\n              onClick={toggleMenuMobile}\n            >\n              {activeMenu ? <FaChevronLeft /> : <CiMenuBurger />}\n            </Button>\n          ),\n          key: \"2\",\n        }\n      : null,\n    window.innerWidth >= 992\n      ? {\n          label: \"Cuenta\",\n          key: \"1\",\n          icon: <AiFillSetting />,\n          children: [\n            {\n              key: \"1-1\",\n              label: (\n                <Button htmlType=\"button\" onClick={logout}>\n                  Cerrar sesión\n                </Button>\n              ),\n              icon: <FaSignOutAlt />,\n            },\n          ],\n        }\n      : null,\n  ];\n\n  const items = [\n    window.innerWidth <= 992\n      ? {\n          label: \"Cuenta\",\n          key: \"12\",\n          icon: <AiFillSetting />,\n          children: [\n            {\n              label: (\n                <Button htmlType=\"button\" onClick={logout}>\n                  Cerrar sesión\n                </Button>\n              ),\n              key: \"12-1\",\n              icon: <FaSignOutAlt />,\n            },\n          ],\n        }\n      : null,\n    {\n      label: <Link to=\"/admin\">Dashboard</Link>,\n      key: \"1\",\n      icon: <i className={\"icon-home\"}></i>,\n      title: \"Dashboard\",\n    },\n    // {\n    //   label: <Link to=\"/admin/admin-diary\">Calendario</Link>,\n    //   key: \"2\",\n    //   icon: <i className={\"icon-calendar-dots\"}></i>,\n    //   title: \"Calendario\",\n    // },\n    {\n      label: <Link to=\"/admin/course\">Cartelera</Link>,\n      key: \"3\",\n      icon: <i className={\"icon-billboard\"}></i>,\n      title: \"Cartelera\",\n    },\n    {\n      label: <Link to=\"/admin/product-filter\">Recompensas</Link>,\n      key: \"4\",\n      icon: <i className={\"icon-gif\"}></i>,\n      title: \"Recompensas\",\n    },\n    {\n      label: <Link to=\"/admin/AdminSurvey\">Tu Opinión</Link>,\n      key: \"5\",\n      icon: <i className={\"icon-opinion\"}></i>,\n      title: \"Tu Opinión\",\n    },\n    {\n      label: <Link to=\"/admin/control\">Control</Link>,\n      key: \"6\",\n      icon: <i className={\"icon-docs-published\"}></i>,\n      title: \"Control\",\n    },\n    {\n      label: <Link to=\"/admin/company-post\">Mundo Pride</Link>,\n      key: \"7\",\n      icon: <i className={\"icon-pride-world\"}></i>,\n      title: \"Mundo Pride\",\n    },\n    {\n      label: <Link to=\"/admin/admin-audience\">Pride Talks</Link>,\n      key: \"8\",\n      icon: <i className={\"icon-pride-talks\"}></i>,\n      title: \"Pride Talks\",\n    },\n    {\n      label: <Link to=\"/admin/users\">Usuarios</Link>,\n      key: \"9\",\n      icon: <i className={\"icon-user\"}></i>,\n      title: \"Usuarios\",\n    },\n    {\n      label: <Link to=\"/admin/generic-section\">Publicaciones Genéricas</Link>,\n      key: \"10\",\n      icon: <i className={\"icon-docs-published\"}></i>,\n      title: \"Publicaciones Genéricas\",\n    },\n  ];\n\n  const closeSidenav = () =>\n    window.innerWidth <= 992 ? toggleMenuMobile() : null;\n\n  useEffect(() => {\n    getCurrentRoute();\n  }, [location.pathname]);\n\n  useEffect(() => {\n    backendService.userSettings().then((result) => {\n      dispatch(setUserSettings(result));\n      setCompanyLogo(result.companyLogo);\n      setCustom(result);\n    });\n    if (windowDimensions <= 1280) setCollapsed(true);\n    if (windowDimensions >= 1280) setCollapsed(false);\n    if (windowDimensions <= 992) {\n      setCollapsed(false);\n      setActiveMenu(false);\n    }\n    if (windowDimensions >= 992) setActiveMenu(true);\n  }, []);\n\n  useEffect(() => {\n    const handleResize = () => setWindowDimensions(window.innerWidth);\n    window.addEventListener(\"resize\", handleResize);\n\n    if (windowDimensions <= 1280) setCollapsed(true);\n    if (windowDimensions >= 1280) setCollapsed(false);\n    if (windowDimensions <= 992) {\n      setCollapsed(false);\n      setActiveMenu(false);\n    }\n    if (windowDimensions >= 992) setActiveMenu(true);\n\n    return () => window.removeEventListener(\"resize\", handleResize);\n  }, [windowDimensions]);\n\n  return (\n    <>\n      <BlockScreen />\n      <main\n        className={`dashboard-admin ${\n          window.innerWidth <= 992 ? \"mobile\" : \"\"\n        }`}\n      >\n        <aside\n          className={`dashboard-admin-aside ${collapsed ? \"mobile\" : \"\"} ${\n            activeMenu ? \"active\" : \"\"\n          }`}\n        >\n          {window.innerWidth >= 1280 ? (\n            <>\n              <a href=\"/admin\" className=\"logo-link\">\n                <ImgCache src={companyLogo} alt=\"Kuimby Social\" />\n              </a>\n              <Button\n                type=\"primary\"\n                htmlType=\"button\"\n                icon={collapsed ? <AiOutlineRight /> : <AiOutlineLeft />}\n                shape=\"circle\"\n                onClick={toggleCollapsed}\n              ></Button>\n            </>\n          ) : null}\n          <Menu\n            defaultOpenKeys={currentSubMenu}\n            selectedKeys={currentRoute}\n            mode=\"inline\"\n            items={items}\n            inlineCollapsed={collapsed}\n            className=\"mobile\"\n            onClick={closeSidenav}\n          />\n        </aside>\n        <section className={`dashboard-admin-content`}>\n          <nav className={\"nav-content\"}>\n            <div className={\"dashboard-admin-container\"}>\n              <Menu mode=\"horizontal\" items={list} />\n            </div>\n          </nav>\n          <div className={\"dashboard-admin-body\"}>{props.children}</div>\n          <FooterHome />\n        </section>\n      </main>\n      <InstallPWA />\n    </>\n  );\n};\n","// components/ProtectedRoute.js\nimport React from \"react\";\nimport { Route, Redirect } from \"react-router-dom\";\nimport { backendService } from \"../services/backend.service\";\n\nconst ProtectedRoute = ({ component: Component, allowedRoles, ...rest }) => {\n  const [isAuthorized, setIsAuthorized] = React.useState(null);\n  const [userRole, setUserRole] = React.useState(\"\");\n\n  React.useEffect(() => {\n    backendService.userProfile().then((data) => {\n      setUserRole(data.aspNetRoleName);\n      setIsAuthorized(\n        allowedRoles.some(role => \n          data.aspNetRoleName.toLowerCase().includes(role.toLowerCase())\n        )\n      );\n    });\n  }, []);\n\n  if (isAuthorized === null) {\n    return null; // o un spinner de carga\n  }\n\n  return (\n    <Route\n      {...rest}\n      render={(props) =>\n        isAuthorized ? (\n          <Component {...props} />\n        ) : (\n          <Redirect to=\"/home\" />\n        )\n      }\n    />\n  );\n};\n\nexport default ProtectedRoute;","import { setCartQuantity } from \"../store/actions\";\nimport store from \"../store/configureStore\";\n\nexport const cartHook = {\n  assembleCart,\n  getCart,\n  addItem,\n  onChangeQuantity,\n  deleteItem,\n  deleteItemDetail,\n  getItems,\n  clean,\n};\n\nconst initialCart = { cart: [], total: 0, quantity: 0 };\nlet cartName = \"_cpride\";\n\nfunction assembleCart(isCaringCommunity) {\n  setCartName(isCaringCommunity);\n  if (\n    localStorage.getItem(cartName) === undefined ||\n    localStorage.getItem(cartName) === null\n  )\n    localStorage.setItem(cartName, JSON.stringify(initialCart));\n\n  setQuantity();\n}\n\nfunction getCart() {\n  const cpride = JSON.parse(localStorage[cartName]);\n  return cpride;\n}\n\nasync function addItem(product, provider) {\n  let cpride = JSON.parse(localStorage[cartName]);\n\n  let item = {\n    ProductId: product.productId,\n    Name: product.name,\n    Price: product.productPrice,\n    Quantity: 1,\n    Code: product.productCode,\n    UrlImage: provider.urlLogoClrs,\n    Descripcion: product.description,\n    ProviderId: product.providerId,\n    Total: product.productPrice,\n  };\n\n  let foundProvider = cpride.cart.find(\n    (p) => p.ProviderId == provider.providerId\n  );\n  if (foundProvider != undefined) {\n    let isNew = true;\n\n    let foundProduct = foundProvider.Items.find(\n      (p) => p.ProductId == item.ProductId\n    );\n    if (foundProduct != undefined) {\n      foundProduct.Quantity += item.Quantity;\n      foundProduct.Total = foundProduct.Quantity * item.Price;\n      isNew = false;\n    }\n\n    if (isNew) foundProvider.Items.push(item);\n\n    foundProvider.Total += item.Total;\n    foundProvider.Quantity += item.Quantity;\n  } else {\n    let itemProvider = {\n      ProviderId: provider.providerId,\n      ProviderName: provider.name,\n      Logo: provider.urlLogoClrs,\n      Total: item.Price,\n      Quantity: item.Quantity,\n      Items: [item],\n    };\n\n    cpride.cart.push(itemProvider);\n  }\n\n  cpride.total += item.Price;\n  cpride.quantity += 1;\n  localStorage[cartName] = JSON.stringify(cpride);\n  setQuantity(cpride.quantity);\n  return cpride;\n}\n\nasync function onChangeQuantity(providerId, productId, value) {\n  let cpride = JSON.parse(localStorage[cartName]);\n\n  let foundProvider = cpride.cart.find((p) => p.ProviderId == providerId);\n  if (foundProvider != undefined) {\n    let foundProduct = foundProvider.Items.find(\n      (p) => p.ProductId == productId\n    );\n    if (foundProduct != undefined) {\n      foundProvider.Quantity -= foundProduct.Quantity;\n      cpride.quantity -= foundProduct.Quantity;\n\n      foundProvider.Total -= foundProduct.Total;\n      cpride.total -= foundProduct.Total;\n\n      foundProduct.Quantity = value;\n      foundProduct.Total = foundProduct.Quantity * foundProduct.Price;\n\n      foundProvider.Quantity += foundProduct.Quantity;\n      cpride.quantity += foundProduct.Quantity;\n\n      foundProvider.Total += foundProduct.Total;\n      cpride.total += foundProduct.Total;\n    }\n  }\n\n  localStorage[cartName] = JSON.stringify(cpride);\n  setQuantity(cpride.quantity);\n  return cpride;\n}\n\nasync function deleteItem(providerId) {\n  let cpride = JSON.parse(localStorage[cartName]);\n\n  let foundProvider = cpride.cart.find((p) => p.ProviderId == providerId);\n  if (foundProvider != undefined) {\n    cpride.total -= foundProvider.Total;\n    cpride.quantity -= foundProvider.Quantity;\n    cpride.cart = cpride.cart.filter((p) => p.ProviderId != providerId);\n  }\n\n  localStorage[cartName] = JSON.stringify(cpride);\n  setQuantity(cpride.quantity);\n  return cpride;\n}\n\nasync function deleteItemDetail(providerId, productId) {\n  let cpride = JSON.parse(localStorage[cartName]);\n\n  let foundProvider = cpride.cart.find((p) => p.ProviderId == providerId);\n  if (foundProvider != undefined) {\n    let foundProduct = foundProvider.Items.find(\n      (p) => p.ProductId == productId\n    );\n    if (foundProduct != undefined) {\n      foundProvider.Quantity -= foundProduct.Quantity;\n      cpride.quantity -= foundProduct.Quantity;\n\n      foundProvider.Total -= foundProduct.Total;\n      cpride.total -= foundProduct.Total;\n      foundProvider.Items = foundProvider.Items.filter(\n        (p) => p.ProductId != productId\n      );\n\n      if (foundProvider.Total == 0)\n        cpride.cart = cpride.cart.filter((p) => p.ProviderId != providerId);\n    }\n  }\n\n  localStorage[cartName] = JSON.stringify(cpride);\n  setQuantity(cpride.quantity);\n  return cpride;\n}\n\nfunction getItems() {\n  const cpride = JSON.parse(localStorage[cartName]);\n\n  let items = [];\n  cpride.cart.map((provider) => {\n    provider.Items.map((itemtemp) => {\n      let item = {\n        ProductId: itemtemp.ProductId,\n        ProductPrice: itemtemp.Price,\n        Cant: itemtemp.Quantity,\n      };\n      items.push(item);\n    });\n  });\n\n  return items;\n}\n\nasync function clean(isCaringCommunity) {\n  setCartName(isCaringCommunity);\n  localStorage.setItem(cartName, JSON.stringify(initialCart));\n  setQuantity(0);\n}\n\nconst setQuantity = (quantity) => {\n  if (quantity) return store.dispatch(setCartQuantity(quantity));\n\n  const cpride = JSON.parse(localStorage[cartName]);\n  store.dispatch(setCartQuantity(cpride.quantity));\n};\n\nconst setCartName = (isCaringCommunity) => {\n  cartName = !isCaringCommunity ? \"_cpride\" : \"_cdpride\";\n};\n","import { callApi, callApiFile } from \"./service\";\n\nexport const ecommerceService = {\n  getProviders,\n  getProviderProducts,\n  getPaymentMethods,\n  payOrder,\n  getPurchaseOrder,\n  getPurchaseOrderDetail,\n  downloadSaleAsPDF,\n  payMembership,\n};\n\nasync function getProviders(categoryId = \"\") {\n  return await callApi(`/Ecommerce/Providers?categoryId=${categoryId}`, \"GET\")\n    .then((result) => {\n      if (result.responseCode === \"00\") return result.data;\n      else return [];\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return [];\n    });\n}\n\nasync function getProviderProducts(providerId) {\n  return await callApi(\n    \"/Ecommerce/ProviderProducts?providerId=\" + providerId,\n    \"GET\"\n  )\n    .then((result) => {\n      if (result.responseCode === \"00\") return result.data;\n      else return { CompanyProducts: [] };\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return { CompanyProducts: [] };\n    });\n}\n\nasync function getPaymentMethods() {\n  return await callApi(\"/Ecommerce/PaymentMethods\", \"GET\")\n    .then((result) => {\n      if (result.responseCode === \"00\") return result.data;\n      else return [];\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return [];\n    });\n}\n\nasync function payOrder(model) {\n  return await callApi(\"/Ecommerce/PayOrder\", \"POST\", model)\n    .then((result) => {\n      if (result.responseCode === \"00\") return result.data;\n      else return undefined;\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return undefined;\n    });\n}\n\nasync function getPurchaseOrder() {\n  return await callApi(\"/Ecommerce/PurchaseOrders\", \"GET\")\n    .then((result) => {\n      if (result.responseCode === \"00\") return result.data;\n      else return [];\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return [];\n    });\n}\n\nasync function getPurchaseOrderDetail(id) {\n  return await callApi(\"/Ecommerce/PurchaseOrderDetail?id=\" + id, \"GET\")\n    .then((result) => {\n      if (result.responseCode === \"00\") return result.data;\n      else return {};\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return {};\n    });\n}\n\nasync function downloadSaleAsPDF(id) {\n  return await callApiFile(\"/Ecommerce/DownloadSaleAsPDF?orderId=\" + id, \"GET\")\n    .then(function (blob) {\n      if (blob.size !== 0) {\n        var FileSaver = require(\"file-saver\");\n        FileSaver.saveAs(blob, \"order_\" + id + \".pdf\");\n      }\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return {};\n    });\n}\n\nasync function payMembership(request) {\n  return await callApi(\"/Ecommerce/PayMembership\", \"POST\", request)\n    .then((result) => {\n      if (result.responseCode === \"00\") return result.data;\n      else return undefined;\n    })\n    .catch((error) => {\n      console.log(\"error\", error);\n      return undefined;\n    });\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { cartHook } from \"../../hooks/cart.hook\";\nimport { connect } from \"react-redux\";\nimport { ecommerceService } from \"../../services/ecommerce.service\";\nimport Moment from \"react-moment\";\n\nimport SuccessImg from \"../../assets/imgs/ico_ticket.svg\";\nimport {Button, Col, Result, Row, Space} from \"antd\";\n\nclass OrderDetail extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      orderDetail: \"\",\n    };\n  }\n\n  componentWillMount() {\n    this.orderDetail(this.props.match.params.id);\n  }\n\n  orderDetail = (orderId) => {\n    window.setTimeout(\n      function () {\n        ecommerceService.getPurchaseOrderDetail(orderId).then((result) => {\n          this.setState({ orderDetail: result });\n          cartHook.clean(result.productType == 10);\n        });\n      }.bind(this),\n      2000\n    );\n  };\n\n  render() {\n    const { orderDetail } = this.state;\n    return (\n      <div className=\"dashboard-container-page\">\n          <Row gutter={[16,0]}>\n            <Col\n                className={'bg-light rounded-2'}\n                 xs={{\n                  span: 24\n                }}\n                md={{\n                    span: 12,\n                    offset: 6\n                }}\n            >\n              <Result\n                  status=\"success\"\n                  title={(orderDetail && orderDetail.productType !== 10) ? \"¡Compra exitosa!\" : \"¡Gracias por tu donación!\"}\n                  subTitle={(orderDetail) &&\n                      `En breve recibirás un correo con la información de tu ${\n                          orderDetail.productType !== 10 ? \"compra\" : \"donativo\"\n                      }.`}\n                  extra={[\n                      <p>\n                          <b>Número de pedido: </b>\n                          {orderDetail.orderNumber}\n                      </p>,\n                      <p>\n                          <b>Estatus: </b>\n                          {orderDetail.status}\n                      </p>,\n                      <p>\n                          <b>Fecha: </b>\n                          <Moment format=\"DD/MM/YYYY\">{orderDetail.date}</Moment>\n                      </p>,\n                    (orderDetail && orderDetail.productType !== 10) ? (\n                        <Space className={'mt-3'}>\n                          <Link\n                              className=\"btn secundary ml-1 mr-1\"\n                              to=\"/discount\"\n                          >\n                            Ir a tienda\n                          </Link>\n                          <Link\n                              className=\"btn primary ml-1 mr-1\"\n                              to=\"/shopping-history\"\n                          >\n                            Mis compras\n                          </Link>\n                        </Space>\n                    ) : (\n                        <Space className={'mt-3'}>\n                            <Link\n                                className=\"btn secundary ml-1 mr-1\"\n                                to=\"/caring-community\"\n                            >\n                                Ir a fundaciones\n                            </Link>\n                        </Space>\n                    ),\n                  ]}\n              />\n            </Col>\n          </Row>\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => {\n  return {\n    countrySetting: state.countrySetting,\n  };\n};\n\nexport default connect(mapStateToProps)(OrderDetail);\n","import { callApi, callApiFileStorage, callApiNoBlocking } from './service'\nimport swal from \"sweetalert\"\nimport Swal from \"sweetalert2\";\n\nexport const useCompanyHoliday = {\n    createCompanyHoliday,\n    updateCompanyHoliday,\n    deleteCompanyHoliday,\n    getCompanyHolidays,\n    getCompanyHolidayById,\n    getCompanyHolidayWithFilesById,\n    getCompanyHolidayFront,\n    clickCountCompanyHoliday\n};\n\nasync function clickCountCompanyHoliday(companyHolidayId) {\n    return callApiNoBlocking('/backoffice/CompanyHoliday/countViews/' + companyHolidayId, 'POST').then((result) => handleCountResponse(result));\n}\nasync function getCompanyHolidays() {\n    return callApi('/backoffice/CompanyHoliday', 'GET').then((result) => handleRsponse(result));\n}\nasync function getCompanyHolidayById(compayHolidayId) {\n    return callApi('/backoffice/CompanyHoliday/' + compayHolidayId, 'GET').then((result) => handleRsponse(result));\n}\nasync function getCompanyHolidayWithFilesById(compayHolidayId) {\n    return callApi('/backoffice/CompanyHoliday/WithFiles/' + compayHolidayId, 'GET').then((result) => handleRsponse(result));\n}\nasync function getCompanyHolidayFront(typeId) {\n    return callApi('/backend/CompanyHoliday/filtered/' + typeId, 'GET').then((result) => handleRsponse(result));\n}\nasync function createCompanyHoliday(params, files) {\n    const data = new FormData();\n    if (files)\n        for (var i = 0; i < files.length; i++) {\n            var f = files[i];\n            data.append('files', f, f.name);\n        }\n    data.append(\"model\", JSON.stringify(params));\n\n    return callApiFileStorage('/backoffice/CompanyHoliday', 'POST', data,false).then((result) => {\n        return handleRsponse(result);\n    });\n}\nasync function updateCompanyHoliday(params, files) {\n    const data = new FormData();\n    if (files)\n        for (var i = 0; i < files.length; i++) {\n            var f = files[i];\n            data.append('files', f, f.name);\n        }\n    data.append(\"model\", JSON.stringify(params));\n    return callApiFileStorage('/backoffice/CompanyHoliday', 'PUT', data, false).then((result) => handleRsponse(result));\n}\nasync function deleteCompanyHoliday(params) {\n    return callApi('/backoffice/CompanyHoliday', 'DELETE', params).then((result) => handleRsponse(result));\n}\nfunction handleRsponse(result) {\n    if (result.responseCode === '00')\n        return result.data;\n    else {\n        Swal.fire({\n            text: result.responseMessage,\n            icon: \"error\"\n        })\n        return null;\n    }\n}\n\nfunction handleCountResponse(result) {\n    if (result.responseCode === \"00\") return result.data;\n    else {\n      alert(result.responseMessage);\n      return null;\n    }\n  }\n","import React, { useState, useEffect, useRef } from \"react\";\nimport C_H from \"../../assets/imgs/company_Holiday.jpg\";\nimport { Modal } from \"reactstrap\";\nimport { useCompanyHoliday } from \"../../services/companyHoliday.service\";\nimport \"./sliderHome.scss\";\nimport { IoPlay } from \"react-icons/io5\";\nimport { Splide, SplideSlide } from \"@splidejs/react-splide\";\n\nexport function SliderHome() {\n  const [sliderItems, setSliderItems] = useState([]);\n  const [video, setVideo] = useState({ type: 0, src: \"\" });\n\n  useEffect(() => {\n    getCompanyHolidays();\n  }, []);\n\n  async function getCompanyHolidays() {\n    useCompanyHoliday.getCompanyHolidayFront(2).then((result) => {\n      if (result) {\n        var temp = [];\n        result.map((ch) => {\n          temp.push({\n            key: ch.companyHolidayId.toString(),\n            file: ch.imagePath,\n            description: ch.description,\n            isVideo: ch.isVideo,\n            video: {\n              type: ch.iframe ? 1 : 2,\n              src: ch.iframe ? ch.iframe : ch.videoPath,\n            },\n          });\n        });\n        setSliderItems(temp);\n      }\n    });\n  }\n\n  const vidRef = useRef(null);\n\n  const [modal, setModal] = useState(false);\n  const toggle = (video) => {\n    setVideo(video);\n    setModal(!modal);\n    if(video.type === 2 ) vidRef.current.play();\n  };\n\n  const handleClickCount = (itemKey) => {\n    useCompanyHoliday.clickCountCompanyHoliday(itemKey).then();\n  }\n\n  return (\n    <div className=\"container_am-x\">\n      <section className=\"splide-dashboard\">\n        {sliderItems && sliderItems.length > 0 ? (\n          <Splide\n            options={{\n              pagination: false,\n              arrows: true,\n              autoplay: true,\n              rewind: true,\n              perMove: 1,\n              perPage: 1,\n              rewindByDrag: true,\n              speed: 1000,\n              type: \"fade\",\n              drag: true,\n            }}\n          >\n            {sliderItems.map((item) => (\n              <SplideSlide key={item.key}>\n                {item.isVideo ? (\n                  <div className=\"splide-dashboard-video\">\n                    <img src={item.file} alt=\"\" onClick={() => handleClickCount(item.key)} />\n                    <button type=\"button\" className=\"splide-dashboard-video-play\"\n                      onClick={() => {toggle(item.video); handleClickCount(item.key)}}\n                    >\n                      <IoPlay />\n                    </button>\n                  </div>\n                ) : item.video.src ? (\n                  <a href={item.video.src} onClick={() => handleClickCount(item.key)}>\n                    <img\n                      className=\"splide-dashboard-slider\"\n                      src={item.file}\n                      alt={item.description}\n                      onClick={() => handleClickCount(item.key)}\n                    />\n                  </a>\n                ) : (\n                  <img\n                    className=\"splide-dashboard-slider\"\n                    src={item.file}\n                    alt={item.description}\n                    onClick={() => handleClickCount(item.key)}\n                  />\n                )}\n              </SplideSlide>\n            ))}\n          </Splide>\n        ) : (\n          <img\n            className=\"splide-dashboard-slider\"\n            src={C_H}\n            alt=\"Aviso\"\n            style={{\n              width: \"50%\",\n              marginLeft: \"auto\",\n              marginRight: \"auto\",\n              display: \"block\",\n            }}\n          />\n        )}\n      </section>\n      <Modal isOpen={modal} toggle={toggle} className=\"wrapper_modal_cap\">\n        <div>\n          <div className=\"toolbar_opt_modal\">\n            <span className=\"btns_modal\" onClick={toggle}>\n              <i className=\"icon-close\"></i> <span>CERRAR</span>\n            </span>\n          </div>\n          {\n            {\n              1: (\n                <div dangerouslySetInnerHTML={{ __html: video.src }} style={{ display: \"contents\" }}/>\n              ),\n              2: (\n                <video\n                  ref={vidRef}\n                  className=\"box_videos\"\n                  controls\n                  preload\n                  autoPlay\n                >\n                  <source src={video.src} type=\"video/mp4\" />\n                </video>\n              ),\n            }[video.type]\n          }\n        </div>\n      </Modal>\n    </div>\n  );\n}\n","import { callApi, callApiFileStorage } from \"./service\";\nimport Swal from \"sweetalert2\";\n\nexport const companyPostService = {\n  create,\n  update,\n  getAll,\n  deletet,\n  getPostUsers,\n  getCompanyPostFilesById,\n  getCompanyPostImagesById,\n  getAllFront,\n  getCompanyPostImagesByIdFront,\n  getCompanyPostImagesPathByIdFront,\n  getCompanyPostImagesPathById,\n  getLastCompanyPostFront,\n  getLatest,\n  getLatestGallery\n};\n\nasync function create(params, images, files) {\n  let i;\n  let f;\n  const data = new FormData();\n  if (images) {\n    for (i = 0; i < images.length; i++) {\n      f = images[i];\n      data.append(\"images\", f, f.name);\n    }\n  }\n\n  if (files) {\n    for (i = 0; i < files.length; i++) {\n      f = files[i];\n      data.append(\"files\", f, f.name);\n    }\n  }\n  data.append(\"model\", JSON.stringify(params));\n\n  return callApiFileStorage(\"/backoffice/CompanyPost\", \"POST\", data).then(\n    (result) => {\n      return handleRsponse(result);\n    }\n  );\n}\n\nasync function update(params, images, files) {\n  let i;\n  let f;\n  const data = new FormData();\n  if (images.length > 0) {\n    for (i = 0; i < images.length; i++) {\n      f = images[i];\n      data.append(\"images\", f, f.name);\n    }\n  }\n\n  if (files) {\n    for (i = 0; i < files.length; i++) {\n      f = files[i];\n      data.append(\"files\", f, f.name);\n    }\n  }\n  data.append(\"model\", JSON.stringify(params));\n\n  return callApiFileStorage(\"/backoffice/CompanyPost\", \"PUT\", data).then(\n    (result) => {\n      return handleRsponse(result);\n    }\n  );\n}\n\nasync function getAll(postType) {\n  return callApi(\"/backoffice/CompanyPost/\" + postType.toString(), \"GET\").then(\n    (result) => {\n      if (result.responseCode === \"00\") {\n        return result.data;\n      } else {\n        Swal.fire({ text: result.responseMessage, icon: \"error\" });\n        return null;\n      }\n    }\n  );\n}\n\nasync function getAllFront(postType, dateFilter) {\n  return callApi(\n    \"/backend/CompanyPost/\" + postType.toString() + \"/\" + dateFilter,\n    \"GET\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      Swal.fire({ text: result.responseMessage, icon: \"error\" });\n      return null;\n    }\n  });\n}\n\nasync function getLatestGallery(postType, dateFilter) {\n  return callApi(\"/backend/CompanyPostLatestGallery/\" + postType.toString() + \"/\" + dateFilter, \"GET\").then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      Swal.fire({ text: result.responseMessage, icon: \"error\" });\n      return null;\n    }\n  });\n}\n\n//images --> no se usa\nasync function getCompanyPostImagesByIdFront(companyPostId) {\n  return callApi(\n    \"/backend/CompanyPost/WithImages/\" + companyPostId,\n    \"GET\"\n  ).then((result) => handleRsponse(result));\n}\n\nasync function getCompanyPostFilesById(companyPostId) {\n  return callApi(\n    \"/backoffice/CompanyPost/WithFiles/\" + companyPostId,\n    \"GET\"\n  ).then((result) => handleRsponse(result));\n}\n\nasync function getCompanyPostImagesById(companyPostId) {\n  return callApi(\n    \"/backoffice/CompanyPost/WithImages/\" + companyPostId,\n    \"GET\"\n  ).then((result) => handleRsponse(result));\n}\nasync function getCompanyPostImagesPathById(companyPostId) {\n  return callApi(\n    \"/backoffice/CompanyPost/WithImagesPath/\" + companyPostId,\n    \"GET\"\n  ).then((result) => handleRsponse(result));\n}\n\n//path --> actualmente en uso\nasync function getCompanyPostImagesPathByIdFront(companyPostId) {\n  return callApi(\n    \"/backend/CompanyPost/WithImagesPath/\" + companyPostId,\n    \"GET\"\n  ).then((result) => handleRsponse(result));\n}\n\nasync function getLastCompanyPostFront(postCategoryId) {\n  return callApi(\"/backend/CompanyPost/LastOne/\" + postCategoryId, \"GET\").then(\n    (result) => handleRsponse(result)\n  );\n}\n\n//obtener ultima galería\nasync function getLatest(postCategoryId) {\n  return callApi(\"/backend/companypost/latest/\" + postCategoryId, \"GET\").then(\n    (result) => handleRsponse(result)\n  );\n}\n\nasync function getPostUsers(params) {\n  return callApi(\n    \"/backoffice/CompanyPost/getPostUsers/\" +\n      params.DepartmentId +\n      \"/\" +\n      params.JobRoleId,\n    \"GET\"\n  ).then((result) => {\n    if (result.responseCode == \"00\") {\n      return result.data;\n    } else {\n      Swal.fire({ text: result.responseMessage, icon: \"error\" });\n      return null;\n    }\n  });\n}\n\nasync function deletet(params) {\n    return callApi(\"/backoffice/CompanyPost\", \"DELETE\", params).then((result) => {\n      Swal.fire({ text: \"Se eliminó correctamente\", icon: \"success\" })\n    })\n}\n\nfunction handleRsponse(result) {\n  if (result.responseCode === \"00\") return result.data;\n  else {\n    //swal({ text: result.responseMessage, icon: \"error\" })\n    return null;\n  }\n}\n","import { callApi, callApiNoBlocking } from \"./service\";\n\nexport const courseViewService = {\n  getCourse,\n  getFileById,\n  completeCourse,\n  getCourseComplete,\n  GetUserProfileCourse,\n  getLatestCourse,\n  getCourseById\n};\n\nasync function getCourse() {\n  return callApi(\"/backend/Course\", \"GET\").then((result) => {\n    if (result.responseCode == \"00\") {\n      return result.data;\n    } else {\n      alert(result.responseMessage);\n      return null;\n    }\n  });\n}\n\nasync function getCourseById(courseId) {\n  return callApi(`/backoffice/Course/${courseId}`, \"GET\").then((result) => {\n    if (result.responseCode == \"00\") {\n      return result.data;\n    } else {\n      alert(result.responseMessage);\n      return null;\n    }\n  });\n}\n\nasync function getCourseComplete() {\n  return callApi(\"/backend/Course/GetAllCompleted\", \"GET\").then((result) =>\n    handleResponse(result)\n  );\n}\n\nasync function GetUserProfileCourse() {\n  return callApi(\"/backend/Course/GetUserProfileCourse\", \"GET\").then((result) =>\n    handleResponse(result)\n  );\n}\n\nasync function getLatestCourse() {\n  return callApiNoBlocking(\"/backend/Course/Latest\", \"GET\").then((result) =>\n    handleResponse(result)\n  );\n}\n\nasync function getFileById(entityId, entityTypeId, sequence) {\n  return callApi(\n    \"/backoffice/Storage/WithFile/\" +\n      entityId +\n      \"/\" +\n      entityTypeId +\n      \"/\" +\n      sequence,\n    \"GET\"\n  ).then((result) => handleResponse(result));\n}\n\nasync function completeCourse(courseId) {\n  return callApi(\"/backend/course/complete\", \"POST\", {\n    CourseId: courseId,\n  }).then((result) => {\n    return handleResponse(result);\n  });\n}\n\nfunction handleResponse(result) {\n  if (result.responseCode === \"00\") return result.data;\n  else {\n    //alert(result.responseMessage);\n    return null;\n  }\n}\n","import { callApi, callApiFile, callApiFileStorage, callApiNoBlocking } from './service'\nimport swal from \"sweetalert\"\n\n\nexport const audienceService = {\n    getPending,\n    getComplete,\n    updateComplete,\n    getAudiceImageById,\n    getLastOrDefault,\n    insertView\n};\n\nasync function insertView(auditoriumId) {\n    return callApiNoBlocking(\"/backend/Auditorium/InsertView/\"+auditoriumId, \"POST\").then((result) =>\n     {}\n    );\n  }\n\nasync function getPending() {\n    return callApi('/backend/Auditorium/Pending', 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null;\n        }\n\n    });\n}\n\nasync function getComplete() {\n    return callApi('/backend/Auditorium/Complete', 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null;\n        }\n\n    });\n}\n\nasync function updateComplete(date, id, elements) {\n    return callApi('/backend/Auditorium/Complete/' + elements + '/' + date + '/' + id, 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null;\n        }\n\n    });\n}\n\nasync function getLastOrDefault(date, id) {\n    return callApi(`/backend/Auditorium/Complete/LastOrDefault/${date}/${id}`, 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null;\n        }\n\n    });\n}\n\nasync function getAudiceImageById(auditoriumId){\n    return callApi('/backend/Auditorium/WithImages/' + auditoriumId, 'GET').then((result) => handleRsponse(result));\n}\n\nfunction handleRsponse(result) {\n    if (result.responseCode === '00')\n        return result.data;\n    else {\n        return null;\n    }\n}","import React, { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Badge } from \"reactstrap\";\nimport { audienceService } from \"../../services/audience.service\";\nimport Moment from \"react-moment\";\nimport dayjs from \"dayjs\";\nimport { FaPlay } from \"react-icons/fa\";\nimport { BiMoviePlay } from \"react-icons/bi\";\nimport \"./cardMain.scss\";\n\nexport function CardMain() {\n  const [listAudienceO, setListAudienceO] = useState([]);\n  const itemsPerPage = 1;\n\n  async function getComplete() {\n    audienceService.getLastOrDefault(0, 0, itemsPerPage).then((result) => {\n      if (result) setListAudienceO(result);\n    });\n  }\n\n  useEffect(() => {\n    getComplete();\n  }, []);\n\n  const hoy = dayjs();\n\n  return (\n    <>\n      {listAudienceO.map((item, index) => {\n        //TODO LAGG: cambiar el link pasando como parámetro el Id para abrir el video\n        return (\n          <div className=\"itemcard_post_muro pridetalks\" key={index}>\n            <div className=\"container_am\">\n              <h3 className=\"ttls_big_muro font_ttl_in_home\">NUEVO EPISODIO</h3>\n              <div className=\"itemcard_content\">\n                <div className=\"itemcard_content_picture\">\n                  <img\n                    src={item.files && item.files[0]?.path}\n                    alt={item.data.title}\n                    title={item.data.title}\n                  />\n                </div>\n\n                <div className=\"itemcard_content_info\">\n                  <div className=\"tag\">\n                    <Badge className=\"badge t_g \">\n                      {hoy > dayjs(item.data.conferenceDate)\n                        ? \"Pride Talks\"\n                        : \"Próximamente\"}\n                    </Badge>\n                  </div>\n                  <h6 className=\"itemcard_content_title font_ttl_in_home\">\n                    {item.data.title.length <= 50\n                      ? item.data.title\n                      : `${item.data.title.substring(0, 50)}...`}\n                    {/* {item.data.title} */}\n                  </h6>\n                  <p className=\"itemitemcard_content_description\">\n                    <Moment\n                      date={item.data.conferenceDate}\n                      format=\"dddd DD [de] MMMM [del] YYYY\"\n                    ></Moment>\n                  </p>\n                  <div className=\"actions_itemcard\">\n                    <Link\n                      to={\n                        hoy > dayjs(item.data.conferenceDate)\n                          ? `/audience/${item.data.auditoriumId}`\n                          : \"/audience\"\n                      }\n                      className=\"btn___home\"\n                      key={item.data.auditoriumId}\n                    >\n                      <span>Dale play</span> <FaPlay />\n                    </Link>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        );\n      })}\n    </>\n  );\n}\n","import { callApi } from \"./service\"\nimport swal from \"sweetalert\"\n\nexport const rewardsService = {\n    rewardsFilterByDate,\n    rewardsStatement,\n    redemptionHistory,\n    rewardProducts,\n    redeemCoupon,\n    rewardCategories,\n    downloadCoupon,\n    LatestRewardProducts\n};\n\nasync function rewardsFilterByDate() {\n    return await callApi('/BackEnd/RewardsFilterByDate', 'GET')\n        .then(result => {\n            if (result.responseCode === \"00\")\n                return result.data;\n            else\n                return [];\n        });\n}\n\nasync function rewardsStatement(param) {\n    return await callApi('/BackEnd/RewardsStatement?dateRange=' + param, 'GET')\n        .then(result => {\n            if (result.responseCode === \"00\")\n                return result.data;\n            else\n                return [];\n        });\n}\n\nasync function redemptionHistory(param) {\n    return await callApi('/BackEnd/RedemptionHistory?dateRange=' + param, 'GET')\n        .then(result => {\n            if (result.responseCode === \"00\")\n                return result.data;\n            else\n                return [];\n        });\n}\n\n\nasync function rewardProducts(param) {\n    return await callApi('/BackEnd/RewardProducts?rewardCategoryId=' + param, 'GET')\n        .then(result => {\n            if (result.responseCode === \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\nasync function LatestRewardProducts(param) {\n    return await callApi('/BackEnd/LatestRewardProducts?rewardCategoryId=' + param, 'GET')\n        .then(result => {\n            if (result.responseCode === \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\n function redeemCoupon(param) {\n    return  callApi('/BackEnd/RedeemCoupon', 'Post', param)\n        .then(result => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Cupón canjeado exitosamente\", icon: \"success\" })\n                    .then(() => {\n                        const link = document.createElement('a');\n                        link.href = result.data.couponUrl;\n                        document.body.appendChild(link);\n                        link.click();\n                        document.body.removeChild(link);\n                    })\n                return true;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" })\n                return false\n            }\n        });\n}\n\nasync function rewardCategories() {\n    return await callApi('/BackEnd/RewardCategories', 'GET')\n        .then(result => {\n            if (result.responseCode === \"00\")\n                return result.data;\n            else\n                return [];\n        });\n}\n\nasync function downloadCoupon(orderId) {\n    return await callApi('/BackEnd/DownloadCoupon/' + orderId, 'GET' )\n        .then(result => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Cupón descargado exitosamente\", icon: \"success\" })\n                    .then(() => {\n                        const link = document.createElement('a');\n                        link.href = result.data;\n                        document.body.appendChild(link);\n                        link.click();\n                        document.body.removeChild(link);\n                    })\n                return true;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" })\n                return false\n            }\n        });\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./rewardsHome.scss\";\nimport { rewardsService } from \"../../services/rewards.service\";\n\nexport const RewardsHome = () => {\n  const [rewardProducts, setRewardProducts] = useState([]);\n\n  useEffect(() => {\n    rewardsService.LatestRewardProducts(0).then((result) => {\n      setRewardProducts(result.items);\n    });\n  }, []);\n\n  return (\n    <section className=\"wrapper__rewards__home\">\n      <div className=\"container_rewards__home\">\n        <div className=\"sec_rewards_ttl\">\n          <h2 className=\" font_ttl_in_home\">Rewards</h2>\n          <p className=\"\">Acumula puntos y canjéalos por regalos exclusivos</p>\n\n          {rewardProducts.length === 0 ? (\n            \"\"\n          ) : (\n            <div className=\"flex-center\">\n              <Link to=\"/rewards\" className=\"link_btn_home\">\n                <span>Ver más</span>\n              </Link>\n            </div>\n          )}\n        </div>\n\n        <div className=\"sec_items_rewards\">\n          {rewardProducts.length === 0\n            ? \"No hay recompensas disponibles\"\n            : rewardProducts.map((item) => (\n                <div className=\"item_reward\">\n                  <img src={item.urlImage} alt={item.title} />\n                  <p className=\"text fnt_medium mt-3\">{item.title}</p>\n                </div>\n              ))}\n        </div>\n      </div>\n    </section>\n  );\n};\n","import React, { useState, useEffect } from \"react\";\nimport \"moment/locale/es\";\nimport { SliderHome } from \"../../components/sliderHome/sliderHome\";\nimport { companyPostService } from \"../../services/companyPost.service\";\nimport { courseViewService } from \"../../services/courseView.service\";\nimport { backendService } from \"../../services/backend.service\";\nimport { CardMain } from \"../../components/cardMain/cardMain\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport \"@splidejs/react-splide/dist/css/splide-core.min.css\";\nimport { RewardsHome } from '../../components/rewardsHome/rewardsHome';\nimport { Link } from \"react-router-dom\";\n\nexport function Home() {\n  const [lastPost, setLastPost] = useState({});\n  const [directoryItems, setDirectoryItems] = useState([]);\n  const [auditoriumItems, setAuditoriumItems] = useState([]);\n  const [ourWorld, setOurWorld] = useState([]);\n  const [lastCourse, setLastCourse] = useState([]);\n  const [myModal, setMyModal] = useState(\"inShow\");\n\n  useEffect(() => {\n    backendService.widgets().then((data) => {\n      if (data && data.auditoriumWidget && data.auditoriumWidget.length > 0) {\n        let auditoriumItems = data.auditoriumWidget.map(({ data }) => data);\n        let listSorted = auditoriumItems.sort(function (a, b) {\n          return (\n            Math.abs(Date.now() - new Date(a.conferenceDate)) -\n            Math.abs(Date.now() - new Date(b.conferenceDate))\n          );\n        });\n\n        setAuditoriumItems(listSorted);\n      }\n      if (data.surveyWidget != null) {\n        let date = new Date();\n        date.setDate(date.getDate() + data.surveyWidget.expirationDays);\n        data.surveyWidget.expirationDate = date;\n      }\n\n      if (data.directoryInfoWidget?.length > 0)\n        setDirectoryItems(data.directoryInfoWidget);\n    });\n    getLatestPost();\n    getOrWorld();\n    getLatestCourse();\n    setTimeout(() => setDoodle(), 8000);\n  }, []);\n\n  async function getLatestPost() {\n    companyPostService.getLatest(2).then((result) => {\n      if (result && result.length > 0) setLastPost(result[0]);\n    });\n  }\n\n  async function getOrWorld() {\n    companyPostService.getLatest(1).then((result) => {\n      setOurWorld(result);\n    });\n  }\n\n  async function getLatestCourse() {\n    courseViewService.getLatestCourse().then((result) => {\n      let listCourse = JSON.parse(result);\n      setLastCourse(listCourse);\n    });\n  }\n\n  async function setDoodle() {\n    setMyModal(myModal === \"\");\n  }\n\n  function getWidthDimensions() {\n    const { innerWidth: width } = window;\n\n    return width;\n  }\n\n  const [overlay, setOverlay] = useState(false);\n  const toggleOverlay = () => setOverlay(!overlay);\n\n  const [windowDimensions, setWindowDimensions] = useState(\n    getWidthDimensions()\n  );\n\n  const handleOverlay = (width) => {\n    if (width >= 1280) setOverlay(false);\n  };\n\n  useEffect(() => {\n    const handleResize = () => setWindowDimensions(getWidthDimensions());\n    handleOverlay(getWidthDimensions());\n    window.addEventListener(\"resize\", handleResize);\n    return () => window.removeEventListener(\"resize\", handleResize);\n  }, [handleOverlay]);\n\n  return (\n    <>\n      <section className=\"wrapper__home__page\">\n        <SliderHome />\n        <CardMain />\n        <div className=\"container_am\">\n          <div className=\"sec_navs_links\">\n            <div className=\"box_nav_link \">\n              <div className=\"item_nav_link jobs\">\n                <h3 className=\"\">Bolsa de trabajo</h3>\n              </div>\n              <div className=\"item_nav_link_info\">\n                <p>\n                  Encuentra oportunidades en empresas que celebran la diversidad\n                  y el respeto. ¡Tu talento merece un espacio laboral inclusivo!\n                </p>\n                <Link to=\"/job-bank\" className=\"link_btn_home trans jobs\">\n                  <span>Postúlate</span>\n                </Link>\n              </div>\n            </div>\n            <div className=\"box_nav_link \">\n              <div className=\"item_nav_link groups\">\n                <h3 className=\"\">Grupos de interés</h3>\n              </div>\n              <div className=\"item_nav_link_info\">\n                <p>\n                  Encuentra grupos con tus mismas pasiones, comparte\n                  experiencias y aprende en un entorno seguro e inclusivo ¡Las\n                  mejores historias comienzan en comunidad!\n                </p>\n                <Link to=\"/interest-group\" className=\"link_btn_home trans groups\">\n                  <span>Únete</span>\n                </Link>\n              </div>\n            </div>\n            <div className=\"box_nav_link \">\n              <div className=\"item_nav_link economy\">\n                <h3 className=\"\">Economía incluyente</h3>\n              </div>\n              <div className=\"item_nav_link_info\">\n                <p>\n                  Conoce emprendimientos de y para la comunidad, ¡hagamos que\n                  nuestros consumos beneficien a todes!\n                </p>\n                <Link to=\"/directory\" className=\"link_btn_home trans economy\">\n                  <span>Descubre</span>\n                </Link>\n              </div>\n            </div>\n          </div>\n        </div>\n        <RewardsHome />\n        {/* <AliadesHome /> */}\n      </section>\n      <FooterHome />\n    </>\n  );\n}\n","import React, { useState } from 'react';\nimport IcoUser from '../../assets/imgs/iconos/ico_user.png'\nimport { userService } from '../../services/user.service';\nimport { useForm } from 'react-hook-form';\nimport swal from 'sweetalert';\nimport { Button, Col, Form, Input } from \"reactstrap\";\nimport { IoMail } from \"react-icons/io5\";\n\nexport function RecoverPassword({ toggleLogeo }) {\n    const { register, handleSubmit } = useForm();\n    const [account, setAccount] = useState(\"\");\n    const [isRecovery, setisRecovery] = useState(false);\n    const [isGranted, setisGranted] = useState(false);\n    const [additionalEmailVal, setAdditionalEmailVal] = useState(\"\");\n    const [isCorporateUser, setIsCorporateUser] = useState(false);\n\n    const validateAccount = () => {\n        if (account) {\n            userService.validateEmailAccount({ email: account }).then((result) => {\n                if (result != undefined) {\n                    setIsCorporateUser(result.isCorporateUser)\n                    if (result.userId != undefined)\n                        setisGranted(true);\n\n                    if (isCorporateUser)\n                        setisRecovery(true);\n                    else {\n                        if (result.additionalEmail) {\n                            setAdditionalEmailVal(result.additionalEmail);\n                            setisRecovery(true);\n                        }\n                        else {\n                            setisRecovery(false);\n                        }\n                    }\n                }\n                else {\n                    swal(\"El usuario no está registrado.\");\n                }\n            })\n        }\n        else {\n            swal(\"Capture una dirección de correo\");\n        }\n    }\n\n    const handleChange = (event) => {\n        setAccount({ email: event.target.value });\n    }\n\n    const onSubmit = (data, e) => {\n        data.CompanyId = process.env.REACT_APP_COMPANY;\n        data.email = account;\n        if (isRecovery) {\n            data.IsRegistered = true;\n            data.AdditionalEmail = additionalEmailVal;\n        }\n        else {\n            data.IsRegistered = false;\n        }\n        if (!isCorporateUser) {\n            if (data.AdditionalEmail !== undefined && data.AdditionalEmail !== \"\") {\n                userService.forgotPassword(data)\n            }\n            else {\n                swal('Debe ingresar un correo adicional.')\n            }\n        }\n        else {\n            userService.forgotPassword(data)\n        }\n    };\n\n    return (\n        <Form onSubmit={handleSubmit(onSubmit)} className=\"form-login\" row>\n            <input type=\"hidden\" name=\"AdditionalEmail\"  {...register(\"AdditionalEmail\")} />\n            <input type=\"hidden\" name=\"Birthday\" {...register(\"Birthday\")} />\n            <input type=\"hidden\" name=\"IsRegistered\" {...register(\"IsRegistered\")} />\n\n            <Col lg={12}>\n                <h2 className=\"login-header-title\">RECUPERAR CONTRASEÑA</h2>\n                <p className=\"login-header-subtitle\">Ingresa tu correo electrónico y te enviaremos las instrucciones sobre cómo restablecerla.</p>\n            </Col>\n            <Col lg={12}>\n                <label form=\"email\" className=\"form-login-input\">\n                    <span className=\"form-login-icon\"><IoMail /></span>\n                    <Input onChange={(e) => setAccount(e.target.value)} id=\"email\" placeholder=\"Correo electrónico\" type=\"email\" name=\"Email\" />\n                </label>\n            </Col>\n            <Col lg={12}>\n                <div className=\"form-login-recover\">\n                    <button type=\"button\" onClick={() => toggleLogeo(true)}>Iniciar sesión</button>\n                </div>\n                {!isGranted ?\n                    <div className=\"form-login-submit\">\n                        <Button className=\"btn-login\" type=\"button\" id=\"btnValidate\" onClick={validateAccount}>CONSULTAR</Button>\n                    </div>\n                    : null}\n            </Col>\n            <Col lg={12}>\n                {!(isRecovery) && isGranted && !isCorporateUser ?\n                    <div className=\"form-group mt-4\">\n                        <span>Es necesario efectuar una comprobación de identidad. Captura los siguientes datos: </span>\n                        <br />\n                        <label for=\"Birthday\">Fecha de nacimiento</label>\n                        <input className=\"form-control\" type=\"date\" id=\"Birthday\" name=\"Birthday\"  {...register(\"Birthday\")} />\n                        <label for=\"AdditionalEmail\">Correo Electrónico para recupear contraseña</label>\n                        <input type=\"email\" className=\"form-control\" id=\"AdditionalEmail\" name=\"AdditionalEmail\" aria-describedby=\"emailHelp\" placeholder=\"correo electrónico\" {...register(\"AdditionalEmail\")} />\n                    </div>\n                    : null}\n                {isGranted ?\n                    <div className=\"form-login-submit\">\n                        <button type=\"submit\" className=\"btn-login\">Recuperar contraseña</button>\n                    </div>\n                    : null}\n            </Col>\n        </Form>\n    )\n}\n","import React from 'react'\nimport LogoPrideCom from \"../../assets/imgs/R_C.png\";\nimport { ModalContact } from \"../../components/modalContact/modalContact\";\n\nexport const FooterFull = () => {\n\n  const AnioActual = () => {\n    var fecha = new Date().getFullYear();\n    return <>{fecha}</>;\n  };\n\n  return (\n    <footer className=\"wrapper_footer \">\n    <div className=\"container-lg\">\n      <div className=\"sec_footer\">\n        <div className=\"cont_brand\">\n          <a href=\"#welcome\">\n            <img\n              className=\"logo_brand\"\n              src={LogoPrideCom}\n              alt=\"PrideMx, Todo el poder de la comunidad en un solo espacio\"\n            />\n          </a>\n          <div className=\"box_social_net\">\n            <div className=\"slabel\">Síguenos en</div>\n            <div className=\"box_link_fa\">\n              <a\n                target=\"_blank\"\n                className=\"facebook\"\n                href=\"https://www.facebook.com/SomosPrideMx/\"\n              >\n                <i className=\"fa fa-facebook-f\"></i>\n              </a>\n              <a\n                target=\"_blank\"\n                className=\"instagram\"\n                href=\"https://instagram.com/somos_pridemx?igshid=YmMyMTA2M2Y=\"\n              >\n                <i className=\"fa fa-instagram\"></i>\n              </a>\n              <a\n                target=\"_blank\"\n                className=\"twitter\"\n                href=\"https://twitter.com/SomosPrideMx\"\n              >\n                <svg\n                  style={{ marginBottom: \"5px\" }}\n                  viewBox=\"0 0 512 512\"\n                  height=\"20\"\n                >\n                  <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\" />\n                </svg>\n              </a>\n              <a\n                target=\"_blank\"\n                className=\"twitter\"\n                href=\"https://www.youtube.com/@pridemx\"\n              >\n                <i className=\"fab fa-youtube\"></i>\n              </a>\n              <a\n                target=\"_blank\"\n                className=\"twitter\"\n                href=\"https://www.linkedin.com/company/82353363\"\n              >\n                <i className=\"fab fa-linkedin-in\"></i>\n              </a>\n              <a\n                target=\"_blank\"\n                className=\"twitter\"\n                href=\"https://www.tiktok.com/@somos_pridemx\"\n              >\n                <i className=\"fab fa-tiktok\"></i>\n              </a>\n            </div>\n          </div>\n        </div>\n        <ul className=\"ul_links\">\n          <li>\n            <h6>Soporte</h6>\n          </li>\n          <li>\n            <ModalContact />\n          </li>\n          <li>\n            <a\n              className=\"link_footer\"\n              target=\"_blank\"\n              href=\"/ambienteseguro.pdf\"\n            >\n              Decálogo\n            </a>\n          </li>\n          <li>\n            <a\n              className=\"link_footer\"\n              target=\"_blank\"\n              href=\"/avisoprivacidad.pdf\"\n            >\n              Aviso de Privacidad\n            </a>\n          </li>\n          <li>\n            <a\n              className=\"link_footer\"\n              target=\"_blank\"\n              href=\"/terminosycondiciones.pdf\"\n            >\n              Términos y Condiciones\n            </a>\n          </li>\n        </ul>\n      </div>\n      <div className=\"foot_right\">\n        <AnioActual /> ©PrideMx. Todos los derechos reservados\n      </div>\n    </div>\n  </footer>\n  )\n}\n","import React, { useEffect, useState } from \"react\";\nimport { RecoverPassword } from \"./recoverPassword\";\nimport { Link } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport { userService } from \"../../services/user.service\";\nimport Slider from \"react-slick\";\nimport swal from \"sweetalert\";\nimport WOW from \"wowjs\";\nimport Lottie from \"react-lottie\";\nimport { TypeAnimation } from \"react-type-animation\";\nimport chrome from \"../../assets/imgs/chrome.png\";\n\nimport bgLogin from \"../../assets/imgs/landing/bglogin.svg\";\nimport LogoPrideCom from \"../../assets/imgs/R_C.png\";\nimport LogoPrideJson from \"../../assets/imgs/landing/logo-pridemx.json\";\n// import BgLoadAnimation from \"../../assets/imgs/landing/bgload.png\";\nimport ImgScroll from \"../../assets/imgs/landing/scr.gif\";\n\nimport IconPlay from \"../../assets/imgs/landing/icon_play.png\";\nimport Pmusic01 from \"../../assets/imgs/landing/pmusic01.png\";\nimport Pmusic01g from \"../../assets/imgs/landing/pmusic01.gif\";\nimport Pmusic02 from \"../../assets/imgs/landing/pmusic02.png\";\nimport Pmusic02g from \"../../assets/imgs/landing/pmusic02.gif\";\nimport Pmusic03 from \"../../assets/imgs/landing/pmusic03.png\";\nimport Pmusic03g from \"../../assets/imgs/landing/pmusic03.gif\";\n\nimport Rewards01 from \"../../assets/imgs/landing/rewards-01.png\";\nimport Rewards02 from \"../../assets/imgs/landing/rewards-02.png\";\nimport Rewards03 from \"../../assets/imgs/landing/rewards-03.png\";\nimport Rewards04 from \"../../assets/imgs/landing/rewards-04.png\";\n\nimport Emprendedor01 from \"../../assets/imgs/landing/EMPRENDEDOR01.png\";\nimport Emprendedor02 from \"../../assets/imgs/landing/EMPRENDEDOR02.png\";\nimport Emprendedor03 from \"../../assets/imgs/landing/EMPRENDEDOR03.png\";\n\nimport { IoEyeOffOutline, IoEyeOutline, IoKey, IoMail } from \"react-icons/io5\";\nimport { RiHomeHeartFill } from \"react-icons/ri\";\nimport { Button, Col, Form, Input, Modal } from \"reactstrap\";\nimport { FooterFull } from \"../../components/footer/footerFull\";\n\nimport \"./login.scss\";\nimport \"animate.css\";\n\nexport const Login = (props) => {\n  const [showLogeo, setShowLogeo] = useState(true);\n  const toggleLogeo = (value) => setShowLogeo(value);\n\n  const accountSettings = useSelector((state) => state.accountSettings);\n\n  const [showPassword, setShowPassword] = useState(false);\n  const togglePassword = () => setShowPassword(!showPassword);\n\n  const [scrollTop, setScrollTop] = useState(0);\n\n  const [modal, setModal] = useState(false);\n  const toggle = () => setModal(!modal);\n\n  const [visible, setVisible] = useState(false);\n  const [btnmenu, setBtnmenu] = useState(false);\n  const toggleMenu = () => {\n    setBtnmenu(!btnmenu);\n    setVisible(!visible);\n  };\n\n  const CargarLogeo = () => {\n    return showLogeo ? (\n      <div className=\"form-login-recover\">\n        <button type=\"button\" onClick={() => toggleLogeo(false)}>\n          Olvidé mi contraseña\n        </button>\n      </div>\n    ) : null;\n  };\n\n  const handleSubmit = (e) => {\n    e.preventDefault();\n    let params = {\n      username: e.target.user.value,\n      password: e.target.password.value,\n      productSubscription: accountSettings.productSubscription,\n    };\n    userService.login(params).then((result) => {\n      if (result.responseCode === \"00\") {\n        let roleName = result.data.roleName;\n        if (roleName == \"Operaciones\") props.history.push(\"/operator\");\n        else props.history.push(\"/home\");\n      } else if (result.responseCode === \"11\") {\n        props.history.push({\n          pathname: \"/membership\",\n          state: result.data,\n        });\n      } else {\n        let verifica =\n          \"Datos incorrectos por favor revisa usuario y contraseña.\";\n        if (result.responseCode === \"09\")\n          verifica +=\n            \"\\n O no olvides que debes verificar tu cuenta, revisa tu bandeja de entrada o de spam.\";\n        swal({\n          text: verifica,\n          icon: \"error\",\n        });\n      }\n    });\n  };\n\n  const settings = {\n    dots: false,\n    infinite: true,\n    slidesToShow: 3,\n    slidesToScroll: 1,\n    autoplay: true,\n    centerPadding: \"0\",\n    speed: 900,\n    autoplaySpeed: 2750,\n    pauseOnHover: true,\n    swipeToSlide: true,\n    className: \"center\",\n    centerMode: true,\n    responsive: [\n      {\n        breakpoint: 440,\n        settings: {\n          slidesToShow: 1,\n          centerPadding: \"40\",\n          slidesToScroll: 1,\n        },\n      },\n    ],\n  };\n\n  const [visibleAlert, setVisibleAlert] = useState(true);\n  const [plecaPrideMX, setPlecaPrideMX] = useState(\"\");\n\n  const onDismiss = () => {\n    setVisibleAlert(false);\n    localStorage.setItem(\"plecaPrideMX\", \"true\");\n  };\n\n  useEffect(() => {\n    let plecaPrideMX = localStorage.getItem(\"plecaPrideMX\");\n    if (plecaPrideMX === \"true\") {\n      setVisibleAlert(false);\n      setPlecaPrideMX(plecaPrideMX);\n    }\n    //making scrolling\n    const handleScroll = () => setScrollTop(window.scrollY);\n    window.addEventListener(\"scroll\", handleScroll);\n\n    return () => {\n      window.removeEventListener(\"scroll\", handleScroll);\n    };\n  }, []);\n\n  const [preload, setPreload] = useState(true);\n\n  useEffect(() => {\n    new WOW.WOW({\n      live: false,\n    }).init();\n    setTimeout(() => setPreload(preload === false), 4000);\n  }, []);\n\n  const defaultOptions = {\n    loop: true,\n    autoplay: true,\n    animationData: LogoPrideJson,\n    rendererSettings: {\n      preserveAspectRatio: \"xMidYMid slice\",\n    },\n  };\n\n  return (\n    <div\n      className=\"wrapper__landing_v2\"\n      style={{ backgroundImage: `url(${bgLogin})` }}\n    >\n      <div className=\"main__landing\">\n        <header\n          className={`wrapper_header_in_login trans ${\n            scrollTop ? \"scrolling\" : \"\"\n          }`}\n        >\n          <div className=\"container-lg\">\n            <div className=\"cont_brand\">\n              <a href=\"#welcome\">\n                <img\n                  className=\"trans\"\n                  src={LogoPrideCom}\n                  alt=\"PrideMx, Todo el poder de la comunidad en un solo espacio\"\n                />\n              </a>\n            </div>\n            <nav\n              className={`cont_options_links ${btnmenu ? \"is__open\" : \"\"}`}\n              id=\"navbar-example\"\n            >\n              <ul role=\"tablist\">\n                <li onClick={toggleMenu}>\n                  <a className=\"a_link_options ico_home white\" href=\"#welcome\">\n                    <RiHomeHeartFill />\n                  </a>\n                </li>\n                <li onClick={toggleMenu}>\n                  <a className=\"a_link_options red\" href=\"#section-a\">\n                    PrideMx\n                  </a>\n                </li>\n                <li onClick={toggleMenu}>\n                  <a className=\"a_link_options orange\" href=\"#section-b\">\n                    Pride Music\n                  </a>\n                </li>\n                <li onClick={toggleMenu}>\n                  <a className=\"a_link_options yellow\" href=\"#section-c\">\n                    Rewards\n                  </a>\n                </li>\n                <li onClick={toggleMenu}>\n                  <a className=\"a_link_options green\" href=\"#section-d\">\n                    Economía Incluyente\n                  </a>\n                </li>\n              </ul>\n            </nav>\n            <div className=\"cont_social\">\n              <div>\n                <div className=\"slabel\">SÍGUENOS EN</div>\n                <div className=\"box_link_fa\">\n                  <a\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"facebook\"\n                    href=\"https://www.facebook.com/SomosPrideMx/\"\n                  >\n                    <i className=\"fa fa-facebook-f\"></i>\n                  </a>\n\n                  <a\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"instagram\"\n                    href=\"https://instagram.com/somos_pridemx?igshid=YmMyMTA2M2Y=\"\n                  >\n                    <i className=\"fa fa-instagram\"></i>\n                  </a>\n\n                  <a\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"twitter\"\n                    href=\"https://twitter.com/SomosPrideMx\"\n                  >\n                    <svg\n                      style={{ marginBottom: \"5px\" }}\n                      viewBox=\"0 0 512 512\"\n                      height=\"16\"\n                    >\n                      <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\" />\n                    </svg>\n                  </a>\n\n                  <a\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"twitter\"\n                    href=\"https://www.youtube.com/@pridemx\"\n                  >\n                    <i className=\"fab fa-youtube\"></i>\n                  </a>\n\n                  <a\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"twitter\"\n                    href=\"https://www.linkedin.com/company/82353363\"\n                  >\n                    <i className=\"fab fa-linkedin-in\"></i>\n                  </a>\n\n                  <a\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"twitter\"\n                    href=\"https://www.tiktok.com/@somos_pridemx\"\n                  >\n                    <i className=\"fab fa-tiktok\"></i>\n                  </a>\n                </div>\n              </div>\n              <div className=\"btn_menu_lndng\" onClick={toggleMenu}>\n                <span className={`btn_menu ${visible ? \"visible_menu\" : \"\"}`}>\n                  <span></span>\n                  <span></span>\n                  <span></span>\n                </span>\n              </div>\n            </div>\n          </div>\n        </header>\n\n        <section className=\"wrapper__welcome\" id=\"welcome\">\n          <div className=\"container-lg\">\n            <div className=\"cont_info_welcome animate__animated animate__fadeInUp\">\n              <h3 className=\"welcome_ttl xthin\">Descubre todo el</h3>\n              <h1 className=\"welcome_ttl xbold mb\">\n                poder de la{\" \"}\n                <span className=\"welcome_ttl xbold c_pink\">Comunidad</span>\n              </h1>{\" \"}\n              <h3 className=\"welcome_ttl xthin\">en un solo espacio</h3>\n            </div>\n\n            <div className=\"cont_form_login animate__fadeInUp animate__animated\">\n              <div className=\"form-login\">\n                {showLogeo ? (\n                  <>\n                    <h1 className=\"landing-header-subtitle\">\n                      <TypeAnimation\n                        sequence={[\n                          \"¡Bienvenidxs!\",\n                          1500,\n                          \"¡Bienvenides!\",\n                          1500,\n                        ]}\n                        speed={65}\n                        repeat={Infinity}\n                      />\n                    </h1>\n                    <Form onSubmit={handleSubmit} form>\n                      <Col sm={12}>\n                        <label form=\"email\" className=\"form-login-input\">\n                          <span className=\"form-login-icon\">\n                            <IoMail />\n                          </span>\n                          <Input\n                            id=\"email\"\n                            placeholder=\"Correo electrónico\"\n                            type=\"email\"\n                            name=\"user\"\n                          />\n                        </label>\n                      </Col>\n                      <Col sm={12}>\n                        <label form=\"pass\" className=\"form-login-input\">\n                          <span className=\"form-login-icon\">\n                            <IoKey />\n                          </span>\n                          <Input\n                            id=\"pass\"\n                            placeholder=\"********\"\n                            type={`${showPassword ? \"text\" : \"password\"}`}\n                            name=\"password\"\n                          />\n                          <span\n                            className=\"form-login-password\"\n                            onClick={togglePassword}\n                          >\n                            {showPassword ? (\n                              <IoEyeOffOutline />\n                            ) : (\n                              <IoEyeOutline />\n                            )}\n                          </span>\n                        </label>\n                      </Col>\n                      <Col lg={24}>\n                        <CargarLogeo />\n                      </Col>\n                      <Col lg={24}>\n                        <div className=\"form-login-submit\">\n                          <Button type=\"submit\" className=\"btn-login\">\n                            ENTRAR\n                          </Button>\n                        </div>\n                        <div className=\"text-center link__regster\">\n                          <Link className=\"\" to=\"/register\">\n                            ¡QUIERO REGISTRARME!\n                          </Link>\n                        </div>\n                      </Col>\n                    </Form>\n                  </>\n                ) : (\n                  <RecoverPassword toggleLogeo={toggleLogeo} />\n                )}\n              </div>\n            </div>\n          </div>\n          <div className=\"box_scroll_home\">\n            <p>Scroll me</p>\n            <a href=\"#section-a\">\n              <img\n                src={ImgScroll}\n                alt=\"PrideMx, Todo el poder de la comunidad en un solo espacio\"\n              />\n            </a>\n          </div>\n        </section>\n\n        {/* == SOMOSPRIDE == */}\n        <section className=\"wrapper__a\" id=\"section-a\">\n          <div className=\"item_resource_video wow animate__animated animate__slideInLeft trans\">\n            <img\n              className=\"btn_icon_play\"\n              onClick={toggle}\n              src={IconPlay}\n              alt=\"PrideMx, Todo el poder de la comunidad en un solo espacio\"\n            />\n          </div>\n          <div className=\"container-lg wow animate__animated animate__fadeInRight\">\n            <div className=\"sec_a\">\n              <div className=\"content_a\">\n                <h1 className=\"ttl_primary\">\n                  #SOMOS<span className=\"\">PRIDEMX</span>\n                </h1>\n                <p className=\"paragraph_lndgn\">\n                  Un espacio seguro donde nuestra comunidad puede conectarse\n                  para{\" \"}\n                  <strong>\n                    colaborar, hacer negocios, aprender, entretenerse y\n                    empoderarse\n                  </strong>\n                  .\n                </p>\n                <div>\n                  <Link className=\"btn_in_section trans\" to=\"/register\">\n                    ¡Quiero unirme!\n                  </Link>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n\n        {/* == PRIDEMUSIC == */}\n        <div className=\"wrapper__b\" id=\"section-b\">\n          <div className=\"container-lg\">\n            <div className=\"sec__b\">\n              <div className=\"content_info wow animate__animated animate__fadeInLeft\">\n                <h1 className=\"ttl_primary mb-3\">\n                  <span className=\"\">PRIDE MUSIC</span>\n                </h1>\n                <h1 className=\"ttl_secundary mb-4\">\n                  ¿Repites las mismas 10 canciones?\n                </h1>\n                <p className=\"paragraph_lndgn\">\n                  Descubre lxs exponentes musicales LGBTQ+ que te volarán la\n                  cabeza y agrégales a tu playlist favorita.\n                </p>\n              </div>\n              <div className=\"content_media \">\n                <div className=\"carta-box mt-4  wow animate__animated animate__fadeInUp \">\n                  <div className=\"carta\">\n                    <div className=\"cara\">\n                      <img src={Pmusic01} />\n                    </div>\n                    <div className=\"cara detras\">\n                      <img src={Pmusic01g} />\n                      <div className=\"disc\">\n                        <svg\n                          id=\"Layer_2\"\n                          data-name=\"Layer 2\"\n                          viewBox=\"0 0 95.82 95.82\"\n                        >\n                          <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n                            <g>\n                              <path d=\"m47.91,95.82C21.49,95.82,0,74.33,0,47.91S21.49,0,47.91,0s47.91,21.49,47.91,47.91-21.49,47.91-47.91,47.91Zm0-92.82C23.15,3,3,23.15,3,47.91s20.15,44.91,44.91,44.91,44.91-20.15,44.91-44.91S72.67,3,47.91,3Z\" />\n                              <path d=\"m47.91,73.27c-13.98,0-25.36-11.38-25.36-25.36s11.38-25.36,25.36-25.36,25.36,11.38,25.36,25.36-11.38,25.36-25.36,25.36Zm0-47.72c-12.33,0-22.36,10.03-22.36,22.36s10.03,22.36,22.36,22.36,22.36-10.03,22.36-22.36-10.03-22.36-22.36-22.36Z\" />\n                              <path d=\"m72.17,23.47c-6.49-6.45-15.11-10-24.26-10h-.11s0-3,0-3h.09c9.97,0,19.34,3.86,26.4,10.87l-2.11,2.13Z\" />\n                            </g>\n                          </g>\n                        </svg>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"carta-box box_middle  wow animate__animated animate__fadeInUp animate__delay-1s\">\n                  <div className=\"carta\">\n                    <div className=\"cara\">\n                      <img src={Pmusic02} />\n                    </div>\n                    <div className=\"cara detras\">\n                      <img src={Pmusic02g} />\n                      <div className=\"disc\">\n                        <svg\n                          id=\"Layer_2\"\n                          data-name=\"Layer 2\"\n                          viewBox=\"0 0 95.82 95.82\"\n                        >\n                          <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n                            <g>\n                              <path d=\"m47.91,95.82C21.49,95.82,0,74.33,0,47.91S21.49,0,47.91,0s47.91,21.49,47.91,47.91-21.49,47.91-47.91,47.91Zm0-92.82C23.15,3,3,23.15,3,47.91s20.15,44.91,44.91,44.91,44.91-20.15,44.91-44.91S72.67,3,47.91,3Z\" />\n                              <path d=\"m47.91,73.27c-13.98,0-25.36-11.38-25.36-25.36s11.38-25.36,25.36-25.36,25.36,11.38,25.36,25.36-11.38,25.36-25.36,25.36Zm0-47.72c-12.33,0-22.36,10.03-22.36,22.36s10.03,22.36,22.36,22.36,22.36-10.03,22.36-22.36-10.03-22.36-22.36-22.36Z\" />\n                              <path d=\"m72.17,23.47c-6.49-6.45-15.11-10-24.26-10h-.11s0-3,0-3h.09c9.97,0,19.34,3.86,26.4,10.87l-2.11,2.13Z\" />\n                            </g>\n                          </g>\n                        </svg>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"carta-box mt-4  wow animate__animated animate__fadeInUp animate__delay-2s\">\n                  <div className=\"carta\">\n                    <div className=\"cara\">\n                      <img src={Pmusic03} />\n                    </div>\n                    <div className=\"cara detras\">\n                      <img src={Pmusic03g} />\n                      <div className=\"disc\">\n                        <svg\n                          id=\"Layer_2\"\n                          data-name=\"Layer 2\"\n                          viewBox=\"0 0 95.82 95.82\"\n                        >\n                          <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n                            <g>\n                              <path d=\"m47.91,95.82C21.49,95.82,0,74.33,0,47.91S21.49,0,47.91,0s47.91,21.49,47.91,47.91-21.49,47.91-47.91,47.91Zm0-92.82C23.15,3,3,23.15,3,47.91s20.15,44.91,44.91,44.91,44.91-20.15,44.91-44.91S72.67,3,47.91,3Z\" />\n                              <path d=\"m47.91,73.27c-13.98,0-25.36-11.38-25.36-25.36s11.38-25.36,25.36-25.36,25.36,11.38,25.36,25.36-11.38,25.36-25.36,25.36Zm0-47.72c-12.33,0-22.36,10.03-22.36,22.36s10.03,22.36,22.36,22.36,22.36-10.03,22.36-22.36-10.03-22.36-22.36-22.36Z\" />\n                              <path d=\"m72.17,23.47c-6.49-6.45-15.11-10-24.26-10h-.11s0-3,0-3h.09c9.97,0,19.34,3.86,26.4,10.87l-2.11,2.13Z\" />\n                            </g>\n                          </g>\n                        </svg>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {/* == REWARDS == */}\n        <div className=\"wrapper__c\" id=\"section-c\">\n          <div className=\"container-lg\">\n            <div className=\"row align-items-center\">\n              <div className=\"col-md-7\">\n                <div className=\"sec_c_carousel wow animate__animated animate__fadeInLeft\">\n                  <Slider {...settings}>\n                    <div className=\"item_picture\">\n                      <img\n                        src={Rewards01}\n                        alt=\"Rewards en PrideMx - Acciones que tienen su recompensa\"\n                      />\n                    </div>\n                    <div className=\"item_picture\">\n                      <img\n                        src={Rewards02}\n                        alt=\"Rewards en PrideMx - Acciones que tienen su recompensa\"\n                      />\n                    </div>\n                    <div className=\"item_picture\">\n                      <img\n                        src={Rewards03}\n                        alt=\"Rewards en PrideMx - Acciones que tienen su recompensa\"\n                      />\n                    </div>\n                    <div className=\"item_picture\">\n                      <img\n                        src={Rewards04}\n                        alt=\"Rewards en PrideMx - Acciones que tienen su recompensa\"\n                      />\n                    </div>\n                  </Slider>\n                </div>\n              </div>\n              <div className=\"col-md-5\">\n                <div className=\"sec_c_info wow animate__animated animate__fadeInRight\">\n                  <div>\n                    <h1 className=\"ttl_primary mb-3\">\n                      <span className=\"\">REWARDS</span>\n                    </h1>\n                    <h1 className=\"ttl_secundary mb-4\">\n                      ¡Acciones que tienen su recompensa!\n                    </h1>\n                    <p className=\"paragraph_lndgn\">\n                      Secciones que te dan puntos acumulables y canjeables por\n                      descuentos y premios exclusivos.\n                    </p>\n                    <p className=\"paragraph_lndgn mt-2\">\n                      <strong>¡Registrarte es solo el principio!</strong>\n                    </p>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {/* == Economía Incluyente == */}\n        <div className=\"wrapper__d\" id=\"section-d\">\n          <div className=\"container-lg\">\n            <div className=\"row align-items-center\">\n              <div className=\"col-lg-6\">\n                <div className=\"sec_d_info wow animate__animated animate__fadeInLeft\">\n                  <div>\n                    <h1 className=\"ttl_primary mb-3\">\n                      <span>ECONOMÍA INCLUYENTE</span>\n                    </h1>\n                    <h1 className=\"ttl_secundary mb-4\">\n                      ¡Siempre hay algo para alguien, en cualquier lugar!\n                    </h1>\n                    <p className=\"paragraph_lndgn\">\n                      Ese sitio es aquí, donde emprendedores con servicios o\n                      productos buscan crecer sus negocios y encontrar personas\n                      que les necesitan.\n                    </p>\n                    <p className=\"paragraph_lndgn mt-2\">\n                      <strong>\n                        Regístrate y date de alta, a un precio único.\n                      </strong>\n                    </p>\n                  </div>\n                </div>\n              </div>\n              <div className=\"col-lg-6\">\n                <div className=\"sec_d_custom\">\n                  <div className=\"carta-box-emp  ei\">\n                    <div className=\"carta\">\n                      <div className=\"cara\">\n                        <img\n                          src={Emprendedor01}\n                          alt=\"Economía Incluyente en PrideMx - Siempre hay algo para alguien, en cualquier lugar\"\n                        />\n                      </div>\n                      <div className=\"cara detras\">\n                        <div className=\"back_box \">\n                          Nuevas experiencias para negocios y consumidores\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"carta-box-emp eii\">\n                    <div className=\"carta\">\n                      <div className=\"cara\">\n                        <img\n                          src={Emprendedor02}\n                          alt=\"Economía Incluyente en PrideMx - Siempre hay algo para alguien, en cualquier lugar\"\n                        />\n                      </div>\n                      <div className=\"cara detras \">\n                        <div className=\"back_box \">\n                          Impulsamos tu crecimiento comercial\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"carta-box-emp eiii\">\n                    <div className=\"carta\">\n                      <div className=\"cara\">\n                        <img\n                          src={Emprendedor03}\n                          alt=\"Economía Incluyente en PrideMx - Siempre hay algo para alguien, en cualquier lugar\"\n                        />\n                      </div>\n                      <div className=\"cara detras \">\n                        <div className=\"back_box \">\n                          Exposición y difusión en nuestras redes sociales\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {/* <footer className=\"wrapper_footer \">\n          <div className=\"container-lg\">\n            <div className=\"sec_footer\">\n              <div className=\"cont_brand\">\n                <a href=\"#welcome\">\n                  <img\n                    className=\"logo_brand\"\n                    src={LogoPrideCom}\n                    alt=\"PrideMx, Todo el poder de la comunidad en un solo espacio\"\n                  />\n                </a>\n                <div className=\"box_social_net\">\n                  <div className=\"slabel\">Síguenos en</div>\n                  <div className=\"box_link_fa\">\n                    <a\n                      target=\"_blank\"\n                      className=\"facebook\"\n                      href=\"https://www.facebook.com/SomosPrideMx/\"\n                    >\n                      <i className=\"fa fa-facebook-f\"></i>\n                    </a>\n                    <a\n                      target=\"_blank\"\n                      className=\"instagram\"\n                      href=\"https://instagram.com/somos_pridemx?igshid=YmMyMTA2M2Y=\"\n                    >\n                      <i className=\"fa fa-instagram\"></i>\n                    </a>\n                    <a\n                      target=\"_blank\"\n                      className=\"twitter\"\n                      href=\"https://twitter.com/SomosPrideMx\"\n                    >\n                      <svg\n                        style={{ marginBottom: \"5px\" }}\n                        viewBox=\"0 0 512 512\"\n                        height=\"20\"\n                      >\n                        <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\" />\n                      </svg>\n                    </a>\n                    <a\n                      target=\"_blank\"\n                      className=\"twitter\"\n                      href=\"https://www.youtube.com/@pridemx\"\n                    >\n                      <i className=\"fab fa-youtube\"></i>\n                    </a>\n                    <a\n                      target=\"_blank\"\n                      className=\"twitter\"\n                      href=\"https://www.linkedin.com/company/82353363\"\n                    >\n                      <i className=\"fab fa-linkedin-in\"></i>\n                    </a>\n                    <a\n                      target=\"_blank\"\n                      className=\"twitter\"\n                      href=\"https://www.tiktok.com/@somos_pridemx\"\n                    >\n                      <i className=\"fab fa-tiktok\"></i>\n                    </a>\n                  </div>\n                </div>\n              </div>\n              <ul className=\"ul_links\">\n                <li>\n                  <h6>Soporte</h6>\n                </li>\n                <li>\n                  <ModalContact />\n                </li>\n                <li>\n                  <a\n                    className=\"link_footer\"\n                    target=\"_blank\"\n                    href=\"/ambienteseguro.pdf\"\n                  >\n                    Decálogo\n                  </a>\n                </li>\n                <li>\n                  <a\n                    className=\"link_footer\"\n                    target=\"_blank\"\n                    href=\"/avisoprivacidad.pdf\"\n                  >\n                    Aviso de Privacidad\n                  </a>\n                </li>\n                <li>\n                  <a\n                    className=\"link_footer\"\n                    target=\"_blank\"\n                    href=\"/terminosycondiciones.pdf\"\n                  >\n                    Términos y Condiciones\n                  </a>\n                </li>\n              </ul>\n            </div>\n            <div className=\"foot_right\">\n              <AnioActual /> ©PrideMx. Todos los derechos reservados\n            </div>\n          </div>\n        </footer> */}\n\n        <FooterFull />\n\n        <div\n          className={`alert-chrome ${\n            plecaPrideMX === \"true\" || !visibleAlert ? \"showing\" : \"\"\n          }`}\n        >\n          <button className=\"btn-close\" onClick={onDismiss}>\n            <i className=\"icon-close\"></i>\n          </button>\n          <div className=\"alert-chrome-content\">\n            <p>\n              Para una mejor experiencia de usuario, recomendamos usar Google\n              Chrome\n            </p>\n            <img src={chrome} alt=\"Google Chrome\" />\n          </div>\n        </div>\n\n        <Modal\n          isOpen={modal}\n          toggle={toggle}\n          className=\"wrapper_modal_cap inLogin\"\n        >\n          <div className=\"sec_video_pride\">\n            <button type=\"button\" className=\"btn-close-login\" onClick={toggle}>\n              Cerrar<i className=\"fa fa-times\"></i>\n            </button>\n            <video controls preload autoPlay>\n              <source\n                src=\"https://stgkumbymx.blob.core.windows.net/ctnprimecontentmx/pride/site/pridemxvideo.mp4\"\n                type=\"video/mp4\"\n              />\n            </video>\n          </div>\n        </Modal>\n\n        <div className={`wrapper_load_animation ${preload ? \"is__show\" : \"\"}`}>\n          {/* <section\n            className=\"content_bg_img\"\n            style={{ backgroundImage: `url(${BgLoadAnimation})` }}\n          ></section> */}\n          <Lottie options={defaultOptions} />\n        </div>\n      </div>\n      <div className=\"particle_container\">\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n        <div className=\"particle\"></div>\n      </div>\n    </div>\n  );\n};\n","import React from \"react\";\nimport imgBg from \"../../assets/imgs/register/imgBg_register.png\";\n\nexport const RegisterAside = () => {\n  return (\n    <article className=\"register__info\">\n      <img src={imgBg} alt=\"Regístrate en PrideMx y encuentra un mundo diseñado para ti.\" title=\"Registro PrideMx\"/>\n    </article>\n  );\n};\n","import React from \"react\";\nimport { ImgCache } from \"../../components/CustonHooks/imgCache\";\nimport CompanyLogo from \"../../assets/imgs/R_C.png\";\nimport \"./register.scss\";\nimport { Link } from \"react-router-dom\";\n\nexport const RegisterHeader = ({ title, subtitle = \"\" }) => {\n  return (\n    <header className={\"register__header\"}>\n      <Link to={\"/\"}>\n        <ImgCache src={CompanyLogo} alt={\"PrideMx Logo oficial\"} />\n      </Link>\n      <h2>\n        {title}\n        <br />\n        <span>{subtitle}</span>\n      </h2>\n    </header>\n  );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport \"./register.scss\";\nimport { useSelector } from \"react-redux\";\nimport \"dayjs/locale/es\";\nimport { Button, Col, DatePicker, Flex, Form, Input, Row, Select } from \"antd\";\nimport { IoCheckmarkCircle } from \"react-icons/io5\";\nimport dayjs from \"dayjs\";\nimport { userService } from \"../../services/user.service\";\nimport { RegisterAside } from \"./registerAside\";\nimport { RegisterHeader } from \"./registerHeader\";\nimport { FooterFull } from \"../../components/footer/footerFull\";\n\nexport const Register = () => {\n  const history = useHistory();\n  const accountSettings = useSelector((state) => state.accountSettings);\n  const { referralToken } = useParams();\n  const [user, setUser] = useState({\n    name: \"\",\n    lastname: \"\",\n    birthday: \"\",\n    email: \"\",\n    password: \"\",\n    pronoun: 0,\n  });\n  const [validatePassword, setValidatePassword] = useState(false);\n  const oneCharacter = useRef();\n  const oneN = useRef();\n  const oneLetterL = useRef();\n  const oneLetterU = useRef();\n  const min8Characters = useRef();\n  const [form] = Form.useForm();\n  const [currentDate, setCurrentDate] = useState(dayjs().subtract(18, \"years\"));\n\n  const onSubmit = () => {\n    if (accountSettings.activateRegistration) registerUser(user);\n  };\n\n  const registerUser = (data) => {\n    data.CompanyId = process.env.REACT_APP_COMPANY;\n    data.CountryStateTypeId =\n      data.CountryStateTypeId === \"\" ? \"1\" : data.CountryStateTypeId;\n    data.MaritalStatusTypeId =\n      data.MaritalStatusTypeId === \"\" ? \"1\" : data.MaritalStatusTypeId;\n    data.NationalityTypeId =\n      data.NationalityTypeId === \"\" ? \"1\" : data.NationalityTypeId;\n    data.PostalCode = \"\";\n    data.RFC = data.iniciales + data.fechanac;\n    data.ReferralToken = referralToken;\n    data.gender = \"F\";\n    data.MiddleName = \"\";\n    data.mobileConfirm = \"\";\n    data.mobile = \"\";\n    userService.register(data);\n    form.resetFields();\n  };\n\n  const handleInputValue = (e) =>\n    setUser({ ...user, [e.target.name]: e.target.value });\n\n  const handleSelectPronoun = (value) => setUser({ ...user, pronoun: value });\n\n  const handlePassword = (e) => {\n    const oneLetterUppercase = /.*[A-Z].*/;\n    const oneLetterLowercase = /.*[a-z].*/;\n    const oneNumber = /.*[0-9].*/;\n    const oneSpecialCharacter =\n      /(.*[!@#$%\\^&*(){}[\\]<>?/|-]+|.*[!@#$%\\^&*(){}[\\]<>?/|\\-]+)/;\n\n    const noSpace = e.target.value.replace(/ /g, \"\");\n\n    if (String(noSpace).length >= 8)\n      min8Characters.current.className = \"success\";\n    else min8Characters.current.className = \"\";\n\n    if (oneLetterUppercase.test(noSpace))\n      oneLetterU.current.className = \"success\";\n    else oneLetterU.current.className = \"\";\n\n    if (oneLetterLowercase.test(noSpace))\n      oneLetterL.current.className = \"success\";\n    else oneLetterL.current.className = \"\";\n\n    if (oneNumber.test(noSpace)) oneN.current.className = \"success\";\n    else oneN.current.className = \"\";\n\n    if (oneSpecialCharacter.test(noSpace))\n      oneCharacter.current.className = \"success\";\n    else oneCharacter.current.className = \"\";\n\n    form.setFieldValue(\"password\", noSpace);\n    setUser({ ...user, [e.target.name]: noSpace });\n  };\n\n  const handleBirthday = (_str, _date) => setUser({ ...user, birthday: _date });\n\n  const handleDisabledDate = (current) => {\n    return dayjs().subtract(18, \"years\") < current;\n  };\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n\n  return (\n    <section className=\"register__container\">\n      <article className=\"register__form\">\n        <Form\n          form={form}\n          className={\"-form-light\"}\n          onFinish={onSubmit}\n          layout={\"vertical\"}\n        >\n          <RegisterHeader title={\"Quiero\"} subtitle={\"registrarme\"} />\n          <Row gutter={16}>\n            <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n              <Form.Item\n                label={\"Tu nombre\"}\n                name={\"firstName\"}\n                htmlFor={\"firstName\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                ]}\n                onChange={handleInputValue}\n              >\n                <Input name={\"firstName\"} size={\"large\"} />\n              </Form.Item>\n            </Col>\n            <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n              <Form.Item\n                label={\"Apellido\"}\n                name={\"lastName\"}\n                htmlFor={\"lastName\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                ]}\n                onChange={handleInputValue}\n              >\n                <Input name={\"lastName\"} size={\"large\"} />\n              </Form.Item>\n            </Col>\n            <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n              <Form.Item\n                label={\"Tu cumpleaños\"}\n                name={\"birthday\"}\n                htmlFor={\"birthday\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                ]}\n              >\n                <DatePicker\n                  name={\"birthday\"}\n                  size={\"large\"}\n                  placeholder={\"Cumpleaños\"}\n                  picker={\"date\"}\n                  onChange={handleBirthday}\n                  showToday={false}\n                  onFocus={() => {\n                    form.setFieldValue(\"birthday\", currentDate);\n                    setUser({ ...user, birthday: currentDate });\n                  }}\n                  disabledDate={handleDisabledDate}\n                  format={\"DD/MMM/YYYY\"}\n                />\n              </Form.Item>\n            </Col>\n            <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n              <Form.Item\n                label={\"Me identifico como...\"}\n                name={\"genre\"}\n                htmlFor={\"genre\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                ]}\n              >\n                <Select name={\"genre\"} onChange={handleSelectPronoun}>\n                  <Select.Option value={1}>Él</Select.Option>\n                  <Select.Option value={2}>Ella</Select.Option>\n                  <Select.Option value={3}>Elle</Select.Option>\n                  <Select.Option value={5}>Otro</Select.Option>\n                </Select>\n              </Form.Item>\n            </Col>\n            <Col xs={24}>\n              <Form.Item\n                label={\"Tu correo\"}\n                name={\"email\"}\n                htmlFor={\"email\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    type: \"email\",\n                    message: \"No es un formato de correo válido\",\n                  },\n                ]}\n                onChange={handleInputValue}\n              >\n                <Input name={\"email\"} size={\"large\"} />\n              </Form.Item>\n            </Col>\n            <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n              <Form.Item\n                label={\"Contraseña\"}\n                htmlFor={\"password\"}\n                name={\"password\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    min: 8,\n                    message: \"\",\n                  },\n                  {\n                    pattern: new RegExp(/.*[A-Z].*/),\n                    message: \"\",\n                  },\n                  {\n                    pattern: new RegExp(/.*[a-z].*/),\n                    message: \"\",\n                  },\n                  {\n                    pattern: new RegExp(/.*[0-9].*/),\n                    message: \"\",\n                  },\n                  {\n                    pattern: new RegExp(\n                      /(.*[!@#$%\\^&*(){}[\\]<>?/|-]+|.*[!@#$%\\^&*(){}[\\]<>?/|\\-]+)/\n                    ),\n                    message: \"\",\n                  },\n                ]}\n                onChange={handlePassword}\n              >\n                <Input.Password\n                  name={\"password\"}\n                  size={\"large\"}\n                  onBlur={() => setValidatePassword(false)}\n                  onFocus={() => setValidatePassword(true)}\n                />\n              </Form.Item>\n              <div\n                className={`msg-password`}\n              >\n                <ul className={\"msg-password__list\"}>\n                  <li>\n                    <span ref={min8Characters}>\n                      <IoCheckmarkCircle />\n                    </span>\n                    Mínimo 8 carácteres\n                  </li>\n                  <li>\n                    <span ref={oneLetterU}>\n                      <IoCheckmarkCircle />\n                    </span>\n                    1 letra mayúscula\n                  </li>\n                  <li>\n                    <span ref={oneLetterL}>\n                      <IoCheckmarkCircle />\n                    </span>\n                    1 letra minúscula\n                  </li>\n                  <li>\n                    <span ref={oneN}>\n                      <IoCheckmarkCircle />\n                    </span>\n                    1 número\n                  </li>\n                  <li>\n                    <span ref={oneCharacter}>\n                      <IoCheckmarkCircle />\n                    </span>\n                    1 carácter especial\n                  </li>\n                </ul>\n              </div>\n            </Col>\n            <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n              <Form.Item\n                label={\"Confirma tu contraseña\"}\n                name={\"confirmPassword\"}\n                dependencies={[\"password\"]}\n                rules={[\n                  {\n                    required: true,\n                    message: \"\",\n                  },\n                  ({ getFieldValue }) => ({\n                    validator(_, value) {\n                      if (!value || getFieldValue(\"password\") === value) {\n                        return Promise.resolve();\n                      }\n                      return Promise.reject(\n                        new Error(\"¡Las contraseñas no coinciden!\")\n                      );\n                    },\n                  }),\n                ]}\n              >\n                <Input.Password name={\"confirmPassword\"} size={\"large\"} />\n              </Form.Item>\n            </Col>\n          </Row>\n          <div className={\"-form-light__footer\"}>\n            <Button\n              htmlType={\"button\"}\n              className={\"outline-dark\"}\n              onClick={() => history.push(\"/\")}\n            >\n              Iniciar sesión\n            </Button>\n            <Button htmlType={\"submit\"} type={\"primary\"}>\n              Registrarme\n            </Button>\n          </div>\n        </Form>\n        <RegisterAside />\n      </article>\n      <FooterFull />\n    </section>\n  );\n};\n","import React from \"react\";\n\nexport function Legals() {\n  return (\n    <article className=\"login-footer-legals\">\n      <ul>\n          <li><a target=\"_blank\" href=\"/ambienteseguro.pdf\">Decálogo</a></li>\n          <li><a target=\"_blank\" href=\"/avisoprivacidad.pdf\">Aviso de Privacidad</a></li>\n          <li><a target=\"_blank\" href=\"/terminosycondiciones.pdf\">Términos y Condiciones</a></li>\n      </ul>\n    </article>\n  );\n}\n","import React from \"react\";\nimport {useHistory} from \"react-router-dom\";\nimport {Button} from \"antd\";\n\nexport function NoticeMessage ({title, subtitle,message, success}) {\n    const history = useHistory();\n\n    return (\n        <div className=\"register__successfull\">\n            <div className=\"\">\n                {parseInt(success) === 1 ?\n                    <svg className=\"checkmark\" viewBox=\"0 0 52 52\">\n                        <circle className=\"checkmark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n                        <path className=\"checkmark__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n                    </svg>\n                    :\n                    <svg className=\"cross\" viewBox=\"0 0 52 52\">\n                        <circle className=\"cross__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\"/>\n                        <path className=\"cross__path cross__path--right\" fill=\"none\" d=\"M16,16 l20,20\" />\n                        <path className=\"cross__path cross__path--right\" fill=\"none\" d=\"M16,36 l20,-20\" />\n                    </svg>\n                }\n                <h4 className={`${(parseInt(success) === 1) ? '' : 'error'}`}>{title}</h4>\n            </div>\n            <div className=\"-form-light\">\n                <h5>{subtitle}</h5>\n                <p>{message}</p>\n                <div className=\"-form-light__footer\">\n                    <Button\n                        htmlType={'button'}\n                        className=\"outline-dark\"\n                        onClick={() => history.push('/')}\n                    >\n                        Iniciar sesión\n                    </Button>\n                </div>\n            </div>\n        </div>\n    );\n}\n","import React from \"react\";\nimport { FaFacebook, FaInstagram, FaTiktok, FaYoutube } from \"react-icons/fa\";\nimport { FaXTwitter } from \"react-icons/fa6\";\nimport \"./socialMedia.scss\";\n\nexport const SocialMedia = () => {\n  return (\n    <section className={\"social-media\"}>\n      <p>¡Síguenos!</p>\n      <ul className={\"social-media__list\"}>\n        <li>\n          <a\n            target={\"_blank\"}\n            rel=\"noopener noreferrer\"\n            href={\"https://www.facebook.com/SomosPrideMx/\"}\n            className={\"facebook\"}\n          >\n            <FaFacebook />\n          </a>\n        </li>\n        <li>\n          <a\n            target={\"_blank\"}\n            rel=\"noopener noreferrer\"\n            href={\"https://instagram.com/somos_pridemx?igshid=YmMyMTA2M2Y=\"}\n            className={\"instagram\"}\n          >\n            <FaInstagram />\n          </a>\n        </li>\n        <li>\n          <a\n            target={\"_blank\"}\n            rel=\"noopener noreferrer\"\n            href={\"https://www.youtube.com/@pridemx\"}\n            className={\"youtube\"}\n          >\n            <FaYoutube />\n          </a>\n        </li>\n        <li>\n          <a\n            target={\"_blank\"}\n            rel=\"noopener noreferrer\"\n            href={\"https://www.tiktok.com/@somos_pridemx\"}\n            className={\"tiktok\"}\n          >\n            <FaTiktok />\n          </a>\n        </li>\n        <li>\n          <a\n            target={\"_blank\"}\n            rel=\"noopener noreferrer\"\n            href={\"https://twitter.com/SomosPrideMx\"}\n            className={\"twitter\"}\n          >\n            <FaXTwitter />\n          </a>\n        </li>\n      </ul>\n    </section>\n  );\n};\n","import React from \"react\";\nimport \"./register.scss\";\n\nexport const RegisterFooter = () => {\n  return (\n    <>\n      <footer className={\"footer-register\"}>\n        <ul className={\"footer-register__links\"}>\n          <li>\n            <a\n              target={\"_blank\"}\n              rel=\"noopener noreferrer\"\n              href={\"https://www.pridemx.com/ambienteseguro.pdf\"}\n            >\n              Decálogo\n            </a>\n          </li>\n          <li>\n            <a\n              target={\"_blank\"}\n              rel=\"noopener noreferrer\"\n              href={\"https://www.pridemx.com/avisoprivacidad.pdf\"}\n            >\n              Aviso de privacidad\n            </a>\n          </li>\n          <li>\n            <a\n              target={\"_blank\"}\n              rel=\"noopener noreferrer\"\n              href={\"https://www.pridemx.com/terminosycondiciones.pdf\"}\n            >\n              Términos y condiciones\n            </a>\n          </li>\n        </ul>\n        <p>2024 ©PrideMx. Todos los derechos reservados</p>\n      </footer>\n    </>\n  );\n};\n","import React, { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport \"./register.scss\";\nimport { userService } from \"../../services/user.service\";\nimport { Legals } from \"../../components/legals/legals\";\nimport { BoxSocialNetworks } from \"../../components/boxSocialNetworks\";\nimport { RegisterAside } from \"./registerAside\";\nimport { NoticeMessage } from \"./noticeMessage\";\nimport { ImgCache } from \"../../components/CustonHooks/imgCache\";\nimport { Flex } from \"antd\";\nimport { RegisterHeader } from \"./registerHeader\";\nimport { SocialMedia } from \"./socialMedia\";\nimport { RegisterFooter } from \"./registerFooter\";\nimport { FooterFull } from \"../../components/footer/footerFull\";\n\nexport function VerifyAccount(props) {\n  const [verify, setVerify] = useState({});\n  useEffect(() => {\n    userService\n      .verifyAccount({\n        UserId: props.location.search.split(\"userId=\")[1].split(\"&\")[0],\n        Code: props.location.search.split(\"code=\")[1],\n      })\n      .then((result) => setVerify(result));\n  }, [props.location.search]);\n\n  return (\n    <section className=\"register__container\">\n      <article className=\"register__form\">\n        <div className=\"-form-light verificacion\">\n          <RegisterHeader\n            title={`${\n              verify.responseCode == \"00\" ? \"¡Te has registrado\" : \"¡Error al\"\n            }`}\n            subtitle={`${\n              verify.responseCode == \"00\"\n                ? \"exitosamente!\"\n                : \"verificar cuenta!\"\n            }`}\n          />\n          {verify && (\n            <NoticeMessage\n              title={`${\n                verify.responseCode == \"00\"\n                  ? \"¡Verificación exitosa!\"\n                  : \"¡Error al verificar cuenta!\"\n              }`}\n              subtitle={`${verify.responseCode == \"00\" ? \"\" : \"¡Ups!\"}`}\n              message={`${\n                verify.responseCode == \"00\" ? \"\" : verify.responseMessage\n              }`}\n              backLink=\"login\"\n              success={`${verify.responseCode == \"00\" ? 1 : 0}`}\n            />\n          )}\n        </div>\n        <RegisterAside />\n      </article>\n      <FooterFull />\n    </section>\n  );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport LogoCompany from \"../../assets/imgs/R_C.png\";\nimport \"./register.scss\";\nimport { ecommerceService } from '../../services/ecommerce.service'\nimport swal from \"sweetalert\"\nimport { useSelector } from \"react-redux\";\nimport { ImgCache } from \"../../components/CustonHooks/imgCache\"\nimport {Col, Row} from \"reactstrap\";\nimport {Legals} from \"../../components/legals/legals\";\nimport {FaChevronRight, FaTimesCircle} from \"react-icons/fa\";\n\nexport function Membership(props) {\n    const companyLogo = useSelector(state => state.userSettings.companyLogo);\n    const model = props.location.state;\n\n    const payMembership = () => {\n        const request = {\n            UserId: model.userId,\n            PaymentMethodId: 9,\n            Products: [{\n                ProductId: model.productId,\n                Cant: 1\n            }]\n        };\n\n        ecommerceService.payMembership(request)\n            .then(result => {\n                if (result != undefined) {\n                    window.location.href = result\n                } else {\n                    swal({ text: \"Ocurrió un error al abrir método de pago\", icon: \"error\" })\n                }\n            });\n    }\n\n    return (\n        <section className=\"membership-wrapper\">\n            <div className=\"membership-bg\">\n                <div className=\"membership-container\">\n                    <div className=\"membership-title\">\n                        <h2>Obtén tu Membresía</h2>\n                        <ImgCache src={companyLogo ? companyLogo : LogoCompany} alt=\"Kuimby Social\" />\n                    </div>\n                    <div className=\"membership-content\">\n                        <div className=\"membership-content-pay\">\n                            <div className=\"form-membership\">\n                                <Row>\n                                    <Col sm={12}>\n                                        <div className=\"icon\">\n                                            <h4>Hola, <span>{model && model.userName}</span>{\" \"}</h4>\n                                            <h2>¡Estás a punto de descubrir un mundo nuevo!</h2>\n                                            <p>\n                                                Al adquirir tu {model && model.productName} comenzarás a\n                                                disfrutar de todos los beneficios que tiene para ti.\n                                            </p>\n                                            <p>\n                                                Costo de membresía:{\" \"}\n                                                <span className=\"price\">${model && model.productPrice}</span>\n                                            </p>\n                                        </div>\n                                    </Col>\n                                    <Col sm={12}>\n                                        <div className=\"form-membership-footer\">\n                                            <Link to=\"/login\" className=\"btn-dark\">\n                                                <FaTimesCircle />\n                                                <p>Cancelar</p>\n                                            </Link>\n                                            {model &&\n                                                <button type=\"button\" className=\"btn-dark\" onClick={payMembership}>\n                                                    <p>Obtener membresía</p>\n                                                    <FaChevronRight />\n                                                </button>\n                                            }\n                                        </div>\n                                    </Col>\n                                </Row>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"membership-footer\">\n                        <Legals />\n                    </div>\n                </div>\n            </div>\n        </section>\n    );\n}\n","import React  from \"react\";\nimport { Link } from \"react-router-dom\";\nimport LogoCompany from \"../../assets/imgs/R_C.png\";\nimport \"./register.scss\";\nimport { useSelector } from \"react-redux\";\nimport { ImgCache } from \"../../components/CustonHooks/imgCache\"\nimport {Col, Row} from \"reactstrap\";\nimport {Legals} from \"../../components/legals/legals\";\nimport {FaHome} from \"react-icons/fa\";\n\nexport function MembershipPayment(props) {\n    const companyLogo = useSelector(state => state.userSettings.companyLogo);\n    return (\n        <section className=\"membership-wrapper\">\n            <div className=\"membership-bg\">\n                <div className=\"membership-container\">\n                    <div className=\"membership-title\">\n                        <h2>Pago de Membresía </h2>\n                        <ImgCache src={companyLogo ? companyLogo : LogoCompany} alt=\"Logo oficial Kuimby Social\" />\n                    </div>\n                    <div className=\"membership-content\">\n                        {props.location.pathname == \"/error-membership\"\n                            ? <div className=\"membership-content-pay pay-cancel\">\n                                <div className=\"form-membership\">\n                                    <Row>\n                                        <Col sm={12}>\n                                            <div className=\"icon\">\n                                                <svg className=\"cross\" viewBox=\"0 0 52 52\">\n                                                    <circle className=\"cross-circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\"/>\n                                                    <path className=\"cross-path cross-path-right\" fill=\"none\" d=\"M16,16 l20,20\"/>\n                                                    <path className=\"cross-path cross-path-right\" fill=\"none\" d=\"M16,36 l20,-20\"/>\n                                                </svg>\n                                                <h2>¡Ocurrió un problema con el pago, ha sido cancelada o rechazada por el banco!</h2>\n                                                <p>Puedes actualizar tu método de pago e intentarlo de nuevo.</p>\n                                            </div>\n                                        </Col>\n                                        <Col sm={12}>\n                                            <div className=\"form-membership-footer\">\n                                                <Link to=\"/login\" className=\"btn-dark\">\n                                                    <p>Iniciar sesión</p>\n                                                    <FaHome />\n                                                </Link>\n                                            </div>\n                                        </Col>\n                                    </Row>\n                                </div>\n                            </div>\n                            : <div className=\"membership-content-pay pay-success\">\n                                <div className=\"form-membership\">\n                                    <Row>\n                                        <Col sm={12}>\n                                            <div className=\"icon\">\n                                                <svg className=\"checkmark\" viewBox=\"0 0 52 52\">\n                                                    <circle className=\"checkmark-circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\"/>\n                                                    <path className=\"checkmark-check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"/>\n                                                </svg>\n                                                <h2>¡Pago exitoso!</h2>\n                                            </div>\n                                        </Col>\n                                        <Col sm={12}>\n                                            <div className=\"form-membership-footer\">\n                                                <Link className=\"btn-dark\" to=\"/login\">\n                                                    <p>Iniciar sesión</p>\n                                                    <FaHome />\n                                                </Link>\n                                            </div>\n                                        </Col>\n                                    </Row>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    <div className=\"membership-footer\">\n                        <Legals />\n                    </div>\n                </div>\n            </div>\n        </section>\n    );\n}\n","import { callApi } from './service'\n\nexport const useSurveyUserProfile = {\n    createSurveyUserProfile,\n    completeSurveyUserProfile,\n    deleteSurveyUserProfile,\n    getSurveysUserProfile\n};\nasync function createSurveyUserProfile(params) {\n    return callApi('/backend/SurveyUserProfile', 'POST', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function getSurveysUserProfile() {\n    return callApi('/backend/SurveyUserProfile', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function completeSurveyUserProfile(params) {\n    return callApi('/backend/SurveyUserProfile', 'PUT', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function deleteSurveyUserProfile(params) {\n    return callApi('/backend/SurveyUserProfile', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}","import React, { useState, useEffect }  from \"react\";\nimport Slider from \"react-slick\";\nimport \"./sideAdvertising.scss\";\nimport { useCompanyHoliday } from \"../../services/companyHoliday.service\";\n\nexport function SideAdvertising() {\n  const settings = {\n    dots: true,\n    infinite: true,\n    speed: 800,\n    slidesToShow: 1,\n    fade: true,\n    slidesToScroll: 1,\n    autoplay: true,\n    autoplaySpeed: 2800,\n    arrows: true,\n    adaptiveHeight: true,\n    swipeToSlide: true,\n    responsive: [\n      {\n        breakpoint: 1200,\n        settings: {\n          slidesToShow: 2,\n          slidesToScroll: 2,\n        },\n      },\n      {\n        breakpoint: 620,\n        settings: {\n          slidesToShow: 1,\n          slidesToScroll: 1,\n        },\n      },\n    ],\n  };\n\n  useEffect(() => {\n    getCompanyHolidays();\n  }, []);\n\n  const [sliderItems, setSliderItems] = useState([]);\n\n  async function getCompanyHolidays() {\n      useCompanyHoliday.getCompanyHolidayFront(3).then((result) => {\n          if (result) {\n              var temp = [];\n              result.map((ch) => {\n                  temp.push({\n                      key: ch.companyHolidayId.toString(),\n                      file: ch.imagePath,\n                      description: ch.description,\n                      isVideo: ch.isVideo,\n                      link: ch.iframe\n                  });\n              });\n              setSliderItems(temp);\n          }\n      });\n  }\n\n  return (\n    <div className=\"wrapper_side_advertising\">\n        <Slider {...settings}>\n          {sliderItems.map(item => (\n            <a target=\"_blank\" href={ item.link } className=\"item_advertising\" key={item.key}>\n              <img src={item.file} alt={item.description} title={item.description}/>\n              <h6>{item.description}</h6>\n            </a>\n          ))}\n          </Slider>\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport { ListGroup, ListGroupItem } from \"reactstrap\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { useSelector } from \"react-redux\";\nimport { Button } from \"rsuite\";\n\nexport function ListSurveys({ surveys, onSelectSurvey, handleTempQuestions }) {\n  const [surveyActive, setSurveyActive] = useState(0);\n\n  const calendarStrings = useSelector((state) => state.calendarStrings);\n\n  return (\n    <>\n      {surveys.map((survey) => ( \n        <div\n          className={` list-group-item ${surveyActive == survey.surveyId ? \"active\" : \"\"}`}\n          key={survey.surveyUserProfileId}\n          onClick={() => {\n            onSelectSurvey(survey);\n            setSurveyActive(survey.surveyId);\n            handleTempQuestions(handleTempQuestions)\n          }}\n        >\n          <div>\n            <h6>{survey.title}</h6>\n            <p className=\"question\">{survey.questionCount} reactivos</p>\n            <p>\n              Vence <Moment calendar={calendarStrings}>{survey.endDate}</Moment>\n            </p>\n          </div>\n          <button className=\"btn_next\">\n            <i className=\"icon-chevron-right\"></i>\n          </button>\n        </div>\n      ))}\n    </>\n  );\n}\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\nimport Swal from \"sweetalert2\";\n\nexport const useQuestion = {\n    createQuestion,\n    updateQuestion,\n    deleteQuestion,\n    getQuestions,\n    getFrontQuestions, \n    getFrontQuestionsList,\n    getQuestionAnswerList,\n};\nasync function createQuestion(params) {\n    return callApi('/backoffice/SurveyQuestion', 'POST', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function getQuestions(surveyId) {\n    return callApi('/backoffice/SurveyQuestion/' + surveyId, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            Swal.fire({\n                text: result.responseMessage,\n                icon: \"error\"\n            }).then((value) => {\n                window.location.href = '/AdminSurvey'\n              });\n              return null;\n        }\n    });\n}\n\nasync function getQuestionAnswerList(questionId) {\n    return callApi('/backoffice/GetAnsweredListByQuestion/' + questionId, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function getFrontQuestions(params) {\n    return callApi('/backend/SurveyQuestion/' + params.surveyId, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" }).then((value) => {\n                window.location.href = '/AdminSurvey'\n              });\n              return null;\n        }\n    });\n}\n\nasync function getFrontQuestionsList(surveyId) {\n    return callApi('/backend/SurveyQuestion/' + surveyId, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function updateQuestion(params) {\n    return callApi('/backoffice/SurveyQuestion', 'PUT', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function deleteQuestion(params) {\n    return callApi('/backoffice/SurveyQuestion', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n","import { callApi, callApiFileStorage } from './service'\nimport swal from \"sweetalert\";\n\nexport const useSurveyUserProfileAnswer = {\n    createSurveyUserProfileAnswer,\n    updateSurveyUserProfileAnswer,\n    deleteSurveyUserProfileAnswer,\n    getSurveysUserProfileAnswer,\n    getSurveysUserProfileAnswersByQuestionId,\n    addSurveyMultimedia,\n    getAnsweredByQuestionId\n};\nasync function createSurveyUserProfileAnswer(params) {\n    return callApi('/backend/SurveyUserProfileAnswer', 'POST', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" });\n            return null;\n        }\n    });\n}\nasync function getSurveysUserProfileAnswer() {\n    return callApi('/backend/SurveyUserProfileAnswer', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function getSurveysUserProfileAnswersByQuestionId(idQuestion, surveyUserProfileId) {\n    return callApi('/backend/SurveyUserProfileAnswer/' + idQuestion.toString() + '/' + surveyUserProfileId, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function getAnsweredByQuestionId(idQuestion, surveyUserProfileId) {\n    return callApi('/backend/SurveyUserProfileAnswers/' + idQuestion.toString() + '/' + surveyUserProfileId, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function updateSurveyUserProfileAnswer(params) {\n    return callApi('/backend/SurveyUserProfileAnswer', 'PUT', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" });\n            return null;\n        }\n    });\n}\nasync function deleteSurveyUserProfileAnswer(params) {\n    return callApi('/backend/SurveyUserProfileAnswer', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function addSurveyMultimedia(params, files) {\n    const formData = new FormData();\n    formData.append(\"SurveyAnswerConfigId\", params.SurveyAnswerConfigId);\n    formData.append(\"SurveyId\", params.SurveyId);\n    formData.append(\"InputValues\", params.InputValues);\n    formData.append(\"FileImage\", files);\n    return callApiFileStorage('/backend/SurveyMultimedia', 'POST', formData, false).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result?.responseMessage);\n            return null;\n        }\n    });\n}","import swal from \"sweetalert\";\nimport { callApi } from \"./service\";\n\nexport const useSurveyScale = {\n    getSurveyScales,\n    deleteSurveyScale,\n    getSurveyScaleById,\n    deleteSurveyScaleAnswer,\n    getSurveyScaleAnswers,\n    createSurveyScaleAnswer,\n    updateSurveyScaleAnswer,\n    createSurveyScale,\n    updateSurveyScale,\n    getScaleAnswers\n}\n\nasync function createSurveyScale(params) {\n    return callApi('/backoffice/SurveyScale', 'POST', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Escala creada correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al crear escala\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\nasync function updateSurveyScale(params) {\n    return callApi('/backoffice/SurveyScale', 'PUT', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Escala actualizada correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al actualizar escala\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\nasync function getSurveyScales() {\n    return callApi('/backoffice/SurveyScale', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function getSurveyScaleAnswers(scaleId) {\n    return callApi(`/backoffice/SurveyScaleAnswer/${scaleId}`, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function getSurveyScaleById(id) {\n    return callApi(`/backoffice/SurveyScale/${id}`, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" }).then((value) => {\n                window.location.href = '/AdminSurveyScale'\n            });\n            return null;\n        }\n    });\n}\n\nasync function deleteSurveyScale(params) {\n    return callApi('/backoffice/SurveyScale', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Escala desactivada correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar escala\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\nasync function deleteSurveyScaleAnswer(params) {\n    return callApi('/backoffice/SurveyScaleAnswer', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Respuesta desactivada correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar respuesta\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\nasync function createSurveyScaleAnswer(params) {\n    return callApi('/backoffice/SurveyScaleAnswer', 'POST', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Respuesta creada correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al crear respuesta\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\nasync function updateSurveyScaleAnswer(params) {\n    return callApi('/backoffice/SurveyScaleAnswer', 'PUT', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Respuesta actualizada correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al actualizar respuesta\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\nasync function getScaleAnswers(scaleId) {\n    return callApi(`/backoffice/SurveyScaleAnswer/${scaleId}`, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}","export const SurveyTypes = {\n    OPEN: process.env.REACT_APP_OPEN_SURVEY_ID,\n    MULTIPLE_OPTION: process.env.REACT_APP_MULTIPLE_OPTION_SURVEY_ID,\n    SCALE: process.env.REACT_APP_SCALE_SURVEY_ID,\n    MULTIMEDIA: process.env.REACT_APP_MULTIMEDIA_SURVEY_ID,\n    WARM_MAP: process.env.REACT_APP_WARM_MAP_SURVEY_ID\n}","import React, { useEffect, useState } from \"react\";\nimport { useSurveyUserProfileAnswer } from \"../../services/surveyUserProfileAnswer.service\";\nimport swal from \"sweetalert\";\nimport { FormGroup } from \"reactstrap\";\nimport { useSurveyScale } from \"../../services/surveyScale.service\";\nimport { SurveyTypes } from \"../../enums/surveyTypes\";\nimport { BsCheckCircle } from \"react-icons/bs\";\n\nexport function AnswersSurvey({\n  index,\n  question,\n  surveyUserProfileId,\n  next,\n  setQuestionIndexSave,\n  questionIndexSave,\n  setLastSave,\n  getQuestionIndex,\n  setPreviousClick,\n  previousClick,\n  previous,\n  questionIndex\n}) {\n  const [userAnswer, setUserAnswer] = useState({});\n  const [answerData, setAnswersData] = useState([]);\n  const [SelectedAnswerId, setSelectedAnswerId] = useState(\"\");\n  const [SelectedValue, setSelectedValue] = useState(\"\");\n  const [scaleAnswers, setScaleAnswers] = useState([]);\n  const [answersSelected, setAnswersSelected] = useState([]);\n  const [imagesToUpload, setImagesToUpload] = useState([]);\n\n  useEffect(() => {\n    getAnswers(question);\n\n    if (question.surveyAnswerTypeId == parseInt(SurveyTypes.SCALE)) {\n      getScaleAsnwers();\n    }\n  }, [question]);\n\n  useEffect(() => {\n    if (index == questionIndex - 1) {\n      getAnswers(question);\n    }\n  }, [questionIndex]);\n\n  const getScaleAsnwers = () => {\n    useSurveyScale.getScaleAnswers(question.surveyScaleId).then((data) => {\n      setScaleAnswers(data);\n      useSurveyUserProfileAnswer\n        .getAnsweredByQuestionId(question.surveyQuestionId, surveyUserProfileId)\n        .then((answersSelected) => {\n          console.log(answersSelected);\n          setAnswersSelected(answersSelected);\n        });\n    });\n  };\n\n  useEffect(() => {\n    var filterData = answerData.filter(\n      (item) => item.surveyAnswerConfigId == SelectedAnswerId\n    );\n    if (filterData.length > 0) {\n      if (!filterData[0].active && previousClick) {\n        setTimeout(() => {\n          previous(question.surveyQuestionId);\n        }, 400);\n      }\n      if (filterData[0].active && previousClick) {\n        setPreviousClick(false);\n      }\n    }\n  }, [userAnswer]);\n\n  useEffect(() => {\n    if (questionIndexSave == index) handleSubmit();\n  }, [questionIndexSave]);\n\n  const onSelectScale = (surveyAnswerConfigId, value) => {\n    const alreadyExists = answersSelected.find(\n      (s) => s.selectedAnswerConfigId == surveyAnswerConfigId\n    );\n    if (alreadyExists) {\n      useSurveyUserProfileAnswer\n        .updateSurveyUserProfileAnswer({\n          SurveyUserProfileAnswerId: alreadyExists.surveyUserProfileAnswerId,\n          SurveyUserProfileId: surveyUserProfileId,\n          SurveyQuestionId: question.surveyQuestionId,\n          SelectedAnswerConfigId: surveyAnswerConfigId,\n          Value: typeof value != \"string\" ? value.toString() : value,\n        })\n        .then(() => {\n          getScaleAsnwers();\n        });\n    } else {\n      useSurveyUserProfileAnswer\n        .createSurveyUserProfileAnswer({\n          SurveyUserProfileId: surveyUserProfileId,\n          SurveyQuestionId: question.surveyQuestionId,\n          SelectedAnswerConfigId: surveyAnswerConfigId,\n          Value: typeof value != \"string\" ? value.toString() : value,\n        })\n        .then(() => {\n          getScaleAsnwers();\n        });\n    }\n  };\n\n  const getAnswers = async (question) => {\n    useSurveyUserProfileAnswer\n      .getSurveysUserProfileAnswersByQuestionId(\n        question.surveyQuestionId,\n        surveyUserProfileId\n      )\n      .then((result) => {\n        if (result) {\n          setAnswersData(result.answers);\n          if (result.selectedAnswerId) {\n            setSelectedAnswerId(result.selectedAnswerId);\n            var ua = {\n              SurveyUserProfileAnswerId: result.surveyUserProfileAnswerId,\n              SurveyUserProfileId: surveyUserProfileId,\n              SurveyQuestionId: question.surveyQuestionId,\n              SelectedAnswerConfigId: result.selectedAnswerId,\n              Value: result.answerValue,\n            };\n            setUserAnswer(ua);\n          } else {\n            var ua = {\n              surveyUserProfileAnswerId: 0,\n              surveyUserProfileId: 0,\n              surveyQuestionId: question.surveyQuestionId,\n              selectedAnswerConfigId: 0,\n              value: \"\",\n            };\n            setUserAnswer(ua);\n\n            if (question.surveyAnswerTypeId == parseInt(SurveyTypes.WARM_MAP)) {\n              setSelectedAnswerId(result.answers[0]?.surveyAnswerConfigId);\n            }\n\n            if (question.surveyAnswerTypeId == parseInt(SurveyTypes.SCALE)) {\n              setSelectedAnswerId(result.answers[1]?.surveyAnswerConfigId);\n            }\n          }\n          if (result.answerValue) {\n            setSelectedValue(result.answerValue);\n            setLastSave(index);\n          }\n        }\n      });\n  };\n\n  const handleTextChange = (event, answer) => {\n    event.persist();\n    setSelectedAnswerId(answer.surveyAnswerConfigId);\n    setSelectedValue(event.target.value);\n  };\n\n  const handleOptionChange = (event, answer) => {\n    event.persist();\n    setSelectedAnswerId(answer.surveyAnswerConfigId);\n  };\n\n  const uploadImageAnswer = (e) => {\n    const validFormats = [\n      \"image/xbm\",\n      \"image/tif\",\n      \"image/jfif\",\n      \"image/ico\",\n      \"image/tiff\",\n      \"image/gif\",\n      \"image/svg\",\n      \"image/jpeg\",\n      \"image/svgz\",\n      \"image/jpg\",\n      \"image/webp\",\n      \"image/png\",\n      \"image/bmp\",\n      \"image/pjp\",\n      \"image/apng\",\n      \"image/pjpeg\",\n      \"image/avif\",\n    ];\n    let isNotValid = false;\n    if (e.target.files.length > 0) {\n      Array.from(e.target.files).forEach((f) => {\n        if (!validFormats.includes(f.type)) {\n          return (isNotValid = true);\n        }\n      });\n\n      if (isNotValid) {\n        return swal({\n          text: \"Sólo puedes subir archivos de tipo imagen\",\n          icon: \"error\",\n        });\n      }\n\n      setImagesToUpload(e.target.files);\n    }\n  };\n\n  const isScaleOptionChecked = (value, id) => {\n    return answersSelected.find(\n      (a) => a.value == value && a.selectedAnswerConfigId == id\n    )\n      ? true\n      : false;\n  };\n\n  const handleSubmit = () => {\n    if (userAnswer.SurveyUserProfileAnswerId ?? null) {\n      var upd = {\n        SurveyUserProfileAnswerId:\n          userAnswer.SurveyUserProfileAnswerId,\n        SurveyUserProfileId: surveyUserProfileId,\n        SurveyQuestionId: userAnswer.SurveyQuestionId,\n        SelectedAnswerConfigId: SelectedAnswerId,\n        Value: SelectedValue,\n      };\n      setUserAnswer(upd);\n      useSurveyUserProfileAnswer\n        .updateSurveyUserProfileAnswer(upd)\n        .then((result) => {\n          if (result != null) {\n            if (result.isSurveyCompleted) {\n              swal({\n                text: \"La encuesta se ha completado\",\n                icon: \"success\",\n              }).then(() => window.location.reload());\n            } else {\n              setUserAnswer(result);\n              nextStep();\n            }\n          } else setQuestionIndexSave(-1);\n        })\n        .catch((error) => setQuestionIndexSave(-1));\n    } else {\n      if (question.surveyAnswerTypeId == parseInt(SurveyTypes.MULTIMEDIA)) {\n        if (\n          imagesToUpload.length <= 0 &&\n          (!userAnswer.Value || userAnswer.Value == \"\")\n        ) {\n          swal({\n            text: \"Debes subir al menos una imagen como respuesta\",\n            icon: \"error\",\n          });\n          return setQuestionIndexSave(-1);\n        }\n\n        if (!userAnswer.Value || userAnswer.Value == \"\") {\n          Array.from(imagesToUpload).forEach((image) => {\n            useSurveyUserProfileAnswer\n              .addSurveyMultimedia(\n                {\n                  SurveyAnswerConfigId: question.surveyQuestionId,\n                  SurveyId: surveyUserProfileId,\n                },\n                image\n              )\n              .then((url) => {\n                useSurveyUserProfileAnswer\n                  .createSurveyUserProfileAnswer({\n                    SurveyUserProfileId: surveyUserProfileId,\n                    SurveyQuestionId: question.surveyQuestionId,\n                    SelectedAnswerConfigId: answerData[0].surveyAnswerConfigId,\n                    Value: url,\n                  })\n                  .then((result) => {\n                    if (result != null) {\n                      if (result.isSurveyCompleted) {\n                        swal({\n                          text: \"La encuesta se ha completado\",\n                          icon: \"success\",\n                        }).then(() => window.location.reload());\n                      } else {\n                        setUserAnswer(result);\n                        nextStep();\n                      }\n                    } else setQuestionIndexSave(-1);\n                  })\n                  .catch((error) => setQuestionIndexSave(-1));\n              });\n          });\n        }\n      }\n\n      var ins = {\n        SurveyUserProfileId: surveyUserProfileId,\n        SurveyQuestionId: question.surveyQuestionId,\n        SelectedAnswerConfigId: SelectedAnswerId,\n        Value: SelectedValue,\n      };\n      setUserAnswer(ins);\n      useSurveyUserProfileAnswer\n        .createSurveyUserProfileAnswer(ins)\n        .then((result) => {\n          if (result != null) {\n            if (result.isSurveyCompleted) {\n              swal({\n                text: \"La encuesta se ha completado\",\n                icon: \"success\",\n              }).then(() => window.location.reload());\n            } else {\n              setUserAnswer(result);\n              nextStep();\n            }\n          } else setQuestionIndexSave(-1);\n        })\n        .catch((error) => setQuestionIndexSave(-1));\n    }\n  };\n\n  const nextStep = () => {\n    var step = 0;\n    var filterData = answerData.filter(\n      (item) => item.surveyAnswerConfigId == SelectedAnswerId\n    );\n    if (filterData.length > 0) {\n      step = filterData[0].stepAnswer;\n    }\n    if (step == 0) {\n      next();\n    } else {\n      getQuestionIndex(step);\n    }\n    return;\n  };\n\n  const AnswerComponent = (props) => {\n    const { answerTypeId } = props;\n    switch (answerTypeId.toString()) {\n      case SurveyTypes.MULTIPLE_OPTION:\n        return (\n          <div className=\"wrapper_label_radio_answ\">\n            {answerData.map((answer, index) => answer.active && (\n              <div className=\"form-check box_label_radio_answ\" key={index}>\n                <input\n                  className=\"form-check-input\"\n                  type=\"radio\"\n                  name={\"Q\" + question.surveyQuestionId}\n                  id={\"Q\" + answer.surveyAnswerConfigId}\n                  value={answer.surveyAnswerConfigId}\n                  checked={SelectedAnswerId === answer.surveyAnswerConfigId}\n                  onChange={(event) => handleOptionChange(event, answer)}\n                />\n                <label\n                  className=\"form-check-label label_radio_answ\"\n                  for={\"Q\" + answer.surveyAnswerConfigId}\n                >\n                  <span>\n                    {\" \"}\n                    {answer.isImage ? (\n                      <img\n                        className=\"opt_img_answer\"\n                        src={answer.answer}\n                        alt=\"Tu opinion en kuimby\"\n                      />\n                    ) : (\n                      answer.answer\n                    )}\n                  </span>\n                </label>\n              </div>\n            ))}\n          </div>\n        );\n      case SurveyTypes.SCALE:\n        return (\n          <div className=\"wrapper__groups table-responsive\">\n            <table className=\"table table-borderless align-middle\">\n              <thead>\n                <tr className=\"table-active\">\n                  <th scope=\"col\"></th>\n                  {scaleAnswers.map((scaleAnswer, index) => (\n                    <th key={index} scope=\"col\">\n                      {scaleAnswer.description}\n                    </th>\n                  ))}\n                </tr>\n              </thead>\n              <tbody>\n                {answerData.map((answer, index) => {\n                  return answer.active && (\n                    <tr key={index}>\n                      <th className=\"text-start table-active\" scope=\"row\">\n                        {answer.answer}\n                      </th>\n                      {scaleAnswers.map((sca, index) => (\n                        <td key={index}>\n                          <div className=\"form-check box__flex__center\">\n                            <input\n                              className=\"form-check-input\"\n                              type=\"radio\"\n                              name={`radio-${index}-${answer.surveyAnswerConfigId}`}\n                              id={`radio-${index}-${answer.surveyAnswerConfigId}`}\n                              value={sca.description}\n                              checked={isScaleOptionChecked(\n                                `${sca.scaleValue}`,\n                                answer.surveyAnswerConfigId\n                              )}\n                              onChange={() =>\n                                onSelectScale(\n                                  answer.surveyAnswerConfigId,\n                                  sca.scaleValue\n                                )\n                              }\n                            />\n                          </div>\n                        </td>\n                      ))}\n                    </tr>\n                  );\n                })}\n              </tbody>\n            </table>\n          </div>\n        );\n      case SurveyTypes.MULTIMEDIA:\n        return imagesToUpload.length == 0 &&\n          (!userAnswer?.Value || userAnswer?.Value == \"\") ? (\n          <div className=\"wrapper_input_file\">\n            <input\n              className=\"form-control\"\n              type=\"file\"\n              id=\"formFileMultiple\"\n              multiple\n              onChange={uploadImageAnswer}\n              accept=\"image/*\"\n            />\n          </div>\n        ) : (\n          <div className=\"wrapper_input_file files_up\">\n            <span>\n              <BsCheckCircle />\n            </span>\n            <p>Respuesta guardada</p>\n          </div>\n        );\n      case SurveyTypes.WARM_MAP:\n        return (\n          <div className=\"wrapper__heat_maps\">\n            <h1>mapas de calor</h1>\n            <iframe\n              src={answerData[1]?.answer}\n              frameborder=\"0\"\n            ></iframe>\n          </div>\n        );\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <>\n      {question.surveyAnswerTypeId.toString() == SurveyTypes.OPEN ? (\n        <FormGroup className=\"form-group\">\n          <input\n            type=\"text\"\n            value={SelectedValue}\n            onChange={(event) => handleTextChange(event, answerData[0])}\n            className=\"form-control\"\n          />\n        </FormGroup>\n      ) : (\n        <AnswerComponent answerTypeId={question.surveyAnswerTypeId} />\n      )}\n    </>\n  );\n}\n","import React, { Component } from \"react\";\nimport $ from \"jquery\";\nimport Slider from \"react-slick\";\nimport { useQuestion } from \"../../services/surveyQuestion.service\";\nimport { AnswersSurvey } from \"./answersSurvey\";\nimport { Button } from \"rsuite\";\nimport { GrClose } from \"react-icons/gr\";\nimport { useSurveyUserProfileAnswer } from \"../../services/surveyUserProfileAnswer.service\";\nexport default class BoxSurveys extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      questions: [],\n      questionIndex: 1,\n      questionCount: 0,\n      questionIndexSave: -1,\n      previousClick: false,\n    };\n    this.lastSave = 0;\n  }\n\n  componentWillMount() {\n    this.getQuestions(this.props.survey);\n    this.setState({ questionCount: this.props.survey.questionCount });\n    \n  }\n  // componentDidMount() {\n  //     $(\".slick-list\").css({'height':'1000px' + \"!important\"});\n  // }\n\n  componentWillReceiveProps(nextProps) {\n    if (this.props !== nextProps) {\n      this.getQuestions(nextProps.survey);\n      this.setState({\n        questionCount: nextProps.survey.questionCount,\n        questionIndex: 1,\n        questionIndexSave: -1,\n      });\n    }\n  }\n\n  getQuestions = async (survey) => {\n    useQuestion.getFrontQuestions(survey).then((result) => {\n      if (result) {\n        this.setState({ questions: result });\n      }\n    });\n  };\n\n  setQuestionIndexSave = (value) => {\n    this.setState({ questionIndexSave: value });\n  };\n\n  setLastSave = (index) => {\n    if (this.lastSave < index) {\n      this.lastSave = index;\n      this.slider.slickGoTo(this.lastSave + 1);\n    }\n  };\n\n  handleQuestionChange = (questionSave) => {\n    this.setQuestionIndexSave(questionSave ? this.state.questionIndex - 1 : -1);\n    if (!questionSave) {\n      this.slider.slickPrev();\n      this.setPreviousClick(true);\n    }\n  };\n\n  next = () => {\n    this.slider.slickNext();\n  };\n\n  getQuestionIndex = (id) => {\n    let index = this.state.questions.findIndex(\n      (x) => x.surveyQuestionId === id\n    );\n    this.slider.slickGoTo(index);\n  };\n\n  previous = (id) => {\n    let index = this.state.questions.findIndex(\n      (x) => x.surveyQuestionId === id\n    );\n    this.slider.slickGoTo(index - 1);\n  };\n\n  setPreviousClick = (value) => {\n    this.setState({ previousClick: value });\n  };\n\n  render() {\n    const {\n      questions,\n      questionIndex,\n      questionCount,\n      questionIndexSave,\n      previousClick,\n    } = this.state;\n\n    const handleKeyDown = (e) => {\n      if (e.keyCode === 9) {\n        e.preventDefault();\n      }\n    };\n\n    const settings = {\n      dots: false,\n      infinite: false,\n      speed: 500,\n      slidesToShow: 1,\n      slidesToScroll: 1,\n      arrows: false,\n      beforeChange: (current, next) =>\n        this.setState({ questionIndex: next + 1 }),\n      swipe: false,\n    };\n\n    return (\n      <div className=\"surveys-section slider-container\">\n        <div className=\"sec__ttl_surveys\">\n          <div className=\"drawer__ttl_info_a\">\n            <span className=\"ico__doc\">\n              <i className=\"icon-doc\"></i>\n            </span>\n            <div className=\"box__ttl_survey\">\n              <h6>{this?.props?.survey?.title}</h6>\n              <span>{this?.props?.survey?.reward} puntos</span>\n            </div>\n          </div>\n\n          <div className=\"drawer__ttl_info_b\">\n            <div\n              className=\"close_surveys\"\n              onClick={() => window.location.reload()}\n            >\n              <GrClose />\n            </div>\n            <div>\n              Pregunta {questionIndex}/{questionCount}\n            </div>\n          </div>\n        </div>\n\n        <div className=\"box_arrows\">\n         \n          <Button\n            className={`arrow lf ${questionIndex != \"1\"  ? \"aa\":\"bb\"}`}\n            onClick={() => this.handleQuestionChange(false)}\n            disabled={questionIndex != \"1\"  ? false:true}\n          >\n            <i className=\"icon-chevron-left\"></i> Anterior\n          </Button>\n          <Button\n             className={`arrow rg ${questionIndex != questionCount ? \"\":\"last\"}`}\n            onClick={() => this.handleQuestionChange(true)}\n          >\n            {questionIndex != questionCount ? \"Siguiente\" : \"Finalizar\"}{\" \"}\n            <i className=\"icon-chevron-right\"></i>\n          </Button>\n        </div>\n\n        <Slider ref={(c) => (this.slider = c)} {...settings}>\n          {questions.map((question, index) => (\n            <div className=\"content__question\" key={question.surveyQuestionId}>\n              <h5 className=\"question\" >{question.question}</h5>\n              <div className=\"answers\" onKeyDown={handleKeyDown}>\n                <AnswersSurvey\n                  index={index}\n                  question={question}\n                  surveyUserProfileId={this.props.survey.surveyUserProfileId}\n                  next={this.next}\n                  setQuestionIndexSave={this.setQuestionIndexSave}\n                  questionIndexSave={questionIndexSave}\n                  setLastSave={this.setLastSave}\n                  getQuestionIndex={this.getQuestionIndex}\n                  previous={this.previous}\n                  setPreviousClick={this.setPreviousClick}\n                  previousClick={previousClick}\n                  questionIndex={questionIndex}\n                />\n              </div>\n            </div>\n          ))}\n        </Slider>\n      </div>\n    );\n  }\n}\n","import React, { useState, useEffect }  from \"react\";\nimport PictureCourse from \"../../assets/imgs/bg-section.jpg\";\nimport './advertisingSection.scss'\nimport { useCompanyHoliday } from \"../../services/companyHoliday.service\";\n\nexport function AdvertisingSection({HolType}) {\n  const [sliderItems, setSliderItems] = useState([]);\n  const [banner, setBanner] = useState([]);\n  const [defaultBanner, setDefaultBanner] = useState(true);\n  const [holyday, setHolyday] = useState({ type: 0, src: \"\" })\n\n  async function getCompanyHolidays() {\n    if(HolType){\n      useCompanyHoliday.getCompanyHolidayFront(HolType).then((result) => {\n          if (result) {\n              let temp = [];\n              result.map((ch) => {\n                  if(holyday.type !== 6){\n                    temp.push({\n                        key: ch.companyHolidayId.toString(),\n                        file: ch.imagePath,\n                        description: ch.description,\n                        isVideo: ch.isVideo,\n                        link: ch.iframe\n                    });\n                    setDefaultBanner(false)\n                  }\n              });\n              setSliderItems(temp);\n              const bannerItem = temp.sort(() => Math.random() - Math.random()).find(() => true);\n              setBanner(bannerItem)\n          }\n      });\n    }\n  }\n\n    useEffect(() => {\n        getCompanyHolidays();\n    }, []);\n\n  return (\n      <div className=\"wrapper_bg_in_section\">\n        {\n          defaultBanner? HolType == 0 &&\n            <img src={PictureCourse} alt=\"name\" />\n          :\n            <a target=\"_blank\" href={ banner.link } className=\"item_advertising\" key={banner.key}>\n              <img src={banner.file} alt={banner.description} />\n            </a>\n        }\n        \n      </div>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport \"./surveys.scss\";\nimport { useSurveyUserProfile } from \"../../services/surveyUserProfile.service\";\nimport { SideAdvertising } from \"../../components/sideAdvertising/sideAdvertising\";\nimport { ListSurveys } from \"./listSurveys\";\nimport BoxSurveys from \"./boxSurveys\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { useSelector } from \"react-redux\";\nimport { AdvertisingSection } from \"../../components/advertisingSection/advertisingSection\";\nimport { Col, Row } from \"reactstrap\";\nimport { Button } from \"rsuite\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { useCompanyHoliday } from \"../../services/companyHoliday.service\";\nimport { BsThreeDots } from \"react-icons/bs\";\nimport $ from \"jquery\";\nimport { FaCheck } from \"react-icons/fa\";\n\nexport function Surveys(props) {\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n  const AsidePurchaseBox = () =>\n    setStateAsideSurvey(activeAsideSurvey === \"\" ? \" is-show\" : \"\");\n\n  const [showTempQuestions, setShowTempQuestions] = useState(\"\");\n  const handleTempQuestions = () => {\n    $(\"body\").addClass(\"hide-over\");\n    setShowTempQuestions(showTempQuestions === \"\" ? \"is_show\" : \"\");\n  };\n\n  const calendarStrings = useSelector((state) => state.calendarStrings);\n  const [selectedSurvey, setSelectedSurvey] = useState();\n  const [surveysData, setSurveysData] = useState({\n    pendingSurveys: [],\n    resolvedSurveys: [],\n  });\n\n  useEffect(() => {\n    getSurveys();\n  }, [props.refresh]);\n\n  const getSurveys = async () => {\n    useSurveyUserProfile.getSurveysUserProfile().then((result) => {\n      if (result) setSurveysData(result);\n    });\n  };\n\n  const resetBoxSurveys = async () => setSelectedSurvey(undefined);\n\n  const handleOnSurveySelected = (survey) => {\n    resetBoxSurveys().then(() => setSelectedSurvey(survey));\n  };\n\n  function getWidthDimensions() {\n    const { innerWidth: width } = window;\n\n    return width;\n  }\n\n  const [windowDimensions, setWindowDimensions] = useState(\n    getWidthDimensions()\n  );\n\n  useEffect(() => {\n    getCompanyHolidays();\n    const handleResize = () => setWindowDimensions(getWidthDimensions());\n    if (windowDimensions >= 992 && activeAsideSurvey !== \"\")\n      setStateAsideSurvey(\"\");\n    window.addEventListener(\"resize\", handleResize);\n    return () => window.removeEventListener(\"resize\", handleResize);\n  }, [windowDimensions]);\n\n  const [sliderItems, setSliderItems] = useState([]);\n\n  async function getCompanyHolidays() {\n    useCompanyHoliday.getCompanyHolidayFront(3).then((result) => {\n      if (result) {\n        const temp = [];\n        result.map((ch) => {\n          temp.push({\n            key: ch.companyHolidayId.toString(),\n            file: ch.imagePath,\n            description: ch.description,\n            isVideo: ch.isVideo,\n            link: ch.iframe,\n          });\n        });\n        setSliderItems(temp);\n      }\n    });\n  }\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <div className=\"row justify-content-center mt-4\">\n        <div className=\"col-sm-8\">\n          <AdvertisingSection HolType={9} />\n        </div>\n      </div>\n      <article className=\"surveys-container\">\n        <div className=\"surveys-container-content\">\n          <Row>\n            <Col sm={12}>\n              <h2 className=\"mt-0 mb-2 opi\">\n                Tu opinión\n                <Button\n                  className=\"btn-ellipsis-open\"\n                  onClick={AsidePurchaseBox}\n                >\n                  <BsThreeDots></BsThreeDots>\n                </Button>\n              </h2>\n\n              <div className=\"border-pointed\">\n                <p>\n                  Esta encuesta es anónima y personal, lee detenidamente cada\n                  ítem, es muy fácil de responder, en la mayoría de las\n                  preguntas se pide que elijas entre varias posibilidades.\n                </p>\n              </div>\n            </Col>\n          </Row>\n          <div className=\" surveys-container-content-body\">\n            <h5 className=\"mb-3 mt-4\">Encuestas disponibles</h5>\n            {surveysData.pendingSurveys.length === 0 ? (\n              <p>Por el momento no tienes encuestas pendientes</p>\n            ) : (\n              <div className=\"surveys-list \">\n                <ListSurveys\n                  surveys={surveysData.pendingSurveys}\n                  onSelectSurvey={handleOnSurveySelected}\n                  handleTempQuestions={handleTempQuestions}\n                />\n              </div>\n            )}\n            <div className={`surveys-card ${showTempQuestions}`}>\n              {selectedSurvey ? <BoxSurveys survey={selectedSurvey} /> : \"\"}\n            </div>\n          </div>\n        </div>\n\n        <aside className={`surveys-container-aside ${activeAsideSurvey}`}>\n          <Button className=\"btn-ellipsis-close\" onClick={AsidePurchaseBox}>\n            <i className=\"icon-close\"></i>\n          </Button>\n          {sliderItems.length === 0 ? \"\" : <SideAdvertising />}\n          <div className=\"surveys-container-aside-prev\">\n            <h6>Últimas encuestas realizadas</h6>\n            {surveysData.resolvedSurveys.length == 0 ? (\n              <p> Por el momento no tienes encuestas realizadas</p>\n            ) : (\n              surveysData.resolvedSurveys.map((survey) => {\n                return (\n                  <div className=\"item\" key={survey.surveyId}>\n                    <span>\n                      <FaCheck />\n                    </span>\n                    <div>\n                      <div className=\"xtl_survey\">{survey.title}</div>\n                      <small>\n                        <Moment calendar={calendarStrings}>\n                          {survey.modifiedDate}\n                        </Moment>\n                      </small>\n                    </div>\n                  </div>\n                );\n              })\n            )}\n          </div>\n        </aside>\n      </article>\n      <FooterHome />\n    </section>\n  );\n}\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\n\nexport const useAcknowledgment = {\n    createAcknowledgment,\n    updateAcknowledgment,\n    getAcknowledgments,\n    getAcknowledgment,\n    getAcknowledgmentsType,\n    getAcknowledgmentUserProfile,\n    createAcknowledgmentUserProfile,\n    getUserProfileDestinataries,\n    getAcknowledgmentUserProfileTop1,\n    getUserProfileTop10,\n    getAcknowledgmentUserModule\n};\n\nasync function getAcknowledgments() {\n    return callApi('/backoffice/AcknowledgmentType', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function getAcknowledgment(id) {\n    return callApi('/backoffice/AcknowledgmentType/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function createAcknowledgment(params) {\n    return callApi('/backoffice/AcknowledgmentType', 'POST', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Creación exitosa\", icon: \"success\" });\n            return result.data\n        }\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function updateAcknowledgment(params) {\n    return callApi('/backoffice/AcknowledgmentType', 'PUT', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Actualizado correctamente\", icon: \"success\" });\n            return result.data\n        }\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function getAcknowledgmentsType() {\n    return callApi('/backend/AcknowledgmentType', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function getAcknowledgmentUserProfile() {\n    return callApi('/backend/AcknowledgmentUserProfile', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return []\n        }\n    });\n}\n\nasync function getAcknowledgmentUserModule() {\n    return callApi('/backend/GetAcknowledgmentUserProfileModule', 'GET').then((result) => {\n        if (result.responseCode === '00')\n        {\n            return result.data\n        }\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function createAcknowledgmentUserProfile(params) {\n    return callApi('/backend/AcknowledgmentUserProfile', 'POST', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Se ha generado el reconocimiento\", icon: \"success\" });\n        }\n        if (result.responseCode === '99') {\n            swal({ text: \"No se pudo realizar el reconocimiento\", icon: \"error\" })\n        }\n        if (result.responseCode === '03') {\n            swal({ text: \"No es posible realizar un Reconocimiento a sí mismo\", icon: \"error\" })\n        }\n        return result.data\n    });\n}\n\nasync function getUserProfileDestinataries() {\n    return callApi('/backend/AcknowledgmentUserProfile/destinataries', 'GET').then((result) => {\n\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}\n\nasync function getAcknowledgmentUserProfileTop1() {\n    return callApi('/backend/AcknowledgmentUserProfile/top1', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return []\n        }\n    });\n}\n\nasync function getUserProfileTop10(id) {\n    return callApi('/backend/AcknowledgmentUserProfile/top10/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data\n        else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null\n        }\n    });\n}","import React from 'react'\n\nexport default function AcknowledgementModal(props) {\n\n  return (\n    <div className=\"modal my_modal\" tabindex=\"-1\" role=\"dialog\" style={{ display: \"block\" }}>\n      <div className=\"modal-dialog modal-dialog-centered\" role=\"document\">\n        <div className=\"modal-content\">\n          <div className=\"modal-header\">\n            <h4 className=\"modal-title text fnt_medium\" id=\"exampleModalLongTitle\">{props.isActive.title}</h4>\n            <button type=\"button\" className=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" onClick={() => props.setShow(false)}>\n              <span aria-hidden=\"true\">&times;</span>\n            </button>\n          </div>\n          <div className=\"modal-body\">\n            {props.top10.map((user, index) =>\n              <div className=\"item_acknowledgment\" key={index}>\n                <div className=\"box_avatar_user\">\n                  <div className=\"avatar\">\n                    <img src={user.urlProfileImage} />\n                  </div>\n                </div>\n                <div className=\"ml-2\">\n                        <h6 className=\"mb-0\">{user.middleName} {user.lastName} {user.firstName}</h6>\n                  <p className=\"mb-0 text-muted\">\n                    <small>{user.count} Reconocimientos</small>\n                  </p>\n                </div>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}","import { useEffect, useState } from 'react';\n\nconst useInputForm = (callback,initialValues) => {\n    const [inputs, setInputs] = useState(initialValues);\n\n    const handleSubmit = (event) => {\n        if (event)\n            event.preventDefault();\n        callback(event);\n    }\n    useEffect(() => {\n        setInputs(initialValues);\n    }, [initialValues]);\n    const handleInputChange = (event) => {\n        event.persist();       \n        setInputs(inputs => ({ ...inputs, [event.target.name]: event.target.type === 'checkbox' ? event.target.checked : event.target.value }));\n    }\n    const handleInputFileChange = (event) => {\n        event.persist();\n        setInputs(inputs => ({ ...inputs, [event.target.name]: event.target.files.length > 0? event.target.files[0]: null }));\n    }\n\n    return {\n        handleSubmit,\n        handleInputChange,\n        handleInputFileChange,\n        inputs,\n        setInputs\n    };\n}\nexport default useInputForm;\n\n","import React from 'react';\nimport { helperService } from '../../services/helper.service';\n\nexport function SelectCustom(props) {\n    const [items, setItems] = React.useState([]);\n    React.useEffect(() => {\n        getCatalog();\n    }, [props.method]);\n\n    async function getCatalog() {\n        helperService.getGenericCatalog(\"/\" + (props.controller ?? \"backoffice\") + \"/\" + props.method)\n            .then((result) => {\n                if (result) {\n                    setItems(result);\n                }\n                else\n                    setItems([]);\n            });\n    }\n\n    return (\n        <select name={props.selectName} onChange={props.handleOnChange}\n            selectvalue={props.selectValue} value={props.selectValue}\n            required={props.required}\n            disabled={props.disabled}\n        >\n            <option value=\"\">{props.defaultOption ?? \"Selecciona una opción\"}</option>\n            {items.map(item => (\n                <option key={item[props.valueField]} value={item[props.valueField]}>\n                    {item[props.textField]}\n                </option>\n            ))}\n            {props.extraOption ? <option value={props.extraOption.valueField}>{props.extraOption.textField}</option> : null}\n        </select>\n    );\n}\n","import React, { Fragment, useEffect, useState } from 'react'\nimport useInputForm from '../../components/CustonHooks/FormHook'\nimport { SelectCustom } from '../../components/Helpers/SelectCustom'\nimport { useAcknowledgment } from '../../services/acknowledgment.service'\n\nexport default function FormAcknowledgement(props) {\n  const [acknowledgement] = useState({ acknowledgmentTypeId: '', userProfileTo: '', text: '' })\n  const [destinataries, setDestinataries] = useState([])\n\n  const onSave = () => {\n    inputs.acknowledgmentTypeId = parseInt(inputs.acknowledgmentTypeId);\n    let userProfileTo = destinataries.find(\n        destinatary => (\n            //destinatary.nickname !== null && destinatary.nickname != '' ? destinatary.nickname : \n            destinatary.middleName + \" \" + destinatary.lastName + \" \" + destinatary.firstName\n            ) === inputs.userProfileTo);\n\n    if (userProfileTo) {\n      inputs.userProfileTo = userProfileTo.userProfileId;\n      useAcknowledgment.createAcknowledgmentUserProfile(inputs)\n        .then(() => {\n          props.updateRanking()\n          cleanForm()\n        })\n    }\n    else {\n      alert(\"Colaborador invalido\");\n    }\n  }\n\n  useEffect(() => {\n    useAcknowledgment.getUserProfileDestinataries()\n      .then((data) => {\n        setDestinataries(data)\n      })\n  }, [])\n\n\n  const cleanForm = () => setInputs({ acknowledgmentTypeId: '', userProfileTo: '', text: '' })\n  const { handleSubmit, handleInputChange, inputs, setInputs } = useInputForm(onSave, acknowledgement)\n\n  return (\n    <Fragment>\n      <form onSubmit={handleSubmit} id=\"recognition_form\">\n        <fieldset className='card shadows'>\n          <h4  className=\"text fnt_medium\">Reconoce al mejor</h4>\n        \n        <div className=\"form-group \">\n          <label for=\"acknowledgmentTypeId\" className=\" col-form-label\">Categoria</label>\n          \n            <SelectCustom\n              method=\"AcknowledgmentType\"\n              controller=\"backend\"\n              textField=\"title\"\n              valueField=\"acknowledgmentTypeId\"\n              selectName=\"acknowledgmentTypeId\"\n              handleOnChange={handleInputChange}\n              required={true}\n              selectValue={inputs.acknowledgmentTypeId}\n            />\n        </div>\n        <div className=\"form-group \">\n          <label for=\"userProfileTo\" className=\" col-form-label\">Colaborador</label>\n            <input\n              list=\"users\"\n              type=\"text\"\n              name=\"userProfileTo\"\n              className=\"form-control\"\n              onChange={handleInputChange}\n              value={inputs.userProfileTo}\n              placeholder='Seleccione una opción'\n              required\n            />\n            <datalist id=\"users\">\n              {destinataries.map((to, index) =>\n                <option key={index} value={\n                  //(to.nickname === null || to.nickname === '') ? \n                  to.middleName + ' ' + to.lastName + ' ' + to.firstName \n                  //: to.nickname\n                } />\n              )}\n            </datalist>\n        </div>\n        <div className=\"form-group \">\n          <label for=\"text\" className=\" col-form-label\">Mensaje</label>\n            <textarea\n              name=\"text\"\n              onChange={handleInputChange}\n              value={inputs.text}\n              className=\"form-control textarea\"\n              required\n            />\n        </div>\n        <div className=\" text-right\">\n          <button className=\"btn secundary minimum\" onClick={cleanForm}>Limpiar</button>\n          <button type='submit' className=\"btn primary minimum ml-2\" form=\"recognition_form\">Enviar</button>\n        </div>\n        </fieldset>\n\n      </form>\n    </Fragment>\n  )\n}\n","import React, { Fragment } from 'react';\n\nexport default function AcknowledgementRanking(props) {\n  return (\n    <div className=\"box_ranking\">\n      <h5 className=\"text fnt_medium\">Ranking</h5>\n      <div className=\"card shadows\">\n        {props.top10.length > 0 &&\n          <div className=\"item_ranking\">\n            <h5 className=\"text fnt_medium\">{props.isActive.title}</h5>\n            <div className=\"content_item_ranking\">\n              <div className=\"box_avatar_user\">\n                <span className=\"avatar\">\n                  <img src={props.top10[0].urlProfileImage} alt=\"NameUser\" />\n                </span>\n              </div>\n              <div className=\"ml-2\">\n                <h6 className=\"mb-0\">{props.top10[0].middleName} {props.top10[0].lastName} {props.top10[0].firstName}</h6>\n                <p className=\"mb-0\"><small>{props.top10[0].count} Reconocimientos</small></p>\n              </div>\n            </div>\n\n            <div className=\"text-right\">\n              <span className=\"btn_links\" onClick={() => props.setShowAcknowledgementModal(true)}>Ver todos</span>\n            </div>\n          </div>\n        }\n      </div>\n    </div>\n  )\n}","import React, { Fragment, useEffect, useState } from 'react';\nimport { useAcknowledgment } from '../../services/acknowledgment.service'\nimport Moment from 'react-moment'\n\nexport default function TextBoard(props) {\n  const [acknowledgements, setAcknowledgements] = useState([]);\n\n  useEffect(() => {\n    useAcknowledgment.getAcknowledgmentsType()\n      .then((data) => setAcknowledgements(data))\n  }, [])\n\n  return (\n    <div className=\"col-sm-5 col-lg-4 mb-4\">\n      <div className=\"shadows content_text_board\">\n        <div>\n          <p className=\"mb-4 pt-1 pl-2 pr-2 line_height\"><small>Siempre es bueno reconocer las cualidades especiales de las personas, cualidades que los caracterizan y que suman al equipo.</small></p>\n          <h5 className=\"text fnt_medium mb-2 pl-2 pr-2\">Categorías disponibles</h5>\n          {acknowledgements.map((acknowledgement, index) =>\n            <Fragment key={index}>\n              <div className=\"item_cat_board\" onClick={() => props.setIsActive(acknowledgement)}>\n                <div\n                  onClick={props.MyFunBoard}\n                >\n                  <h5 className=\"mb-0 text fnt_medium\">&#8226; {acknowledgement.title}</h5>\n                  <p className=\"mb-0 line_height\"><small>{acknowledgement.descritption}</small></p>\n                  <p className=\"mb-0\"><small>Vence el <Moment locale=\"es\" format=\"DD [de] MMMM  YYYY\">{acknowledgement.validTo}</Moment></small></p>\n                </div>\n              </div>\n            </Fragment>\n          )}\n        </div>\n      </div>\n    </div>\n  )\n}","import React, { useState, useEffect } from \"react\";\nimport \"./board.scss\";\nimport { backendService } from \"../../services/backend.service\";\nimport { useAcknowledgment } from \"../../services/acknowledgment.service\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport AcknowledgementModal from \"./acknowledgementModal\";\nimport FormAcknowledgement from \"./formAcknowledgement\";\nimport AcknowledgementRanking from \"./acknowledgementRanking\";\nimport TextBoard from \"./boardText\";\n\nexport function Board(props) {\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n  const [profile, setProfileInfo] = useState();\n  const [showAcknowledgementModal, setShowAcknowledgementModal] = useState(\n    false\n  );\n  const [isActive, setIsActive] = useState();\n  const [top10, setTop10] = useState([]);\n  const [acknowledgmentUserProfile, setAcknowledgmentUserProfile] = useState(\n    []\n  );\n\n  useEffect(() => {\n    getUserProfile();\n    // debugger\n    useAcknowledgment\n      .getAcknowledgmentUserModule()\n      .then((data) => setAcknowledgmentUserProfile(data));\n  }, [props.refresh]);\n\n  useEffect(() => {\n    getRanking();\n  }, [isActive]);\n\n  const getRanking = () => {\n    if (isActive)\n      useAcknowledgment\n        .getUserProfileTop10(isActive.acknowledgmentTypeId)\n        .then((data) => setTop10(data));\n  };\n\n  const getUserProfile = () => {\n    backendService.userProfile().then((data) => {\n      // debugger\n      setProfileInfo(data);\n    });\n  };\n\n  const AsidePurchaseBox = () => {\n    setStateAsideSurvey(activeAsideSurvey === \"\" ? \" is-show\" : \"\");\n  };\n\n  const [isActiveBoard, setActiveBoard] = useState(\"\");\n  const MyFunBoard = () => {\n    setActiveBoard(isActiveBoard === \"\" ? \"is-show\" : \"\");\n  };\n\n  const [activeForm, setActiveForm] = useState(\"\");\n  const MyFormBoard = () => {\n    setActiveForm(activeForm === \"\" ? \"is-show\" : \"\");\n  };\n\n  return (\n    <section className=\"wrapper_surveys wrapper_board padd\">\n      <div className=\"content_surveys \">\n        <div className=\"row align-items-center mb-4\">\n          <div className=\"col\">\n            <h2 className=\"mb-0 text fnt_medium \">Reconocimiento</h2>\n          </div>\n          <div className=\"col text-muted box_more_survey\">\n            <span className=\"d-none d-sm-block\">\n              <Moment locale=\"es\" format=\"DD [de] MMMM  YYYY\">\n                {Date()}\n              </Moment>\n            </span>\n            <span className=\"btn_ellipsis\" onClick={AsidePurchaseBox}>\n              <i className=\"fas fa-ellipsis-v\"></i>\n            </span>\n          </div>\n        </div>\n        <div className=\"row\">\n          <TextBoard setIsActive={setIsActive} MyFunBoard={MyFunBoard} />\n          <div\n            className={`col-sm-7 col-lg-8 mb-4 box_content_board ${isActiveBoard}`}\n          >\n            <div className=\"mb-3 back_ico\">\n              <span onClick={MyFunBoard}>\n                <i className=\"fas fa-chevron-left\"></i> Atrás\n              </span>\n            </div>\n\n            <div className=\"box_ranking_new\">\n              <span className=\"link_ranking_new cursor\" onClick={MyFormBoard}>\n                <i className=\"fas fa-plus\"></i> Agregar reconocimiento\n              </span>\n            </div>\n\n            {isActive && (\n              <AcknowledgementRanking\n                setShowAcknowledgementModal={setShowAcknowledgementModal}\n                isActive={isActive}\n                top10={top10}\n              />\n            )}\n            {!isActive && (\n              <div className=\"box_ranking\">\n                <h5 className=\"text fnt_medium\">Ranking</h5>\n                <div className=\"card shadows\">\n                  <h6 className=\"text-muted text-center mt-2\">\n                    <i className=\"fas fa-long-arrow-alt-left\"></i> Selecciona\n                    una categoría\n                  </h6>\n                </div>\n              </div>\n            )}\n\n            {showAcknowledgementModal && (\n              <AcknowledgementModal\n                setShow={setShowAcknowledgementModal}\n                isActive={isActive}\n                top10={top10}\n              />\n            )}\n\n            <div className={`box_recognition ${activeForm}`}>\n              <FormAcknowledgement updateRanking={getRanking} />\n            </div>\n          </div>\n        </div>\n      </div>\n      <aside className={`aside_lateral trans ${activeAsideSurvey}`}>\n        <span className=\"btn_ellipsis_close\" onClick={AsidePurchaseBox}>\n          <i className=\"far fa-window-close\"></i>\n        </span>\n        <div className=\"text-center\">\n          <h3 className=\"text fnt_medium mb-1\">Recompensas</h3>\n          {\n            <h5 className=\"text-muted\">\n              {profile && profile.middleName} {profile && profile.lastName}{\" \"}\n              {profile && profile.firstName}\n            </h5>\n          }\n          {/* <h5 className=\"text-muted\">{profile && profile.firstName} {profile && profile.middleName} {profile && profile.lastName}</h5> */}\n          <div className=\"box_avatar_user\">\n            <span className=\"avatar\">\n              <img src={profile && profile.urlProfileImage} alt=\"NameUser\" />\n            </span>\n          </div>\n\n          <div>\n            <h3 className=\"text fnt_medium c_green\">120 puntos</h3>\n          </div>\n        </div>\n        {acknowledgmentUserProfile.length > 0 && (\n          <div className=\"prev_surveys\">\n            <h6 className=\"text fnt_medium text-center text-muted\">\n              Mis reconocimientos\n            </h6>\n            <div className=\"box_item_surv\">\n              {acknowledgmentUserProfile.map((acknowledgment, index) => (\n                <div key={index} className=\"item_prev_surveys\">\n                  {acknowledgment.logo ? (\n                    <img src={acknowledgment.logo} width=\"25\" height=\"25\" />\n                  ) : (\n                    <span>\n                      <i className=\"fas fa-star\"></i>\n                    </span>\n                  )}\n                  <div className=\"pl-1\">\n                    <h6 className=\"mb-0 text fnt_medium\">\n                      {acknowledgment.title}\n                    </h6>\n                    <p>\n                      <small className=\"text-muted\">\n                        {acknowledgment.count} reconocimientos\n                      </small>\n                    </p>\n                  </div>\n                </div>\n              ))}\n            </div>\n          </div>\n        )}\n      </aside>\n    </section>\n  );\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./hubItemProvider.scss\";\nimport { ecommerceService } from \"../../services/ecommerce.service\";\nimport {BsChevronLeft} from \"react-icons/bs\";\n\nexport class HubItemProvider extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      providersOptions: [],\n    };\n  }\n\n  componentWillMount() {\n    ecommerceService.getProviders().then((result) => {\n      this.setState({ providersOptions: result });\n    });\n  }\n\n  render() {\n    const { providersOptions } = this.state;\n    return (\n        <>\n          {providersOptions.map((providersOption) => {\n            return (\n                <>\n                  <Link to={\"/provider/\" + providersOption.id} className=\"discount-card\">\n                    <img src={providersOption.providerLogo} alt=\"\" />\n                  </Link>        \n                </>\n            );\n          })}\n        </>\n    );\n  }\n}\n","import React from 'react';\nimport './itemPurchaseDetails.scss'\nimport { useSelector } from 'react-redux';\nimport {Button} from \"rsuite\";\n\nconst ItemPurchaseDetails = (props) => {\n    const countrySetting = useSelector(state => state.countrySetting);\n\n    return (\n        <div className=\"box_item_purchase_details trans\">\n            <div >\n                <Button className=\"btn_delete_item\" onClick={() => props.deleteItemDetail(props.ProviderId, props.ProductId)} ><i className=\"icon-trash\"></i></Button>\n            </div>\n            <div className=\"w-100 item_details\">\n                <p>{props.Name}</p>\n                <p className=\"price_unit\">Precio individual {countrySetting.currency + (props.Price).toLocaleString(countrySetting.cultureCode, { minimumFractionDigits: 0, maximumFractionDigits: 2 })}</p>\n            </div>\n            <div className=\"box_catidad\">\n                <select className=\"custom-select custom-select-sm\" onChange={(e) => props.onChangeQuantity(props.ProviderId, props.ProductId, e.target.value)} value={props.Quantity}>\n                    <option value=\"1\">1</option>\n                    <option value=\"2\">2</option>\n                    <option value=\"3\">3</option>\n                    <option value=\"4\">4</option>\n                    <option value=\"5\">5</option>\n                    <option value=\"6\">6</option>\n                    <option value=\"7\">7</option>\n                    <option value=\"8\">8</option>\n                    <option value=\"9\">9</option>\n                    <option value=\"10\">10</option>\n                </select>\n            </div>\n            <div className=\"box_item_total\">{countrySetting.currency}{(props.Total).toLocaleString(countrySetting.cultureCode, { minimumFractionDigits: 0, maximumFractionDigits: 2 })}</div>\n        </div>\n    )\n}\n\nexport default ItemPurchaseDetails\n","import React, { useState } from \"react\";\nimport ItemPurchaseDetails from \"../itemPurchaseDetails/itemPurchaseDetails\";\nimport \"./itemPurchase.scss\";\nimport { useSelector } from \"react-redux\";\n\nconst ItemPurchase = (props) => {\n  const countrySetting = useSelector((state) => state.countrySetting);\n\n  const [activeAccordion, setStateAccordion] = useState(\"\");\n  const [activeChevron, setStateChevron] = useState(\"\");\n\n  function AsidePurchaseBox() {\n    setStateAccordion(activeAccordion === \"\" ? \"show\" : \"\");\n    setStateChevron(activeChevron === \"\" ? \"open\" : \"\");\n  }\n\n  const items = props.Items;\n  return (\n    <div className=\"accordion item_purchase\" id=\"accordionExample\">\n      <span\n        className=\"btn_delete_group trans\"\n        onClick={() => props.deleteItem(props.ProviderId, props.ProviderName)}\n      >\n        <i className=\"icon-trash\"></i> <span>Eliminar</span>\n      </span>\n      <div className=\"card\">\n        <div className=\"card-header\" id=\"headingOne\">\n          <div className=\"box_logo_shop\">\n            <span className=\"bg_logo_shop\">\n              <img src={props.Logo} alt=\"Nombre tienda\" />\n            </span>\n          </div>\n          <div className=\"w-100\">\n            <h5 className=\"text fnt_medium m-0\">{props.ProviderName}</h5>\n            <p className=\"to_shop\">\n              <a\n                href={`/${\n                  !props.isCaringCommunity ? \"provider\" : \"caring-community\"\n                }/${props.ProviderId}`}\n              >\n                Ir a la {!props.isCaringCommunity ? \"tienda\" : \"fundación\"}{\" \"}\n                <i className=\"fas fa-chevron-right trans\"></i>\n              </a>\n            </p>\n          </div>\n          <div className=\"lastdata\">\n            <h5 className=\"text fnt_medium\">\n              {countrySetting.currency}\n              {props.Total.toLocaleString(countrySetting.cultureCode, {\n                minimumFractionDigits: 0,\n                maximumFractionDigits: 2,\n              })}\n            </h5>\n            <span\n              className={`ico_chevron ${activeChevron}`}\n              onClick={AsidePurchaseBox}\n            >\n              <i className=\"fas fa-chevron-down\"></i>\n            </span>\n          </div>\n        </div>\n        <div\n          id=\"collapseOne\"\n          className={`collapse ${activeAccordion}`}\n          aria-labelledby=\"headingOne\"\n          data-parent=\"#accordionExample\"\n        >\n          <div className=\"card-body\">\n            {items.map((itemDetail) => {\n              return (\n                <ItemPurchaseDetails\n                  {...itemDetail}\n                  deleteItemDetail={props.deleteItemDetail}\n                  onChangeQuantity={props.onChangeQuantity}\n                />\n              );\n            })}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default ItemPurchase;\n","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n// import { useDispatch } from 'react-redux';\nimport swal from \"sweetalert\";\nimport { ecommerceService } from \"../../../services/ecommerce.service\";\nimport { cartHook } from \"../../../hooks/cart.hook\";\n\nconst ItemPayMethod = ({ onCloseClick, method }) => {\n  // const dispatch = useDispatch();\n  //const history = useHistory();\n  const [onlyOneClick, setOnlyOneClick] = useState(false);\n\n  const payOrder = () => {\n    if (!onlyOneClick) {\n      setOnlyOneClick(true);\n\n      const model = {\n        Products: cartHook.getItems(),\n        PaymentMethodId: method.paymentMethodId,\n      };\n\n      if (model.Products.length > 0) {\n        //dispatch(toggleBlocking());\n        ecommerceService.payOrder(model).then(function (result) {\n          if (result !== undefined) {\n            setOnlyOneClick(false);\n            //dispatch(toggleBlocking());\n            if (onCloseClick !== undefined) onCloseClick();\n            window.location.href = result;\n          } else {\n            setOnlyOneClick(false);\n            //dispatch(toggleBlocking());\n            swal({\n              text: \"Ocurrió un error al abrir método de pago\",\n              icon: \"error\",\n            });\n          }\n        });\n      } else {\n        swal({\n          text: \"No hay ningún producto en el carrito de compras\",\n          icon: \"error\",\n        });\n        setOnlyOneClick(false);\n      }\n    }\n  };\n\n  return (\n    <button className=\"item_paymethod trans\" onClick={payOrder}>\n      <img src={method.urlLogo} alt=\"Paga con Red Pay\" />\n    </button>\n  );\n};\n\nexport default ItemPayMethod;\n","import React, { useState, useEffect } from 'react';\nimport ItemPayMethod from './itemPayMethod/itemPayMethod'\nimport './boxPayMethod.scss'\nimport { ecommerceService } from \"../../services/ecommerce.service\";\n\nconst BoxPayMethod = ({ onCloseClick }) => {\n    const [ paymentMethods, setPaymentMethods ] = useState([]);\n\n    useEffect(() => {\n        ecommerceService.getPaymentMethods()\n            .then((result => {\n                setPaymentMethods(result);\n            }));\n    },[]);\n\n    return (\n        <div className=\"box_paymethod\">\n            {\n                paymentMethods.map(method => {\n                    return <ItemPayMethod onCloseClick={onCloseClick} method={method} />\n                })\n            }\n        </div>\n    )\n}\n\nexport default BoxPayMethod","import React from \"react\";\nimport ItemPurchase from \"../itemPurchase/itemPurchase\";\nimport BoxPayMethod from \"../boxPayMethod/boxPayMethod\";\nimport \"./asidePurchase.scss\";\nimport LogRedPay from \"../../assets/imgs/red-pay-logo.png\";\nimport { useSelector } from \"react-redux\";\nimport { cartHook } from \"../../hooks/cart.hook\";\nimport swal from \"sweetalert\";\nimport {Button} from \"rsuite\";\n\nconst AsidePurchase = ({\n  activeAside,\n  onCloseClick,\n  cart,\n  total,\n  setCart,\n  setTotal,\n  isCaringCommunity,\n}) => {\n  const countrySetting = useSelector((state) => state.countrySetting);\n\n  const onChangeQuantity = (providerId, productId, value) => {\n    cartHook\n      .onChangeQuantity(providerId, productId, parseInt(value))\n      .then((cpride) => {\n        setTotal(cpride.total);\n        setCart(cpride.cart);\n      });\n  };\n\n  const deleteItem = (providerId, providerName) => {\n    swal({\n      title: \"¿Estas seguro?\",\n      text:\n        \"¡Desea eliminar los productos de \" +\n        providerName +\n        \" del carrito de compras!\",\n      icon: \"warning\",\n      dangerMode: true,\n      buttons: [\"Cancelar\", \"Si, eliminar\"],\n    }).then((willDelete) => {\n      if (willDelete) {\n        cartHook.deleteItem(providerId).then((cpride) => {\n          setTotal(cpride.total);\n          setCart(cpride.cart);\n        });\n      }\n    });\n  };\n\n  const deleteItemDetail = (providerId, productId) => {\n    swal({\n      title: \"¿Estas seguro?\",\n      text: \"¡Desea eliminar este productos del carrito de compras!\",\n      icon: \"warning\",\n      buttons: [\"Cancelar\", \"Si, eliminar\"],\n      dangerMode: true,\n    }).then((willDelete) => {\n      if (willDelete) {\n        cartHook.deleteItemDetail(providerId, productId).then((cpride) => {\n          setTotal(cpride.total);\n          setCart(cpride.cart);\n        });\n      }\n    });\n  };\n\n  return (\n    <>\n      <aside className={`wrapper_aside_purchase trans ${activeAside}`}>\n        <div className=\"box_content_aside\">\n          <div className=\"titulares box_flex \">\n            <h5>\n              <i className=\"fas fa-shopping-cart\"></i> Tu carrito de{\" \"}{!isCaringCommunity ? \"compras\" : \"donativos\"}\n            </h5>\n            <Button onClick={onCloseClick} className=\"btn_brd\">\n              <i className=\"icon-close\"></i>\n            </Button>\n          </div>\n          <div className=\"content_items\">\n            {cart.map((item) => {\n              return (\n                <ItemPurchase\n                  {...item}\n                  deleteItem={deleteItem}\n                  deleteItemDetail={deleteItemDetail}\n                  onChangeQuantity={onChangeQuantity}\n                  isCaringCommunity={isCaringCommunity}\n                />\n              );\n            })}\n          </div>\n          <div className=\"box_footer_aside ttls_sections\">\n            <div className=\"box_total_neto\">\n              <div>\n                <h5>\n                  {!isCaringCommunity ? \"¡FELICIDADES!\" : \"¡GRACIAS!\"}\n                </h5>\n                <p className=\"label\">\n                  {!isCaringCommunity\n                    ? \"Estás a punto de vivir una experiencia increíble.\"\n                    : \"Estás a punto de lograr una comunidad más solidaria.\"}\n                </p>\n              </div>\n              <div className=\"box_w\">\n                <h4>\n                  Total: {countrySetting.currency}\n                  {total.toString().toLocaleString(countrySetting.cultureCode, {\n                    minimumFractionDigits: 0,\n                    maximumFractionDigits: 2,\n                  })}\n                </h4>\n              </div>\n            </div>\n            <div className=\"wrapper_paymethod\">\n              <h6 className=\"ttls_sections\">\n                <span>Elige tu método de pago</span>\n              </h6>\n              <BoxPayMethod onCloseClick={onCloseClick} />\n              <div className=\"box_powered_by\">\n                <small className=\"font-italic fw500\">Powered by</small>\n                <a target=\"_blank\" href=\"https://redpay.mx\" rel=\"noopener noreferrer\">\n                  <img src={LogRedPay} alt=\"RedPay\" />\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </aside>\n      <div className=\"bg_pleca trans\" onClick={onCloseClick}></div>\n    </>\n  );\n};\n\nexport default AsidePurchase;\n","import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\n\nimport AsidePurchase from \"../../components/asidePurchase/asidePurchase\";\nimport { cartHook } from \"../../hooks/cart.hook\";\nimport \"./toolDiscount.scss\";\n\nexport function ToolDiscount({ isCaringCommunity }) {\n  const cartQuantity = useSelector((state) => state.cartQuantity);\n  const [activeAside, setStateAside] = useState(\"\");\n  const [cart, setCart] = useState([]);\n  const [total, setTotal] = useState(0);\n\n  useEffect(() => {\n    cartHook.assembleCart(isCaringCommunity);\n  }, []);\n\n  const AsidePurchaseBox = () => {\n    setStateAside(activeAside === \"\" ? \" is-show\" : \"\");\n\n    if (activeAside === \"\") {\n      const cpride = cartHook.getCart();\n      setTotal(cpride.total);\n      setCart(cpride.cart);\n    }\n  };\n\n  return (\n    <>\n      <ul className=\"discount-btns\">\n       <li>\n         <Link className=\"btn-square green\" to={isCaringCommunity ? \"/caring-community\" : \"/discount\"}>\n           <span><i className=\"icon-store\"></i></span>\n           <p>{isCaringCommunity ? \"Fundaciones\" : \"Tiendas\"}</p>\n         </Link>\n       </li>\n        <li>\n          {!isCaringCommunity && (\n              <Link className=\"btn-square green\" to=\"/shopping-history\">\n                  <span><i className=\"icon-docs-postuleds\"></i></span>\n                <p>Mis compras</p>\n              </Link>\n          )}\n        </li>\n        <li>\n          <Link to=\"#\" className=\"btn-square green\" onClick={AsidePurchaseBox}>\n            <span><i className=\"icon-cart\"></i></span>\n            <p>Carrito ({cartQuantity})</p>\n          </Link>\n        </li>\n      </ul>\n      <AsidePurchase\n        activeAside={activeAside}\n        onCloseClick={() => setStateAside(\"\")}\n        cart={cart}\n        total={total}\n        setCart={setCart}\n        setTotal={setTotal}\n        isCaringCommunity={isCaringCommunity}\n      />\n    </>\n  );\n}\n","import React from \"react\";\nimport { HubItemProvider } from \"../../components/hubItemProvider/hubItemProvider\";\nimport { ToolDiscount } from \"../../components/toolDiscount/toolDiscount\";\nimport \"./discount.scss\";\nimport { Col, Row } from \"reactstrap\";\nimport bannerBeneficios from \"../../assets/imgs/banner-beneficios.jpeg\";\n\nimport { FooterHome } from \"../../components/footer/footerHome\";\nexport function Discount() {\n  return (\n    <section className=\"dashboard-container-page\">\n      <Row>\n        <Col sm={12}>\n          <h2>Beneficios Pride</h2>\n        </Col>\n        <Col sm={12}>\n          <div className=\"drawer__bg__sections\">\n            <img\n              src={bannerBeneficios}\n              alt=\"Ser parte de la comunidad PrideMx te da estos beneficios\"\n            />\n          </div>\n          {/* <div className=\"discount-header\">\n                        <div className=\"discount-header-info\">\n                            <h4 className=\"ttls fw600\">Ser parte de la comunidad PrideMx te da estos beneficios</h4>\n                            <p>Encuentra tus marcas favoritas y sorpréndete </p>\n                        </div>\n                        <div className=\"discount-header-thumbnail\">\n                            <img src={img} alt=\"\" />\n                        </div>\n                    </div> */}\n        </Col>\n        <Col sm={12}>\n          <ToolDiscount />\n        </Col>\n        <Col sm={12}>\n          <div className=\"discount-cards\">\n            <HubItemProvider />\n          </div>\n        </Col>\n        <Col sm={12}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import { callApi, callApiFileStorage } from \"./service\";\nimport swal from \"sweetalert\";\n\nexport const directoryInfoService = {\n  getById,\n  getAllByCompany,\n  insertDirectory,\n  getMyDirectory,\n  updateDirectory,\n  deleteDirectory,\n  approveDirectory,\n  rejectDirectory,\n  setDirectoryScore,\n  setDirectoryView,\n  approveDirectoryGrace,\n  getSettingsUser,\n  updateDirectoryReward,\n  getDirectoryLatest\n};\n\nasync function getById(id) {\n  return callApi(\n    `/BackEnd/GetDirectoryInfoById?directoryInfoId=${id}`,\n    \"GET\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      console.log(result.responseMessage);\n\n      return null;\n    }\n  });\n}\n\nasync function getDirectoryLatest(companyId, statusId) {\n  let endpoint = `/BackEnd/DirectoryLatest?companyId=${companyId}`;\n  if (statusId) endpoint = endpoint + `&statusId=${statusId}`;\n  return callApi(endpoint, \"GET\").then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      alert(result.responseMessage);\n      return null;\n    }\n  });\n}\n\nasync function getAllByCompany(companyId, statusId) {\n  let endpoint = `/BackEnd/GetDirectoryInfoList?companyId=${companyId}`;\n  if (statusId) endpoint = endpoint + `&statusId=${statusId}`;\n  return callApi(endpoint, \"GET\").then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      alert(result.responseMessage);\n      return null;\n    }\n  });\n}\n\nasync function getMyDirectory() {\n  return callApi(`/BackEnd/GetMyDirectoryInfoList`, \"GET\").then((result) => {\n    if (result.responseCode == \"00\") {\n      return result.data;\n    } else {\n      return null;\n    }\n  });\n}\n\nasync function insertDirectory(params) {\n  return callApiFileStorage(\n    \"/BackEnd/InsertDirectoryInfo\",\n    \"POST\",\n    params,\n    false\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      swal({ text: \"El Servicio se añadió correctamente.\", icon: \"success\" });\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n    return result;\n  });\n}\n\nasync function updateDirectory(params) {\n  return callApiFileStorage(\n    \"/BackEnd/DirectoryInfo\",\n    \"PUT\",\n    params,\n    false\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      swal({ text: \"El Servicio se actualizó correctamente.\", icon: \"success\" });\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n    return result;\n  });\n}\n\nasync function deleteDirectory(DirectoryInfoId) {\n  return callApi(\n    `/BackEnd/DeleteDirectoryInfo/${DirectoryInfoId}`,\n    \"DELETE\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      swal({ text: result.responseMessage })\n      return null;\n    }\n  });\n}\n\nasync function approveDirectory(DirectoryInfoId, email) {\n  return callApi(\n    `/BackOffice/ApproveDirectoryInfo?DirectoryInfoId=${DirectoryInfoId}&Email=${email}`,\n    \"POST\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" })\n      return null;\n    }\n  });\n}\n\nasync function approveDirectoryGrace(DirectoryInfoId, email, PubliMax, DaysGrace) {\n  return callApi(\n    `/BackOffice/ApproveDirectoryInfo/Grace?DirectoryInfoId=${DirectoryInfoId}&Email=${email}&PubliMax=${PubliMax}&DaysGrace=${DaysGrace}`,\n    \"POST\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" })\n      return null;\n    }\n  });\n}\n\nasync function rejectDirectory(DirectoryInfoId) {\n  return callApi(\n    `/BackOffice/RejectDirectoryInfo?DirectoryInfoId=${DirectoryInfoId}`,\n    \"POST\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      swal({ text: result.responseMessage })\n      return null;\n    }\n  });\n}\n\nasync function setDirectoryScore(params) {\n  return callApiFileStorage(\n    \"/BackEnd/DirectoryScore\",\n    \"POST\",\n    params,\n    false\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      swal({ text: \"El Servicio se actualizó correctamente.\", icon: \"success\" });\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n    return result;\n  });\n}\n\nasync function setDirectoryView(id) {\n  return callApiFileStorage(\n    \"/BackEnd/DirectoryView/\" + id,\n    \"POST\",\n    {},\n    false\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n    return result;\n  });\n}\n\nasync function getSettingsUser() {\n  return callApi(\n    `/BackOffice/DirectoryInfo/SettingsUser`,\n    \"get\"\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" })\n      return null;\n    }\n  });\n}\n\nasync function updateDirectoryReward(directoryInfoId, enableReward) {\n  return callApi(\n    `/BackEnd/DirectoryInfo/reward/${directoryInfoId}/${enableReward}`,\n    \"POST\",\n    {},\n    false\n  ).then((result) => {\n    if (result.responseCode === \"00\") {\n    } else {\n      swal({ text: result.responseMessage, icon: \"error\" });\n    }\n    return result;\n  });\n}\n","import { callApi, callApiFileStorage } from './service'\n\nexport const categoryServiceService = {\n    getCategoryCatalog,\n    getCategoryCatalogFilterByCompany,\n    getSubCategoriesFilterByCategory,\n    getSubCategoriesCatalogByCatId,\n};\nasync function getCategoryCatalog()\n{\n    return callApi(`/BackEnd/GetCategoriesCatalog`, 'GET').then((result) => {\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            //debugger\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });    \n}\nasync function getCategoryCatalogFilterByCompany(companyId) {\n    return callApi(`/BackEnd/GetCategoryFilters?companyId=${companyId}`, 'GET').then((result) => {\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\nasync function getSubCategoriesCatalogByCatId(categoryId) {\n    // debugger\n    // if (categoryId == null || categoryId == undefined) {\n    //     return null;\n    // }\n    return callApi(`/BackEnd/GetSubCategoryCatalogByCategoryId?categoryId=${categoryId}`, 'GET').then((result) => {\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function getSubCategoriesFilterByCategory(categoryId, companyId) {\n    return callApi(`/BackEnd/GetSubCategoryByCatId?categoryId=${categoryId}&companyId=${companyId}`, 'GET').then((result) => {\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n","import React, { useState, useEffect } from \"react\";\nimport { directoryInfoService } from \"../../services/directoryService.service\";\nimport { Link } from \"react-router-dom\";\nimport ImgRecompensas from \"../../assets/imgs/iconos/ico_recompensas.png\";\nimport { Splide, SplideSlide } from \"@splidejs/react-splide\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button, Tooltip } from \"antd\";\nimport { FaCheckCircle, FaTimesCircle } from \"react-icons/fa\";\nimport Swal from \"sweetalert2\";\n\nexport const ItemDirectory = ({\n  directoryItem,\n  isAdmin,\n  setdirectoryInfoToAuthorize,\n  convertToArray,\n  profileId,\n  sectionOn,\n  updateListP,\n  updateListA,\n  noPost,\n  noDaysGrace,\n}) => {\n  const minValue = 1;\n  const maxValue = 5;\n  const [estrellas, setEstrellas] = useState([0, 0, 0, 0, 0]);\n  const [avrScore, setAvrScore] = useState(0);\n  const [avrText, setAvrText] = useState(0);\n  const [avrScoreA, setAvrScoreA] = useState(0);\n  const [avrScoreB, setAvrScoreB] = useState(0);\n  const [avrScoreC, setAvrScoreC] = useState(0);\n  const [edit, setEdit] = useState(true);\n  const [editA, setEditA] = useState(true);\n  const [editB, setEditB] = useState(true);\n  const [editC, setEditC] = useState(true);\n  const [isEval, setIsEval] = useState(false);\n  const [evalA, setEvalA] = useState(0);\n  const [evalB, setEvalB] = useState(0);\n  const [evalC, setEvalC] = useState(0);\n  let history = useHistory();\n\n  const [activeBoxTooltip, setBoxTooltip] = useState(\"\");\n\n  // const showBoxTooltip = () => {\n  //   setBoxTooltip(activeBoxTooltip === \"\" ? \" is-show\" : \"\");\n  // };\n\n  const directoryContacts = directoryItem.directoryContacts;\n  const directoryRatings = directoryItem.directoryRatings;\n\n  /*\n    let phoneContact = {};\n    let emailContact = {};\n    let socialNetworks = [];\n\n    if (directoryContacts && directoryContacts.length > 0) {\n      phoneContact = directoryContacts.find(\n        (element) => element.contactTypeName == \"Teléfono\"\n      );\n      emailContact = directoryContacts.find(\n        (element) => element.contactTypeName == \"Email\"\n      );\n      socialNetworks = directoryContacts.filter(\n        (element) =>\n          element.contactTypeName !== \"Email\" &&\n          element.contactTypeName !== \"Teléfono\"\n      );\n    }*/\n\n  useEffect(() => {\n    let service;\n    if (directoryRatings && directoryRatings.length > 0) {\n      const sum = directoryRatings.reduce(function (prev, current) {\n        return prev + +current.score;\n      }, 0);\n\n      const average = sum / directoryRatings.length;\n      const averagefloor = Math.floor(average);\n\n      setAvrText(average.toFixed(1));\n      setAvrScore(directoryRatings.length);\n\n      const serviceRating = directoryRatings.filter(\n        (item) => 1 === item.directoryRatingTypeId\n      );\n      const priceRating = directoryRatings.filter(\n        (item) => 2 === item.directoryRatingTypeId\n      );\n      const qualityRating = directoryRatings.filter(\n        (item) => 3 === item.directoryRatingTypeId\n      );\n\n      const uno = directoryRatings.filter((item) => 1 == item.score).length;\n      const dos = directoryRatings.filter((item) => 2 == item.score).length;\n      const tres = directoryRatings.filter((item) => 3 == item.score).length;\n      const cuatro = directoryRatings.filter((item) => 4 == item.score).length;\n      const cinco = directoryRatings.filter((item) => 5 == item.score).length;\n\n      setEstrellas([uno, dos, tres, cuatro, cinco]);\n\n      if (serviceRating.length > 0) {\n        service = infoType(serviceRating);\n        setAvrScoreA(service[0]);\n        setEditA(service[1]);\n        setEvalA(service[2]);\n      }\n      if (priceRating.length > 0) {\n        service = infoType(priceRating);\n        setAvrScoreB(service[0]);\n        setEditB(service[1]);\n        setEvalB(service[2]);\n      }\n      if (qualityRating.length > 0) {\n        service = infoType(qualityRating);\n        setAvrScoreC(service[0]);\n        setEditC(service[1]);\n        setEvalC(service[2]);\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n    if (!editA && !editB && !editC) {\n      setEdit(false);\n    }\n  }, [editA, editB, editC]);\n\n  const infoType = (item) => {\n    const data = [0, true, 0];\n    const sum = item.reduce(function (prev, current) {\n      return prev + +current.score;\n    }, 0);\n    const average = sum / item.length;\n    const averagefloor = Math.floor(average);\n    data[0] = averagefloor;\n    const userScore = item.filter((item) => profileId == item.userProfileAsp);\n    if (userScore.length > 0) {\n      data[1] = false;\n      data[2] = userScore[0].score;\n    }\n    return data;\n  };\n\n  const approveService = (directoryItem) => {\n    Swal.fire({\n      title: \"¿Desea aprobar esta publicación?\",\n      text: \"No podrás revertir esta acción\",\n      icon: \"warning\",\n      showCancelButton: true,\n      confirmButtonColor: \"rgb(16, 173, 79)\",\n      confirmButtonText: \"Aprobar\",\n      cancelButtonText: \"Cancelar\",\n    }).then((result) => {\n      if (result.isConfirmed) {\n        directoryInfoService\n          .approveDirectoryGrace(\n            directoryItem.directoryInfoId,\n            directoryItem.creatorEmail,\n            noPost,\n            noDaysGrace\n          )\n          .then((response) => {\n            if (response)\n              Swal.fire({\n                text: \"Publicación aceptada exitosamente\",\n                icon: \"success\",\n              });\n            updateListP();\n            updateListA();\n          });\n      }\n    });\n  };\n\n  const rejectService = (directoryItem) => {\n    Swal.fire({\n      title: \"¿Desea rechazar esta publicación?\",\n      text: \"No podrás revertir esta acción\",\n      icon: \"warning\",\n      showCancelButton: true,\n      confirmButtonColor: \"#FF002A\",\n      confirmButtonText: \"Rechazar\",\n      cancelButtonText: \"Cancelar\",\n    }).then((result) => {\n      if (result.isConfirmed) {\n        directoryInfoService\n          .rejectDirectory(directoryItem.directoryInfoId)\n          .then((response) => {\n            if (response) {\n              directoryInfoService\n                .getAllByCompany(process.env.REACT_APP_COMPANY, 1)\n                .then((dataToAuth) => {\n                  setdirectoryInfoToAuthorize(convertToArray(dataToAuth));\n                  Swal.fire({\n                    text: \"Publicación rechazada exitosamente\",\n                    icon: \"success\",\n                  });\n                  updateListP();\n                });\n            }\n          });\n      }\n    });\n  };\n\n  /*const insertScore = (score, type) => {\n    const data = new FormData();\n    data.append(\"DirectoryRatingId\", 0);\n    data.append(\"DirectoryInfoId\", directoryItem.directoryInfoId);\n    data.append(\"DirectoryRatingTypeId\", type);\n    data.append(\"UserProfileId\", 0);\n    data.append(\"UserProfileAsp\", profileId);\n    data.append(\"Score\", score);\n    data.append(\"Active\", true);\n\n    directoryInfoService.setDirectoryScore(data).then((response) => {\n      if (response) {\n        if (type == 1) setEditA(false);\n        if (type == 2) setEditB(false);\n        if (type == 3) setEditC(false);\n        return true;\n      }\n    });\n    return false;\n  }*/\n\n  // const imageBack = () => {\n  //   let urlbackground = \"\";\n  //   if (Array.isArray(directoryItem.contactImage)) urlbackground = directoryItem.contactImage[0];\n  //   else urlbackground = emptyImg;\n\n  //   return (<div className=\"img-item-blur\" style={{backgroundImage: `url(${urlbackground})`,}}></div>);\n  // };\n\n  return (\n    <>\n      {isAdmin && directoryItem.directoryInfoStatusName === \"En trámite\" ? (\n        <div className=\"card-directory-admin\">\n          <Button\n            size={\"small\"}\n            type={\"primary\"}\n            htmlType={\"button\"}\n            className=\"success\"\n            onClick={() => approveService(directoryItem)}\n          >\n            Autorizar\n            <FaCheckCircle />\n          </Button>\n          <Button\n            size={\"small\"}\n            className=\"cancel\"\n            type={\"primary\"}\n            htmlType={\"button\"}\n            onClick={() => rejectService(directoryItem)}\n          >\n            Rechazar\n            <FaTimesCircle />\n          </Button>\n        </div>\n      ) : null}\n      <div className={`card-directory-main ${isAdmin ? \"admin\" : \"\"}`}>\n        <div className=\"card-directory-main-thumbnail\">\n          {directoryItem.isEnableRewards ? (\n            <Link to=\"/Rewards\" className=\"img-rewards\">\n              <img\n                src={ImgRecompensas}\n                alt=\"Este articulo tiene recompensas en PrideMx\"\n              />\n            </Link>\n          ) : null}\n          <Splide\n            options={{\n              pagination: true,\n              arrows: true,\n              autoplay: true,\n              rewind: true,\n              perMove: 1,\n              perPage: 1,\n              rewindByDrag: true,\n              speed: 900,\n              drag: true,\n            }}\n          >\n            {directoryItem.contactImage &&\n              directoryItem.contactImage.map((itemImage, indice) => {\n                return (\n                  <SplideSlide>\n                    <div className=\"group-item\">\n                      <div\n                        className=\"img-item-blur\"\n                        style={{ backgroundImage: `url(${itemImage})` }}\n                      ></div>\n                      <img\n                        src={itemImage}\n                        alt={`${directoryItem.fullName + indice}`}\n                      />\n                    </div>\n                  </SplideSlide>\n                );\n              })}\n          </Splide>\n        </div>\n        <div className=\"card-directory-main-content\">\n          <div className=\"card-directory-main-content-info\">\n            <Link\n              className={'title-link'}\n              to={{\n                pathname: !sectionOn\n                  ? `/register-services/${directoryItem.directoryInfoId}`\n                  : `/details-directory/${directoryItem.directoryInfoId}`,\n                state: {\n                  Item: directoryItem,\n                  profileId: profileId,\n                  isPay: false,\n                },\n              }}\n            >\n              {directoryItem.fullName?.length > 30\n                ? `${directoryItem.fullName.substring(0, 30)}...`\n                : directoryItem.fullName}\n            </Link>\n            <div className={'text-link'}>\n              {directoryItem.directoryDescription?.length > 120 ? (\n                <>\n                  {directoryItem.directoryDescription.substring(0, 120)}...\n                  <Link\n                    to={{\n                      pathname: !sectionOn\n                        ? `/register-services/${directoryItem.directoryInfoId}`\n                        : `/details-directory/${directoryItem.directoryInfoId}`,\n                      state: {\n                        Item: directoryItem,\n                        profileId: profileId,\n                        isPay: false,\n                      },\n                    }}\n                  >\n                    Leer más\n                  </Link>\n                </>\n              ) : (\n                directoryItem.directoryDescription\n              )}\n            </div>\n          </div>\n          <div className=\"card-directory-main-content-extra\">\n            {directoryItem.createUserName?.length > 30 ? (\n              <Tooltip placement=\"topLeft\" title={directoryItem.createUserName}>\n                <h6>{directoryItem.createUserName.substring(0, 30)}...</h6>\n              </Tooltip>\n            ) : (\n              <h6>{directoryItem.createUserName}</h6>\n            )}\n            <div className=\"category\">\n              <span>{directoryItem.categoryServiceName} </span>\n              <span className=\"badge-directory\">\n                {directoryItem.subCategoryServiceName}\n              </span>\n            </div>\n            <div className=\"location\">\n              <Tooltip placement=\"topLeft\" title={directoryItem.location}>\n                <p>\n                  {directoryItem.location?.length > 25\n                    ? directoryItem.location.substring(0, 25) + \"...\"\n                    : directoryItem.location}\n                </p>\n              </Tooltip>\n              <p className=\"ranking\">\n                <i className=\"fa-solid fa-star\"></i> {avrText} de 5\n              </p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\n","import { callApi, callApiFileStorage } from '../service'\nimport Swal from \"sweetalert2\";\n\nexport const companyCustomizeService = {\n    getById,\n    getByCompanyId,\n    create,\n    edit\n};\n\nasync function getById(id) {\n    return callApi('/BackOffice/CompanyCustomize/' + id, 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return {};\n            }\n        });\n}\n\nasync function getByCompanyId(companyId) {\n    return callApi('/BackOffice/CompanyCustomize/GetByCompanyId/' + companyId, 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return {};\n            }\n        });\n}\n\nasync function create(data) {\n    const formData = new FormData();\n    formData.append(\"companyCustomizeId\", data.CompanyCustomizeId);\n    formData.append(\"companyId\", data.CompanyId);\n    formData.append(\"customizeValues\", data.CustomizeValues);\n    formData.append(\"companyLogoFile\", data.CompanyLogoFile);\n    \n    return callApiFileStorage('/BackOffice/CompanyCustomize', 'POST', formData, false)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return Swal.fire({\n                    text: \"Registro guardado exitosamente\",\n                    icon: \"success\",\n                    showCloseButton: true,\n                    allowOutsideClick: false,\n                    allowEscapeKey: false\n                }).then(() => {\n                        return true;\n                });\n            }else {\n                Swal.fire({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n\nasync function edit(data) {\n    const formData = new FormData();\n    formData.append(\"companyCustomizeId\", data.CompanyCustomizeId);\n    formData.append(\"companyId\", data.CompanyId);\n    formData.append(\"customizeValues\", data.CustomizeValues);\n    formData.append(\"companyLogoFile\", data.CompanyLogoFile);\n    return callApiFileStorage('/BackOffice/CompanyCustomize', 'PUT', formData,false)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return Swal.fire({\n                    text: \"Registro guardado exitosamente\",\n                    icon: \"success\" ,\n                    showCloseButton: true,\n                    allowOutsideClick: false,\n                    allowEscapeKey: false\n                })\n                    .then((value) => {\n                        return true;\n                    });\n            } else {\n                Swal.fire({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n\n\n","import React, { useState, useEffect } from \"react\";\nimport { directoryInfoService } from \"../../services/directoryService.service\";\nimport { categoryServiceService } from \"../../services/categoryService.service\";\nimport { metaPixelService } from \"../../services/metaPixel.service\";\nimport { ItemDirectory } from \"./itemDirectory\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport \"./directory.scss\";\nimport { BsArrowRight, BsFilter } from \"react-icons/bs\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { FaChevronRight } from \"react-icons/fa\";\nimport { Button } from \"rsuite\";\nimport { companyCustomizeService } from \"../../services/backoffice/companyCustomize.service\";\nimport {Col, Row} from \"antd\";\nimport { backendService } from \"../../services/backend.service\";\n\nexport function Directory() {\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [sectionOn, setSectionOn] = useState(true);\n  const [dataCompany, setDataCompany] = useState({});\n  const fSectionOn = () => {\n    setSectionOn(!sectionOn);\n  };\n\n  const trigger = undefined;\n  const [isAdmin, setIsAdmin] = useState(false);\n  const [isFiltered, setIsFiltered] = useState(false);\n  const [directoryInfo, setDirectoryInfo] = useState([]);\n  const [directoryInfoToAuthorize, setdirectoryInfoToAuthorize] = useState([]);\n  const [locationFilter, setLocationFilter] = useState([]);\n  const [categoryFilter, setCategoryFilter] = useState([]);\n  const [subCategoryFilter, setSubCategoryFilter] = useState([]);\n  const [profile, setProfileInfo] = useState(0);\n  const [profileData, setProfileData] = useState([]);\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [selectedFilter, setSelectedFilter] = useState({\n    selectLocation: \"\",\n    selectCategory: 0,\n    selectSubCategory: 0,\n    txtFilter: \"\",\n  });\n  const [filteredDirectory, setFilteredDirectory] = useState([]);\n\n  const getProfileInfo = () => {\n    let id = localStorage[\"userId\"];\n    setProfileInfo(id);\n    backendService.userProfile().then((data) => setProfileData(data));\n  };\n\n  const handleSelectFilter = (event) => {\n    if ([event.target.name] == \"selectCategory\") {\n      if (event.target.value != \"0\") {\n        categoryServiceService\n          .getSubCategoriesFilterByCategory(\n            event.target.value,\n            process.env.REACT_APP_COMPANY\n          )\n          .then((subs) => {\n            setSubCategoryFilter(subs);\n          });\n      } else {\n        setSubCategoryFilter([]);\n      }\n    }\n    setSelectedFilter({\n      ...selectedFilter,\n      [event.target.name]: event.target.value,\n    });\n  };\n  const getInitialValues = (roleName) => {\n    getListos();\n  };\n\n  useEffect(() => {\n    getProfileInfo();\n  }, []);\n\n  useEffect(() => {\n    getDataCompany();\n  }, [sectionOn]);\n\n  useEffect(() => {\n    setIsAdmin(() => {\n      return roleName == \"Recursos Humanos\";\n    });\n    if (roleName == \"Recursos Humanos\") getPending();\n  }, [roleName]);\n\n  useEffect(() => {\n    //if (roleName == \"Recursos Humanos\") setIsAdmin(true)\n    getInitialValues(roleName);\n  }, [trigger]);\n\n  const getListos = () => {\n    directoryInfoService\n      .getAllByCompany(process.env.REACT_APP_COMPANY)\n      .then((data) => {\n        if (data != null) {\n          try {\n            let result = convertToArray(data);\n            setDirectoryInfo(result);\n            setFilteredDirectory(result);\n            const locations = [...new Set(result.map((data) => data.location))];\n            setLocationFilter(locations);\n            categoryServiceService\n              .getCategoryCatalogFilterByCompany(process.env.REACT_APP_COMPANY)\n              .then((categories) => {\n                if (categories != null) {\n                  setCategoryFilter(categories);\n                }\n              });\n          } catch (error) {\n            console.error(error);\n          }\n        }\n      })\n      .catch((message) => {});\n  };\n\n  const getPending = () => {\n    directoryInfoService\n      .getAllByCompany(process.env.REACT_APP_COMPANY, 1)\n      .then((dataToAuth) => {\n        setdirectoryInfoToAuthorize(convertToArray(dataToAuth));\n      });\n  };\n\n  const convertToArray = (array) => {\n    array.forEach((obj) => {\n      obj.contactImage =\n        obj.contactImage != undefined ? obj.contactImage.split(\",\") : [\"\"];\n    });\n\n    return array;\n  };\n\n  useEffect(() => {\n    updateFilterResult(directoryInfo);\n    setSearchTerm(selectedFilter.txtFilter);\n  }, [selectedFilter]);\n\n  const updateFilterResult = (directoryInfo) => {\n    let result = directoryInfo;\n    if (selectedFilter.selectLocation) {\n      setIsFiltered(true);\n      result = directoryInfo.filter((directory) => {\n        return directory.location == selectedFilter.selectLocation;\n      });\n    }\n    if (\n      selectedFilter.selectCategory !== 0 &&\n      selectedFilter.selectCategory !== \"0\"\n    ) {\n      setIsFiltered(true);\n      result = result.filter((directory) => {\n        return directory.categoryServiceId == selectedFilter.selectCategory;\n      });\n    }\n\n    if (\n      selectedFilter.selectSubCategory !== 0 &&\n      selectedFilter.selectSubCategory !== \"0\"\n    ) {\n      setIsFiltered(true);\n      result = result.filter((directory) => {\n        return (\n          directory.subCategoryServiceId == selectedFilter.selectSubCategory\n        );\n      });\n    }\n\n    if (selectedFilter.txtFilter.length >= 2) {\n      let word = selectedFilter.txtFilter\n        .toUpperCase()\n        .normalize(\"NFD\")\n        .replace(/[\\u0300-\\u036f]/g, \"\");\n      setIsFiltered(true);\n\n      result = result.filter((directory) => {\n        return (\n          directory.fullName\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          directory.location\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          directory.subCategoryServiceName\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          directory.categoryServiceName\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          (directory.directoryContacts.filter((x) => x.contactTypeId == 1)\n            .length > 0\n            ? directory.directoryContacts\n                .filter((x) => x.contactTypeId == 1)[0]\n                .contactValue.toUpperCase()\n                .normalize(\"NFD\")\n                .replace(/[\\u0300-\\u036f]/g, \"\")\n                .includes(word)\n            : false) || //Telefono\n          (directory.directoryContacts.filter((x) => x.contactTypeId == 2)\n            .length > 0\n            ? directory.directoryContacts\n                .filter((x) => x.contactTypeId == 2)[0]\n                .contactValue.toUpperCase()\n                .normalize(\"NFD\")\n                .replace(/[\\u0300-\\u036f]/g, \"\")\n                .includes(word)\n            : false)\n        ); //Email\n      });\n    }\n    setFilteredDirectory(result);\n  };\n\n  function getCurrentURL() {\n    return window.location.href\n  }\n  function getUserAgent() {\n    return window.navigator.userAgent;\n  }\n  useEffect(() => {\n    const delayDebounceFn = setTimeout(() => {\n      let word = searchTerm\n        .toUpperCase()\n        .normalize(\"NFD\")\n        .replace(/[\\u0300-\\u036f]/g, \"\");\n      setIsFiltered(true);\n      if (searchTerm.length >= 5) {\n        var user = {\n          em: profileData.email,\n          fn: profileData.firstName,\n          ln: profileData.lastName,\n          db: profileData.birthday,\n          zp: profileData.postalCode,\n          ph: profileData.mobile,\n          client_user_agent: getUserAgent()\n        }\n        var ped = {\n          content_name: \"Directorio\",\n          content_type: \"Directory\",\n          search_string: word,\n        };\n        var pixelData = { pixelUserInfo: user, pixelCustomData: ped };\n        metaPixelService.trackEvent(\"track\", \"Search\", pixelData, getCurrentURL());\n      }\n    }, 2345);\n\n    return () => clearTimeout(delayDebounceFn);\n  }, [searchTerm]);\n\n  const cleanFilter = () => {\n    setIsFiltered(false);\n    setSelectedFilter({\n      selectLocation: \"\",\n      selectCategory: 0,\n      selectSubCategory: 0,\n      txtFilter: \"\",\n    });\n  };\n\n  const data = locationFilter.map((item, i) => ({ label: item, value: item }));\n  const categoriesData = locationFilter.map((item) => ({\n    label: item,\n    value: item,\n  }));\n  const subCategoriesData = locationFilter.map((item) => ({\n    label: item,\n    value: item,\n  }));\n\n  const getDataCompany = () => {\n    companyCustomizeService\n      .getByCompanyId(process.env.REACT_APP_COMPANY)\n      .then((result) => {\n        if (result && result != null) {\n          var object = JSON.parse(result.customizeValues);\n          setDataCompany({\n            NoPost: object.NoPost,\n            NoDaysGrace: object.NoDaysGrace,\n            FreePost: object.FreePost,\n          });\n        }\n      });\n  };\n\n  const [filterBlock, setFilterBlock] = useState(false);\n  const handlFilterBlock = () => setFilterBlock(!filterBlock);\n\n  return (\n    <section className=\"dashboard-container-page wrapper_directory\">\n      <Row gutter={16}>\n        <Col xs={24}>\n          <h2>Economía Incluyente</h2>\n        </Col>\n        <Col xl={6} lg={8} md={24} sm={24} xs={24}>\n          <aside className=\"directory-aside\">\n            <div className=\"directory-card-ad\">\n              <div>\n                <h3>¿Quieres llegar a más clientes de la comunidad?</h3>\n                <p className=\"label__ftn\">Tenemos un espacio para ti</p>\n              </div>\n              <div className=\"d-flex-center\">\n                <Link\n                  className=\"btn-outline-white green\"\n                  to=\"/register-services\"\n                >\n                  Publica tus servicios <BsArrowRight />\n                </Link>\n              </div>\n            </div>\n            {sectionOn ? (\n              <div className=\"directory box_filters\">\n                <div className=\"form-dashboard\">\n                  <h5>\n                    <BsFilter /> Filtros\n                  </h5>\n                  <div\n                    className={`box__form_dashboard ${\n                      filterBlock ? \"is_block\" : \"\"\n                    }`}\n                  >\n                    <div className=\"form-dashboard-group mb-4\">\n                      <label>Ubicación:</label>\n                      <select\n                        id=\"selectLocation\"\n                        name=\"selectLocation\"\n                        onChange={handleSelectFilter}\n                        value={selectedFilter.selectLocation}\n                      >\n                        <option value={\"\"} defaultValue>\n                          Todas\n                        </option>\n                        {locationFilter &&\n                          locationFilter.map((locationItem) => (\n                            <option key={locationItem} value={locationItem}>\n                              {locationItem}\n                            </option>\n                          ))}\n                      </select>\n                    </div>\n                    <div className=\"form-dashboard-group mb-4\">\n                      <label>Categorías:</label>\n                      <select\n                        id=\"selectCategory\"\n                        name=\"selectCategory\"\n                        onChange={handleSelectFilter}\n                        value={selectedFilter.selectCategory}\n                      >\n                        <option value={0} defaultValue>\n                          Todas\n                        </option>\n                        {categoryFilter &&\n                          categoryFilter.map((categoryItem) => (\n                            <option\n                              key={categoryItem.categoryServiceId}\n                              value={categoryItem.categoryServiceId}\n                            >\n                              {categoryItem.categoryName}\n                            </option>\n                          ))}\n                      </select>\n                    </div>\n                    <div className=\"form-dashboard-group mb-4\">\n                      <label>Subcategorías:</label>\n                      <select\n                        id=\"selectSubCategory\"\n                        name=\"selectSubCategory\"\n                        onChange={handleSelectFilter}\n                        value={selectedFilter.selectSubCategory}\n                      >\n                        <option value={0} defaultValue>\n                          Todas\n                        </option>\n                        {subCategoryFilter &&\n                          subCategoryFilter.map((subCategoryItem) => (\n                            <option\n                              key={subCategoryItem.SubCategoryServiceId}\n                              value={subCategoryItem.subCategoryServiceId}\n                            >\n                              {subCategoryItem.subCategoryName}\n                            </option>\n                          ))}\n                      </select>\n                    </div>\n                    <div className=\"form-dashboard-group \">\n                      <label>Búsqueda:</label>\n                      <input\n                        type=\"text\"\n                        placeholder=\"Búsqueda\"\n                        name=\"txtFilter\"\n                        id=\"txtFilter\"\n                        onChange={handleSelectFilter}\n                        value={selectedFilter.txtFilter}\n                      ></input>\n                    </div>\n                  </div>\n                </div>\n                {isFiltered ? (\n                  <Button\n                    className=\"btn-outline-yellow btn_clean_filter\"\n                    onClick={cleanFilter}\n                  >\n                    Limpiar filtros\n                  </Button>\n                ) : (\n                  \"\"\n                )}\n                <span\n                  className={`caret_in_down trans ${\n                    filterBlock ? \"in_rotate\" : \"\"\n                  }`}\n                  onClick={handlFilterBlock}\n                >\n                  <i className=\"fa-solid fa-chevron-down\"></i>\n                </span>\n              </div>\n            ) : (\n              \"\"\n            )}\n          </aside>\n        </Col>\n        <Col xl={18} lg={16} md={24} sm={24} xs={24}>\n          {isAdmin ? (\n            <div className=\"flex-end\" style={{ marginBottom: \".5rem\", marginTop: '1rem' }}>\n              <Button className=\"btn-green\" onClick={fSectionOn}>\n                {sectionOn && directoryInfoToAuthorize ? (\n                  <p>\n                    Por autorizar <span>{directoryInfoToAuthorize.length}</span>\n                  </p>\n                ) : (\n                  <p>Autorizados</p>\n                )}\n                <FaChevronRight />\n              </Button>\n            </div>\n          ) : (\n            \"\"\n          )}\n\n          <div className=\"directory-container-wrapper\">\n            {sectionOn ? (\n              <>\n                {filteredDirectory.map((item) => (\n                  <ItemDirectory\n                    key={item.directoryInfoId}\n                    directoryItem={item}\n                    isAdmin={isAdmin}\n                    sectionOn={sectionOn}\n                    profileId={profile}\n                  />\n                ))}\n              </>\n            ) : isAdmin ? (\n              <div className=\"wrapper_authorize\">\n                {directoryInfoToAuthorize.map((toAuthorize) => (\n                  <ItemDirectory\n                    directoryItem={toAuthorize}\n                    isAdmin={isAdmin}\n                    setdirectoryInfoToAuthorize={setdirectoryInfoToAuthorize}\n                    convertToArray={convertToArray}\n                    profileId={profile}\n                    sectionOn={sectionOn}\n                    updateListP={getPending}\n                    updateListA={getListos}\n                    noPost={dataCompany.NoPost}\n                    noDaysGrace={dataCompany.NoDaysGrace}\n                  />\n                ))}\n              </div>\n            ) : (\n              \"\"\n            )}\n          </div>\n        </Col>\n        <FooterHome />\n      </Row>\n    </section>\n  );\n}\n","import React from \"react\";\nimport {Tooltip, Whisper} from \"rsuite\";\n\nexport function ItemSocial(props) {\n    const tooltip = (\n        <Tooltip id=\"button-tooltip\" {...props.socialIcoName}>\n            {props.socialIcoName}\n        </Tooltip>\n    );\n\n    return (\n        <Whisper placement=\"top\" controlId=\"button-tooltip\" trigger=\"hover\" speaker={tooltip} >\n          <a href={props.socialUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"a_ico_social\">\n            <ion-icon name={props.socialIco}></ion-icon>\n          </a>\n        </Whisper>\n    );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { directoryInfoService } from \"../../services/directoryService.service\";\nimport { categoryServiceService } from \"../../services/categoryService.service\";\nimport { ItemSocial } from \"./itemSocial\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport \"./ambassador.scss\";\n\nexport function Ambassador() {\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [sectionOn, setSectionOn] = useState(true);\n  const fSectionOn = () => {\n    setSectionOn(!sectionOn);\n  };\n\n  const trigger = undefined;\n  const [isAdmin, setIsAdmin] = useState(false);\n  const [isFiltered, setIsFiltered] = useState(false);\n  const [directoryInfo, setDirectoryInfo] = useState([]);\n  const [directoryInfoToAuthorize, setdirectoryInfoToAuthorize] = useState([]);\n  const [locationFilter, setLocationFilter] = useState([]);\n  const [categoryFilter, setCategoryFilter] = useState([]);\n  const [subCategoryFilter, setSubCategoryFilter] = useState([]);\n  const [profile, setProfileInfo] = useState(0);\n  const [searchTerm, setSearchTerm] = useState('');\n  const [selectedFilter, setSelectedFilter] = useState({\n    selectLocation: \"\",\n    selectCategory: 0,\n    selectSubCategory: 0,\n    txtFilter: \"\",\n  });\n  const [filteredDirectory, setFilteredDirectory] = useState([]);\n  \n  const getProfileInfo = () => {\n    let id = localStorage[\"userId\"];\n    setProfileInfo(id);\n  };\n\n  const handleSelectFilter = (event) => {\n    if ([event.target.name] == \"selectCategory\") {\n      if (event.target.value != \"0\") {\n        categoryServiceService\n          .getSubCategoriesFilterByCategory(\n            event.target.value,\n            process.env.REACT_APP_COMPANY\n          )\n          .then((subs) => {\n            setSubCategoryFilter(subs);\n          });\n      } else {\n        setSubCategoryFilter([]);\n      }\n    }\n    setSelectedFilter({\n      ...selectedFilter,\n      [event.target.name]: event.target.value,\n    });\n  };\n  const getInitialValues = (roleName) => {\n    directoryInfoService\n      .getAllByCompany(process.env.REACT_APP_COMPANY)\n      .then((data) => {\n        if (data != null) {\n          setDirectoryInfo(data);\n          setFilteredDirectory(data);\n          const locations = [...new Set(data.map((data) => data.location))];\n          setLocationFilter(locations);\n          categoryServiceService\n            .getCategoryCatalogFilterByCompany(process.env.REACT_APP_COMPANY)\n            .then((categories) => {\n              if (categories != null) {\n                setCategoryFilter(categories);\n              }\n            });\n        }\n      })\n      .catch((message) => {});\n  };\n\n  useEffect(() => {\n    getProfileInfo()\n  }, []);\n\n\n  const updateFilterResult = (directoryInfo) => {\n    let result = directoryInfo;\n    if (selectedFilter.selectLocation) {\n      setIsFiltered(true);\n      result = directoryInfo.filter((directory) => {\n        return directory.location == selectedFilter.selectLocation;\n      });\n    }\n    if (\n      selectedFilter.selectCategory != 0 &&\n      selectedFilter.selectCategory != \"0\"\n    ) {\n      setIsFiltered(true);\n      result = result.filter((directory) => {\n        return directory.categoryServiceId == selectedFilter.selectCategory;\n      });\n    }\n\n    if (\n      selectedFilter.selectSubCategory != 0 &&\n      selectedFilter.selectSubCategory != \"0\"\n    ) {\n      setIsFiltered(true);\n      result = result.filter((directory) => {\n        return (\n          directory.subCategoryServiceId == selectedFilter.selectSubCategory\n        );\n      });\n    }\n\n    if (selectedFilter.txtFilter.length >= 2) {\n      let word = selectedFilter.txtFilter\n        .toUpperCase()\n        .normalize(\"NFD\")\n        .replace(/[\\u0300-\\u036f]/g, \"\");\n      setIsFiltered(true);\n      \n      result = result.filter((directory) => {\n        return (\n          directory.fullName\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          directory.location\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          directory.subCategoryServiceName\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          directory.categoryServiceName\n            .toUpperCase()\n            .normalize(\"NFD\")\n            .replace(/[\\u0300-\\u036f]/g, \"\")\n            .includes(word) ||\n          (directory.directoryContacts.filter((x) => x.contactTypeId == 1)\n            .length > 0\n            ? directory.directoryContacts\n                .filter((x) => x.contactTypeId == 1)[0]\n                .contactValue.toUpperCase()\n                .normalize(\"NFD\")\n                .replace(/[\\u0300-\\u036f]/g, \"\")\n                .includes(word)\n            : false) || //Telefono\n          (directory.directoryContacts.filter((x) => x.contactTypeId == 2)\n            .length > 0\n            ? directory.directoryContacts\n                .filter((x) => x.contactTypeId == 2)[0]\n                .contactValue.toUpperCase()\n                .normalize(\"NFD\")\n                .replace(/[\\u0300-\\u036f]/g, \"\")\n                .includes(word)\n            : false)\n        ); //Email\n      });\n    }\n\n    setFilteredDirectory(result);\n  };\n\n  \n\n  const cleanFilter = () => {\n    setIsFiltered(false);\n    setSelectedFilter({\n      selectLocation: \"\",\n      selectCategory: 0,\n      selectSubCategory: 0,\n      txtFilter: \"\",\n    });\n  };\n\n  return (\n    <section className=\"wrapper_embassador padd\">\n      <div className=\"mb-4 divtop\">\n        <div className=\"box_ttl_opt\">\n          <h2 className=\"mb-0 text fnt_medium w-100\">Representantes Regionales</h2>\n          <div className=\"wrp_filter_directory\">\n          </div>\n        </div>\n        <h4 className=\"ttls fw600 mb-4\">\n          <div className=\"box_tl\">\n            <span className=\"ico_shop\">\n              <i className=\"fas fa-user\"></i>\n            </span>\n            <span className=\"pl-2 pr-2\">¡Acercamos tu comunidad a tu ciudad!</span>\n          </div>\n        </h4>\n      </div>\n      {sectionOn ? (\n        <div className=\"box_filter_messg\">\n          <div className=\" box_ordering\">\n            <div>\n            <p className=\"drawer_reg_sex w-100 mt-2\">\n              Si tienes un evento, idea, grupo social o alguna comunidad que necesite ayuda, por favor envía un correo al representante de tu región.\n            </p>\n            </div>\n          </div>\n\n\n        </div>\n      ) : (\n        \"\"\n      )}\n      <div className=\"row\">\n    <article className=\"col-lg-3 col-sm-6 mb-4\">\n      <div className=\"card shadows\">\n        <div className=\"box_content_img\">\n        <img src=\"https://stgkumbymx.blob.core.windows.net/ctnprimecontentmx/871/Imgs/Profile/Ambassador.jpeg\" />\n        </div>\n        <div className=\"card-content text-center\">\n          <h6 className=\"card-title mb-0 text fnt_medium name_directory\">\n            Eduardo Bárcenas<br></br>\n            Occidente\n          </h6> \n          <br></br>\n          <div className=\"box_data\">\n              <h6 className=\"h_line text fnt_medium \">\n                <span>DATOS DE CONTACTO</span>\n              </h6>\n              <div className=\"item_data_details\">\n                <span className=\"ico_box_detail\">\n                  <ion-icon name=\"mail-outline\"></ion-icon>\n                </span>\n                  <a\n                    className=\"alinks text-break text-left\"\n                    href={`mailto:eduardob@pridemx.com`}\n                  >\n                    eduardob@pridemx.com\n                  </a>\n\n              </div>\n              <hr />\n              <div className=\"wrapper_social_links\">\n                      <ItemSocial\n                        socialIcoName=\"Instagram\"\n                        socialIco=\"logo-instagram\"\n                        socialUrl=\"https://www.instagram.com/eduardo.barcenas.186/?hl=es\"\n                      />\n                      <ItemSocial\n                        socialIcoName=\"Facebook\"\n                        socialIco=\"logo-facebook\"\n                        socialUrl=\"https://www.facebook.com/eduardo.barcenas.186\"\n                      />\n              </div>\n            </div>\n\n          </div>\n        </div>\n          </article>\n          <article className=\"col-lg-3 col-sm-6 mb-4\">\n          <div className=\"card shadows\">\n            <div className=\"box_content_img\">\n              <img src=\"https://stgkumbymx.blob.core.windows.net/ctnprimecontentmx/871/Imgs/Profile/Ambassador2.jpeg\" />\n            </div>\n            <div className=\"card-content text-center\">\n              <h6 className=\"card-title mb-0 text fnt_medium\">\n                  Daniel Fernández<br></br>\n                  Centro Sur\n              </h6> \n              <br></br>\n              <div className=\"box_data\">\n                  <h6 className=\"h_line text fnt_medium \">\n                    <span>DATOS DE CONTACTO</span>\n                  </h6>\n                  <div className=\"item_data_details\">\n                    <span className=\"ico_box_detail\">\n                      <ion-icon name=\"mail-outline\"></ion-icon>\n                    </span>\n                      <a\n                        className=\"alinks\"\n                        href={`mailto:danielf@pridemx.com`}\n                      >\n                        danielf@pridemx.com\n                      </a>\n\n                  </div>\n                      \n                  <hr />\n                  <div className=\"wrapper_social_links\">\n                        <ItemSocial\n                              socialIcoName=\"Instagram\"\n                              socialIco=\"logo-instagram\"\n                              socialUrl=\"https://www.instagram.com/daniel_l_fernandez/?hl=es\"\n                            />\n                          <ItemSocial\n                            socialIcoName=\"Facebook\"\n                            socialIco=\"logo-facebook\"\n                            socialUrl=\"https://www.facebook.com/daniellopezfernandez26\"\n                          />\n                  </div>\n                </div>\n            </div>\n          </div>\n          </article>\n      </div>\n    </section>\n  );\n}\n","import React from \"react\";\nimport { BsApple, BsFacebook, BsLink, BsLinkedin, BsSoundwave, BsTiktok, BsTwitter, BsYoutube, BsInstagram } from \"react-icons/bs\";\nimport {FaXTwitter} from \"react-icons/fa6\";\nimport {Tooltip} from \"antd\";\n\nexport function ItemSocial({ contactTypeName, contactValue }) {\n  return (\n    <li>\n        <Tooltip placement=\"bottom\" title={contactTypeName}>\n            <a\n            href={contactValue}\n            target=\"_blank\"\n            className={contactTypeName.toLowerCase()}\n          >\n            {contactTypeName == \"Instagram\" && <BsInstagram />}\n            {contactTypeName == \"Facebook\" && <BsFacebook />}\n            {contactTypeName == \"LinkedIn\" && <BsLinkedin />}\n            {contactTypeName == \"Twitter\" && <FaXTwitter />}\n            {contactTypeName == \"YoutubeChannel\" && <BsYoutube />}\n            {contactTypeName == \"Web\" && <BsLink />}\n            {contactTypeName == \"Apple\" && <BsApple />}\n            {contactTypeName == \"SoundCloud\" && <BsSoundwave />}\n            {contactTypeName == \"LinkThree\" && <BsLink />}\n            {contactTypeName == \"TikTok\" && <BsTiktok />}\n          </a>\n        </Tooltip>\n    </li>\n  );\n}\n","import React from 'react';\nimport {\n    BsApple,\n    BsFacebook,\n    BsInstagram,\n    BsLink,\n    BsLinkedin,\n    BsSoundwave,\n    BsSpotify,\n    BsTiktok,\n    BsTwitter,\n    BsWordpress,\n    BsYoutube,\n} from \"react-icons/bs\";\nimport {\n    BiWorld,\n} from \"react-icons/bi\";\nimport { ItemSocial } from '../../pages/prideMusic/itemSocial';\n\nconst PrideMusicCard = ({ item }) => {\n    const { id, imageUrl, title, subtitle, genericContactInfo } = item;\n    const contactTypes = [\n        \"Instagram\",\n        \"Facebook\",\n        \"LinkedIn\",\n        \"Twitter\",\n        \"YoutubeChannel\",\n        \"Web\",\n        \"Apple\",\n        \"SoundCloud\",\n        \"LinkThree\",\n        \"TikTok\"\n    ];\n    const mainContact = genericContactInfo.find(g => g.mainContact);\n\n    return (\n        <div className=\"card-pride-music\" key={id}>\n            <div className=\"card-pride-music-thumb\">\n                <img src={imageUrl} alt=\"\" />\n            </div>\n            <div className=\"card-pride-music-content\">\n                <h4 className=\"text-center\">{title}</h4>\n                <p className=\"text-center\">{subtitle}</p>\n                <ul>\n                    {genericContactInfo.map((contactInfo, index) => {\n                        if (contactTypes.includes(contactInfo.contactTypeName) && !contactInfo.mainContact) {\n                            return (\n                                <ItemSocial\n                                    key={index}\n                                    contactValue={contactInfo.contactValue}\n                                    contactTypeName={contactInfo.contactTypeName}\n                                />\n                            );\n                        }\n                    })}\n                </ul>\n                <div className=\"card-pride-music-footer\">\n                    <a\n                        href={`${mainContact?.contactValue}`}\n                        target=\"_blank\"\n                        className=\"btn-gradient-music\"\n                    >\n                        <span>\n                            {mainContact?.contactTypeName == \"Spotify\" ? <BsSpotify /> : <BiWorld />}\n                        </span>\n                        <p>Escuchar</p>\n                    </a>\n                </div>\n            </div>\n        </div>\n    );\n}\n\nexport default PrideMusicCard;\n","import { callApi, callApiFileStorage } from \"./service\";\n\nexport const useGenericSection = {\n    getGenericItemByCompanyAndSection,\n    getGenericItemByCompany,\n    getGenericItemSectionsByCompany,\n    getGenericItemContactTypes,\n    createGenericSectionItem,\n    getGenericItemImageById,\n    deleteContactInfo,\n    deleteItem,\n    createContactInfos,\n    updateGenericSectionItem\n};\n\nasync function getGenericItemByCompanyAndSection(sectionId, id = 0, elements = 10) {\n    return callApi(`/backoffice/GetGenericSectionItemByCompanyAndSection?companyId=${process.env.REACT_APP_COMPANY}&genericSectionTypeId=${sectionId}&id=${id}&elements=${elements}`, \"GET\")\n        .then((result) => {\n            return handleResponse(result);\n        });\n}\n\nasync function getGenericItemImageById(genericItemId) {\n    return callApi('/backoffice/GenericSectionItem/WithImages/' + genericItemId, 'GET').then((result) => handleResponse(result));\n}\n\nasync function createGenericSectionItem(genericItem, files) {\n    var data = new FormData();\n    if (files) {\n        for (var i = 0; i < files.length; i++) {\n            var f = files[i];\n            data.append('files', f, f.name);\n        }\n    }\n\n    data.append(\"model\", JSON.stringify(genericItem));\n    return callApiFileStorage(`/backoffice/GenericSectionItem`, 'POST', data, false).then((result) => {\n        return handleResponse(result);\n    });\n}\n\nasync function updateGenericSectionItem(genericItem, files) {\n    const data = new FormData();\n    if (files) {\n        for (let i = 0; i < files.length; i++) {\n            const f = files[i];\n            data.append('files', f, f.name);\n        }\n    }\n\n    data.append(\"model\", JSON.stringify(genericItem));\n    return callApiFileStorage(`/backoffice/GenericSectionItem`, 'PUT', data, false).then((result) => {\n        return handleResponse(result);\n    });\n}\n\nasync function createContactInfos(contactInfos) {\n    return callApi(`/backoffice/GenericSectionItem/ContactInfo`, 'POST', contactInfos).then((result) => {\n        return handleResponse(result);\n    });\n}\n\nasync function getGenericItemByCompany(pageIndex, elements, sectionId = 0) {\n    return callApi(`/backoffice/GetGenericSectionItemByCompany?companyId=${process.env.REACT_APP_COMPANY}&pageIndex=${pageIndex}&elements=${elements}&sectionId=${sectionId}`, \"GET\")\n        .then((result) => {\n            return handleResponse(result);\n        });\n}\n\nasync function getGenericItemSectionsByCompany() {\n    return callApi(`/backoffice/GetGenericItemSections?companyId=${process.env.REACT_APP_COMPANY}`, \"GET\")\n        .then((result) => {\n            return handleResponse(result);\n        });\n}\n\nasync function getGenericItemContactTypes() {\n    return callApi(`/backoffice/GetGenericItemContactTypes`, \"GET\")\n        .then((result) => {\n            return handleResponse(result);\n        });\n}\n\nasync function deleteItem(id) {\n    return callApi(`/backoffice/GenericSectionItem/${id}`, \"DELETE\")\n        .then((result) => {\n            return handleResponse(result);\n        });\n}\n\nasync function deleteContactInfo(id) {\n    return callApi(`/backoffice/GenericSectionItem/ContactInfo/${id}`, \"DELETE\")\n        .then((result) => {\n            return handleResponse(result);\n        });\n}\n\nfunction handleResponse(result) {\n    if (result.responseCode === \"00\") return result.data;\n    else {\n        alert(result.responseMessage);\n        return null;\n    }\n}\n","import React, { useEffect, useState } from \"react\";\nimport \"./prideMusic.scss\";\nimport { Col, Row } from \"antd\";\nimport bannerMusic from \"../../assets/imgs/banner-music.jpg\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport PrideMusicCard from \"../../components/GenericSection/prideMusicCard\";\nimport { useGenericSection } from \"../../services/genericSection.service\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\n\nexport function PrideMusic() {\n  const [data, setData] = useState([]);\n  const [disabledHasMore, setDisabledHasMore] = useState(false);\n  const loadMore = () => {\n    if (data.length > 0) {\n      const lastitem = data.slice(-1).pop();\n      loadData(lastitem.genericSectionItemId);\n    }\n  };\n\n  useEffect(() => {\n    loadData();\n  }, []);\n\n  const loadData = (id) => {\n    useGenericSection.getGenericItemByCompanyAndSection(1, id).then(items => {\n      if (items.length > 0) {\n        const newItems = [...data, ...items];\n        setData(newItems);\n      } else {\n        setDisabledHasMore(true);\n      }\n    });\n  }\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <Row gutter={16}>\n        <Col xs={24}>\n          <h2>Pride Music</h2>\n        </Col>\n        <Col xs={24}>\n          <div className=\"drawer__bg__sections\">\n            <img\n              src={bannerMusic}\n              alt=\"Pride Music, Música por y para nuestra comunidad\"\n            />\n          </div>\n          {/* <div className=\"pride-music-header\">\n            <div\n              className=\"pride-music-content\"\n              style={{ backgroundImage: `url(${bgHeader})` }}\n            >\n              <div className=\"pride-music-info\">\n                <h3>Música por y para nuestra comunidad</h3>\n                <p>\n                  ¿Conoces a algún artista o grupo LGBTQ+ que podríamos agregar\n                  a esta sección? Notifícalo a Administrador PrideMx.\n                </p>\n              </div>\n              <div className=\"pride-music-img\">\n                <img src={imgHeader} alt=\"\" />\n              </div>\n            </div>\n          </div> */}\n        </Col>\n        <Col xs={24}>\n          <InfiniteScroll\n            dataLength={data.length}\n            next={() => loadMore()}\n            hasMore={!disabledHasMore}\n            loader={<h4>No tienes Pride Music previos</h4>}\n            scrollableTarget=\"scrollableDiv\"\n            style={{overflow: 'unset !important'}}\n          >\n            <Row gutter={16}>\n              {data.map((item, index) => {\n                return (\n                  <Col xl={8} lg={12} md={12} xs={24}>\n                    <PrideMusicCard key={index} item={item} />\n                  </Col>\n                );\n              })}\n            </Row>\n          </InfiniteScroll>\n        </Col>\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import React from \"react\";\nimport { Whisper } from \"rsuite\";\nimport {\n  BsFacebook,\n  BsInstagram,\n  BsLinkedin,\n  BsTiktok,\n  BsYoutube,\n} from \"react-icons/bs\";\nimport { BiHelpCircle, BiWorld } from \"react-icons/bi\";\nimport { FaXTwitter } from \"react-icons/fa6\";\nimport { Tooltip } from \"antd\";\n\nexport function ItemSocial(props) {\n  const renderTooltip = (\n    <Tooltip id=\"button-tooltip\">{props.socialIcoName}</Tooltip>\n  );\n\n  return (\n    <Whisper\n      placement=\"top\"\n      trigger=\"hover\"\n      speaker={renderTooltip}\n      controlId=\"button-tooltip\"\n    >\n      <Tooltip placement=\"bottom\" title={props.socialIcoName}>\n        <a href={props.socialUrl} target=\"_blank\" className=\"link\">\n          {props.socialIcoName === \"LinkedIn\" ? <BsLinkedin /> : \"\"}\n          {props.socialIcoName === \"Instagram\" ? <BsInstagram /> : \"\"}\n          {props.socialIcoName === \"Facebook\" ? <BsFacebook /> : \"\"}\n          {props.socialIcoName === \"Twitter\" ? <FaXTwitter /> : \"\"}\n          {props.socialIcoName === \"TikTok\" ? <BsTiktok /> : \"\"}\n          {props.socialIcoName === \"YoutubeChannel\" ? <BsYoutube /> : \"\"}\n          {props.socialIcoName === \"Help\" ? <BiHelpCircle /> : \"\"}\n          {props.socialIcoName === \"WebSite\" ? <BiWorld /> : \"\"}\n          {props.socialIcoName === \"Web\" ? <BiWorld /> : \"\"}\n        </a>\n      </Tooltip>\n    </Whisper>\n  );\n}\n","import React from \"react\";\nimport { BiPhone } from \"react-icons/bi\";\nimport { IoMail } from \"react-icons/io5\";\nimport { ItemSocial } from \"../../pages/interestGroup/itemSocial\";\n\nconst InterestGroupCard = ({ item }) => {\n  return (\n    <div className=\"card-interest-group\">\n      <div className=\"front\">\n        <img src={item.imageUrl} alt=\"\" />\n        <h4>{item.title}</h4>\n      </div>\n      <div className=\"back\">\n        <div className=\"info\">\n          <h6>\n            <span>DATOS DE CONTACTO</span>\n          </h6>\n          <h4>{item.title}</h4>\n          {item.genericContactInfo &&\n            item.genericContactInfo.map((contactInfo, index) => {\n              if (contactInfo.contactTypeName == \"Teléfono\") {\n                return (\n                  <p key={index}>\n                    <span>\n                      <BiPhone />\n                    </span>{\" \"}\n                    {contactInfo.contactValue}\n                  </p>\n                );\n              }\n\n              if (\n                contactInfo.contactTypeName == \"Email\" &&\n                contactInfo.contactValue\n              ) {\n                return (\n                  <div className={\"email\"} key={index}>\n                    <p>\n                      <IoMail />\n                    </p>\n                    <div className={\"email-text\"}>\n                      {contactInfo.contactValue}\n                    </div>\n                  </div>\n                );\n              }\n            })}\n          <div className=\"social-media social__interestgroup\">\n            {item.genericContactInfo &&\n              item.genericContactInfo.map((contactInfo, index) => {\n                if (contactInfo.iconImage) {\n                  return (\n                    <ItemSocial\n                      key={index}\n                      socialIcoName={contactInfo.contactTypeName}\n                      socialIco={contactInfo.iconImage}\n                      socialUrl={contactInfo.contactValue}\n                    />\n                  );\n                }\n              })}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default InterestGroupCard;\n","import React, { useState } from \"react\";\n\nimport \"./interestGroup.scss\";\nimport bannerGroups from \"../../assets/imgs/banner-grupos.png\";\nimport { Col, Row } from \"antd\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { useGenericSection } from \"../../services/genericSection.service\";\nimport { useEffect } from \"react\";\nimport InterestGroupCard from \"../../components/GenericSection/interestGroupCard\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\n\nexport function InterestGroup() {\n  const [data, setData] = useState([]);\n  const [disabledHasMore, setDisabledHasMore] = useState(false);\n\n  const loadMore = () => {\n    if (data.length > 0) {\n      const lastitem = data.slice(-1).pop();\n      loadData(lastitem.genericSectionItemId);\n    }\n  };\n\n  const loadData = (id) => {\n    useGenericSection.getGenericItemByCompanyAndSection(2, id, 9).then(items => {\n      if (items.length > 0) {\n        const newItems = [...data, ...items];\n        setData(newItems);\n      } else {\n        setDisabledHasMore(true);\n      }\n    });\n  }\n\n  useEffect(() => {\n    loadData();\n  }, []);\n\n  return (\n    <section className=\"dashboard-container-page pt-4\">\n      <h2>Grupos de Interés</h2>\n      <div className=\"drawer__bg__sections\">\n        <img\n          src={bannerGroups}\n          alt=\"Grupos donde nuestra comunidad es protagonista\"\n        />\n      </div>\n      {/* <div className=\"interest-group-header\">\n        <div className=\"title\">\n          <h3>Grupos donde nuestra comunidad es protagonista</h3>\n        </div>\n        <div className=\"imgs\">\n          <img src={imgHeader} alt=\"\" />\n        </div>\n      </div> */}\n\n      <InfiniteScroll\n        dataLength={data.length}\n        next={() => loadMore()}\n        hasMore={!disabledHasMore}\n        loader={<h4>No tienes Grupos de Interés previos</h4>}\n        scrollableTarget=\"scrollableDiv\"\n        style={{overflow: 'unset !important'}}\n      >\n          <Row>\n              {data.map((item, index) => {\n                  return (\n                      <Col xl={6} lg={8} md={12} sm={24} xs={24}>\n                        <InterestGroupCard key={index} item={item} />\n                      </Col>\n                  )\n              })}\n          </Row>\n      </InfiniteScroll>\n\n      <Row>\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import React, { useState } from \"react\";\nimport { Tooltip } from \"reactstrap\";\nimport {\n  BsFacebook,\n  BsInstagram,\n  BsLink,\n  BsLinkedin,\n  BsTiktok,\n  BsYoutube,\n} from \"react-icons/bs\";\n\nexport function ItemSocial(props) {\n  const [tooltipOpen, setTooltipOpen] = useState(false);\n\n  const toggle = () => setTooltipOpen(!tooltipOpen);\n\n  return (\n    <>\n      <a\n        href={props.socialUrl}\n        rel=\"noopener noreferrer\"\n        target=\"_blank\"\n        className=\"a_ico_social\"\n        id={\"Tooltip-\" + props.socialIcoName}\n      >\n        {props.socialIcoName === \"Instagram\" ? <BsInstagram /> : \"\"}\n        {props.socialIcoName === \"LinkedIn\" ? <BsLinkedin /> : \"\"}\n        {props.socialIcoName === \"Facebook\" ? <BsFacebook /> : \"\"}\n        {props.socialIcoName === \"Twitter\" ? (\n          <svg viewBox=\"0 0 512 512\" fill=\"white\" height=\"16\">\n            <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\" />\n          </svg>\n        ) : (\n          \"\"\n        )}\n        {props.socialIcoName === \"TikTok\" ? <BsTiktok /> : \"\"}\n        {props.socialIcoName === \"Youtube\" ? <BsYoutube /> : \"\"}\n        {props.socialIcoName === \"WebSite\" ? <BsLink /> : \"\"}\n        {props.socialIcoName === \"Web\" ? <BsLink /> : \"\"}\n      </a>\n      <Tooltip\n        placement=\"top\"\n        isOpen={tooltipOpen}\n        target={\"Tooltip-\" + props.socialIcoName}\n        toggle={toggle}\n      >\n        {props.socialIcoName}\n      </Tooltip>\n    </>\n  );\n}\n","import React from \"react\";\n\nexport function Rating({ min, max, onChange, value, edit }) {\n  const range = (min, max) =>\n  Array(max - min + 1).fill().map((_, i) => min + i)\n\n  const RatingItem  = ({ checked, colored, onChange, value }) => (\n    <label className={`rating__item ${colored ? 'rating__item--selected' : ''}`}>\n      <input\n        checked={checked}\n        className='rating__input'\n        onChange={(e) => onChange(value)}\n        type=\"radio\"\n        value={value}\n      />\n    </label>\n  )\n  const RatingDone  = ({ checked, colored }) => (\n    <label className={`rating__done ${colored ? 'rating__itemdone--selected' : ''}`}>\n      <input\n        checked={checked}\n        className='rating__input'\n        type=\"radio\"\n        value={value}\n        disabled={true}\n      />\n    </label>\n  )\n\n  return (\n    <div className='rating'>\n      {\n        range(min, max).map(item => (\n          edit ?\n            <RatingItem\n              colored={value >= item}\n              checked={value === item}\n              value={item}\n              onChange={onChange}\n              key= {item}\n            />\n          :\n            <RatingDone\n              colored={value >= item}\n              checked={value === item} \n              key= {item}\n            />\n              \n        ))\n      }\n    </div>\n  )\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { ItemSocial } from \"./itemSocial\";\nimport { directoryInfoService } from \"../../services/directoryService.service\";\nimport { Rating } from \"./rating\";\nimport { useLocation } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport ImgRecompensas from \"../../assets/imgs/iconos/ico_recompensas.png\";\nimport { Splide, SplideSlide } from \"@splidejs/react-splide\";\n\nimport { IoMail } from \"react-icons/io5\";\nimport { FaSave, FaMapMarkerAlt, FaPhone, FaEdit } from \"react-icons/fa\";\nimport { BsChevronLeft, BsChevronRight } from \"react-icons/bs\";\nimport { Col, FormGroup, Progress, Row } from \"reactstrap\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\n\nexport function DetailsDirectory() {\n  const location = useLocation();\n  const data = location.state;\n  const [directoryItem, setDirectoryItem] = useState([]);\n  const [profileId, setProfileId] = useState(0);\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [phoneNumbers, setPhoneNumbers] = useState([]);\n  const [email, setEmail] = useState(\"\");\n\n  const { DirectoryId } = useParams();\n\n  useEffect(() => {\n    if (data?.Item) {\n      const phonesArrays = data.Item.directoryContacts\n        ?.filter(\n          (f) =>\n            f.contactTypeId == 1 &&\n            f.contactValue != null &&\n            f.contactValue !== \"null\"\n        )\n        .map((item) => item.contactValue);\n      var emailvalue = data.Item.directoryContacts\n        ?.filter(\n          (f) =>\n            f.contactTypeId == 2 &&\n            f.contactValue != null &&\n            f.contactValue !== \"null\"\n        )\n        ?.map((item) => item.contactValue);\n      setPhoneNumbers(phonesArrays);\n      setEmail(emailvalue[0]);\n      isActiveDirectory(data?.Item.directoryInfoStatusId);\n      setDirectoryItem(data?.Item);\n    } else {\n      directoryInfoService.getById(DirectoryId).then((response) => {\n        response.contactImage = response.contactImage.split(\",\");\n        const phonesArrays = response.directoryContacts\n          ?.filter(\n            (f) =>\n              f.contactTypeId == 1 &&\n              f.contactValue != null &&\n              f.contactValue !== \"null\"\n          )\n          .map((item) => item.contactValue);\n        const emailvalue = response.directoryContacts\n          ?.filter(\n            (f) =>\n              f.contactTypeId === 2 &&\n              f.contactValue != null &&\n              f.contactValue !== \"null\"\n          )\n          ?.map((item) => item.contactValue);\n        setPhoneNumbers(phonesArrays);\n        setEmail(emailvalue[0]);\n        isActiveDirectory(response.directoryInfoStatusId);\n        setDirectoryItem(response);\n      });\n    }\n\n    directoryInfoService.setDirectoryView(DirectoryId).then((response) => {});\n\n    if (data?.profileId) {\n      setProfileId(data?.profileId);\n    } else {\n      let id = localStorage[\"userId\"];\n      setProfileId(id);\n    }\n  }, []);\n\n  function isActiveDirectory(status) {\n    if (status != 2) window.location.href = \"/directory\";\n  }\n\n  const minValue = 1;\n  const maxValue = 5;\n  const [estrellas, setEstrellas] = useState([0, 0, 0, 0, 0]);\n  const [avrScore, setAvrScore] = useState(0);\n  const [avrText, setAvrText] = useState(0);\n  const [avrScoreA, setAvrScoreA] = useState(0);\n  const [avrScoreB, setAvrScoreB] = useState(0);\n  const [avrScoreC, setAvrScoreC] = useState(0);\n  const [edit, setEdit] = useState(true);\n  const [editA, setEditA] = useState(true);\n  const [editB, setEditB] = useState(true);\n  const [editC, setEditC] = useState(true);\n  const [isEval, setIsEval] = useState(false);\n  const [evalA, setEvalA] = useState(0);\n  const [evalB, setEvalB] = useState(0);\n  const [evalC, setEvalC] = useState(0);\n\n  const directoryContacts = directoryItem.directoryContacts;\n\n  const directoryRatings = directoryItem.directoryRatings;\n\n  function updateScore(score, type) {\n    if (type == 1) setEvalA(score.rating);\n    if (type == 2) setEvalB(score.rating);\n    if (type == 3) setEvalC(score.rating);\n  }\n\n  useEffect(() => {\n    if (directoryRatings && directoryRatings.length > 0) {\n      var sum = directoryRatings.reduce(function (prev, current) {\n        return prev + +current.score;\n      }, 0);\n\n      var average = sum / directoryRatings.length;\n      var averagefloor = Math.floor(average);\n\n      setAvrText(average.toFixed(1));\n      setAvrScore(directoryRatings.length);\n\n      var serviceRating = directoryRatings.filter(\n        (item) => 1 == item.directoryRatingTypeId\n      );\n      var priceRating = directoryRatings.filter(\n        (item) => 2 == item.directoryRatingTypeId\n      );\n      var qualityRating = directoryRatings.filter(\n        (item) => 3 == item.directoryRatingTypeId\n      );\n\n      var uno = directoryRatings.filter((item) => 1 == item.score).length;\n      var dos = directoryRatings.filter((item) => 2 == item.score).length;\n      var tres = directoryRatings.filter((item) => 3 == item.score).length;\n      var cuatro = directoryRatings.filter((item) => 4 == item.score).length;\n      var cinco = directoryRatings.filter((item) => 5 == item.score).length;\n\n      setEstrellas([uno, dos, tres, cuatro, cinco]);\n\n      if (serviceRating.length > 0) {\n        var service = infoType(serviceRating);\n        setAvrScoreA(service[0]);\n        setEditA(service[1]);\n        setEvalA(service[2]);\n      }\n      if (priceRating.length > 0) {\n        var service = infoType(priceRating);\n        setAvrScoreB(service[0]);\n        setEditB(service[1]);\n        setEvalB(service[2]);\n      }\n      if (qualityRating.length > 0) {\n        var service = infoType(qualityRating);\n        setAvrScoreC(service[0]);\n        setEditC(service[1]);\n        setEvalC(service[2]);\n      }\n    }\n  }, [directoryItem]);\n  useEffect(() => {\n    if (!editA && !editB && !editC) {\n      setEdit(false);\n    }\n  }, [editA, editB, editC]);\n\n  const infoType = (item) => {\n    var data = [0, true, 0];\n    var sum = item.reduce(function (prev, current) {\n      return prev + +current.score;\n    }, 0);\n    var average = sum / item.length;\n    var averagefloor = Math.floor(average);\n    data[0] = averagefloor;\n    var userScore = item.filter((item) => profileId == item.userProfileAsp);\n    if (userScore.length > 0) {\n      data[1] = false;\n      data[2] = userScore[0].score;\n    }\n    return data;\n  };\n\n  async function setScoreGroup() {\n    var A = insertScore(evalA, 1);\n  }\n\n  function insertScore(score, type) {\n    var data = new FormData();\n    data.append(\"DirectoryRatingId\", 0);\n    data.append(\"DirectoryInfoId\", directoryItem.directoryInfoId);\n    data.append(\"DirectoryRatingTypeId\", type);\n    data.append(\"UserProfileId\", 0);\n    data.append(\"UserProfileAsp\", profileId);\n    data.append(\"Score\", score);\n    data.append(\"Active\", true);\n\n    directoryInfoService.setDirectoryScore(data).then((response) => {\n      if (response) {\n        if (type == 1) {\n          setEditA(false);\n          insertScore(evalB, 2);\n        }\n        if (type == 2) {\n          setEditB(false);\n          insertScore(evalC, 3);\n        }\n        if (type == 3) {\n          setEditC(false);\n          directoryInfoService\n            .getById(directoryItem.directoryInfoId)\n            .then((response) => {\n              response.contactImage = response.contactImage.split(\",\");\n              setDirectoryItem(response);\n            });\n        }\n        return true;\n      }\n    });\n    return false;\n  }\n\n  const validaUsuario = (url, start) => {\n    var res = url.toUpperCase().startsWith(\"HTTP\");\n    if (res) {\n      return url;\n    }\n    return start + url;\n  };\n\n  const validaWeb = (url) => {\n    var res = url.toUpperCase().startsWith(\"HTTP\");\n    if (res) {\n      return url;\n    }\n    return \"https://\" + url;\n  };\n\n  const [activeBoxTooltip, setBoxTooltip] = useState(\"d-none\");\n  const showBoxTooltip = () => {\n    setBoxTooltip(activeBoxTooltip === \"\" ? \" is-show\" : \"\");\n  };\n\n  const updateReward = () => {\n    directoryInfoService\n      .updateDirectoryReward(\n        directoryItem.directoryInfoId,\n        !directoryItem.isEnableRewards\n      )\n      .then((result) => {\n        if (result.data === \"ok\") {\n          setDirectoryItem({\n            ...directoryItem,\n            isEnableRewards: !directoryItem.isEnableRewards,\n          });\n        }\n      });\n  };\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <article className=\"d-flex-between\">\n        <h2>Economía Incluyente</h2>\n        <Link to=\"/directory\" className=\"btn-back\">\n          <i className=\"icon-chevron-left\"></i> <p>Volver</p>\n        </Link>\n      </article>\n      <article className=\"card-directory-detail\">\n        <section className=\"thumb\">\n          <div className=\"title\">\n            <div className=\"tags\">\n              <span className=\"category\">\n                {directoryItem ? directoryItem.categoryServiceName : \"\"}\n              </span>\n              <span className=\"subcategory\">\n                {directoryItem ? directoryItem.subCategoryServiceName : \"\"}\n              </span>\n            </div>\n          </div>\n          <h4>{directoryItem ? directoryItem.fullName : \"\"}</h4>\n          <p>{directoryItem ? directoryItem.directoryDescription : \"\"}</p>\n          <div className=\"img-detail\">\n            {directoryItem.isEnableRewards ? (\n              <Link to=\"/Rewards\" className=\"img-rewards\">\n                <img\n                  src={ImgRecompensas}\n                  alt=\"Este articulo tiene recompensas en PrideMx\"\n                />\n              </Link>\n            ) : (\n              \"\"\n            )}\n            <Splide\n              options={{\n                pagination: true,\n                arrows: true,\n                autoplay: true,\n                rewind: true,\n                perMove: 1,\n                perPage: 1,\n                rewindByDrag: true,\n                speed: 1000,\n                drag: true,\n              }}\n            >\n              {directoryItem.contactImage &&\n                directoryItem.contactImage.map((itemImage, indice) => {\n                  return (\n                    <SplideSlide>\n                      <div className=\"group-item\">\n                        <img\n                          src={itemImage}\n                          alt={`${directoryItem.fullName + indice}`}\n                        />\n                      </div>\n                    </SplideSlide>\n                  );\n                })}\n            </Splide>\n          </div>\n        </section>\n        <section className=\"info\">\n          <div className=\"content\">\n            <div className=\"content_info_a\">\n              <h5>Datos de contacto</h5>\n              <div className=\"data\">\n                <div className=\"data-items\">\n                  <div className=\"item\">\n                    <span className=\"icodata\">\n                      <FaMapMarkerAlt></FaMapMarkerAlt>\n                    </span>\n                    <p>{directoryItem ? directoryItem.location : \"\"}</p>\n                  </div>\n                  {directoryItem && directoryItem.directoryContacts\n                    ? phoneNumbers.map((item, i) => {\n                        return (\n                          <div className=\"item\" key={i + i}>\n                            <span className=\"icodata\">\n                              <FaPhone></FaPhone>\n                            </span>\n                            <a className=\"alinks\" href={`tel:${item}`}>\n                              {item}\n                            </a>\n                          </div>\n                        );\n                      })\n                    : null}\n                  <div className=\"item\">\n                    <span className=\"icodata\">\n                      <IoMail></IoMail>\n                    </span>\n                    {directoryItem && directoryItem.directoryContacts ? (\n                      <a href={`mailto:${email}`}>{email}</a>\n                    ) : (\n                      \"\"\n                    )}\n                  </div>\n                </div>\n                <ul className=\"social-media\">\n                  {directoryItem && directoryItem.directoryContacts\n                    ? directoryItem.directoryContacts.map((itemSocial) =>\n                        itemSocial.contactTypeId > 2 ? (\n                          <li key={itemSocial.directoryContactId}>\n                            <ItemSocial\n                              socialIcoName={itemSocial.contactTypeName}\n                              socialIco={itemSocial.iconImage}\n                              socialUrl={\n                                itemSocial.contactTypeId == 3\n                                  ? validaWeb(itemSocial.contactValue)\n                                  : validaUsuario(\n                                      itemSocial.contactValue,\n                                      itemSocial.urlString\n                                    )\n                              }\n                            />\n                          </li>\n                        ) : (\n                          \"\"\n                        )\n                      )\n                    : \"\"}\n                </ul>\n                {roleName === \"Recursos Humanos\" ? (\n                  <>\n                    <hr />\n                    <FormGroup className=\"d-flex-start\">\n                      <label\n                        className=\"toggler-wrapper dark\"\n                        htmlFor=\"exampleCheck1\"\n                      >\n                        <input\n                          type=\"checkbox\"\n                          className=\"form-check-input\"\n                          id=\"exampleCheck1\"\n                          checked={\n                            directoryItem.isEnableRewards ? \"checked\" : \"\"\n                          }\n                          onChange={(e) => updateReward()}\n                        />\n                        <div className=\"toggler-slider\">\n                          <div className=\"toggler-knob\"></div>\n                        </div>\n                      </label>\n                      <p style={{ marginLeft: \".5rem\" }}>\n                        Habilitar recompensas\n                      </p>\n                    </FormGroup>\n                    <div className=\"\">\n                      <Link\n                        className=\"btn-outline-dark\"\n                        to={{\n                          pathname: `/register-services/${directoryItem.directoryInfoId}`,\n                          state: {\n                            Item: directoryItem,\n                            profileId: profileId,\n                            origin: `/details-directory/${directoryItem.directoryInfoId}`,\n                          },\n                        }}\n                      >\n                        <p>Editar Publicación</p>\n                        <FaEdit />\n                      </Link>\n                    </div>\n                  </>\n                ) : (\n                  \"\"\n                )}\n              </div>\n            </div>\n            <div className=\"content_info_b\">\n              <h5>Evaluaciones</h5>\n              <div className=\"data\">\n                <div className=\"data-ranking\">\n                  {isEval ? (\n                    <div className=\"services one\">\n                      <h6>Evaluación</h6>\n                      <div className=\"service\">\n                        <span>{\"Servicio\"}</span>\n                        <Rating\n                          min={minValue}\n                          max={maxValue}\n                          onChange={(rating) => {\n                            updateScore({ rating }, 1);\n                          }}\n                          value={evalA}\n                          edit={editA}\n                        />\n                      </div>\n                      <div className=\"service\">\n                        <span>{\"Precio\"}</span>\n                        <Rating\n                          min={minValue}\n                          max={maxValue}\n                          onChange={(rating) => {\n                            updateScore({ rating }, 2);\n                          }}\n                          value={evalB}\n                          edit={editB}\n                        />\n                      </div>\n                      <div className=\"service\">\n                        <span>{\"Calidad\"}</span>\n                        <Rating\n                          min={minValue}\n                          max={maxValue}\n                          onChange={(rating) => {\n                            updateScore({ rating }, 3);\n                          }}\n                          value={evalC}\n                          edit={editC}\n                        />\n                      </div>\n                    </div>\n                  ) : (\n                    <div className=\"services two\">\n                      <h6>{avrText} de 5</h6>\n                      <div className=\"service\">\n                        <p>{\"Servicio\"}</p>\n                        <Rating\n                          min={minValue}\n                          max={maxValue}\n                          value={avrScoreA}\n                          edit={false}\n                        />\n                      </div>\n                      <div className=\"service\">\n                        <p>{\"Precio\"}</p>\n                        <Rating\n                          min={minValue}\n                          max={maxValue}\n                          value={avrScoreB}\n                          edit={false}\n                        />\n                      </div>\n                      <div className=\"service\">\n                        <p>{\"Calidad\"}</p>\n                        <Rating\n                          min={minValue}\n                          max={maxValue}\n                          value={avrScoreC}\n                          edit={false}\n                        />\n                      </div>\n                    </div>\n                  )}\n                  <div className=\"btns\">\n                    {edit ? (\n                      <button type=\"button\" onClick={() => setIsEval(!isEval)}>\n                        {isEval ? (\n                          <i>\n                            <BsChevronLeft />\n                          </i>\n                        ) : (\n                          \"\"\n                        )}\n                        {isEval ? \"Volver\" : \"Evaluar\"}\n                        {isEval ? (\n                          \"\"\n                        ) : (\n                          <i>\n                            <BsChevronRight />\n                          </i>\n                        )}\n                      </button>\n                    ) : (\n                      <button type=\"button\" onClick={() => setIsEval(!isEval)}>\n                        {isEval ? (\n                          <i>\n                            <BsChevronLeft />\n                          </i>\n                        ) : (\n                          \"\"\n                        )}\n                        {isEval ? \"Volver\" : \"Mi Evaluación\"}\n                        {isEval ? (\n                          \"\"\n                        ) : (\n                          <i>\n                            <BsChevronRight />\n                          </i>\n                        )}\n                      </button>\n                    )}\n                    {isEval && evalA > 0 && evalB > 0 && evalC > 0 && edit && (\n                      <button type=\"button\" onClick={() => setScoreGroup()}>\n                        {\"Guardar\"}\n                        <i>\n                          <FaSave />\n                        </i>\n                      </button>\n                    )}\n                  </div>\n                </div>\n                <div className={`data-ranking-tooltip`}>\n                  <p>Total de evaluaciones: {avrScore}</p>\n                  <div className=\"item\">\n                    <Rating\n                      min={minValue}\n                      max={maxValue}\n                      value={5}\n                      edit={false}\n                    />\n                    <span style={{ flex: 1 }}>\n                      <Progress\n                        variant=\"mycolor\"\n                        min={0}\n                        max={avrScore}\n                        value={estrellas[4]}\n                      />\n                    </span>\n                    <span\n                      style={{\n                        minWidth: \"10px\",\n                        textAlign: \"right\",\n                        fontSize: \"12px\",\n                        padding: \"2px\",\n                      }}\n                    >\n                      {estrellas[4]}\n                    </span>\n                  </div>\n                  <div className=\"item\">\n                    <Rating\n                      min={minValue}\n                      max={maxValue}\n                      value={4}\n                      edit={false}\n                    />\n                    <span style={{ flex: 1 }}>\n                      <Progress\n                        variant=\"mycolor\"\n                        min={0}\n                        max={avrScore}\n                        value={estrellas[3]}\n                      />\n                    </span>\n                    <span\n                      style={{\n                        minWidth: \"10px\",\n                        textAlign: \"right\",\n                        fontSize: \"12px\",\n                        padding: \"2px\",\n                      }}\n                    >\n                      {estrellas[3]}\n                    </span>\n                  </div>\n                  <div className=\"item\">\n                    <Rating\n                      min={minValue}\n                      max={maxValue}\n                      value={3}\n                      edit={false}\n                    />\n                    <span style={{ flex: 1 }}>\n                      <Progress\n                        variant=\"mycolor\"\n                        min={0}\n                        max={avrScore}\n                        value={estrellas[2]}\n                      />\n                    </span>\n                    <span\n                      style={{\n                        minWidth: \"10px\",\n                        textAlign: \"right\",\n                        fontSize: \"12px\",\n                        padding: \"2px\",\n                      }}\n                    >\n                      {estrellas[2]}\n                    </span>\n                  </div>\n                  <div className=\"item\">\n                    <Rating\n                      min={minValue}\n                      max={maxValue}\n                      value={2}\n                      edit={false}\n                    />\n                    <span style={{ flex: 1 }}>\n                      <Progress\n                        variant=\"mycolor\"\n                        min={0}\n                        max={avrScore}\n                        value={estrellas[1]}\n                      />\n                    </span>\n                    <span\n                      style={{\n                        minWidth: \"10px\",\n                        textAlign: \"right\",\n                        fontSize: \"12px\",\n                        padding: \"2px\",\n                      }}\n                    >\n                      {estrellas[1]}\n                    </span>\n                  </div>\n                  <div className=\"item\">\n                    <Rating\n                      min={minValue}\n                      max={maxValue}\n                      value={1}\n                      edit={false}\n                    />\n                    <span style={{ flex: 1 }}>\n                      <Progress\n                        variant=\"mycolor\"\n                        min={0}\n                        max={avrScore}\n                        value={estrellas[0]}\n                      />\n                    </span>\n                    <span\n                      style={{\n                        minWidth: \"10px\",\n                        textAlign: \"right\",\n                        fontSize: \"12px\",\n                        padding: \"2px\",\n                      }}\n                    >\n                      {estrellas[0]}\n                    </span>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      </article>\n      <Row>\n        <Col sm={12}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import React from 'react'\nimport './providerImage.scss'\n\nconst ProviderImage = ({ urlImageVideo }) => {\n  return (\n    <div className=\"box_provider_image\">\n          <img src={urlImageVideo} alt=\"Proveedor\" />\n    </div>\n  )\n}\n\nexport default ProviderImage;","import React from 'react'\nimport './providerVideo.scss'\n\nconst ProviderVideo = ({ urlVideo }) => {\n  return (\n    <div className=\"box_iframe_video\">\n          <iframe width=\"560\" height=\"315\" src={urlVideo} frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n    </div>\n  )\n}\n\nexport default ProviderVideo;","import React, { Fragment, useEffect, useState } from \"react\";\nimport useInputSingleForm from \"../components/CustonHooks/inputFormHook\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { callApi } from './service'\n\nexport const googleAds = {\n    cartEvent,\n    simpleEvent\n}\n\nconst googleId = process.env.REACT_APP_GOOGLE_ADDS\nconst suscription = process.env.REACT_APP_GOOGLE_SUSCIPTION\nconst cart = process.env.REACT_APP_GOOGLE_CART\n\n{/* <script>\n  gtag('event', 'conversion', {'send_to': 'AW-11019800499/dYccCK26xIYYELOf04Yp'});\n</script> */}\n\n\n{/* <script>\n  gtag('event', 'conversion', {\n      'send_to': 'AW-11019800499/qEG9CMOnz4YYELOf04Yp',\n      'value': 1.0,\n      'currency': 'MXN'\n  });\n</script> */}\n\n\nasync function simpleEvent(type) {\n    console.log('suscription',googleId+'/'+suscription)\n    window.gtag('event', type, {'send_to': googleId+'/'+suscription});\n}\n\nasync function cartEvent(type, data) {\n    console.log('cart',googleId+'/'+cart)\n    console.log('data',data)\n    var event  = window.gtag('event', type, {\n        'send_to': googleId+'/'+cart,\n        'value': data,\n        'currency': 'MXN'\n    });\n    console.log(event)\n}\n\n","import React, { useState } from \"react\";\nimport {Modal, ModalBody, Tooltip} from \"reactstrap\";\nimport { useSelector } from \"react-redux\";\nimport { cartHook } from \"../../hooks/cart.hook\";\nimport swal from \"sweetalert\";\nimport { googleAds } from \"../../services/googleAds.service\";\nimport imgEmpty from '../../assets/imgs/no-image.jpeg';\nimport {Button} from \"rsuite\";\n\nconst ItemProduct = ({ product, provider }) => {\n  const countrySetting = useSelector((state) => state.countrySetting);\n\n  const [tooltipOpen, setTooltipOpen] = useState(false);\n  const [activeBoxTooltip, setBoxTooltip] = useState(\"\");\n\n  const showBoxTooltip = () => {\n    setBoxTooltip(activeBoxTooltip === \"\" ? \" is-show\" : \"\");\n  };\n\n  const toggle = () => setTooltipOpen(!tooltipOpen);\n\n  const addPruchaseItem = () => {\n    googleAds.cartEvent('conversion', product.productPrice)\n    cartHook.addItem(product, provider);\n    swal({\n      icon: \"success\",\n      title: \"Agregado\",\n      text: \"Se agregó el producto a tu carrito\",\n      button: false,\n      closeOnEsc: true,\n      timer: 2250,\n    });\n  };\n\n  const [modal, setModal] = useState(false);\n\n  const toggleModal = () => setModal(!modal);\n\n  return (\n    <>\n      <div className=\"item-promo\">\n        <div className=\"item-promo-img\">\n          <img src={(product.urlImage) ? product.urlImage : imgEmpty} alt=\"product\" />\n        </div>\n        <div className=\"item-promo-info\">\n          <div className=\"name\">\n            <p>{product.name}</p>\n            <Button onClick={toggleModal}>\n              <i className=\"fas fa-info-circle\"></i>\n            </Button>\n          </div>\n          <div className=\"price-add box_flex \">\n            <span className=\"price\">\n              <small>Por solo</small>\n              <h4>\n                {countrySetting.currency}\n                {Number(product.productPrice).toLocaleString(\n                  countrySetting.cultureCode,\n                  {\n                    minimumFractionDigits: 0,\n                    maximumFractionDigits: 2,\n                  }\n                )}\n              </h4>\n            </span>\n            <span onClick={addPruchaseItem}>\n              <Button className=\"btn-add\" id={`Tooltip${product.productId}`}>\n                <i className=\"fas fa-cart-plus\"></i>\n              </Button>\n              <Tooltip placement=\"bottom\" isOpen={tooltipOpen} target={`Tooltip${product.productId}`} toggle={toggle}>\n                Agregar a canasta\n              </Tooltip>\n            </span>\n          </div>\n        </div>\n      </div>\n      <Modal className=\"modal__provider\" isOpen={modal} centered={true} size=\"md\">\n        <ModalBody>\n          <Button className=\"btn-close-modal\" onClick={toggleModal}><i className=\"icon-close\"></i></Button>\n          <p style={{textAlign: 'center'}}>{(product.restrictions) ? product.restrictions : `No hay restricciones para este producto`}</p>\n        </ModalBody>\n      </Modal>\n    </>\n  );\n};\n\nexport default ItemProduct;\n","import React, { Component } from \"react\";\nimport { ToolDiscount } from \"../../../components/toolDiscount/toolDiscount\";\nimport ProviderImage from \"../../../components/providerImage/providerImage\";\nimport ProviderVideo from \"../../../components/providerVideo/providerVideo\";\nimport ItemProduct from \"../../../components/itemProduct/itemProduct\";\nimport \"./provider.scss\";\nimport { ecommerceService } from \"../../../services/ecommerce.service\";\nimport { FooterHome } from \"../../../components/footer/footerHome\";\nexport class Provider extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      providerProducts: {\n        provider: {},\n        products: [],\n      },\n    };\n    this.isCaringCommunity =\n      props.location.pathname.includes(\"caring-community\");\n  }\n\n  componentWillMount() {\n    ecommerceService\n      .getProviderProducts(this.props.match.params.id)\n      .then((result) => {\n        this.setState({ providerProducts: result });\n      });\n  }\n\n  render() {\n    const { providerProducts } = this.state;\n    const { provider } = providerProducts;\n    const { products } = providerProducts;\n    return (\n      <div className=\"dashboard-container-page\">\n        <div className=\"provider-header\">\n          <div className=\"provider-header-logo\">\n            <img src={provider.urlLogoClrs} alt=\"LogoProvider\" />\n          </div>\n          <ToolDiscount isCaringCommunity={this.isCaringCommunity} />\n        </div>\n        <div className=\"content__hd__provider\">\n         <div className=\"cont_ttl_descript_provider\">\n         <h3 >\n            {provider.info\n              ? provider.info\n              : \"Encuentra y compra aquí con descuentos especiales para ti\"} \n          </h3>\n         </div>\n          <div className=\"info_media\">\n            {provider.urlVideo != \"\" ? (\n              <ProviderVideo urlVideo={provider.urlVideo} />\n            ) : (\n              <ProviderImage urlImageVideo={provider.urlImageVideo} />\n            )}\n          </div>\n        </div>\n\n        <div className=\"items-promo\">\n          {products.map((item) => (\n            <ItemProduct product={item} provider={provider} />\n          ))}\n        </div>\n        <FooterHome />\n      </div>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport BoxPayMethod from '../../components/boxPayMethod/boxPayMethod'\nimport { Link } from 'react-router-dom';\n\nexport class PaymentCanceled extends Component {\n\tstatic displayName = PaymentCanceled.name;\n\n\trender() {\n\t\treturn (\n\t\t\t<div className=\"wrapping_pay_canceled\">\n\t\t\t\t<div className=\"container\">\n\t\t\t\t\t<div className=\"row align-items-center\">\n\t\t\t\t\t\t<div className=\"col-md-6 text-center\">\n\t\t\t\t\t\t\t<div className=\"box_cancel\">\n\t\t\t\t\t\t\t\t<p className=\"cancel_label\">CANCELACIÓN</p>\n\t\t\t\t\t\t\t\t<div className=\"cancel_box_icons\">\n\t\t\t\t\t\t\t\t\t<span><i className=\"far fa-frown\"></i></span>\n\t\t\t\t\t\t\t\t\t<h1>¡Oops!</h1>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"cancel_info\">\n\t\t\t\t\t\t\t\t\t<h4 className=\"text fnt_medium\">Algo salió mal con tu orden</h4>\n\t\t\t\t\t\t\t\t\t<p className>Ocurrió un problema con el pago de tu orden, ha sido cancelada o rechazada por el banco.</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"col-md-6 text-center\">\n\t\t\t\t\t\t\t<div className=\"box_new_try\">\n\t\t\t\t\t\t\t\t<div className=\"new_try\">\n\t\t\t\t\t\t\t\t\t<h4 className=\"text fnt_medium c_green\">Intentémos de nuevo</h4>\n\t\t\t\t\t\t\t\t\t<p>¿Quieres volver a intentar con otra tarjeta u otra forma de pago?</p>\n\t\t\t\t\t\t\t\t\t<BoxPayMethod />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"new_try\">\n\t\t\t\t\t\t\t\t\t{/*<p className=\"m-0\">o ¿Quieres guardar tu compra para más tarde?</p>\n                  <p><small className=\"c_primary\">Recuerda que tienes 12hrs. para volver por tu compra</small></p>*/}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"text-center box_actions_pay\">\n\t\t\t\t\t\t\t\t\t<Link className=\"btn primary \" to=\"/home\">Ir a inicio</Link>\n\t\t\t\t\t\t\t\t\t{/*<Link className=\"btn rb_go\" to=\"/shopping\">Si, guardar compra</Link>*/}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React from 'react';\nimport './purchasedItemDetails.scss';\nimport { useSelector } from 'react-redux';\n\nconst PurchasedItemDetails = (props) => {\n    const countrySetting = useSelector(state => state.countrySetting);\n\n    return (\n        <div className=\"content_item_shopping\">\n            <div className=\"row align-items-center\">\n                <div className=\"col-lg-3\">\n                    <span className=\"bg_logo_shop\">\n                        <img src={props.logo} alt=\"\" />\n                    </span>\n                </div>\n                <div className=\"col-lg-9\">\n                    <p className=\"item_purchased box_flex\">\n                        <span>({props.quantity})</span>\n                        <span>{props.description}</span>\n                        <span>{countrySetting.currency}{(Number(props.subTotal)).toLocaleString(countrySetting.cultureCode, { minimumFractionDigits: 0, maximumFractionDigits: 2 })}</span>\n                    </p>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default PurchasedItemDetails;","import React, { useState } from 'react'\nimport { Collapse } from 'reactstrap';\nimport PurchasedItemDetails from '../purchasedItemDetails';\nimport './purchasedItem.scss';\nimport { useSelector } from 'react-redux';\nimport { ecommerceService } from \"../../../../services/ecommerce.service\";\n\nconst PurchasedItem = (props) => {\n  const countrySetting = useSelector(state => state.countrySetting);\n\n  const [collapse, setCollapse] = useState(false);\n  const [activeChevron, setStateChevron] = useState('')\n\n  const download = (orderId) => {\n    //dispatch(toggleBlocking());\n    ecommerceService.downloadSaleAsPDF(orderId);\n  }\n\n  function toggle() {\n    setCollapse(!collapse);\n    setStateChevron(activeChevron === '' ? 'open' : '')\n  }\n\n  return (\n    <div className=\"wrapper_purchased_item \">\n\n      <div className=\"head_purchased_item\" onClick={toggle}>\n        <div className=\"col_unicas\">\n          <span className={`ico_chevron ${activeChevron}`} >\n            <i className=\"fas fa-chevron-down\"></i>\n          </span>\n          <div className=\"cols\">\n            <h6 className=\"ttl_info\">Fecha de pedido</h6>\n            <p className=\"p_info\">{props.date}</p>\n          </div>\n          <div className=\"cols\">\n            <h6 className=\"ttl_info\">No. de pedido</h6>\n            <p className=\"p_info\">{props.orderNumber}</p>\n          </div>\n          <div className=\"cols\">\n            <h6 className=\"ttl_info\">Total</h6>\n            <p className=\"p_info\">{countrySetting.currency}{(Number(props.total)).toLocaleString(countrySetting.cultureCode, { minimumFractionDigits: 0, maximumFractionDigits: 2 })}</p>\n          </div>\n          <div className=\"cols text-center\">\n            <h6 className=\"ttl_info\">Estatus</h6>\n            <p className=\"p_info\"> <span className=\"paid\">{props.status}</span> </p>\n          </div>\n        </div>\n      </div>\n      <Collapse\n        isOpen={collapse}\n        className=\"body_purchased_item\"\n      >\n        <div className=\"row align-items-center\">\n          <div className=\"col-md-6 col-lg-8 info_item_shopping\">\n            {\n              props.details.map(item => {\n                return <PurchasedItemDetails {...item} />\n              })\n            }\n          </div>\n\n          <div className=\"col-md-6 col-lg-4\">\n            <div className=\"action_item_shopping\">\n              {props.status === \"La orden ha sido pagada\" && <p><button className=\"btn primary\" onClick={() => download(props.orderId)} > <i className=\"fas fa-download\"></i> Descargar</button></p>}\n              <p ><small className=\"mt-4\">Si tuviste algún problema para recibir tus folios, vuelve a intentarlo aquí.</small></p>\n            </div>\n          </div>\n        </div>\n\n      </Collapse>\n    </div>\n  )\n}\nexport default PurchasedItem;","import React from 'react';\nimport { createUltimatePagination, ITEM_TYPES } from 'react-ultimate-pagination';\n\n\nconst Page = ({ value, isActive, onClick, isDisabled }) => (\n    <button\n        className={isActive ? \"isActive\" : \"\"}\n        onClick={onClick}\n        disabled={isDisabled}\n    > {value}\n    </button>\n);\n\nconst Ellipsis = ({ onClick, isDisabled }) => (\n    <button\n        onClick={onClick}\n        disabled={isDisabled}\n    >...</button>\n);\n\nconst FirstPageLink = ({ onClick, isDisabled }) => (\n    <button\n        onClick={onClick}\n        disabled={isDisabled}\n    ><i className=\"fas fa-step-backward\"></i></button>\n);\n\nconst PreviousPageLink = ({ onClick, isDisabled }) => (\n    <button\n        onClick={onClick}\n        disabled={isDisabled}\n    ><i className=\"fas fa-chevron-left\"></i></button>\n);\n\nconst NextPageLink = ({ onClick, isDisabled }) => (\n    <button\n        onClick={onClick}\n        disabled={isDisabled}\n    ><i className=\"fas fa-chevron-right\"></i></button>\n);\n\nconst LastPageLink = ({ onClick, isDisabled }) => (\n    <button\n        onClick={onClick}\n        disabled={isDisabled}\n    ><i className=\"fas fa-step-forward\"></i></button>\n);\n\nconst itemTypeToComponent = {\n    [ITEM_TYPES.PAGE]: Page,\n    [ITEM_TYPES.ELLIPSIS]: Ellipsis,\n    [ITEM_TYPES.FIRST_PAGE_LINK]: FirstPageLink,\n    [ITEM_TYPES.PREVIOUS_PAGE_LINK]: PreviousPageLink,\n    [ITEM_TYPES.NEXT_PAGE_LINK]: NextPageLink,\n    [ITEM_TYPES.LAST_PAGE_LINK]: LastPageLink\n};\n\nexport const PaginatedPage = createUltimatePagination({ itemTypeToComponent });","import React, { useState, useEffect } from 'react';\nimport { ToolDiscount } from '../../../components/toolDiscount/toolDiscount'\nimport PurchasedItem from './purchasedItem';\nimport { PaginatedPage } from './pagination';\nimport './shoppingHistory.scss'\nimport { ecommerceService } from '../../../services/ecommerce.service';\nimport {Col, Row} from \"reactstrap\";\n\nexport function ShoppingHistory() {\n\n    const [shoppingHistory, setShoppingHistory] = useState([]);\n\n    const [page, setPage] = useState(1);\n    const totalPages = shoppingHistory.length > 0 ? shoppingHistory.length : 1;\n\n    useEffect(() => {\n        ecommerceService.getPurchaseOrder()\n            .then(result => setShoppingHistory(result));\n    }, []);\n\n    return (\n        <section className=\"dashboard-container-page\">\n           <Row>\n               <Col sm={12}>\n                   <h2>Mis compras</h2>\n               </Col>\n               <Col sm={12}>\n                   <ToolDiscount />\n               </Col>\n               <Col sm={12}>\n                   <div className=\"contain_shop_history\">\n                       <div className=\"boxes_hop_history\">\n                           {\n                               shoppingHistory.length > 0\n                                   ? shoppingHistory[page - 1].map(item => {\n                                       return <PurchasedItem {...item} />\n                                   })\n                                   : \"\"\n                           }\n                           <div className=\"paginated_page\">\n                               <PaginatedPage\n                                   totalPages={totalPages}\n                                   currentPage={page}\n                                   onChange={page => setPage(page)}\n                               />\n                           </div>\n                       </div>\n                   </div>\n               </Col>\n           </Row>\n        </section>\n    );\n}\n","import React, { useEffect } from \"react\";\nimport { cartHook } from \"../../../hooks/cart.hook\";\nimport { Link } from \"react-router-dom\";\n\nimport SuccessImg from \"../../../assets/imgs/ico_ticket.svg\";\n\nexport function CashPayment() {\n  useEffect(() => {\n    cartHook.clean();\n  });\n\n  return (\n    <div className=\"wrapper_pay_successful\">\n      <div className=\"container\">\n        <div className=\"row align-items-center justify-content-md-center\">\n          <div className=\"col-md-6 text-center\">\n            <div className=\"box_success\">\n              <div className=\"\">\n                <span>\n                  <img src={SuccessImg} alt=\"EXITO\" />{\" \"}\n                </span>\n                <h2 className=\"text fnt_bold mt-4\">Gracias</h2>\n                <h5 className>\n                  {\" \"}\n                  Te hemos enviado un email, con las instrucciones para que\n                  realices tu pago.\n                </h5>\n              </div>\n              <div className=\"btn_actions_details mt-5\">\n                <Link className=\"btn secundary ml-1 mr-1\" to=\"/home\">\n                  Regresar al inicio\n                </Link>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\n\n\nexport const companyEventTypeService = {\n    createCompanyActionType,\n    updateCompanyActionType,\n    getCompanyEventType,\n    deletetCompanyEventType,\n    getByEventId,\n    getAllowedToAddressCompanyEventTypes,\n    getByCompanyAndEventType\n};\n\n\nasync function createCompanyActionType(params) {\n    return callApi('/backoffice/CompanyEventType', 'POST', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"El tipo de evento se creó correctamente\", icon: \"success\" })\n        } else {\n            swal({ text: \"Error al crear el tipo de evento\", icon: \"error\" });\n        }\n    });\n}\n\nasync function updateCompanyActionType(params) {\n\n    return callApi('/backoffice/CompanyEventType', 'PUT', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"El tipo de evento se actualizó correctamente\", icon: \"success\" })\n        } else {\n            swal({ text: \"Error al actualizar el tipo de evento\", icon: \"error\" });\n        }\n    });\n}\n\nasync function getCompanyEventType() {\n    return callApi('/backoffice/CompanyEventType/getByCompany', 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function getByEventId(eventId) {\n    return callApi(`/backoffice/CompanyEventType/GetByEventId?eventId=${eventId}`, 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function getByCompanyAndEventType(companyId, eventTypeName) {\n    return callApi(`/backoffice/CompanyEventType/GetByCompanyAndEventType?companyId=${companyId}&eventTypeName=${eventTypeName}`, 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function getAllowedToAddressCompanyEventTypes(companyId) {\n    return callApi(`/backoffice/CompanyEventType/GetAllowedToAddress?companyId=${companyId}`, 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function deletetCompanyEventType(params) {\n    return callApi('/backoffice/CompanyEventType', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"El tipo de evento se desactivo correctamente\", icon: \"success\" })\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar el tipo de evento\", icon: \"error\" });\n        }\n    });\n}","import React, {useEffect, useState, forwardRef, useImperativeHandle, useRef} from 'react';\nimport { companyEventTypeService } from '../../services/companyEventType.service';\nimport '../admin/admin.scss';\nimport {Input, Space, Table, Button, Tag} from \"antd\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport MySwal from \"sweetalert2\";\n\nconst SearchCompanyEventType = forwardRef((props, ref) => {\n\n    const [dataGrid, setDataGrid] = useState([]);\n    const handleDelete = (event, data) => {\n        MySwal.fire({\n            title:\"¿Deseas desactivar encuesta?\",\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                companyEventTypeService.deletetCompanyEventType(data).then((result) => { getCompanyEventTypes(); });\n        })\n    };\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    async function getCompanyEventTypes() {\n        companyEventTypeService.getCompanyEventType()\n            .then((result) => {\n                if (result) setDataGrid(result);\n            });\n    }\n\n    useEffect(() => {\n        getCompanyEventTypes();\n    }, []);\n\n    const refreshDataGrid = () => {\n        getCompanyEventTypes();\n    }\n\n    useImperativeHandle(ref, () => ({\n        refreshDataGrid: refreshDataGrid\n    }));\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{\n                        marginBottom: 8,\n                        display: 'block',\n                    }}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined\n                style={{\n                    color: filtered ? '#1677ff' : undefined,\n                }}\n            />\n        ),\n        onFilter: (value, record) =>\n            record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) {\n                setTimeout(() => searchInput.current?.select(), 100);\n            }\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{\n                        backgroundColor: '#ffc069',\n                        padding: 0,\n                    }}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (\n                text\n            ),\n    });\n\n    const columnsEvents = [\n        {\n            title: 'Tipo de evento',\n            key: 'eventType',\n            dataIndex: 'eventType',\n            fixed: 'left',\n            width: 120,\n            ...getColumnSearchProps('eventType')\n        },\n        {\n            title: '¿Genera recompensa?',\n            key: 'reward',\n            dataIndex: 'reward',\n            width: 100,\n        },\n        {\n            title: '¿Genera notificación?',\n            key: 'notification',\n            dataIndex: 'notification',\n            width: 100,\n        },\n        {\n            title: '¿Seleccionará la audiencia?',\n            key: 'audience',\n            dataIndex: 'audience',\n            width: 100,\n        },\n        {\n            title: '¿Se unirán nuevos registros?',\n            key: 'records',\n            dataIndex: 'records',\n            width: 100,\n        },\n        {\n            title: 'Puntos',\n            key: 'points',\n            dataIndex: 'points',\n            width: 100,\n            sorter: (a, b) => {\n                if(a.points < b.points) {\n                    return -1;\n                }\n                if(a.points > b.points) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Opciones',\n            key: 'options',\n            dataIndex: 'options',\n            width: 90,\n        },\n    ];\n\n    const dataEvents = dataGrid?.map(item => {\n        return (\n            {\n                \"key\": item.companyEventTypeId,\n                eventType: item.eventTypeDesc,\n                reward:  <Tag color={item.isRewarded ? 'success' : 'error'}>{item.isRewarded ? 'Sí' : 'No'}</Tag>,\n                notification: <Tag color={item.isNotification ? 'success' : 'error'}>{item.isNotification ? 'Sí' : 'No'}</Tag>,\n                audience: <Tag color={item.isAudienceAddressed ? 'success' : 'error'}>{item.isAudienceAddressed ? 'Sí' : 'No'}</Tag>,\n                records: <Tag color={item.onNewUserRegistry ? 'success' : 'error'}>{item.onNewUserRegistry ? 'Sí' : 'No'}</Tag>,\n                points: item.reward,\n                options: <Space wrap>\n                    <Button type=\"primary\" htmlType={'button'} className=\"edit\" onClick={() => props.handleRowSelect(item)}>\n                        <FaEdit />\n                    </Button>\n                    <Button type=\"primary\" htmlType={'button'} className=\"delete\" onClick={(event) => handleDelete(event, item)}>\n                        <FaTrash />\n                    </Button>\n                </Space>\n            }\n        );\n    }) ?? [];\n\n    return (\n        <Table\n            className={'table-admin'}\n            columns={columnsEvents}\n            dataSource={dataEvents}\n            locale={{\n                triggerDesc: 'Ordenamiento descendente',\n                triggerAsc: 'Ordenamiento ascedente',\n                cancelSort: 'Cancelar ordenamiento',\n                emptyText: 'Sin registros',\n            }}\n            scroll={{ x: '992px', y: 800 }}\n        />\n    );\n});\n\nexport default SearchCompanyEventType;\n","import React from 'react';\n\nimport './titleAdmin.scss'\nimport {FaChevronLeft} from \"react-icons/fa\";\nimport {Button} from \"antd\";\n\nexport function TitleAdmin({title,subtitle,event, btnBack = true}) {\n    return (\n        <div className=\"admin-title\">\n            <div>\n                <h2>{title}</h2>\n                <h6>{subtitle}</h6>\n            </div>\n            {\n                (btnBack) ?\n                    <Button type={'primary'} htmlType={'button'} className=\"btn-back\" onClick={event}>\n                        <FaChevronLeft />\n                        <p>Regresar</p>\n                    </Button>\n                    : null\n            }\n        </div>\n    );\n}\n","import React from 'react';\n\nimport './headingAdmin.scss'\nimport {Button, Dropdown, Space} from \"antd\";\nimport {PlusCircleOutlined} from \"@ant-design/icons\";\nimport {FaChevronDown} from \"react-icons/fa\";\n\nexport const HeadingAdmin = (\n    {\n        btnAdd = true,\n        text = '',\n        event = () => '',\n        icon = false,\n        disabled = false,\n        isDropdown = false,\n        menuDropdown  = {},\n        btnDropdownName = 'Seleccionar'}) =>\n{\n\n    return (\n        <div className=\"admin-heading\">\n            {\n                (isDropdown)\n                    ?\n                    <Dropdown menu={menuDropdown}>\n                        <Button  className={'btn-dropdown'}>\n                            {btnDropdownName}\n                            <FaChevronDown />\n                        </Button>\n                    </Dropdown>\n                    : <div></div>\n            }\n            {\n                (btnAdd) ?\n                    <Button type=\"primary\" htmlType={'button'} onClick={event} disabled={disabled}>\n                        <p>{text}</p>\n                        {\n                            (icon) ?\n                                icon\n                                :\n                                <PlusCircleOutlined />\n                        }\n                    </Button>\n                    : <div></div>\n            }\n        </div>\n    );\n}\n","import React, { useRef, useState, useEffect } from 'react';\nimport { Form, FormGroup, Label, Input, Row, Col } from \"reactstrap\";\nimport useInputSingleForm from '../../components/CustonHooks/inputFormHook';\nimport { SelectCustom } from '../../components/Helpers/SelectCustom';\nimport SearchCompanyEventType from './searchCompEventType';\nimport { companyEventTypeService } from '../../services/companyEventType.service';\nimport { useSelector } from 'react-redux';\nimport '../admin/admin.scss';\nimport { Button } from \"rsuite\";\nimport {FaSave, FaTimesCircle} from \"react-icons/fa\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\nimport {PlusCircleOutlined} from \"@ant-design/icons\";\n\nexport function AdminCompanyEventType() {\n    const companyId = useSelector(state => state.userSettings.companyId)\n    const gridRef = useRef();\n    const [showEdit, setShowEdit] = useState(false);\n    const [errorReward, setErrorReward] = useState(false);\n    const [errorNotification, setErrorNotification] = useState(false);\n    let companyEventType = { CompanyEventTypeId: 0, EventTypeId: '', IsRewarded: false, Reward: 0, CompanyEventTypeNotificationId: 0, IsNotification: false }\n    const [allowedToAddressCompanyEventTypes, setAllowedToAddressCompanyEventTypes] = useState([]);\n    const onSave = () => {\n        let model = {\n            CompanyEventTypeId: parseInt(inputs.CompanyEventTypeId),\n            EventTypeId: parseInt(inputs.EventTypeId),\n            CompanyEventTypeNotificationId: parseInt(inputs.CompanyEventTypeNotificationId),\n            IsRewarded: Boolean(inputs.IsRewarded),\n            Reward: parseInt(inputs.Reward),\n            IsNotification: Boolean(inputs.IsNotification),\n            NotificationMessage: inputs.NotificationMessage,\n            CompanyId: companyId,\n            IsAudienceAddressed: Boolean(inputs.IsAudienceAddressed),\n            OnNewUserRegistry: Boolean(inputs.OnNewUserRegistry)\n        }\n\n        if (model.IsRewarded && model.Reward == 0) {\n            setErrorReward(true);\n            return;\n        }\n\n        if (model.IsNotification & (model.NotificationMessage == '' || !model.NotificationMessage)) {\n            setErrorNotification(true);\n            return;\n        }\n\n        if (parseInt(inputs.CompanyEventTypeId) === 0) {\n            companyEventTypeService.createCompanyActionType(model).then((result) => {\n\n                gridRef.current.refreshDataGrid();\n            });\n        } else {\n            companyEventTypeService.updateCompanyActionType(model).then((result) => {\n\n                gridRef.current.refreshDataGrid();\n            });\n        }\n        setInputs({});\n        setShowEdit(false);\n    };\n    const { inputs, handleInputChange, handleSubmit, setInputs } = useInputSingleForm(onSave, companyEventType);\n\n    const handleOnNewCompanyEvent = () => {\n        setInputs(companyEventType);\n        setShowEdit(true);\n    };\n\n    const handleOnCancel = () => {\n        setInputs({});\n        setShowEdit(false);\n    }\n\n    const handleRowSelect = (gridItem) => {\n        setShowEdit(true);\n        setInputs({\n            CompanyEventTypeId: gridItem.companyEventTypeId,\n            EventTypeId: gridItem.eventTypeId,\n            CompanyEventTypeNotificationId: gridItem.companyEventTypeNotificationId,\n            IsRewarded: gridItem.isRewarded,\n            Reward: gridItem.reward,\n            IsNotification: gridItem.isNotification,\n            NotificationMessage: gridItem.notificationMessage,\n            CompanyId: gridItem.companyId,\n            Active: gridItem.active,\n            IsAudienceAddressed: gridItem.isAudienceAddressed,\n            OnNewUserRegistry: gridItem.onNewUserRegistry\n        });\n\n    }\n\n    const getAllowedToAddressCompanyEventTypes = (props) => {\n        companyEventTypeService.getAllowedToAddressCompanyEventTypes(props)\n            .then(res => {\n                setAllowedToAddressCompanyEventTypes(res);\n                });\n    }\n\n    useEffect(() => {\n        getAllowedToAddressCompanyEventTypes(companyId);\n    }, [companyId]);\n\n    useEffect(() => {\n        setErrorNotification(false);\n        setErrorReward(false);\n    }, [inputs]);\n\n    return (\n        <>\n            <TitleAdmin\n                title={'Lista de tipos de evento'}\n                subtitle={'Listado y alta de eventos'}\n                btnBack={false}\n            />\n            <HeadingAdmin\n                text={!(showEdit) ? 'Agregar tipo de evento' : 'Cancelar'}\n                icon={(!showEdit) ? <PlusCircleOutlined /> : <FaTimesCircle />}\n                event={() => !(showEdit) ? handleOnNewCompanyEvent() : handleOnCancel()}\n            />\n            <Row>\n                {showEdit ?\n                    <Col sm={12}>\n                        <Form onSubmit={handleSubmit}>\n                            <Row>\n                                <Col sm={12}>\n                                    <h4>{inputs.CompanyEventTypeId == 0 ? \"Nuevo tipo de evento\" : \"Editar tipo de evento\"}</h4>\n                                </Col>\n                                <Col md={3}>\n                                    <label for=\"Active\">¿Tiene recompensa?</label>\n                                    <div>\n                                        <Input type=\"checkbox\" onChange={handleInputChange} checked={inputs.IsRewarded} name=\"IsRewarded\" id=\"Active\" />\n                                        <Label for=\"Active\">Si, tiene recompensa</Label>\n                                    </div>\n                                </Col>\n                                <Col md={4}>\n                                    <FormGroup className=\"form-dashboard-group\">\n                                        <Label for=\"EventType\">Tipo de evento</Label>\n                                        <SelectCustom selectName=\"EventTypeId\" handleOnChange={handleInputChange} selectValue={inputs.EventTypeId}\n                                            method={inputs.CompanyEventTypeId == 0 ? \"EventType/Filter\" : \"EventType\"} textField=\"eventName\" valueField=\"eventTypeId\" disabled={inputs.CompanyEventTypeId == 0 ? false : true} required />\n                                    </FormGroup>\n                                </Col>\n                                <Col md={4}>\n                                    <FormGroup className=\"form-dashboard-group\">\n                                        <Label for=\"Reward\">Puntos\n                                            <span className=\"invalid-feedback\" style={{ 'display': 'initial' }}>{errorReward ? ' Requerido' : ''}</span>\n                                        </Label>\n                                        <Input name=\"Reward\" placeholder=\"Puntos\" onChange={handleInputChange} value={inputs.Reward} required={inputs.IsRewarded} />\n                                    </FormGroup>\n                                </Col>\n                            </Row>\n                            <Row>\n                                <Col md={3}>\n                                    <label for=\"IsNotification\">¿Genera notificación?</label>\n                                    <div>\n                                        <Input type=\"checkbox\" onChange={handleInputChange} checked={inputs.IsNotification} name=\"IsNotification\" id=\"IsNotification\" />\n                                        <label className=\"custom-control-label\" for=\"IsNotification\">Si, genera notificación</label>\n                                    </div>\n                                </Col>\n                                <Col md={4}>\n                                    <FormGroup className=\"form-dashboard-group\">\n                                        <Label for=\"NotificationMessage\">\n                                            Texto de la notificación\n                                            <span className=\"invalid-feedback\" style={{ 'display': 'initial' }}>{errorNotification ? ' Requerido' : ''}</span>\n                                        </Label>\n                                        <Input name=\"NotificationMessage\" onChange={handleInputChange} value={inputs.NotificationMessage} required={inputs.isNotification} />\n                                    </FormGroup>\n                                </Col>\n                            </Row>\n                            {allowedToAddressCompanyEventTypes.map(a => (a.eventTypeId)).includes(inputs.EventTypeId) &&\n                            <Row>\n                                <Col md={3}>\n                                    <label className=\"enabled\" for=\"IsAudienceAddressed\">¿Seleccionará la audiencia?</label>\n                                    <div>\n                                        <Input  type=\"checkbox\" onChange={handleInputChange} checked={inputs.IsAudienceAddressed} name=\"IsAudienceAddressed\" id=\"IsAudienceAddressed\" />\n                                        <label className=\"custom-control-label\" for=\"IsAudienceAddressed\">Si, se selecciona audiencia</label>\n                                    </div>\n                                </Col>\n                            </Row>\n                            }\n                            {inputs.IsAudienceAddressed ? \n                            allowedToAddressCompanyEventTypes.map(a => (a.eventTypeId)).includes(inputs.EventTypeId) &&\n                                <Row>\n                                    <Col md={3}>\n                                        <label className='enabled' for='OnNewUserRegistry'>¿Se unirán nuevos registro?</label>\n                                        <div>\n                                            <Input  type=\"checkbox\" onChange={handleInputChange} checked={inputs.OnNewUserRegistry} name=\"OnNewUserRegistry\" id=\"OnNewUserRegistry\"/>\n                                            <label className=\"custom-control-label\" for=\"OnNewUserRegistry\">Si, se añadirán nuevos resgistros</label>\n                                        </div>\n                                    </Col>\n                                </Row>\n                            : null\n                            }\n                            <Col xs={24}>\n                                <div className=\"form-backoffice-footer\">\n                                    <Button type=\"primary\" htmlType={'submit'}>\n                                        <p>Guardar</p>\n                                        <FaSave />\n                                    </Button>\n                                </div>\n                            </Col>\n                        </Form>\n                    </Col>\n                    : null\n                }\n            </Row>\n            <SearchCompanyEventType handleRowSelect={handleRowSelect} ref={gridRef} />\n        </>\n    );\n}\n","import React, { useState } from \"react\";\nimport { Tooltip } from \"reactstrap\";\nimport \"./rewards.scss\";\nimport { rewardsService } from \"../../services/rewards.service\";\nimport swal from \"sweetalert\";\n\nexport function ItemRewardCupon(props) {\n  const [tooltipOpen, setTooltipOpen] = useState(false);\n  const [btnSubmit,setBtnSubmit] = useState(false);\n  const toggle = () => setTooltipOpen(!tooltipOpen);\n\n  const redeemCoupon = () => {\n    setBtnSubmit(true);\n    swal({\n      title: \"¿Estás seguro que deseas obtener este cupón?\",\n      text: props.title + \" - \" + props.points + \" Puntos\",\n      icon: \"warning\",\n      dangerMode: true,\n      buttons: [\"Cancelar\", \"Si, aceptar\"],\n    }).then((willDelete) => {\n      if (willDelete) {\n        rewardsService\n          .redeemCoupon({ RewardProductFilterId: props.rewardProductFilterId })\n          .then((result) => {\n            if (result) {\n              setBtnSubmit(false);\n              props.setCategoryActive(0);\n              props.getRewardProducts(0);\n            }\n          });\n      }\n    });\n  };\n\n  return (\n    <div className=\"rewards-card\">\n      <div className=\"coupon\">\n        <div className=\"coupon-thumb\">\n          <img src={props.urlImage} alt=\"product\" />\n        </div>\n        <div className=\"coupon-content\">\n          <div className=\"coupon-thumb-text\">{props.title}</div>\n          <div className=\"footer\">\n            <div>\n              <p className=\"category\">{props.rewardCategoryDescription}</p>\n              <p className=\"points\">{props.points} Puntos</p>\n            </div>\n            <div>\n              {props.reward >= props.points ? (\n                <>\n                  <button\n                    id={\"Tooltip\" + props.rewardProductFilterId}\n                    onClick={redeemCoupon}\n                    disabled={btnSubmit}\n                  >\n                    <i className=\"icon-download-file\"></i>\n                  </button>\n                  <Tooltip\n                    placement=\"bottom\"\n                    isOpen={tooltipOpen}\n                    target={\"Tooltip\" + props.rewardProductFilterId}\n                    toggle={toggle}\n                  >\n                    Descargar\n                  </Tooltip>\n                </>\n              ) : null}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport \"./rewards.scss\";\n\nimport { ItemRewardCupon } from \"./itemRewardCupon\";\n\nexport function WrapperCategoriesRewards({\n  reward,\n  rewardCategory,\n  rewardProducts,\n  getRewardProducts,\n}) {\n  const [categoryActive, setCategoryActive] = useState(0);\n\n  return (\n    <>\n      <div className=\"discount-categories\">\n        <div\n          className={`discount-categories-item ${\n            categoryActive === 0 ? \"active\" : \"\"\n          }`}\n          onClick={() => {\n            getRewardProducts(0);\n            setCategoryActive(0);\n          }}\n        >\n          <span className=\"icon\">\n            <i className=\"icon-all\"></i>\n          </span>\n          <span className=\"tag\">Todos</span>\n        </div>\n        {rewardCategory.map((item) => (\n          <div\n            className={`discount-categories-item ${\n              categoryActive === item.rewardCategoryId ? \"active\" : \"\"\n            }`}\n            key={item.rewardCategoryId}\n            onClick={() => {\n              getRewardProducts(item.rewardCategoryId);\n              setCategoryActive(item.rewardCategoryId);\n            }}\n          >\n            <span className=\"icon\">\n              <i className={item.urlIcon}></i>\n            </span>\n            <span className=\"tag\">{item.description}</span>\n          </div>\n        ))}\n      </div>\n      <div className=\"rewards-cards\">\n        {rewardProducts.map((item) => (\n          <ItemRewardCupon\n            setCategoryActive={setCategoryActive}\n            getRewardProducts={getRewardProducts}\n            reward={reward}\n            {...item}\n          />\n        ))}\n      </div>\n    </>\n  );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport \"./rewards.scss\";\nimport { Col, Row } from \"reactstrap\";\nimport imagePoints from \"../../assets/imgs/banner-rewards.png\";\n\nexport function HeadRewards({ reward }) {\n  return (\n    <>\n      <div className=\"rewards-title pt-3\">\n        <h2>Rewards</h2>\n      </div>\n\n      <Row>\n        <Col lg={6}>\n          <section className=\"rewards-account\">\n            <article className=\"rewards-account-title\">\n              <h4>Estado de cuenta</h4>\n            </article>\n            <article className=\"rewards-account-content\">\n              <div className=\"rewards-account-cards\">\n                <div className=\"rewards-account-card\">\n                  <Link to=\"/rewards\">\n                    <div className=\"balance\">\n                      <h4>Saldo</h4>\n                      <div className=\"icon-container\">\n                        <i className=\"icon-Asset-357\"></i>\n                      </div>\n                    </div>\n                    <div className=\"points\">\n                      <h5>{reward}</h5>\n                      <h6>Puntos</h6>\n                      <Link to=\"/rewards\" className=\"btn-budget\">\n                        Ver Saldo <span></span>\n                      </Link>\n                    </div>\n                  </Link>\n                </div>\n              </div>\n              <div className=\"rewards-account-btns\">\n                <Link to=\"/redemption-history\" className=\"btn-gradient-orange\">\n                  <p>Historial de canje</p>\n                  <span>\n                    <i className=\"icon-chevron-right\"></i>\n                  </span>\n                </Link>\n                <Link to=\"/account-status\" className=\"btn-gradient-orange\">\n                  <p>Estado de cuenta</p>\n                  <span>\n                    <i className=\"icon-chevron-right\"></i>\n                  </span>\n                </Link>\n              </div>\n            </article>\n          </section>\n        </Col>\n        <Col lg={6}>\n          <h3>¿Cómo ganar puntos?</h3>\n          <div className=\"rewards-points\">\n            <img alt=\"\" src={imagePoints} />\n          </div>\n        </Col>\n      </Row>\n    </>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { WrapperCategoriesRewards } from \"./wrapperCategoriesRewards\";\nimport { HeadRewards } from \"./headRewards\";\nimport \"./rewards.scss\";\nimport { rewardsService } from \"../../services/rewards.service\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { Col, Row } from \"reactstrap\";\n\nexport function Rewards() {\n  const [reward, setReward] = useState([]);\n  const [rewardCategory, setRewardCategory] = useState([]);\n  const [rewardProducts, setRewardProducts] = useState([]);\n\n  useEffect(() => {\n    rewardsService.rewardCategories().then((result) => {\n      setRewardCategory(result);\n      getRewardProducts(0);\n    });\n  }, []);\n\n  const getRewardProducts = async (rewardCategory) => {\n    rewardsService.rewardProducts(rewardCategory).then((result) => {\n      setReward(result.reward);\n      setRewardProducts(result.items);\n    });\n  };\n\n  return (\n    <article className=\"dashboard-container-page page__rewards\">\n      <HeadRewards reward={reward} />\n      <WrapperCategoriesRewards\n        reward={reward}\n        rewardCategory={rewardCategory}\n        rewardProducts={rewardProducts}\n        getRewardProducts={getRewardProducts}\n      />\n      <FooterHome />\n    </article>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { HeadRewards } from \"./headRewards\";\nimport \"./rewards.scss\";\nimport { rewardsService } from \"../../services/rewards.service\";\nimport { FormGroup, Label, Input, Row, Col } from \"reactstrap\";\nimport Moment from \"react-moment\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport moment from \"moment\";\nimport \"moment/locale/es\";\nimport {FaDownload} from \"react-icons/fa\";\n\nexport function RedemptionHistory() {\n  const [rewardsFilterByDate, setRewardsFilterByDate] = useState([]);\n  const [reward, setReward] = useState([]);\n  const [redemptionHistory, setRedemptionHistory] = useState([]);\n\n  useEffect(() => {\n    rewardsService.rewardsFilterByDate().then((result) => {\n      setRewardsFilterByDate(result);\n      getRedemptionHistory(result[0].startDate + \"|\" + result[0].endDate);\n    });\n  }, []);\n\n  const getRedemptionHistory = async (dateRange) => {\n    rewardsService.redemptionHistory(dateRange).then((result) => {\n      setReward(result.reward);\n      setRedemptionHistory(result.items);\n    });\n  };\n\n  const downloadCoupon = (orderId) => {\n    rewardsService.downloadCoupon(orderId);\n  };\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <HeadRewards reward={reward} />\n\n      <div className=\"container-redemption\">\n        <Row>\n          <Col sm={12}>\n            <h3>Historial de canje</h3>\n          </Col>\n          <Col sm={12}>\n            <div className=\"container-redemption-header\">\n              <FormGroup>\n                <Label for=\"exampleSelectMulti\">Filtro de fechas</Label>\n                <Input\n                  type=\"select\"\n                  onChange={(event) => getRedemptionHistory(event.target.value)}\n                >\n                  {rewardsFilterByDate.map((item) => (\n                    <option value={item.startDate + \"|\" + item.endDate}>\n                      {moment(item.startDate).format(\"MMMM YYYY\")} -{\" \"}\n                      {moment(item.endDate).format(\"MMMM YYYY\")}\n                    </option>\n                  ))}\n                </Input>\n              </FormGroup>\n            </div>\n          </Col>\n          <Col sm={12}>\n            <div className=\"wrapper_list_history\">\n              {redemptionHistory.map((item) => (\n                <div className=\"list_history\">\n                  <div className=\"item_list_history\">\n                    <img\n                      className=\"img_cupon\"\n                      src={item.productUrlImage}\n                      alt=\"Cupon\"\n                    />\n                  </div>\n                  <div className=\"item_list_history\">\n                    <h6>{item.productTitle}</h6>\n                    <h6>{item.poductDescription}</h6>\n                  </div>\n                  <div className=\"item_list_history\">\n                    <h6>Fecha de redención</h6>\n                    <p>\n                      <Moment format=\"DD/MM/YYYY\">{item.date}</Moment>\n                    </p>\n                  </div>\n                  <div className=\"item_list_history\">\n                    <h6>Puntos redimidos</h6>\n                    <p>{item.reward}</p>\n                  </div>\n                  <div className=\"item_list_history\">\n                    <h6>Acción</h6>\n                    {item.status == 2 ? (\n                      <p>\n                        <button\n                          className=\"btn-dark\"\n                          onClick={() => {\n                            downloadCoupon(item.rewardOrderUserProfileId);\n                          }}\n                        >\n                          <p>Descargar</p>\n                          <FaDownload />\n                        </button>\n                      </p>\n                    ) : (\n                      \"\"\n                    )}\n                  </div>\n                </div>\n              ))}\n            </div>\n          </Col>\n        </Row>\n      </div>\n      <div className=\"row\">\n        <div className=\"col-12\">\n          <FooterHome />\n        </div>\n      </div>\n    </section>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { HeadRewards } from \"./headRewards\";\nimport \"./rewards.scss\";\nimport { rewardsService } from \"../../services/rewards.service\";\nimport { FormGroup, Label, Input } from \"reactstrap\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport Moment from \"react-moment\";\nimport moment from \"moment\";\nimport \"moment/locale/es\";\nimport {Space, Table, Row, Col, Badge} from \"antd\";\n\nexport function AccountStatus() {\n  const [rewardsFilterByDate, setRewardsFilterByDate] = useState([]);\n  const [reward, setReward] = useState([]);\n  const [rewardsStatement, setRewardsStatement] = useState([]);\n\n  useEffect(() => {\n    rewardsService.rewardsFilterByDate().then((result) => {\n      setRewardsFilterByDate(result);\n      getRewardsStatement(result[0].startDate + \"|\" + result[0].endDate);\n    });\n  }, []);\n\n  const getRewardsStatement = async (dateRange) => {\n    rewardsService.rewardsStatement(dateRange).then((result) => {\n      setReward(result.reward);\n      setRewardsStatement(result.items);\n    });\n  };\n\n  const columnsStatus = [\n    {\n      title: 'Fecha de movimiento',\n      dataIndex: 'date',\n      key: 'date',\n      sorter: (a, b) =>  moment(a.date.props.children).unix() - moment(b.date.props.children).unix(),\n    },\n    {\n      title: 'Tipo de Movimiento',\n      dataIndex: 'action',\n      key: 'action',\n    },\n    {\n      title: 'Concepto',\n      dataIndex: 'concept',\n      key: 'concept',\n    },\n\n    {\n      title: 'Monto de movimiento',\n      dataIndex: 'options',\n      key: 'options',\n    },\n  ];\n\n\n  const dataStatus = rewardsStatement.map(item => {\n    return {\n      key: item.id,\n      date: <Moment format=\"DD/MM/YYYY\">{item.date}</Moment>,\n      action: item.action,\n      concept: item.concept,\n      options: <><Space>\n        <Badge count={item.reward} color='#FF7400' />\n      </Space></>\n    };\n  })\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <HeadRewards reward={reward} />\n      <div className=\"container-redemption\">\n        <Row>\n          <Col xs={24}><h3>Estado de cuentas</h3></Col>\n          <Col xs={24}>\n            <div className=\"container-redemption-header\">\n              <FormGroup>\n                <Label for=\"exampleSelectMulti\">Filtro de fechas</Label>\n                <Input\n                  type=\"select\"\n                  onChange={(event) => getRewardsStatement(event.target.value)}\n                >\n                  {rewardsFilterByDate.map((item) => (\n                    <option value={item.startDate + \"|\" + item.endDate}>\n                      {moment(item.startDate).format(\"MMMM YYYY\")} -{\" \"}\n                      {moment(item.endDate).format(\"MMMM YYYY\")}\n                    </option>\n                  ))}\n                </Input>\n              </FormGroup>\n            </div>\n          </Col>\n          <Col xs={24}>\n            <div className=\"container-redemption-table table-responsive\">\n              <Table\n                columns={columnsStatus}\n                dataSource={dataStatus}\n                className=\"table-rewards\"\n                scroll={{ x: '992px', y: 800 }}\n                locale={{\n                  triggerDesc: 'Ordenamiento descendente',\n                  triggerAsc: 'Ordenamiento ascedente',\n                  cancelSort: 'Cancelar ordenamiento',\n                  emptyText: 'Sin registros',\n                }}\n              />\n            </div>\n          </Col>\n        </Row>\n      </div>\n      <Row>\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import { callApi, callApiNoBlocking, callApiFileStorage } from \"./service\";\nimport swal from \"sweetalert\";\nimport { post } from \"jquery\";\n\nexport const postulanteService = {\n  agregarPostulante,\n  getPostulants,\n  getCV,\n  GetByUserId,\n  verifyPostulant,\n  approvePostulant,\n  rejectPostulant,\n};\n\n  async function agregarPostulante(data) {\n    return callApiFileStorage(\"/BackEnd/Postulant\", \"POST\", data, false)\n      .then((result) => {\n        return result;\n      });\n  }\n\n  async function getPostulants(id) {\n    return callApi(\"/BackEnd/Postulant/GetByJobId\"+ id, \"GET\")\n      .then((result) => {\n        return result.data;\n      });\n  }\n\n  async function getCV(id) {\n    return callApi(\"/BackEnd/Postulant/GetCurriculum\"+ id, \"GET\")\n      .then((result) => {\n        return result.data;\n      });\n  }\n\n  async function GetByUserId(userId) {\n    return callApi(\"/BackEnd/Postulant/GetByUserId?userId=\"+userId, \"GET\")\n      .then((result) => {\n        return result.data;\n      });\n  }\n\n  async function verifyPostulant(jobId) {\n    return callApi(\"/BackEnd/Postulant/VerifyPostulant?JobId=\"+jobId, \"GET\")\n      .then((result) => {\n        return result.data;\n      });\n  }\n\n  async function approvePostulant(postulantId, companyName){\n    return callApiNoBlocking(\"/BackEnd/Postulant/\" + postulantId + \"/Approve?companyName=\"+companyName, \"POST\")\n      .then((result) => {\n        return result.data;\n      });\n  }\n\n  async function rejectPostulant(postulantId, companyName){\n    return callApiNoBlocking(\"/BackEnd/Postulant/\" + postulantId + \"/Reject?companyName=\"+companyName, \"POST\")\n      .then((result) => {\n        return result.data;\n      });\n  }\n\n","import React, { useState, useEffect } from \"react\";\nimport \"./userActivity.scss\";\nimport { backendService } from \"../../services/backend.service\";\nimport Moment from \"react-moment\";\nimport { Nav, NavItem, NavLink, TabContent, Table, TabPane } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport \"moment/locale/es\";\nimport { directoryInfoService } from \"../../services/directoryService.service\";\nimport { postulanteService } from \"../../services/postulantJob.service\";\nimport swal from \"sweetalert\";\n\nexport function UserActivity() {\n  const [activeTab, setActiveTab] = useState(\"1\");\n\n  const [userActivity, setUserActivity] = useState([]);\n  const [userDirectry, setUserDirectory] = useState([]);\n  const [userPostulant, setUserPostulant] = useState([]);\n\n  useEffect(() => {\n    backendService.userProfileActivity(false).then((data) => {\n      setUserActivity(data);\n    });\n\n    directoryInfoService.getMyDirectory().then((data) => {\n      setUserDirectory(data);\n    });\n\n    postulanteService.GetByUserId(localStorage[\"userId\"]).then((data) => {\n      setUserPostulant(data);\n    });\n  }, []);\n\n  const deleteDirectory = (id) => {\n    directoryInfoService.deleteDirectory(id)\n      .then((dataDirectoryInfo) => {\n        if (dataDirectoryInfo.active == false) {\n          swal({ text: \"El directorio ha sido dado de baja\", icon: \"success\", closeOnClickOutside: false });\n          directoryInfoService.getMyDirectory().then((dataDirectoryInfo) => {\n            setUserDirectory(dataDirectoryInfo);\n          });\n        }\n        else {\n          swal({ text: \"No se pudo dar de baja\", icon: \"error\", closeOnClickOutside: false });\n        }\n      })\n      .catch((error) => {\n        swal({ text: \"No se pudo dar de baja\", icon: \"error\", closeOnClickOutside: false });\n      });\n  };\n\n  return (\n    <div className=\"tabs-user\">\n      <Nav tabs>\n        <NavItem>\n          <NavLink className={activeTab === \"1\" ? \"active\" : \"\"} onClick={() => setActiveTab(\"1\")}>\n            <span><i className=\"icon-capture\"></i></span>\n            <p>Actividades del usuario</p>\n          </NavLink>\n        </NavItem>\n        <NavItem>\n          <NavLink className={activeTab === \"2\" ? \"active\" : \"\"} onClick={() => setActiveTab(\"2\")}>\n            <span><i className=\"icon-help\"></i></span>\n            <p>Servicios publicados</p>\n          </NavLink>\n        </NavItem>\n        <NavItem>\n          <NavLink className={activeTab === \"3\" ? \"active\" : \"\"} onClick={() => setActiveTab(\"3\")}>\n            <span><i className=\"icon-docs-postuleds\"></i></span>\n            <p>Mis postulaciones</p>\n          </NavLink>\n        </NavItem>\n      </Nav>\n      <TabContent activeTab={activeTab}>\n        <TabPane tabId=\"1\">\n          <div className=\"table-container table-responsive\">\n            <h5>Historial de actividades</h5>\n            <Table className=\"table-activities\" hover>\n              <thead>\n                <tr>\n                  <th scope=\"col\">Tipo de actividad</th>\n                  <th scope=\"col\" className=\"min_width\">Actividad</th>\n                  <th scope=\"col\" className=\"min_width\">Fecha de término</th>\n                </tr>\n              </thead>\n              <tbody>\n                {Array.isArray(userActivity) &&\n                  userActivity.map((item, index) => {\n                    return (\n                      <tr key={index + index}>\n                        <td><p className=\"border-pointed\">{item.type}</p></td>\n                        <td>{item.name}</td>\n                        <td>\n                          <Moment locale=\"es\" format=\"DD [de] MMMM [de] YYYY hh:mm [hrs]\">{item.expirationDate}</Moment>\n                        </td>\n                      </tr>\n                    );\n                  })\n                }\n                {\n                  (userActivity.length === 0) && (\n                    <tr key={194378917234}>\n                      <td colSpan={3} style={{ textAlign: 'center' }}>\n                        <i className=\"icon-empty\" style={{ fontSize: '8rem', padding: '1rem 0', display: 'flex', alignItems: 'center', justifyContent: 'center' }}></i>\n                        <p>No hay registros</p>\n                      </td>\n                    </tr>)\n                }\n              </tbody>\n            </Table>\n          </div>\n        </TabPane>\n        <TabPane tabId=\"2\">\n          <div className=\"table-container table-responsive\">\n            <h5>Lista de servicios anunciados</h5>\n            <Table className=\"table-services-published\" hover>\n              <thead>\n                <tr>\n                  <th scope=\"col\">#</th>\n                  <th scope=\"col\">Nombre completo</th>\n                  <th scope=\"col\">Categoría</th>\n                  <th scope=\"col\">Subcategoría</th>\n                  <th scope=\"col\" className=\"min_width\">Vigencia</th>\n                  <th scope=\"col\">Status</th>\n                  <th scope=\"col\">Baja de Servicio</th>\n                </tr>\n              </thead>\n              <tbody>\n                {\n                  Array.isArray(userDirectry) &&\n                  userDirectry.map((p) => {\n                    return (\n                      <tr key={p.directoryInfoId}>\n                        <td>{p.directoryInfoId}</td>\n                        <td>\n                          {p.directoryInfoStatusId === 6 || p.directoryInfoStatusId === 2 ? (\n                            <Link\n                              to={{\n                                pathname: `/register-services/${p.directoryInfoId}`,\n                                state: { isPay: true }\n                              }}\n                            >\n                              <span className=\"link-data\">{p.fullName}</span>{\" \"}\n                            </Link>\n                          ) : (\n                            <span>{p.fullName}</span>\n                          )}\n                        </td>\n                        <td><p className=\"border-solid\">{p.categoryServiceName}</p></td>\n                        <td>{p.subCategoryServiceName}</td>\n                        <td>\n                          <Moment locale=\"es\" format=\"DD [de] MMMM [de] YYYY hh:mm [hrs]\">{p.createDate}</Moment>\n                        </td>\n                        <td style={{ width: \"15%\" }}>\n                          <span className={\n                            p.directoryInfoStatusId === 1\n                              ? \"item_badge pending\"\n                              : p.directoryInfoStatusId === 2\n                                ? \"item_badge success\"\n                                : p.directoryInfoStatusId === 3\n                                  ? \"item_badge rejected\"\n                                  : \"item_badge defeated\"\n                          }\n                          >\n                            {p.directoryInfoStatusName}\n                          </span>\n                        </td>\n                        <td>\n                          {p.directoryInfoStatusId === 2 && <button className=\"item_badge rejected\" onClick={() => deleteDirectory(p.directoryInfoId)}>Dar de Baja</button>}\n                        </td>\n                      </tr>\n                    )\n                  })\n                }\n                {\n                  (userDirectry.length === 0) && (\n                    <tr key={117486329}>\n                      <td colSpan={7} style={{ textAlign: 'center' }}>\n                        <i className=\"icon-empty\" style={{ fontSize: '8rem', padding: '1rem 0', display: 'flex', alignItems: 'center', justifyContent: 'center' }}></i>\n                        <p>No hay registros</p>\n                      </td>\n                    </tr>)\n                }\n              </tbody>\n            </Table>\n          </div>\n        </TabPane>\n        <TabPane tabId=\"3\">\n          <div className=\"table-container table-responsive\">\n            <h5>Lista de mis postulaciones</h5>\n            <Table className=\"table-postulations\" hover>\n              <thead>\n                <tr>\n                  <th scope=\"col\">#</th>\n                  <th scope=\"col\" className=\"min_width\">Cargo o área </th>\n                  <th scope=\"col\">Lugar</th>\n                  <th scope=\"col\">Categoría</th>\n                  <th scope=\"col\">Empresa</th>\n                  <th scope=\"col\" className=\"min_width\">Fecha de postulación</th>\n                </tr>\n              </thead>\n              <tbody>\n                {userPostulant.map((postulant, index) => {\n                  return (\n                    <tr key={postulant.jobId + index + index}>\n                      <td>{index + 1}</td>\n                      <td>\n                        <Link to={'/details-job/' + postulant.jobId}>\n                          <span className=\"link-data\">{postulant.jobTitle}</span>\n                        </Link>\n                      </td>\n                      <td>{postulant.jobLocation}</td>\n                      <td>{postulant.jobCategory}</td>\n                      <td>{postulant.jobCompanyName}</td>\n                      <td><Moment locale=\"es\" format=\"DD MMMM YYYY\">{postulant.postulationDate}</Moment></td>\n                    </tr>\n                  )\n                })\n                }\n                {\n                  (userPostulant.length === 0) && (\n                    <tr key={3198271}>\n                      <td colSpan={6} style={{ textAlign: 'center' }}>\n                        <i className=\"icon-empty\" style={{ fontSize: '8rem', padding: '1rem 0', display: 'flex', alignItems: 'center', justifyContent: 'center' }}></i>\n                        <p>No hay registros</p>\n                      </td>\n                    </tr>)\n                }\n              </tbody>\n            </Table>\n          </div>\n        </TabPane>\n      </TabContent>\n    </div>\n  );\n}\n","import { callApi } from './service'\n\nexport const genderIdentityService = {\n    getAll,\n    \n};\n\nasync function getAll(companyId) {\n    return callApi(`/BackEnd/GetGenderIdentityCatalog?companyId=${companyId}`, 'GET').then((result) => {\n        if (result.responseCode === '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\n\n","import React, { useEffect, useState } from \"react\";\nimport { userService } from \"../../services/user.service\";\nimport { useSelector } from \"react-redux\";\n\nexport function  Preferences(props) {\n  const companyId = useSelector((state) => state.userSettings.companyId);\n  const [changePreference, setChangePreference] = useState(false);\n  const [userNotification, setUserNotification] = useState(false);\n  const [profile, setProfileInfo] = useState(props.profile);\n  const [userEmailNotification, setUserEmailNotification] = useState(false);\n  const [pref, setPreferences] = useState({\n    EmailNotification: false,\n    Notification: false,\n  });\n\n  const handleChange = (event) => {\n    if (event.target.id == \"notification\") {\n      setChangePreference(!changePreference);\n      setUserNotification(event.target.checked);\n      setPreferences({ ...pref, Notification: event.target.checked });\n      const data = {\n        Preferences: event.target.checked ? JSON.stringify({...pref, Notification: event.target.checked}) : '0',\n        Notification: event.target.checked,\n        EmailNotification: userEmailNotification\n      }\n      onSubmit(data)\n    }\n    if (event.target.id == \"emailNotification\") {\n      setChangePreference(!changePreference);\n      setUserEmailNotification(event.target.checked);\n      setPreferences({ ...pref, EmailNotification: event.target.checked });\n      const data = {\n        Preferences: event.target.checked ? JSON.stringify({...pref, EmailNotification: event.target.checked}) : '0',\n        Notification: userNotification,\n        EmailNotification: event.target.checked\n      }\n      onSubmit(data)\n    }\n  };\n\n  const [originValues, setOriginValues] = useState({\n    additionalEmail: \"\",\n    nickname: \"\",\n  });\n\n  const onSubmit = (data) => {\n    userService.updateStyle(data).then((result) => {\n      if (result) {\n        setOriginValues({\n          additionalEmail: props.profile.additionalEmail ?? \"\",\n          nickname: props.profile.nickname ? props.profile.nickname : \"\",\n        });\n      } else {\n        setProfileInfo({\n          ...props.profile,\n          additionalEmail: originValues.additionalEmail,\n          nickname: originValues.nickname,\n        });\n      }\n    });\n  };\n\n  const load = async () => {\n    if (props.profile) {\n      if (props.profile && props.profile.preferences != null) {\n        setPreferences({\n          Preferences: props.profile.preferences,\n          Notification: props.profile.notification,\n          EmailNotification: props.profile.emailNotification,\n        });\n        setUserNotification(props.profile.notification);\n        setUserEmailNotification(props.profile.emailNotification);\n        } else {\n          setPreferences({\n            Preferences: props.profile.preferences,\n            Notification: props.profile.notification,\n            EmailNotification: props.profile.emailNotification,\n          });\n          setUserNotification(props.profile.notification);\n          setUserEmailNotification(props.profile.emailNotification);\n      }\n    }\n  }\n\n  useEffect(() => {\n    load();\n  }, [props.profile]);\n\n  return (\n    <div className=\"preferences-container\">\n        <form>\n          <div className=\"preferences-container-checkbox\">\n            <label htmlFor=\"notification\" onClick={handleChange} className=\"notification\">\n              <input type=\"checkbox\" checked={userNotification} name=\"Notification\" id=\"notification\"/>\n              <div className=\"notification-slider\">\n                <div className=\"notification-knob\"></div>\n              </div>\n            </label>\n            <p>Deseo recibir notificaciones</p>\n          </div>\n          <div className=\"preferences-container-checkbox\" style={{marginTop: '1rem'}}>\n            <label htmlFor=\"emailNotification\" className=\"notification\" onClick={handleChange}>\n              <input\n                  type=\"checkbox\"\n                  name=\"EmailNotification\"\n                  id=\"emailNotification\"\n                  checked={userEmailNotification}\n              />\n              <div className=\"notification-slider\">\n                <div className=\"notification-knob\"></div>\n              </div>\n            </label>\n            <p>Deseo recibir correo de notificación de mensajes</p>\n          </div>\n        </form>\n    </div>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { backendService } from \"./../../services/backend.service\";\nimport \"moment/locale/es\";\nimport { Preferences } from \"./preferences\";\n\nexport function Pending({profile,asideShow,allClose}) {\n  const [pending, setPending] = useState([]);\n\n  useEffect(() => {\n    backendService.userProfileActivity(true).then((data) => setPending(data));\n  }, []);\n\n  return (\n    <>\n        <Preferences profile={profile} />\n    </>\n  );\n}\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { backendService } from \"./../../services/backend.service\";\nimport { UserActivity } from \"../../components/userActivity/userActivity\";\nimport { genderIdentityService } from \"../../services/genderIdentity.service\";\nimport { userService } from \"../../services/user.service\";\nimport { Pending } from \"./pending\";\nimport { useForm } from \"react-hook-form\";\nimport \"./profile.scss\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { useSelector } from \"react-redux\";\nimport {\n  Button,\n  Col,\n  Form,\n  FormGroup,\n  Input,\n  Label,\n  Modal,\n  ModalBody,\n  Row,\n} from \"reactstrap\";\nimport { IoClose } from \"react-icons/io5\";\nimport { BiCalendar } from \"react-icons/bi\";\nimport { CgSandClock } from \"react-icons/cg\";\nimport { useLocation } from \"react-router-dom\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { FaChevronRight, FaFlag } from \"react-icons/fa\";\nimport { MdOutlineEdit } from \"react-icons/md\";\n\nexport function Profile() {\n  const trigger = undefined;\n  const selectForm = useRef(null);\n  const [disabled, setDisabled] = useState(true);\n  const [statusGender, setStatusGender] = useState(false);\n  const [profile, setProfileInfo] = useState();\n  const [changeImage, setChangeImage] = useState(false);\n  const [selectedIdentity, setSelectedIdentity] = useState(0);\n  const [nickname, setNickname] = useState(\"\");\n  const [backupIdentity, setBackupIdentity] = useState({ id: 0, flag: \"\" });\n  const [genderIdentityCatalog, setGenderIdentityCatalog] = useState([]);\n  const [selectedGenderIdentityFlag, setSelectedGenderIdentityFlag] = useState(\n    {}\n  );\n  const [identityFlag, setIdentityFlag] = useState(\"\");\n  const [btnImage, setBtnImage] = useState(\"fa fa-edit\");\n\n  const [originValues, setOriginValues] = useState({\n    additionalEmail: \"\",\n    nickname: \"\",\n  });\n\n  const [inputClass, setInputClass] = useState(\n    \"form-control-plaintext text-primary\"\n  );\n  const [placeHolderText, setPlaceHolderText] = useState(\"\");\n  const { register, handleSubmit } = useForm();\n  const companyId = useSelector((state) => state.userSettings.companyId);\n\n  useEffect(() => {\n    getProfileInfo();\n    setDisabled(true);\n    handleDisabled();\n  }, [trigger]);\n\n  const getProfileInfo = () => {\n    genderIdentityService\n      .getAll(process.env.REACT_APP_COMPANY)\n      .then((genderData) => {\n        setGenderIdentityCatalog(genderData);\n      });\n    backendService.userProfile().then((data) => {\n      setOriginValues({\n        additionalEmail: data.additionalEmail ?? \"\",\n        nickname: data.nickname ? data.nickname : \"\",\n      });\n      setProfileInfo(data);\n      setIdentityFlag(data.genderIdentityFlag);\n      setSelectedIdentity(data.genderIdentityId);\n      setNickname(data.nickname);\n    });\n  };\n\n  const handleChange = (event) => {\n    setChangeImage(false);\n    if (event.target.files.length > 0) {\n      setProfileInfo({\n        ...profile,\n        urlProfileImage: URL.createObjectURL(event.target.files[0]),\n      });\n      setTimeout(() => handleSubmit((data) => onSubmit(data))(), 800);\n    }\n  };\n\n  const onSubmit = (data, e) => {\n    if (selectedIdentity) data.GenderIdentityId = selectedIdentity;\n    data.GenderIdentityFlag = identityFlag;\n\n    data.Mobile = data.Mobile === undefined ? null : data.Mobile;\n    data.nickname = nickname;\n    data.Preferences = data.Preferences === undefined ? null : data.Preferences;\n\n    userService.editProfile(data, companyId).then((result) => {\n      if (result) {\n        setChangeImage(false);\n        setOriginValues({\n          additionalEmail: profile.additionalEmail ?? \"\",\n          nickname: profile.nickname ? profile.nickname : \"\",\n        });\n      } else {\n        setProfileInfo({\n          ...profile,\n          additionalEmail: originValues.additionalEmail,\n          nickname: originValues.nickname,\n        });\n      }\n\n      setDisabled(true);\n      setBtnImage(\"fa fa-edit\");\n      setInputClass(\"form-control-plaintext text-primary\");\n      setPlaceHolderText(\"\");\n    });\n  };\n\n  const onGenderChange = (event) => {\n    genderIdentityCatalog.map((item) => {\n      if (item.genderIdentityId === parseInt(event.target.value))\n        setSelectedIdentity(item.genderIdentityFlag);\n    });\n\n    if (selectedIdentity)\n      setBackupIdentity({ id: selectedIdentity, flag: identityFlag });\n\n    setSelectedIdentity(event.target.value);\n\n    genderIdentityCatalog.map((item) => {\n      if (item.genderIdentityId === parseInt(event.target.value))\n        setIdentityFlag(item.identityFlagName);\n    });\n\n    if (profile.genderIdentityId === parseInt(event.target.value)) {\n      setStatusGender(false);\n    } else {\n      setStatusGender(true);\n    }\n\n    const data = {\n      ProfileImage: profile.urlProfileImage,\n      GenderIdentityId: parseInt(event.target.value),\n      GenderIdentityFlag: identityFlag,\n      Mobile: null,\n      nickname: profile.nickname,\n      Preferences:\n        profile.Preferences === undefined ? null : profile.Preferences,\n    };\n\n    onSubmit(data);\n  };\n\n  const onNickChange = (event) => {\n    setNickname(event.target.value);\n    if (profile.nickname === event.target.value) {\n      setStatusGender(false);\n    } else {\n      setStatusGender(true);\n    }\n  };\n\n  const handleDisabled = () => {\n    setDisabled(!disabled);\n    if (disabled) {\n      setBtnImage(\"fas fa-times\");\n      setInputClass(\"form-control\");\n      setPlaceHolderText(\"Ingrese un sobre nombre\");\n    } else {\n      setBtnImage(\"fa fa-edit\");\n      setInputClass(\"form-control-plaintext text-primary\");\n      setPlaceHolderText(\"\");\n      setSelectedIdentity(backupIdentity.id);\n      setIdentityFlag(backupIdentity.flag);\n      setBackupIdentity({ id: 0, flag: \"\" });\n      setNickname(originValues.originValues);\n      setProfileInfo({\n        ...profile,\n        additionalEmail: originValues.additionalEmail,\n        nickname: originValues.nickname,\n      });\n    }\n  };\n\n  const [asideShow, setAsideshow] = useState(\"\");\n  const activeAside = () => {\n    setAsideshow(asideShow === \"\" ? \" is-show\" : \"\");\n  };\n\n  const ProfileImage = register(\"ProfileImage\");\n\n  const [modalUser, setModalUser] = useState(false);\n  const toggleModalUser = () => setModalUser(!modalUser);\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <Row>\n        <Col lg={8} md={7} sm={12} xs={12}>\n          <h2>Mi Perfil</h2>\n          <div className=\"profile\">\n            <Row>\n              <Col sm={12}>\n                <div className=\"flex-end\">\n                  <button\n                    type=\"button\"\n                    className=\"btn-white sm\"\n                    onClick={toggleModalUser}\n                  >\n                    <MdOutlineEdit />\n                  </button>\n                </div>\n              </Col>\n              <Col lg={4} md={12}>\n                <div className=\"profile-avatar\">\n                  {identityFlag ? (\n                    <div className={`flag ${identityFlag} rotating`}></div>\n                  ) : (\n                    \"\"\n                  )}\n                  <img alt=\"\" src={profile && profile.urlProfileImage} />\n                  <Label for=\"file-upload\" className=\"file\">\n                    <i className=\"icon-camera\"></i>\n                    <input\n                      id=\"file-upload\"\n                      type=\"file\"\n                      name=\"ProfileImage\"\n                      accept=\"image/*\"\n                      {...register(\"ProfileImage\")}\n                      onChange={(e) => {\n                        ProfileImage.onChange(e);\n                        handleChange(e);\n                      }}\n                    />\n                  </Label>\n                </div>\n              </Col>\n              <Col lg={8} md={12}>\n                <div className=\"profile-info\">\n                  <h4>\n                    {profile && profile.firstName}{\" \"}\n                    {profile && profile.middleName}{\" \"}\n                    {profile && profile.lastName}\n                  </h4>\n                  <h5 className=\"\">\n                    {profile && profile.nickname} - {profile && profile.jobRole}\n                  </h5>\n                  <div className=\"profile-info-extra\">\n                    <p>\n                      <span>\n                        <i className=\"icon-birthday\"></i>\n                      </span>\n                      <Moment locale=\"es\" format=\"DD [de] MMMM  YYYY\">\n                        {profile && profile.birthday}\n                      </Moment>\n                    </p>\n                    <p>\n                      <span>\n                        <i className=\"icon-clock\"></i>\n                      </span>\n                      {profile && profile.seniority}\n                    </p>\n\n                    {profile && profile.genderName === \"\" ? (\n                      <p>\n                        <span>\n                          <FaFlag />\n                        </span>\n                        {profile && profile.genderName}\n                      </p>\n                    ) : (\n                      \"\"\n                    )}\n                  </div>\n                </div>\n              </Col>\n            </Row>\n          </div>\n          <Pending\n            profile={profile}\n            asideShow={asideShow}\n            allClose={activeAside}\n          />\n        </Col>\n        <Col lg={4} md={5} sm={12} xs={12}>\n          <h2>Mi Bandera</h2>\n          <div className=\"border-pointed orange\">\n            <p>Elige la bandera con la que te identifiques</p>\n          </div>\n          <Form className=\"my-flag\">\n            <ul>\n              {genderIdentityCatalog &&\n                genderIdentityCatalog.map((gender) => (\n                  <li\n                    key={gender.genderIdentityId}\n                    value={gender.genderIdentityId}\n                  >\n                    <FormGroup check>\n                      <Label\n                        onClick={onGenderChange}\n                        for={`flag${gender.genderIdentityId}`}\n                        check\n                      >\n                        <Input\n                          type=\"radio\"\n                          id={`flag${gender.genderIdentityId}`}\n                          name=\"flag\"\n                          value={gender.genderIdentityId}\n                        />\n                        <div\n                          className={`flag ${gender.identityFlagName} ${\n                            gender.identityFlagName === identityFlag\n                              ? \"active\"\n                              : \"\"\n                          } `}\n                        ></div>\n                      </Label>\n                      <p>{gender.genderName}</p>\n                    </FormGroup>\n                  </li>\n                ))}\n            </ul>\n          </Form>\n        </Col>\n      </Row>\n      <Row>\n        <Col sm={12}>\n          <div className=\"profile-tabs\">\n            <UserActivity />\n          </div>\n        </Col>\n        <Col sm={12}>\n          <FooterHome />\n        </Col>\n      </Row>\n      <Modal\n        isOpen={modalUser}\n        toggle={toggleModalUser}\n        centered={true}\n        size=\"md\"\n        className=\"modal-profile\"\n        {...[nickname, onNickChange]}\n      >\n        <ModalBody>\n          <button\n            type=\"button\"\n            className=\"btn-close-modal\"\n            onClick={toggleModalUser}\n          >\n            <IoClose />\n          </button>\n          <h3>Datos de usuario</h3>\n          <Form row onSubmit={handleSubmit(onSubmit)}>\n            <div className=\"form-dashboard-group\">\n              <label>Nickname</label>\n              <Input type=\"text\" value={nickname} onChange={onNickChange} />\n            </div>\n            <div className=\"flex-end\" style={{ marginTop: \".5rem\" }}>\n              <Button className=\"btn-gradients-orange\">\n                <p>Guardar</p>\n                <FaChevronRight />\n              </Button>\n            </div>\n          </Form>\n        </ModalBody>\n      </Modal>\n    </section>\n  );\n}\n","import { callApi } from \"./service\";\nimport Swal from \"sweetalert2\";\n\nexport const companyPostViewService = {\n  InsertRead,\n  getAll,\n  DeleteReadPost,\n  InsertLike,\n  DeleteLikePost,\n  getDateFilters,\n  getByFilters,\n  getByMonthFilters,\n  getById,\n};\n\nasync function InsertRead(params) {\n  return callApi(\"/backend/InsertReadPost\", \"POST\", params).then((result) =>\n    handleRsponse(result)\n  );\n}\n\nasync function DeleteReadPost(params) {\n  return callApi(\"/backend/DeleteReadPost\", \"POST\", params).then((result) =>\n    handleRsponse(result)\n  );\n}\n\nasync function InsertLike(params) {\n  return callApi(\"/backend/InsertLikePost\", \"POST\", params).then((result) =>\n    handleRsponse(result)\n  );\n}\n\nasync function DeleteLikePost(params) {\n  return callApi(\"/backend/DeleteLikePost\", \"POST\", params).then((result) =>\n    handleRsponse(result)\n  );\n}\n\nasync function getAll() {\n  return callApi(\"/backend/CompanyPostDetail\", \"GET\").then((result) => {\n    if (result.responseCode == \"00\") {\n      return result.data;\n    } else {\n      alert(result.responseMessage);\n      return null;\n    }\n  });\n}\n\n//info por meses\nasync function getDateFilters(postType, postCategoryId) {\n  //let type = postType === 1 ? 0 : postType === 2 ? 1 : 0;\n  return callApi(\n    \"/backend/CompanyPost/DateFilters/\" + postType + \"/\" + postCategoryId,\n    \"GET\"\n  ).then((result) => handleRsponse(result));\n}\n\n//obtener los posts\nasync function getByFilters(filterDate, postCategoryId) {\n  // 2023-03-01\n  // mundo pride --> 1\n  //orgullo --> 2\n  return callApi(\n    \"/backend/CompanyPost/ByFilters/\" + filterDate + \"/\" + postCategoryId,\n    \"GET\"\n  ).then((result) => handleRsponse(result));\n}\n\nasync function getByMonthFilters(filterDate) {\n  // 2023-03-01\n  return callApi(\n      \"/backend/CompanyPost/ByMonthFilters/\" + filterDate,\n      \"GET\"\n  ).then((result) => handleRsponse(result));\n}\n\nasync function getById(id) {\n  return callApi(\"/backend/CompanyPost/ById/\" + id, \"GET\").then((result) =>\n    handleRsponse(result)\n  );\n}\n\nfunction handleRsponse(result) {\n  if (result.responseCode === \"00\") return result.data;\n  else {\n    Swal.fire({\n      title: 'Error',\n      text: result.responseMessage,\n      icon: \"error\",\n    });\n    return null;\n  }\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Collapse } from \"reactstrap\";\nimport {\n  BiChevronDown,\n  BiChevronRight,\n  BiChevronUp,\n  BiMinus,\n  BiPlus,\n} from \"react-icons/bi\";\nimport dayjs from \"dayjs\";\n\nexport const ItemMorePost = ({ post, setCurrentFilter, key }) => {\n  const [isOpen, setIsOpen] = useState(false);\n  const [yearsCounting, setYearCounting] = useState([]);\n\n  const toggle = () => setIsOpen(!isOpen);\n\n  useEffect(() => {\n    const anio = new Date().getFullYear();\n    if (anio === parseInt(post.year)) setIsOpen(true);\n    countingPostsByYear();\n  }, []);\n\n  const countingPostsByYear = () => {\n    let counter = 0;\n    post.months.map((month) => (counter += month.count));\n    setYearCounting(counter);\n  };\n\n  const selectActiveItem = (item) => {\n    item.activeItem = false;\n    setCurrentFilter(dayjs(item.filterMonthDate).format(\"YYYY-MM-DD\"));\n  };\n\n  return (\n    <div key={key}>\n      <Button onClick={toggle} className=\"btn-publication-white\">\n        <p>\n          {post.year} <span>{yearsCounting}</span>\n        </p>\n        <BiChevronDown />\n      </Button>\n      <Collapse className=\"box_collapse\" isOpen={isOpen}>\n        <ul>\n          {post.months.map((item, i) => (\n            <li key={i}>\n              <Button\n                className={`btn-publication-white ${\n                  item.activeItem ? \"active\" : \"\"\n                }`}\n                onClick={() => selectActiveItem(item)}\n              >\n                <p>\n                  {item.month}\n                  {post.months.map((month, ind) => {\n                    return month.month === item.month ? (\n                      <span key={ind}>{month.count}</span>\n                    ) : (\n                      \"\"\n                    );\n                  })}\n                </p>\n                <BiChevronRight />\n              </Button>\n            </li>\n          ))}\n        </ul>\n      </Collapse>\n    </div>\n  );\n};\n","import React from \"react\";\nimport { ItemMorePost } from \"./itemMorePost\";\n\nexport const AsideOurCompany = ({ setCurrentFilter, filters }) => {\n  return (\n    <div className=\"blog-worldpride-aside-publications\">\n      <h5>Otras Publicaciones</h5>\n      <div className={\"publications-list\"}>\n        {filters.map((item, i) => (\n          <ItemMorePost\n            post={item}\n            setCurrentFilter={setCurrentFilter}\n            key={i}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport \"./blogCompany.scss\";\nimport { Button, Col, Row } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport \"./blogCompany.scss\";\n\nimport bgGallery from \"../../assets/imgs/icon-images.png\";\nimport imageEmpty from \"../../assets/imgs/no-image.jpeg\";\nimport { companyPostViewService } from \"../../services/compayPostView.service\";\nimport \"moment/locale/es\";\nimport Moment from \"react-moment\";\nimport { AsideOurCompany } from \"../companyPost/asideOurCompany\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport dayjs from \"dayjs\";\n\nexport const BlogCompanyPrimary = () => {\n  const [posts, setPosts] = useState([]);\n  const [selectedPost, setSelectedPost] = useState({});\n  const [currentFilter, setCurrentFilter] = useState(\"\");\n  const [filter, setFilter] = useState([]);\n\n  const clearVariable = () => {\n    setSelectedPost({});\n    setPosts([]);\n  };\n\n  const getPosts = async () => {\n    clearVariable();\n    companyPostViewService.getByFilters(currentFilter, 1).then((result) => {\n      if (result && result.length > 0) {\n        handleSelectPost(result[0]);\n        setPosts(result);\n        const lastMonthConverted = dayjs(result[0].publishDate).format(\n          \"YYYY-MM\"\n        );\n        setCurrentFilter(lastMonthConverted);\n        setFilter(\n          filter.map((item) => {\n            return {\n              year: item.year,\n              months: item.months.map((child) => {\n                return {\n                  activeItem:\n                    dayjs(child.filterMonthDate).format(\"YYYY-MM\") ===\n                    lastMonthConverted,\n                  count: child.count,\n                  filterMonthDate: child.filterMonthDate,\n                  month: child.month,\n                };\n              }),\n            };\n          })\n        );\n      }\n    });\n  };\n\n  const handleSelectPost = (item) => {\n    if (!item.isRead) {\n      companyPostViewService\n        .InsertRead({ CompanyPostId: item.companyPostId })\n        .then((result) => {\n          if (result) {\n            setSelectedPost(result);\n            if (posts.length > 0) {\n              let items = posts.map((m) => {\n                if (m.companyPostId === item.companyPostId) m.isRead = true;\n                return m;\n              });\n            }\n          }\n        });\n    } else {\n      getPost(item.companyPostId);\n    }\n  };\n\n  const getPost = (id) => {\n    companyPostViewService.getById(id).then((result) => {\n      if (result.postType === 0) setSelectedPost(result);\n      if (result.postType === 1) result.iconPath = result.urlImage;\n    });\n  };\n\n  const getFilters = async () => {\n    companyPostViewService.getDateFilters(0, 1).then((result) => {\n      if (result) {\n        if (result && result.length > 0) {\n          const lastItem = result[0];\n          const lastMonth = lastItem.months[0];\n          const lastMonthConverted = dayjs(lastMonth.filterMonthDate).format(\n            \"YYYY-MM-DD\"\n          );\n          setCurrentFilter(lastMonthConverted);\n          setFilter(\n            result.map((item) => {\n              return {\n                year: item.year,\n                months: item.months.map((child) => {\n                  return {\n                    activeItem:\n                      dayjs(child.filterMonthDate).format(\"YYYY-MM-DD\") ===\n                      lastMonthConverted,\n                    count: child.count,\n                    filterMonthDate: child.filterMonthDate,\n                    month: child.month,\n                  };\n                }),\n              };\n            })\n          );\n        }\n      }\n    });\n  };\n\n  useEffect(() => {\n    getPosts();\n  }, [currentFilter]);\n\n  useEffect(() => {\n    getFilters();\n  }, []);\n\n  const goToGallery = () => (window.location.href = `/blog-company/gallery`);\n\n  return (\n    <article className=\"dashboard-container-page\">\n      <Row>\n        <Col sm={12}>\n          <h2>Mundo Pride</h2>\n        </Col>\n      </Row>\n      <Row className=\"d-flex-column\">\n        <Col lg={9} md={8} sm={12}>\n          <div className=\"blog-company-main-card\">\n            {posts.slice(0, 1).map((card, index) => {\n              return (\n                <>\n                  <div className=\"thumb\" key={index}>\n                    {card.urlImage ? (\n                      <img src={card.urlImage} alt=\"\" />\n                    ) : (\n                      <img src={imageEmpty} alt=\"\" />\n                    )}\n                  </div>\n                  <div className=\"content\">\n                    <h6>\n                      <Moment\n                        date={card.publishDate}\n                        format=\"dddd D [de] MMMM [del] YYYY\"\n                      />\n                    </h6>\n                    <h3>{card.title}</h3>\n                    <div className=\"flex-end\">\n                      <Link\n                        to={`/our-company/1/${card.companyPostId}`}\n                        className=\"btn-show-more\"\n                      >\n                        Ver más <span></span>\n                      </Link>\n                    </div>\n                  </div>\n                </>\n              );\n            })}\n          </div>\n          <div className=\"blog-company-cards\">\n            <Row>\n              <Col sm={12}>\n                <h3>Éste mes</h3>\n              </Col>\n              <Col lg={12}>\n                {posts.slice(1).map((card, index) => {\n                  return (\n                    <div className=\"card-post\" key={index + index}>\n                      <div className=\"thumb\">\n                        {card.urlImage ? (\n                          <img src={card.urlImage} alt=\"\" />\n                        ) : (\n                          <img src={imageEmpty} alt=\"\" />\n                        )}\n                      </div>\n                      <div className=\"content\">\n                        <h6>\n                          <Moment\n                            date={card.publishDate}\n                            format=\"dddd D [de] MMMM [del] YYYY\"\n                          />\n                        </h6>\n                        <h4>{card.title}</h4>\n                        <div className=\"flex-end\">\n                          <Link\n                            to={`/our-company/1/${card.companyPostId}`}\n                            className=\"btn-show-more\"\n                          >\n                            Ver más <span></span>\n                          </Link>\n                        </div>\n                      </div>\n                    </div>\n                  );\n                })}\n                {posts.slice(0, -1).length === 0 ? (\n                  <div className=\"card-empty\">\n                    <p>No hay publicaciones de éste mes.</p>\n                  </div>\n                ) : (\n                  \"\"\n                )}\n              </Col>\n            </Row>\n          </div>\n        </Col>\n        <Col lg={3} md={4} sm={12}>\n          <aside className=\"aside_gallery\">\n            <Link to={`/blog-company/gallery`} className=\"gallery_content_link\">\n              <div className=\"bg-gradient-pride\"></div>\n              <img src={bgGallery} alt=\"Galeria Mundo Pride\" />\n              <p>Mundo Pride</p>\n              <h2 className=\"mb-4\">Galería </h2>\n              <Button onClick={goToGallery} className=\"btn\">\n                Ir a Galería\n              </Button>\n            </Link>\n            <AsideOurCompany\n              setCurrentFilter={setCurrentFilter}\n              currentFilter={currentFilter}\n              filters={filter}\n            />\n          </aside>\n        </Col>\n      </Row>\n      <Row>\n        <Col sm={12}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </article>\n  );\n};\n","import React, { useState, useEffect } from \"react\";\nimport {Button, Collapse} from \"reactstrap\";\nimport {BiChevronDown, BiChevronRight, BiChevronUp, BiMinus, BiPlus} from \"react-icons/bi\";\nimport dayjs from \"dayjs\";\n\nexport function ItemMorePostSecondary({ post, setCurrentFilter,key}) {\n    const [isOpen, setIsOpen] = useState(false);\n    const [yearsCounting, setYearCounting] = useState([]);\n\n    const toggle = () => setIsOpen(!isOpen);\n\n    useEffect(() => {\n        const anio = new Date().getFullYear();\n        if (anio === parseInt(post.year)) setIsOpen(true);\n        countingPostsByYear()\n    }, []);\n\n    const countingPostsByYear = () => {\n        let counter = 0;\n        post.months.map((month) => counter += month.count)\n        setYearCounting(counter)\n    }\n\n    const selectActiveItem = (item) => {\n        item.activeItem = false;\n        setCurrentFilter(dayjs(item.filterMonthDate).format('YYYY-MM-DD'))\n    }\n\n    return (\n        <div key={key}>\n            <span onClick={toggle}>\n                <div className=\"text\">\n                    <span>{!isOpen ? <BiPlus /> : <BiMinus />}</span>\n                    <p>{post.year} <span>{yearsCounting}</span></p>\n                </div>\n                <i>{!isOpen ? <BiChevronDown /> : <BiChevronUp />}</i>\n            </span>\n            <Collapse className=\"box_collapse\" isOpen={isOpen}>\n                <ul>\n                    {post.months.map((item, i) => (\n                        <li key={i}>\n                            <Button\n                                className={`btn-publication-white ${(item.activeItem) ? 'active' : ''}`}\n                                onClick={() => selectActiveItem(item)}\n                            >\n                                <p>{item.month}\n                                    {post.months.map((month, ind) => {\n                                        return (\n                                            (month.month === item.month) ? <span key={ind}>{month.count}</span> : ''\n                                        )\n                                    })}\n                                </p>\n                                <BiChevronRight />\n                            </Button>\n                        </li>\n                    ))}\n                </ul>\n            </Collapse>\n        </div>\n    );\n}\n","import React from \"react\";\nimport {ItemMorePostSecondary} from \"./itemMorePostSecondary\";\n\nexport function AsideBlogCompanySecondary({setCurrentFilter,filters}) {\n\n    return (\n      <div className=\"publications-list\">\n          {filters.map((item,i) => (\n              <ItemMorePostSecondary\n                  post={item}\n                  setCurrentFilter={setCurrentFilter}\n                  key={i}\n              />\n          ))}\n      </div>\n    );\n}\n","import React, { useEffect, useState } from \"react\";\nimport \"./blogCompany.scss\";\nimport { Col, Row } from \"reactstrap\";\nimport \"./blogCompany.scss\";\nimport imgEmpty from \"../../assets/imgs/no-image.jpeg\";\nimport { BsArrowRight } from \"react-icons/bs\";\nimport { Link } from \"react-router-dom\";\nimport { companyPostViewService } from \"../../services/compayPostView.service\";\nimport Moment from \"react-moment\";\nimport { AsideBlogCompanySecondary } from \"../companyPost/asideBlogCompanySecondary\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport dayjs from \"dayjs\";\n\nexport const BlogCompanySecondary = () => {\n  const [posts, setPosts] = useState([]);\n  const [selectedPost, setSelectedPost] = useState({});\n  const [currentFilter, setCurrentFilter] = useState(\"\");\n  const [filter, setFilter] = useState([]);\n\n  const clearVariable = () => {\n    setSelectedPost({});\n    setPosts([]);\n  };\n\n  const getPosts = async () => {\n    clearVariable();\n    companyPostViewService.getByFilters(currentFilter, 2).then((result) => {\n      if (result && result.length > 0) {\n        handleSelectPost(result[0]);\n        setPosts(result);\n        const lastMonthConverted = dayjs(result[0].publishDate).format(\n          \"YYYY-MM\"\n        );\n        setCurrentFilter(lastMonthConverted);\n        setFilter(\n          filter.map((item) => {\n            return {\n              year: item.year,\n              months: item.months.map((child) => {\n                return {\n                  activeItem:\n                    dayjs(child.filterMonthDate).format(\"YYYY-MM\") ===\n                    lastMonthConverted,\n                  count: child.count,\n                  filterMonthDate: child.filterMonthDate,\n                  month: child.month,\n                };\n              }),\n            };\n          })\n        );\n      }\n    });\n  };\n\n  const handleSelectPost = (item) => {\n    if (!item.isRead) {\n      companyPostViewService\n        .InsertRead({ CompanyPostId: item.companyPostId })\n        .then((result) => {\n          if (result) {\n            setSelectedPost(result);\n            if (posts.length > 0) {\n              posts.map((m) => {\n                if (m.companyPostId === item.companyPostId) m.isRead = true;\n                return m;\n              });\n            }\n          }\n        });\n    } else {\n      getPost(item.companyPostId);\n    }\n  };\n\n  const getPost = (id) => {\n    companyPostViewService.getById(id).then((result) => {\n      if (result.postType === 0) setSelectedPost(result);\n      if (result.postType === 1) result.iconPath = result.urlImage;\n    });\n  };\n\n  const getFilters = async () => {\n    companyPostViewService.getDateFilters(0, 2).then((result) => {\n      if (result) {\n        if (result && result.length > 0) {\n          const lastItem = result[0];\n          const lastMonth = lastItem.months[0];\n          const lastMonthConverted = dayjs(lastMonth.filterMonthDate).format(\n            \"YYYY-MM-DD\"\n          );\n          setCurrentFilter(lastMonthConverted);\n          setFilter(\n            result.map((item) => {\n              return {\n                year: item.year,\n                months: item.months.map((child) => {\n                  return {\n                    activeItem:\n                      dayjs(child.filterMonthDate).format(\"YYYY-MM-DD\") ===\n                      lastMonthConverted,\n                    count: child.count,\n                    filterMonthDate: child.filterMonthDate,\n                    month: child.month,\n                  };\n                }),\n              };\n            })\n          );\n        }\n      }\n    });\n  };\n\n  useEffect(() => {\n    getPosts();\n  }, [currentFilter]);\n\n  useEffect(() => {\n    getFilters();\n  }, []);\n\n  return (\n    <article className=\"dashboard-container-page\">\n      <Row>\n        <Col sm={12}>\n          <h2>Orgullo LGBTQ+</h2>\n        </Col>\n        <Col lg={9}>\n          {posts.slice(0, 1).map((card, i) => {\n            return (\n              <Link\n                key={i}\n                to={`/stories-pride/1/${card.companyPostId}`}\n                className=\"blog-secondary-main-card\"\n              >\n                <div className=\"thumb\">\n                  {card.urlImage ? (\n                    <img src={card.urlImage} alt={card.title} name={card.title} />\n                  ) : (\n                    <img src={imgEmpty} alt=\"Orgullo Pride\" name=\"Mundo Pride\" />\n                  )}\n                </div>\n                <div className=\"content\">\n                  {card.title.length <= 120 ? (\n                    <h3>{card.title}</h3>\n                  ) : (\n                    <h3>{card.title.substring(0, 120)}...</h3>\n                  )}\n                  <h6>\n                    <Moment\n                      date={card.publishDate}\n                      format=\"dddd D [de] MMMM [del] YYYY\"\n                    />\n                  </h6>\n                  <div className=\"flex-end\">\n                    <Link\n                      to={`/stories-pride/1/${card.companyPostId}`}\n                      className=\"btn-next\"\n                    >\n                      Leer <BsArrowRight />{\" \"}\n                    </Link>\n                  </div>\n                </div>\n              </Link>\n            );\n          })}\n          <div className=\"blog-secondary-cards\">\n            <Row>\n              <Col sm={12}>\n                <h3>Publicaciones del mes</h3>\n              </Col>\n              <Col sm={12}>\n                <div className=\"card-posts-secondary\">\n                  {posts.slice(1).map((card, i) => {\n                    return (\n                      <Link\n                        key={i}\n                        to={`/stories-pride/1/${card.companyPostId}`}\n                        className=\"card-post-secondary\"\n                      >\n                        <div className=\"card-post-thumb\">\n                          {card.urlImage ? (\n                            <img src={card.urlImage} alt=\"\" />\n                          ) : (\n                            <img src={imgEmpty} alt=\"\" />\n                          )}\n                        </div>\n                        <div className=\"card-post-content\">\n                          <div>\n                            {card.title.length <= 60 ? (\n                              <h3>{card.title}</h3>\n                            ) : (\n                              <h3>{card.title.substring(0, 60)}...</h3>\n                            )}\n                            <h6>\n                              <Moment\n                                date={card.publishDate}\n                                format=\"dddd D [de] MMMM [del] YYYY\"\n                              />\n                            </h6>\n                          </div>\n                          <div className=\"flex-end\">\n                            <Link\n                              to={`/stories-pride/1/${card.companyPostId}`}\n                              className=\"btn-next\"\n                            >\n                              Leer <BsArrowRight />\n                            </Link>\n                          </div>\n                        </div>\n                      </Link>\n                    );\n                  })}\n                  {posts.slice(1).length === 0 ? (\n                    <div className=\"empty\">\n                      <i className=\"icon-empty\"></i>\n                      <p>No hay más publicaciones</p>\n                    </div>\n                  ) : (\n                    \"\"\n                  )}\n                </div>\n              </Col>\n            </Row>\n          </div>\n        </Col>\n        <Col lg={3}>\n          <div className={`blog-secondary-aside`}>\n            <h3>Otras Publicaciones</h3>\n            <AsideBlogCompanySecondary\n              setCurrentFilter={setCurrentFilter}\n              currentFilter={currentFilter}\n              filters={filter}\n            />\n          </div>\n        </Col>\n      </Row>\n      <Row>\n        <Col sm={12}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </article>\n  );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Collapse } from \"reactstrap\";\nimport { BiChevronDown, BiChevronRight } from \"react-icons/bi\";\nimport dayjs from \"dayjs\";\n\nexport function ItemMorePostGallery({\n  filter,\n  getGallery,\n  year,\n  months,\n  currentFilter,\n}) {\n  const [isOpen, setIsOpen] = useState(false);\n  const toggle = () => setIsOpen(!isOpen);\n  const [counterSelected, setCounterSelected] = useState(0);\n  const [yearsCounting, setYearCounting] = useState([]);\n\n  useEffect(() => {\n    const anio = new Date().getFullYear();\n    if (anio === parseInt(year)) setIsOpen(true);\n    countingPostsByYear();\n  }, []);\n\n  const formattingDate = (date, index) => {\n    getGallery(dayjs(date).format(\"YYYY-MM-DDTHH:mm:ss\"));\n    setCounterSelected(index);\n  };\n\n  const countingPostsByYear = () => {\n    let counter = 0;\n    months.map((month, i) => (counter += month.count));\n    setYearCounting(counter);\n  };\n\n  return (\n    <div key={year}>\n      <Button onClick={toggle} className=\"btn-publication-white\">\n        <p>\n          {filter.year} <span>{yearsCounting}</span>\n        </p>\n        <BiChevronDown />\n      </Button>\n      <Collapse className={`box_collapse`} isOpen={isOpen}>\n        <ul>\n          {filter.months.map((item, i) => (\n            <li key={i}>\n              <Button\n                className={`btn-publication-white ${\n                  item.filterMonthDate == currentFilter ? \"active\" : \"\"\n                }`}\n                onClick={() => formattingDate(item.filterMonthDate, i)}\n              >\n                <p>\n                  {item.month}\n                  {months.map((month, index) => {\n                    return month.month === item.month ? (\n                      <span key={index}>{month.count}</span>\n                    ) : (\n                      \"\"\n                    );\n                  })}\n                </p>\n                <BiChevronRight />\n              </Button>\n            </li>\n          ))}\n        </ul>\n      </Collapse>\n    </div>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { companyPostViewService } from \"../../services/compayPostView.service\";\nimport { ItemMorePostGallery } from \"./itemMorePostGallery\";\n\nexport function AsideBlogCompanyGallery({\n  getGallery,\n  postType,\n  activeAsideSurvey,\n  postGalleryId,\n  setLastFiter,\n  currentFilter,\n}) {\n  const [filter, setFilter] = useState([]);\n  const [filterId, setFilterId] = useState(0);\n\n  useEffect(() => {\n    companyPostViewService\n      .getDateFilters(postType, postGalleryId)\n      .then((result) => {\n        if (result) {\n          setFilter([]);\n          if (result && result.length > 0) {\n            setFilter(result);\n            let lastItem = result[0];\n            let lastMonth = lastItem.months[0];\n            lastMonth.postType = postType;\n            setLastFiter(lastMonth);\n            setFilterId(postGalleryId);\n          }\n        }\n      });\n  }, [postType, postGalleryId]);\n\n  return (\n    // <div className={`blog-worldpride-aside-publications ${activeAsideSurvey}`}>\n    <div className={`blog-worldpride-aside-publications`}>\n      <h5 className=\"mb-3\">Otras Publicaciones</h5>\n      <div className=\"publications-list\">\n        {filter.map((item, i) => (\n          <ItemMorePostGallery\n            filter={item}\n            getGallery={getGallery}\n            year={item.year}\n            months={item.months}\n            key={i}\n            currentFilter={currentFilter}\n          />\n        ))}\n      </div>\n    </div>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./blogCompany.scss\";\nimport { IoArrowBackOutline } from \"react-icons/io5\";\nimport { Button, Col, Row } from \"reactstrap\";\nimport \"lightbox.js-react/dist/index.css\";\n\nimport { SlideshowLightbox } from \"lightbox.js-react\";\nimport { companyPostService } from \"../../services/companyPost.service\";\nimport Moment from \"react-moment\";\nimport { AsideBlogCompanyGallery } from \"../companyPost/asideBlogCompanyGallery\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport dayjs from \"dayjs\";\n\nexport function BlogGallery(props) {\n  const [gallery, setGallery] = useState([]);\n  const [selectedGallery, setSelectedGallery] = useState(null);\n  let [currentFilter, setCurrentFilter] = useState('');\n  const [lastFiter, setLastFiter] = useState({});\n  let [images, setImages] = useState(null);\n  const postGalleryId = 1;\n  const postTypeGallery = 1;\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n\n  const getGallery = async () => {\n      companyPostService\n        .getAllFront(postGalleryId, currentFilter)\n        .then((result) => {\n          if (result) {\n            if (result && result.length > 0) {\n              setGallery([]);\n              setGallery(result);\n            }\n          }\n        });\n  }\n\n  async function getCurrentImagesGallery(item) {\n    companyPostService\n      .getCompanyPostImagesPathByIdFront(item.companyPostId)\n      .then((result) => {\n        setImages(null);\n        let imageslist = [];\n        result.files.map((item) =>\n          imageslist.push({\n            src: item.path,\n            thumbnail: item.path,\n          })\n        );\n        setImages(imageslist);\n      });\n  }\n\n  const setCurrentGallerySelect = (item) => {\n    setSelectedGallery(item);\n    getCurrentImagesGallery(item);\n  };\n\n  useEffect(() => {\n    if (lastFiter.filterMonthDate !== undefined && postGalleryId === lastFiter.postType) {\n      const dateLastFilter = dayjs(lastFiter.filterMonthDate).format('YYYY-MM-DD');\n      if (currentFilter === dateLastFilter) getGallery();\n      else setCurrentFilter(dayjs(lastFiter.filterMonthDate).format('YYYY-MM-DDTHH:mm:ss'));\n    }\n  }, [lastFiter]);\n\n  useEffect(() => {\n    setCurrentFilter(dayjs().format('YYYY-MM-DDTHH:mm:ss'));\n  }, []);\n\n  useEffect(() => {\n    getGallery();\n  }, [currentFilter]);\n\n  useEffect(() => {\n    gallery.slice(0, 1).map((item) => setSelectedGallery(item));\n    gallery.slice(0, 1).map((item) => getCurrentImagesGallery(item));\n  }, [gallery])\n\n  return (\n    <article className=\"dashboard-container-page\">\n      <Row>\n        <Col sm={12}>\n          <h2> <Link to=\"/blog-company\"><IoArrowBackOutline></IoArrowBackOutline></Link> Mundo Pride | Galería</h2>\n        </Col>\n        <Col lg={9} md={8} sm={12}>\n          <Row>\n            <Col sm={12}>\n              <div className=\"blog-gallery-main\">\n                {selectedGallery ? (\n                  <>\n                    <img src={selectedGallery.iconPath} alt=\"\" />\n                    <div className=\"content\">\n                      <h4>{selectedGallery.title}</h4>\n                      <div className=\"flex-end\">\n                        <span>\n                          <Moment\n                            date={selectedGallery.publishDate}\n                            format=\"dddd D [de] MMMM [del] YYYY\"\n                          />\n                        </span>\n                      </div>\n                    </div>\n                  </>\n                ) : (\n                  \"\"\n                )}\n              </div>\n            </Col>\n            <Col sm={12}>\n              {images ? (\n                <SlideshowLightbox className=\"blog-gallery-lightbox\">\n                  {images.map((img, i) => {\n                    return (\n                      <img\n                        key={i}\n                        className=\"blog-gallery-lightbox-item\"\n                        src={img.src}\n                        alt=\"\"\n                      />\n                    );\n                  })}\n                </SlideshowLightbox>\n              ) : (\n                \"\"\n              )}\n              <div className=\"blog-gallery-content\">\n                <h3>Publicaciones de este mes</h3>\n                <div className=\"cards-container\">\n                  {gallery.map((card, i) => {\n                    return (\n                      <div className=\"card-gallery\" key={card.companyPostId}>\n                        <img src={card.iconPath} alt=\"\" />\n                        <div className=\"info\">\n                          <h4>{card.title}</h4>\n                          <div className=\"flex-end\">\n                            <Button\n                              onClick={() => setCurrentGallerySelect(card)}\n                              className=\"btn-outline-white\"\n                            >\n                              Ver Galería <span></span>\n                            </Button>\n                          </div>\n                        </div>\n                      </div>\n                    );\n                  })}\n                </div>\n              </div>\n            </Col>\n          </Row>\n        </Col>\n        <Col lg={3} md={4} sm={12}>\n          <AsideBlogCompanyGallery\n            getGallery={setCurrentFilter}\n            activeAsideSurvey={activeAsideSurvey}\n            setLastFiter={setLastFiter}\n            postType={postTypeGallery}\n            postGalleryId={postGalleryId}\n            currentFilter={currentFilter}\n          />\n        </Col>\n      </Row>\n      <Row>\n        <Col sm={12}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </article>\n  );\n}","import React, { useState, useEffect } from \"react\";\nimport { companyPostService } from \"../../services/companyPost.service\";\nimport { storageService } from \"../../services/storage.service\";\nimport {FaTrash} from \"react-icons/fa\";\nimport {Button} from \"antd\";\nimport \"./companyPostAttachment.scss\";\nimport {IoIosAttach} from \"react-icons/io\";\n\nexport function CompanyPostAttachment(props) {\n  const [localStorage, setlocalStorage] = useState([]);\n\n  async function getAttachments() {\n    if (props.CompanyPostId !== null && props.CompanyPostId > 0) {\n      companyPostService\n        .getCompanyPostFilesById(props.CompanyPostId)\n        .then((result) => {\n          if (result !== null && result.files !== null) {\n            setlocalStorage(result.files);\n          }\n        });\n    }\n  }\n\n  useEffect(() => {\n    getAttachments();\n  }, [props.CompanyPostId]);\n\n  const handleDelete = (event, data) => {\n    storageService\n      .deleteStorage({\n        EntityId: data.entityId,\n        EntityTypeId: data.entityTypeId,\n        Sequence: data.sequence,\n      })\n      .then((result) => {\n        setlocalStorage(\n          localStorage.filter(function (storage) {\n            return storage.sequence !== data.sequence;\n          })\n        );\n      });\n    event.stopPropagation();\n  };\n\n\n\n  return (\n    <div className={'list-attachment'}>\n      {localStorage != null && localStorage.length > 0 ? (\n          <>\n              <p>Archivos adjuntos</p>\n              <ul className=\"list-attachment__list\">\n                  {localStorage.map((item) => (\n                      <li className={'list-attachment__item'}>\n                          <a\n                              className=\"ant-btn ant-btn-link\"\n                              key={\n                                  item.entityId + \"-\" + item.entityTypeId + \"-\" + item.sequence\n                              }\n                              download={item.fileName} href={`data:application/octet-stream;base64,${item.file}`}\n                          >\n                              <span className={'icon-attach'}><IoIosAttach/></span>\n                              <p>{item.fileName}</p>\n                          </a>\n                          {props.IsDelete != null && props.IsDelete ? (\n                              <Button\n                                  htmlType={'button'}\n                                  type={'link'}\n                                  onClick={(event) => handleDelete(event, item)}\n                                  icon={<FaTrash/>}\n                              />\n                          ) : null}\n                      </li>\n                  ))}\n              </ul>\n          </>\n      ) : null}\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport { ContentState, convertToRaw, EditorState } from \"draft-js\";\nimport { Editor } from \"react-draft-wysiwyg\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { Form, ListGroup } from \"reactstrap\";\n\nexport function EditorCommentsBox(props) {\n  const [editorState, setEditorState] = useState(() =>\n    EditorState.createEmpty()\n  );\n\n  async function save(e) {\n    e.preventDefault();\n    const blocks = convertToRaw(editorState.getCurrentContent()).blocks;\n    const value = blocks\n      .map((block) => (!block.text.trim() && \"\\n\") || block.text)\n      .join(\"\\n\");\n    if (props.id) {\n      props.clickSave(value, props.id);\n    } else {\n      props.clickSave(value);\n    }\n    setEditorState(EditorState.createEmpty());\n  }\n  const blocks = convertToRaw(editorState.getCurrentContent()).blocks;\n\n  return (\n    <Form onSubmit={save} className=\"comment_new_box\">\n      <Editor\n        editorState={editorState}\n        onEditorStateChange={setEditorState}\n        wrapperClassName=\"comments__box\"\n        editorClassName=\"comments__editor\"\n        toolbarClassName=\"comments__toolbar\"\n        toolbar={{\n          options: [\"emoji\"],\n        }}\n      />\n      {blocks[0].text.length === 0 || blocks[0].text.trim() === \"\" ? (\n        <button type=\"submit\" className=\"btn-send-comment disabled\" disabled>\n          <i className=\"fas fa-paper-plane\"></i>\n        </button>\n      ) : (\n        <button type=\"submit\" className=\"btn-send-comment\">\n          <i className=\"fas fa-paper-plane\"></i>\n        </button>\n      )}\n    </Form>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { EditorCommentsBox } from \"./editorCommentsBox\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { Button } from \"antd\";\n\nexport function ItemsComment(props) {\n  const [data, setData] = useState({});\n\n  const [showAnswerComment, setShowAnswerComment] = useState(\"\");\n  const [showParentAnswer, setShowParentAnswer] = useState(\"hidden\");\n  const handleAnswerComment = () => {\n    setShowParentAnswer(showAnswerComment === \"\" ? \"\" : \"hidden\");\n    setShowAnswerComment(showAnswerComment === \"\" ? \"active\" : \"\");\n  };\n\n  useEffect(() => {\n    if (props.contenido) {\n      setData(props.contenido);\n      setShowAnswerComment(\"\");\n    }\n  }, [props]);\n\n  const SubComment = ({ dataArray }) => {\n    return (\n      <>\n        <div className=\"box_items_sub_comment\">\n          {dataArray.map((item) => (\n            <div className=\"items_sub_comment\">\n              <div className=\"user_avatar_comment\">\n                <div\n                  className={\" rotating \" + item.userProfile.identityFlagName}\n                ></div>\n                <div className=\"avatar\">\n                  <img src={item.userProfile.urlProfileImage} alt=\"PMX\" />\n                </div>\n              </div>\n              <div className=\"user_comment_mns\">\n                <div className=\"comment_mns\">\n                  <p className=\"author_name\">\n                    {item.userProfile && item.userProfile.nickname\n                      ? item.userProfile.nickname\n                      : item.userProfile\n                      ? item.userProfile.firstName +\n                        (item.userProfile.middleName\n                          ? \" \" + item.userProfile.middleName\n                          : \"\") +\n                        \" \" +\n                        item.userProfile.lastName\n                      : \"\"}\n                  </p>\n                  <p className=\"user_mns\">{item.comment}</p>\n                </div>\n                <div className=\"comment_tool_options\">\n                  <span className=\"date\">\n                    <Moment locale=\"es\" format=\" DD MMMM YYYY, h:mm:ss a\">\n                      {item && item.createDate}\n                    </Moment>\n                  </span>\n                </div>\n              </div>\n            </div>\n          ))}\n        </div>\n        <div className={`new_comment_answer ${showAnswerComment}`}>\n          <EditorCommentsBox\n            profileUser={props.profileUser}\n            clickSave={props.clickSave}\n            id={data.companyPostCommentId}\n          />\n        </div>\n      </>\n    );\n  };\n\n  return (\n    <article>\n      <div className=\"item_initial_comment\">\n        <div className=\"user_avatar_comment\">\n          <div\n            className={\n              \"rotating \" +\n              (data.userProfile ? data.userProfile.identityFlagName : \"\")\n            }\n          ></div>\n          <div className=\"avatar\">\n            <img\n              src={data.userProfile ? data.userProfile.urlProfileImage : \"\"}\n              alt=\"PMX\"\n            />\n          </div>\n        </div>\n        <div className=\"user_comment_mns\">\n          <div className=\"comment_mns\">\n            <p className=\"author_name\">\n              {data.userProfile && data.userProfile.nickname\n                ? data.userProfile.nickname\n                : data.userProfile\n                ? data.userProfile.firstName +\n                  (data.userProfile.middleName\n                    ? \" \" + data.userProfile.middleName\n                    : \"\") +\n                  \" \" +\n                  data.userProfile.lastName\n                : \"\"}\n            </p>\n            <p className=\"user_mns\">{data ? data.history : \"\"} </p>\n          </div>\n\n          <div className=\"comment_tool_options\">\n            {/* {props.btnBack ? ( */}\n            <Button\n              className=\"btn_answer_comment\"\n              size=\"small\"\n              onClick={handleAnswerComment}\n            >\n              Responder\n            </Button>\n            {/* // ) : (\n            //   \"\"\n            // )} */}\n\n            <span className=\"date\">\n              <Moment locale=\"es\" format=\" DD MMMM YYYY, h:mm:ss a\">\n                {data && data.createDate}\n              </Moment>\n            </span>\n            {data.isReport ? (\n              <div className=\"btnx-group no-block\">\n                <span\n                  className=\"dropdown-toggle\"\n                  data-toggle=\"dropdown\"\n                  aria-expanded=\"false\"\n                >\n                  <i className=\"fas fa-ellipsis-v\"></i>\n                </span>\n\n                <div className=\"dropdown-menu\">\n                  {data.isReport ? (\n                    <span\n                      className=\"dropdown-item\"\n                      onClick={() => props.eliminar(data.companyPostCommentId)}\n                    >\n                      Eliminar Mensaje\n                    </span>\n                  ) : (\n                    <span\n                      className=\"dropdown-item\"\n                      onClick={() => props.report(data.companyPostCommentId)}\n                    >\n                      Reportar\n                    </span>\n                  )}\n                </div>\n              </div>\n            ) : (\n              \"\"\n            )}\n          </div>\n        </div>\n      </div>\n      {data.comments ? <SubComment dataArray={data.comments} /> : \"\"}\n    </article>\n  );\n}\n","import { callApi, callApiFileStorage } from \"./service\";\nimport swal from \"sweetalert\";\n\n\nexport const companyPostCommentService = {\n    create,\n    newComment,\n    getById,\n    newSubComment,\n    reportComment,\n    getReportById,\n    deleteComment\n};\n\nasync function create(params) {\n    return callApi(\"/backend/PostComment\", \"POST\", params).then(\n        (result) => {\n            if (result.responseCode == \"00\") {\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n            }\n        }\n    );\n}\n\nasync function newComment(params) {\n    return callApi(\"/backend/PutComment\", \"PUT\", params).then(\n        (result) => {\n            if (result.responseCode == \"00\") {\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n            }\n        }\n    );\n}\n\nasync function reportComment(TypeId, IdPadre, IdHijo) {\n    return callApi(\"/backend/PostComment/\" + TypeId + \"/\" + IdPadre + '/' + IdHijo, \"delete\").then(\n        (result) => {\n            if (result.responseCode == \"00\") {\n                return result.data;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return null;\n            }\n        }\n    );\n}\n\nasync function deleteComment(IdPadre, IdHijo) {\n    return callApi(\"/backend/PostComment/Delete/\" + IdPadre + '/' + IdHijo, \"delete\").then(\n        (result) => {\n            if (result.responseCode == \"00\") {\n                return result.data;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return null;\n            }\n        }\n    );\n}\n\nasync function newSubComment(params, id) {\n    return callApi(\"/backend/PutComment/Sub/\" + id, \"PUT\", params).then(\n        (result) => {\n            if (result.responseCode == \"00\") {\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n            }\n        }\n    );\n}\n\nasync function getById(companyPostId) {\n    return callApi(\"/backend/PostComment/\" + companyPostId, \"GET\").then(\n        (result) => {\n            if (result.responseCode == \"00\") {\n                return result.data;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return null;\n            }\n        }\n    );\n}\n\nasync function getReportById(companyPostCommentId) {\n    return callApi(\"/backend/PostComment/Report/\" + companyPostCommentId, \"GET\").then(\n        (result) => {\n            if (result.responseCode == \"00\") {\n                return result.data;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return null;\n            }\n        }\n    );\n}","import React, { useState, useEffect } from \"react\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { EditorCommentsBox } from \"./editorCommentsBox\";\nimport { ItemsComment } from \"./itemsComment\";\nimport { companyPostCommentService } from \"../../services/companyPostComment.service\";\nimport swal from \"sweetalert\";\n\nexport function CommentsBox({\n  companyPostId,\n  bandera,\n  profileUser,\n  updateCountComment,\n  reportId,\n  setBandera,\n  postType,\n}) {\n  const [comments, setComments] = useState([]);\n\n  async function getComment(id) {\n    companyPostCommentService\n      .getById(id)\n      .then((result) => {\n        if (result && result.length > 0) {\n          updateCountComment(result.length);\n          setComments(result);\n        }\n      })\n      .catch((err) => console.log(\"ERROR EN ENDPOINT comments\" + err));\n  }\n\n  async function newComment(comment) {\n    let newComm = {\n      History: comment,\n      CompanyPostId: companyPostId,\n    };\n\n    companyPostCommentService\n      .create(newComm)\n      .then((result) => getComment(companyPostId));\n  }\n\n  async function newSubComment(comment, SubcommentId) {\n    let newSubComm = { Comment: comment };\n    companyPostCommentService\n      .newSubComment(newSubComm, SubcommentId)\n      .then((result) => getComment(companyPostId));\n  }\n\n  async function ReportComment(CommentId, SubCommentId) {\n    companyPostCommentService\n      .reportComment(\n        postType,\n        CommentId,\n        SubCommentId === undefined ? -1 : SubCommentId\n      )\n      .then((result) => {\n        swal({ text: \"Comentario Reportado\", icon: \"info\" });\n        setComments([]);\n        getComment(companyPostId);\n      });\n  }\n\n  async function GetReportComment(reportId) {\n    companyPostCommentService.getReportById(reportId).then((result) => {\n      let arrayresult = [];\n      if (result != null) arrayresult.push(result);\n      setComments(arrayresult);\n    });\n  }\n\n  async function DeleteComment(CommentId, SubCommentId) {\n    companyPostCommentService\n      .deleteComment(CommentId, SubCommentId === undefined ? -1 : SubCommentId)\n      .then((result) => {\n        if (result != null) {\n          swal({ text: result, icon: \"info\" });\n          GetReportComment(reportId);\n        }\n      });\n  }\n\n  useEffect(() => {\n    setBandera(1);\n    if (companyPostId && reportId === undefined) getComment(companyPostId);\n\n    if (bandera === 1) {\n      if (reportId) GetReportComment(reportId);\n    }\n  }, [companyPostId, reportId]);\n\n  return (\n    <div className=\"comments_content_gral\">\n      <EditorCommentsBox profileUser={profileUser} clickSave={newComment} />\n\n      <div className=\"comment_history\">\n        {comments.length === 0 ? (\n          <h6 className=\"mb-4\">Sin comentarios</h6>\n        ) : (\n          <h6 className=\"mb-4\">Comentarios</h6>\n        )}\n\n        {comments.map((item) => (\n          <ItemsComment\n            key={item.CommentId}\n            contenido={item}\n            profileUser={profileUser}\n            clickSave={newSubComment}\n            report={ReportComment}\n            eliminar={DeleteComment}\n          />\n        ))}\n      </div>\n    </div>\n  );\n}\n","export const CompanyPostCategoryTypes = {\n   PRIDEWORLD: 1,\n   LGBTQPRIDE: 2\n};","import React, { useEffect, useState } from \"react\";\nimport { companyPostViewService } from \"../../services/compayPostView.service\";\nimport { backendService } from \"./../../services/backend.service\";\nimport { CompanyPostAttachment } from \"../../components/companyPost/companyPostAttachment\";\nimport \"./ourCompany.scss\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { CommentsBox } from \"./commentsBox\";\nimport bgGallery from \"../../assets/imgs/icon-images.png\";\nimport { Link } from \"react-router-dom\";\nimport { Button } from \"rsuite\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { CompanyPostCategoryTypes } from \"../../enums/companyPostCategoryTypes\";\n\nexport function CompanyPostPrimary(props) {\n  const [comments, setComments] = useState(0);\n  const [postComment, setPostComment] = useState({});\n  const [commentBandera, setCommentBandera] = useState(0);\n  const [postTotalLikes, setPostTotalLikes] = useState(0);\n  const postCategoryId = 1;\n  const postType = 1;\n  const [showCommentBox, setShowCommentBox] = useState(\"\");\n\n  const handleCommentBox = () =>\n    setShowCommentBox(showCommentBox === \"\" ? \"is-show\" : \"\");\n\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n  const AsidePurchaseBox = () =>\n    setStateAsideSurvey(activeAsideSurvey === \"\" ? \" is-show\" : \"\");\n  const [posts, setPosts] = useState([]);\n  const [sectionActive, setSectionActive] = useState(\"1\");\n  const [userComment, setUserComment] = useState({});\n  const [selectedPost, setSelectedPost] = useState({});\n  const [currentFilter, setcurrentFilter] = useState(\"NaN-aN-aN\");\n  const [lastFiter, setLastFiter] = useState({});\n\n  const getProfile = () => {\n    backendService.userProfile().then((data) => {\n      let userProfile = {\n        name: data.firstName + \" \" + data.middleName + \" \" + data.lastName,\n        genderIdentityFlag: data.genderIdentityFlag,\n        urlProfileImage: data.urlProfileImage,\n      };\n      setUserComment(userProfile);\n    });\n  };\n\n  const getPosts = async () => {\n    clearVariable();\n    companyPostViewService\n      .getByFilters(\n        currentFilter == \"NaN-aN-aN\" ? undefined : currentFilter,\n        postCategoryId\n      )\n      .then((result) => {\n        if (result && result.length > 0) {\n          let item = {};\n          if (\n            props.match.params.id !== undefined &&\n            props.match.params.postId !== undefined\n          ) {\n            getPost(props.match.params.postId);\n          } else {\n            item = result[0];\n            handleSelectPost(item);\n          }\n          setPosts(result);\n        }\n      });\n  };\n\n  const getPost = (id) => {\n    companyPostViewService.getById(id).then((result) => {\n      if (result.postType === 0) {\n        setComments(result.totalComments);\n        setSelectedPost(result);\n        postLikes(result, 0);\n      } else if (result.postType === 1) {\n        result.iconPath = result.urlImage;\n      }\n    });\n  };\n\n  // useEffect(() => {\n  //   if (props.match.params.id !== undefined && props.match.params.postId !== undefined) {\n  //     let newParam = { reportId: props.match.params.reportId };\n  //     setPostComment(newParam);\n  //   } else {\n  //     clearVariable();\n  //     if (currentFilter !== \"NaN-aN-aN\" && lastFiter.filterMonthDate !== undefined) {\n  //       selectedPost.companyPostId = null;\n  //       if (postCategoryId === lastFiter.postType) getPosts();\n  //     }\n  //   }\n  // }, [currentFilter, props]);\n\n  useEffect(() => {\n    getPost(props.match.params.postId);\n    getProfile();\n    // if (props.match.params.postId === undefined) getPosts();\n  }, []);\n\n  // useEffect(() => {\n  //   if (lastFiter.filterMonthDate !== undefined && postCategoryId === lastFiter.postType) {\n  //     getProfile();\n  //     let datelastFilter = formatDate(new Date(lastFiter.filterMonthDate));\n  //     if (currentFilter === datelastFilter) {\n  //       getPosts();\n  //     } else {\n  //       getPostDateFilter(new Date(lastFiter.filterMonthDate));\n  //     }\n  //   }\n  // }, [lastFiter]);\n\n  const handleSelectPost = (item) => {\n    if (!item.isRead) {\n      companyPostViewService\n        .InsertRead({ CompanyPostId: item.companyPostId })\n        .then((result) => {\n          if (result) {\n            setSelectedPost(result);\n            postLikes(result, 0);\n            if (posts.length > 0) {\n              let items = posts.map((m) => {\n                if (m.companyPostId === item.companyPostId) m.isRead = true;\n                return m;\n              });\n            }\n          }\n        });\n    } else {\n      getPost(item.companyPostId);\n    }\n  };\n\n  const handleOnUnRead = () => {\n    let id = sectionActive === \"1\" ? selectedPost.companyPostId : \"\";\n    companyPostViewService\n      .DeleteReadPost({ CompanyPostId: id })\n      .then((result) => {\n        if (result) {\n          setSelectedPost(result);\n          let items = posts.map((m) => {\n            if (m.companyPostId === id) m.isRead = false;\n            return m;\n          });\n          postLikes(result, 0);\n          setPosts(items);\n        }\n      });\n  };\n\n  const clearVariable = () => {\n    setSelectedPost({});\n    setPosts([]);\n  };\n\n  const postLikes = (post, order) => {\n    const totalPost = post.like ? post.totalLikes * 5 - 4 : post.totalLikes * 5;\n    setPostTotalLikes(totalPost);\n  };\n\n  const handleOnLike = () => {\n    const id = sectionActive === \"1\" ? selectedPost.companyPostId : \"\";\n    companyPostViewService.InsertLike({ CompanyPostId: id, CompanyPostCategoryId: CompanyPostCategoryTypes.PRIDEWORLD }).then((result) => {\n      if (result) setSelectedPost(result);\n      postLikes(result, 1);\n    });\n  };\n\n  const handleOnUnLike = () => {\n    const id = selectedPost.companyPostId;\n    companyPostViewService\n      .DeleteLikePost({ CompanyPostId: id })\n      .then((result) => {\n        if (result) setSelectedPost(result);\n        postLikes(result, 0);\n      });\n  };\n\n  const getPostDateFilter = (filterDate) => {\n    const dateFilter = formatDate(filterDate);\n    setcurrentFilter(dateFilter);\n  };\n\n  const formatDate = (date) => {\n    let datestring =\n      date.getFullYear() +\n      \"-\" +\n      (\"0\" + (date.getMonth() + 1)).slice(-2) +\n      \"-\" +\n      (\"0\" + date.getDate()).slice(-2);\n    return datestring;\n  };\n\n  useEffect(() => {\n    if (currentFilter !== undefined && lastFiter.filterMonthDate !== undefined)\n      getPosts();\n  }, [currentFilter]);\n\n  useEffect(() => {\n    getPostDateFilter(new Date(lastFiter.filterMonthDate));\n  }, [lastFiter]);\n\n  //const [dropdownOpen, setDropdownOpen] = useState(false);\n  //const toggleDots = () => setDropdownOpen((prevState) => !prevState);\n\n  const goToGallery = () => (window.location.href = `/blog-company/gallery`);\n\n  return (\n    <article className=\"dashboard-container-page\">\n      <h2 className=\"d-flex-start\">\n        <Link to=\"/blog-company\" className=\"btn-back-post\">\n          <i className=\"icon-chevron-left\"></i>\n        </Link>\n        {props.titleComponent}\n      </h2>\n      <div className={`wrapper_worldpride_post`}>\n        <div className=\"content_worldpride_post\">\n          <div className=\"head_worldpride_post\">\n            <div className={'head_worldpride_post__thumbnail'}>\n              <div className=\"post_title\">\n                <p>\n                  {selectedPost.publishDate && (\n                      <Moment locale=\"es\" format=\" DD [de] MMMM [de] YYYY\">\n                        {selectedPost.publishDate}\n                      </Moment>\n                  )}\n                </p>\n                <h2>{selectedPost.title}</h2>\n\n                {selectedPost.totalViews && (\n                    <p className=\"views_post\">\n                      <span>{selectedPost.totalViews * 5} vista(s)</span>\n                    </p>\n                )}\n              </div>\n              {selectedPost.urlImage && (\n                  <div className=\"post_thumb\">\n                    <img src={selectedPost.urlImage} alt=\"\" />\n                  </div>\n              )}\n            </div>\n            <CompanyPostAttachment\n                CompanyPostId={selectedPost.companyPostId}\n                IsDelete={false}\n            />\n          </div>\n          <div className=\"info_worldpride_post\">\n            <div dangerouslySetInnerHTML={{ __html: selectedPost.text }} />\n          </div>\n          <div className=\"comments_worldpride_post\">\n            <div className=\"barra_likes_container\">\n              {selectedPost.like ? (\n                <Button className=\"btn-like liked\" onClick={handleOnUnLike}>\n                  <i className=\"icon-heart-fill \"></i> Me gusta {postTotalLikes}\n                </Button>\n              ) : (\n                <Button className=\"btn-like \" onClick={handleOnLike}>\n                  <i className=\"icon-heart-fill \"></i> Me gusta {postTotalLikes}\n                </Button>\n              )}\n              {/* <div className=\"likes-total\">\n                <span className=\"span_like red\">\n                  <i className=\"icon-heart-fill \"></i>\n                </span>\n              </div> */}\n            </div>\n            <CommentsBox\n              isShow={showCommentBox}\n              companyPostId={selectedPost.companyPostId}\n              handleCommentBox={handleCommentBox}\n              profileUser={userComment}\n              updateCountComment={setComments}\n              reportId={postComment?.reportId}\n              bandera={commentBandera}\n              setBandera={setCommentBandera}\n              postType={postType}\n            />\n          </div>\n        </div>\n        <aside className=\"aside_gallery\">\n          <Link to={`/blog-company/gallery`} className=\"gallery_content_link\">\n            <div className=\"bg-gradient-pride\"></div>\n            <img src={bgGallery} alt=\"Galeria Mundo Pride\" />\n            <p>Mundo Pride</p>\n            <h2 className=\"mb-4\">Galería </h2>\n            <Button onClick={goToGallery}>\n              Ir a Galería\n            </Button>\n          </Link>\n        </aside>\n      </div>\n      <FooterHome />\n    </article>\n  );\n}\n\n\n\n\n\n\n","import React, { useEffect, useState } from \"react\";\nimport { Col, Row } from \"reactstrap\";\nimport { companyPostViewService } from \"../../services/compayPostView.service\";\nimport { backendService } from \"./../../services/backend.service\";\nimport \"./ourCompany.scss\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { CommentsBox } from \"./commentsBox\";\nimport { CompanyPostAttachment } from \"../../components/companyPost/companyPostAttachment\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { Link } from \"react-router-dom\";\nimport { Button } from \"rsuite\";\nimport { CompanyPostCategoryTypes } from \"../../enums/companyPostCategoryTypes\";\n\nexport function CompanyPostSecondary(props) {\n  const [comments, setComments] = useState(0);\n  const [postComment, setPostComment] = useState({});\n  // const [activeTab, setActiveTab] = useState(\"1\");\n  const [commentBandera, setCommentBandera] = useState(0);\n  const [postTotalLikes, setPostTotalLikes] = useState(0);\n  const postCategoryId = props.match.params.id;\n  //const [gallery, setGallery] = useState([]);\n  //const [selectedGallery, setSelectedGallery] = useState({});\n  const postType = 0;\n  const [showCommentBox, setShowCommentBox] = useState(\"\");\n\n  // const toggle = (tab) => {\n  //   if (activeTab !== tab) {\n  //     setActiveTab(tab);\n  //     setSectionActive(tab);\n  //   }\n  // };\n\n  const handleCommentBox = () =>\n    setShowCommentBox(showCommentBox === \"\" ? \"is-show\" : \"\");\n\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n  // const AsidePurchaseBox = () => setStateAsideSurvey(activeAsideSurvey === \"\" ? \" is-show\" : \"\");\n  const [posts, setPosts] = useState([]);\n  // const [sectionActive, setSectionActive] = useState(\"1\");\n  const [userComment, setUserComment] = useState({});\n  const [selectedPost, setSelectedPost] = useState({});\n  const [currentFilter, setcurrentFilter] = useState(\"NaN-aN-aN\");\n  const [lastFiter, setLastFiter] = useState({});\n\n  const getProfile = () => {\n    backendService.userProfile().then((data) => {\n      let userProfile = {\n        name: data.firstName + \" \" + data.middleName + \" \" + data.lastName,\n        genderIdentityFlag: data.genderIdentityFlag,\n        urlProfileImage: data.urlProfileImage,\n      };\n      setUserComment(userProfile);\n    });\n  };\n\n  const getPosts = async () => {\n    clearVariable();\n    companyPostViewService\n      .getByFilters(\n        currentFilter == \"NaN-aN-aN\" ? undefined : currentFilter,\n        postCategoryId\n      )\n      .then((result) => {\n        if (result && result.length > 0) {\n          let item = {};\n          if (\n            props.match.params.id !== undefined &&\n            props.match.params.postId !== undefined\n          ) {\n            getPost(props.match.params.postId);\n          } else {\n            item = result[0];\n            handleSelectPost(item);\n          }\n          setPosts(result);\n        }\n      });\n  };\n\n  const getPost = (id) => {\n    companyPostViewService.getById(id).then((result) => {\n      if (result.postType === 0) {\n        setComments(result.totalComments);\n        setSelectedPost(result);\n        postLikes(result, 0);\n      }\n      // else if (result.postType === 1) {\n      //   // toggle(\"2\");\n      //   result.iconPath = result.urlImage;\n      //   handleSelectGallery(result);\n      // }\n    });\n  };\n\n  /*useEffect(() => {\n    if (props.match.params.id !== undefined && props.match.params.postId !== undefined) {\n      let newParam = { reportId: props.match.params.postId };\n      setPostComment(newParam);\n      getPost(props.match.params.postId);\n    } \n    // else {\n    //   clearVariable();\n      // if ( currentFilter !== \"NaN-aN-aN\" && lastFiter.filterMonthDate !== undefined) {\n      //   selectedPost.companyPostId = null;\n      //   if (postCategoryId === lastFiter.postType) {\n      //     getPosts();\n      //   } \n      // } \n    \n  }, [currentFilter, props]);*/\n\n  // useEffect(() => {\n  //   debugger\n  //   if (props.match.params.postId === undefined) {\n  //     // setSectionActive(\"1\");\n  //     getPosts();\n  //   }\n  // }, []);\n\n  // useEffect(() => {\n  //   if ( lastFiter.filterMonthDate !== undefined && postCategoryId === lastFiter.postType ) {\n  //     getProfile();\n  //     let datelastFilter = formatDate(new Date(lastFiter.filterMonthDate));\n  //     if (currentFilter === datelastFilter) {\n  //       getPosts();\n  //     } else {\n  //       getPostDateFilter(new Date(lastFiter.filterMonthDate));\n  //     }\n  //   }\n  // }, [lastFiter]);\n\n  useEffect(() => {\n    getPost(props.match.params.postId);\n    getProfile();\n    // if (props.match.params.postId === undefined) getPosts();\n  }, []);\n\n  const handleSelectPost = (item) => {\n    if (!item.isRead) {\n      companyPostViewService\n        .InsertRead({ CompanyPostId: item.companyPostId })\n        .then((result) => {\n          if (result) {\n            setSelectedPost(result);\n            getProfile();\n            postLikes(result, 0);\n            if (posts.length > 0) {\n              let items = posts.map((m) => {\n                if (m.companyPostId === item.companyPostId) m.isRead = true;\n                return m;\n              });\n            }\n          }\n        });\n    } else {\n      getPost(item.companyPostId);\n    }\n  };\n\n  // const handleOnUnRead = () => {\n  //   var id =\n  //     sectionActive === \"1\"\n  //       ? selectedPost.companyPostId\n  //       : selectedGallery.companyPostId;\n  //   companyPostViewService\n  //     .DeleteReadPost({ CompanyPostId: id })\n  //     .then((result) => {\n  //       if (result) {\n  //         setSelectedPost(result);\n  //         let items = posts.map((m) => {\n  //           if (m.companyPostId == id) m.isRead = false;\n  //           return m;\n  //         });\n  //         postLikes(result, 0);\n  //         setPosts(items);\n  //       }\n  //     });\n  // };\n\n  const clearVariable = () => {\n    setSelectedPost({});\n    setPosts([]);\n  };\n\n  const postLikes = (post, order) => {\n    var totalPost = post.like ? post.totalLikes * 5 - 4 : post.totalLikes * 5;\n    setPostTotalLikes(totalPost);\n  };\n\n  const handleOnLike = () => {\n    let id = selectedPost.companyPostId;\n    companyPostViewService.InsertLike({ CompanyPostId: id, CompanyPostCategoryId: CompanyPostCategoryTypes.LGBTQPRIDE }).then((result) => {\n      if (result) setSelectedPost(result);\n      postLikes(result, 1);\n    });\n  };\n\n  const handleOnUnLike = () => {\n    var id = selectedPost.companyPostId;\n    companyPostViewService\n      .DeleteLikePost({ CompanyPostId: id })\n      .then((result) => {\n        if (result) setSelectedPost(result);\n        postLikes(result, 0);\n      });\n  };\n\n  const [activeView, setStateView] = useState(\"\");\n  const boxActiveView = () => {\n    setStateView(activeView === \"\" ? \" is-show\" : \"\");\n  };\n\n  const getPostDateFilter = (filterDate) => {\n    var dateFilter = formatDate(filterDate);\n    setcurrentFilter(dateFilter);\n  };\n\n  const formatDate = (date) => {\n    let datestring =\n      date.getFullYear() +\n      \"-\" +\n      (\"0\" + (date.getMonth() + 1)).slice(-2) +\n      \"-\" +\n      (\"0\" + date.getDate()).slice(-2);\n    return datestring;\n  };\n\n  // async function getGallery() {\n  //   currentFilter !== \"NaN-aN-aN\" && companyPostService.getAllFront(1, currentFilter).then((result) => {\n  //       if (result) {\n  //         if (result && result.length > 0) {\n  //           // setGallery([]);\n  //           // setGallery(result);\n  //           if (selectedGallery?.companyPostId && selectedGallery !== null && selectedGallery.companyPostId >= 0) {\n  //             if (props.match.params.id !== undefined && props.match.params.postId !== undefined && currentFilter === \"NaN-aN-aN\") {\n  //               getPost(props.match.params.postId);\n  //             } else {\n  //               const itemExist = result.filter(\n  //                 (element) =>\n  //                   element.companyPostId === selectedGallery.companyPostId\n  //               );\n\n  //               // if (itemExist.length === 0) {\n  //               //   handleSelectGallery(result[0]);\n  //               // } else {\n  //               //   setCurrentGallery(result);\n  //               // }\n  //             }\n  //           } else {\n  //             if (\n  //               props.match.params.id !== undefined &&\n  //               props.match.params.postId !== undefined &&\n  //               selectedPost.companyPostId !== props.match.params.postId &&\n  //               currentFilter === \"NaN-aN-aN\"\n  //             ) {\n  //               getPost(props.match.params.postId);\n  //             }\n  //             // else {\n  //             //   // handleSelectGallery(result[0]);\n  //             // }\n  //           }\n  //         }\n  //       }\n  //     });\n  // }\n\n  // useEffect(() => {\n  //   setGallery([]);\n  //   setSelectedGallery({});\n  //   if (activeTab === \"1\" && currentFilter !== undefined && lastFiter.filterMonthDate !== undefined) {\n  //     getPosts();\n  //   } else if (activeTab === \"2\" && currentFilter !== undefined && lastFiter.filterMonthDate !== undefined) {\n  //     getGallery();\n  //   }\n  // }, [currentFilter, activeTab]);\n\n  useEffect(() => {\n    if (currentFilter !== undefined && lastFiter.filterMonthDate !== undefined)\n      getPosts();\n  }, [currentFilter]);\n\n  useEffect(() => {\n    getPostDateFilter(new Date(lastFiter.filterMonthDate));\n  }, [lastFiter]);\n\n  // const setCurrentGallery = (dataItems) => {\n  //   if (dataItems != null && dataItems.length > 0) {\n  //     for (var i = 0; i < dataItems.length; i++) {\n  //       var item = dataItems[i];\n  //       if (selectedGallery.companyPostId === item.companyPostId) setCurrentGallerySelect(dataItems[i]);\n  //     }\n  //   }\n  // };\n\n  // const setCurrentGallerySelect = (item) => {\n  //   setSectionActive(\"2\");\n  //   setSelectedGallery(item);\n  // };\n\n  // const handleSelectGallery = (item) => {\n  //   if (!item.isRead) {\n  //     companyPostViewService\n  //       .InsertRead({ CompanyPostId: item.companyPostId })\n  //       .then((result) => {\n  //         selectedGallery.companyPostId = item.companyPostId;\n  //         getGallery();\n  //       });\n  //   } else {\n  //     setSelectedGallery(item);\n  //     setSectionActive(\"2\");\n  //   }\n  // };\n\n  /*const [dropdownOpen, setDropdownOpen] = useState(false);\n  const toggleDots = () => setDropdownOpen((prevState) => !prevState);\n\n  const goToGallery = () => {\n    window.location.href = `/blog-company/gallery`;\n  }*/\n\n  //const [isOpen, setIsOpen] = useState(false);\n  //const togglePosts = () => setIsOpen(!isOpen);\n\n  return (\n    <article className=\"dashboard-container-page\">\n      <Row className=\"blog-secondary-post-container\">\n        <Col sm={12}>\n          <h2 className=\"d-flex-start\">\n            <Link to=\"/stories-pride\" className=\"btn-back-post\">\n              <i className=\"icon-chevron-left\"></i>\n            </Link>\n            {props.titleComponent}\n          </h2>\n        </Col>\n        <Col sm={12}>\n          {selectedPost.urlImage && (\n            <div className=\"post-single-header\">\n              <div className=\"post-single-title\">\n                <p>\n                  {selectedPost.publishDate && (\n                    <Moment locale=\"es\" format=\" DD [de] MMMM [de] YYYY\">\n                      {selectedPost.publishDate}\n                    </Moment>\n                  )}\n                </p>\n                <h3>{selectedPost.title}</h3>\n              </div>\n              <div className=\"post-single-thumb\">\n                <img src={selectedPost.urlImage} alt=\"\" />\n              </div>\n            </div>\n          )}\n        </Col>\n        <Col lg={9} md={12} sm={12}>\n          <div className={`post-single-body`}>\n            <div className=\"post-single-content\">\n              {selectedPost.totalViews && (\n                <Row>\n                  <Col lg={12}>\n                    <div className=\"post-content\">\n                      <div className=\"read\">\n                        <p className=\"views_post\">\n                          <span className=\"number\">\n                            {selectedPost.totalViews * 5}\n                          </span>\n                          <span>vista(s)</span>\n                        </p>\n                      </div>\n                      <div\n                        dangerouslySetInnerHTML={{ __html: selectedPost.text }}\n                      />\n                    </div>\n                  </Col>\n                </Row>\n              )}\n              <br />\n              <br />\n              <Row>\n                <Col sm={12}>\n                  <div className=\"comments_worldpride_post\">\n                    <div className=\"barra_likes_container\">\n                      {selectedPost.like ? (\n                        <Button\n                          className=\"btn-like liked\"\n                          onClick={handleOnUnLike}\n                        >\n                          <i className=\"icon-heart-fill \"></i> Me gusta{\" \"}\n                          {postTotalLikes}\n                        </Button>\n                      ) : (\n                        <Button className=\"btn-like \" onClick={handleOnLike}>\n                          <i className=\"icon-heart-fill \"></i> Me gusta{\" \"}\n                          {postTotalLikes}\n                        </Button>\n                      )}\n                      {/* <div className=\"likes-total\">\n                <span className=\"span_like red\">\n                  <i className=\"icon-heart-fill \"></i>\n                </span>\n              </div> */}\n                    </div>\n\n                    <CommentsBox\n                      isShow={showCommentBox}\n                      companyPostId={selectedPost.companyPostId}\n                      handleCommentBox={handleCommentBox}\n                      profileUser={userComment}\n                      updateCountComment={setComments}\n                      reportId={postComment?.reportId}\n                      bandera={commentBandera}\n                      setBandera={setCommentBandera}\n                      postType={postType}\n                    />\n                    {/* <CompanyPostAttachment\n                    CompanyPostId={selectedPost.companyPostId}\n                    IsDelete={false}\n                    /> */}\n                  </div>\n                </Col>\n              </Row>\n            </div>\n          </div>\n        </Col>\n        {/* <Col lg={3} md={12} sm={12}>\n          <div className={`blog-secondary-aside`}>\n            <h3>Otras Publicaciones</h3>\n            <AsideBlogCompanySecondary\n                getPost={getPostDateFilter}\n                activeAsideSurvey={activeAsideSurvey}\n                postCategoryId={postCategoryId}\n                setLastFiter={setLastFiter}\n                postType={postType}\n            />\n          </div>\n        </Col> */}\n      </Row>\n      <Col sm={12}>\n        <FooterHome />\n      </Col>\n    </article>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ecommerceService } from \"../../services/ecommerce.service\";\nimport \"./caringCommunity.scss\";\nimport {Col, Row} from \"antd\";\n\nexport const ItemCaring = () => {\n  const [CommunitiesData, setCommunitiesData] = useState([]);\n\n  useEffect(() => {\n    getCommunities();\n  }, []);\n\n  async function getCommunities() {\n    ecommerceService.getProviders(14).then((result) => setCommunitiesData(result));\n  }\n\n  return (\n    <Row gutter={16}>\n        {CommunitiesData.map((community) => (\n            <Col xl={6} lg={8} md={12} sm={24} xs={24}>\n              <div className=\"card-caring\">\n                <div className=\"card-caring-content\">\n                  <a href={community.urlSite} target=\"_blank\" rel=\"noopener noreferrer\">\n                    <h5>{community.name}</h5>\n                  </a>\n                  <div className=\"card-caring-content-info\">\n                    <Link to={\"/caring-community/\" + community.id}>\n                      <div className=\"container-img\">\n                        <img src={community.providerLogo} alt={community.name} />\n                      </div>\n                    </Link>\n                    <Link to={\"/caring-community/\" + community.id} className=\"text-description\">\n                      {(community.info.length > 65) ?\n                          community.info.substring(0,65)+' ...'\n                          :\n                          community.info\n                      }\n                    </Link>\n                  </div>\n                </div>\n              </div>\n            </Col>\n        ))}\n    </Row>\n  );\n}\n","import React from \"react\";\nimport \"./caringCommunity.scss\";\nimport \"moment/locale/es\";\nimport { ItemCaring } from \"./itemCaring\";\nimport { ToolDiscount } from \"../../components/toolDiscount/toolDiscount\";\nimport {Col, Row} from \"antd\";\nimport {FooterHome} from \"../../components/footer/footerHome\";\n\nexport function CaringCommunity(props) {\n  return (\n    <section className=\"dashboard-container-page\">\n      <div className=\"content_surveys w-100\">\n        <Row gutter={16}>\n          <Col xs={24}>\n            <h2>Comunidad Solidaria | Acumulado $80,150</h2>\n          </Col>\n          <Col xs={24}>\n            <div className=\"caring-community-header\">\n              <p className=\"badge-dashed green\">\n                Sabemos que aún hay muchas causas que se pueden apoyar.\n                <br />\n                Si conoces alguna compártenos su información por chat a PrideMx\n                Administrador.\n              </p>\n              <ToolDiscount isCaringCommunity={true} />\n            </div>\n          </Col>\n          <Col xs={24}>\n            {/* {process.env.REACT_APP_ENVIROMENT == \"prod\" && ( */}\n            <div className=\"iframe-powerbi\">\n              <iframe\n                  title=\"DashboardBanner prueba\"\n                  width=\"600\"\n                  height=\"373.5\"\n                  src=\"https://app.powerbi.com/view?r=eyJrIjoiNjk4N2JjMTUtNTQxYS00OGQyLWI0M2ItM2RiZWFlM2UyNDlmIiwidCI6IjkzNTk1ZjgyLWNhMzgtNDZiMy1hOTZlLTgzY2FjYTI5ZTMwNSJ9&pageName=ReportSection\"\n                  frameborder=\"0\"\n                  allowFullScreen=\"true\"\n              ></iframe>\n            </div>\n            {/* )} */}\n          </Col>\n          <Col xs={24}>\n            <h3>Fundaciones sin fines de lucro</h3>\n            <ItemCaring />\n          </Col>\n        </Row>\n      </div>\n      <Row>\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport \"./jobBank.scss\";\nimport Moment from \"react-moment\";\nimport { BsArrowRight } from \"react-icons/bs\";\nimport { Button } from \"antd\";\n\nexport function ItemJobPublished({\n  job,\n  misEmpl,\n  deleteJob,\n  activateJob,\n  jobPublished,\n  key,\n}) {\n  const [isAdmin, setIsAdmin] = useState(false);\n  const roleName = useSelector((state) => state.userSettings.roleName);\n\n  let publicationDate = new Date(job.publicationDate);\n  let mxnPesos = new Intl.NumberFormat(\"es-MX\", {\n    style: \"currency\",\n    currency: \"MXN\",\n  });\n  useEffect(() => {\n    // setIsAdmin(()=> {return roleName == \"Recursos Humanos\"})\n    if (roleName === \"Recursos Humanos\") {\n      setIsAdmin(true);\n    }\n  }, [roleName]);\n\n  return (\n    <article className={`job-bank-card ${jobPublished}`} key={key}>\n      <div className=\"job-bank-card-header\">\n        <div className=\"thumb\">\n          <img src={job.companyImage} alt={\"Logo empresa \" + job.companyName} />\n        </div>\n        <div className=\"info\">\n          <h5>\n            {job.title}\n          </h5>\n          <div className=\"content mt-2\">\n            <p className=\"company mb-1\">\n              <i className=\"icon-hotel\"></i> {job.companyName\n                ? job.companyName.length <= 20\n                  ? job.companyName\n                  : job.companyName.substring(0, 20) + \"...\"\n                : \"\"}\n            </p>\n            <p className=\"location\">\n              <i className=\"icon-location\"></i> {job.location}\n            </p>\n          </div>\n          <div className=\"date\">\n            <p>\n              <Moment locale=\"es\" format=\"DD [de] MMMM YYYY\">\n                {job.publicationDate}\n              </Moment>\n            </p>\n          </div>\n        </div>\n      </div>\n      <div className=\"job-bank-card-footer\">\n        <div className=\"price\" style={{maxWidth: \"200px\"}}>\n          <p>{mxnPesos.format(job.salary)}</p>\n        </div>\n        <div className=\"btns\">\n          {isAdmin === false && (\n            <Link\n              to={\"/details-job/\" + job.jobId}\n              className=\"btn-outline-green\"\n            >\n              Aplicar{\" \"}\n              <span>\n                <BsArrowRight />\n              </span>\n            </Link>\n          )}\n          {(job.createUser === localStorage.getItem(\"userId\") ||\n            isAdmin === true) && (\n            <Link to={\"/candidates/\" + job.jobId} className=\"btn-outline-green\">\n              Ver candidatos\n              <span>\n                <BsArrowRight />\n              </span>\n            </Link>\n          )}\n          {misEmpl && job.active && (\n            <Link to={\"/edit-job/\" + job.jobId} className=\"btn-outline-green\">\n              Editar{\" \"}\n              <span>\n                <BsArrowRight />\n              </span>\n            </Link>\n          )}\n          {misEmpl && job.active && (\n            <Button\n              onClick={() => deleteJob(job.jobId)}\n              className=\"btn-outline-green\"\n            >\n              Dar de baja{\" \"}\n              <span>\n                <BsArrowRight />\n              </span>\n            </Button>\n          )}\n          {misEmpl && !job.active && (\n            <Button\n              onClick={() => activateJob(job.jobId)}\n              className=\"btn-outline-green\"\n            >\n              Reactivar{\" \"}\n              <span>\n                <BsArrowRight />\n              </span>\n            </Button>\n          )}\n        </div>\n      </div>\n    </article>\n  );\n}\n","import { callApi, callApiFileStorage } from './service'\nimport swal from \"sweetalert\"\n\nexport const JobBankService = {\n    getJobById,\n    insertJob,\n    updateJob,\n    deleteJob,\n    getCategories,\n    getJobAll,\n    getJobsByUserId,\n    GetJobsToApprove,\n    authorizeJob,\n    activateJob,\n    getJobSections,\n    insertJobSections,\n    updateJobSections,\n};\n\nasync function getJobById(jobId) {\n    return callApi('/backend/Job/' + jobId, 'GET').then((result) => handleResponse(result));\n}\n\nasync function insertJob(params) {\n    return callApiFileStorage('/backend/Job', 'POST', params, false).then((result) => handleResponse(result));\n}\n\nasync function updateJob(params) {\n    return callApiFileStorage('/backend/Job', 'PUT', params, false).then((result) => handleResponse(result));\n}\n\nasync function deleteJob(jobId) {\n    return callApi('/backend/Job/' + jobId, 'DELETE').then((result) => handleResponse(result));\n}\n\nasync function getCategories() {\n    return callApi('/backend/Job/Categories', 'GET').then((result) => handleResponse(result));\n}\n\nasync function getJobAll(pageIndex, pageCount, orderBy, occupationFilter = \"\", locationFilter = \"\") {\n    return callApi(`/backend/Job/All?pageIndex=${pageIndex}&pageCount=${pageCount}&orderBy=${orderBy}&occupationFilter=${occupationFilter}&locationFilter=${locationFilter}`, 'GET').then((result) => handleResponse(result));\n}\n\nasync function getJobsByUserId(userId, active, pageIndex, pageCount) {\n    return callApi(`/backend/Job/?userId=${userId}&isActive=${active}&pageIndex=${pageIndex}&pageCount=${pageCount}`, 'GET').then((result) => handleResponse(result));\n}\n\nasync function GetJobsToApprove(pageIndex, pageCount) {\n    return callApi(`/backoffice/Job/ToApprove?pageIndex=${pageIndex}&pageCount=${pageCount}`, 'GET').then((result) => handleResponse(result));\n}\n\nasync function authorizeJob(jobId, approve) {\n    return callApi('/backoffice/Job/' + jobId + \"?approve=\" + approve, 'POST').then((result) => handleResponse(result));\n}\n\nasync function activateJob(jobId) {\n    return callApi('/backend/Job/' + jobId + \"/Activate\", 'POST').then((result) => handleResponse(result));\n}\n\nfunction getJobSections() {\n    return callApi('/backend/JobSection/Types', 'GET').then((result) => handleResponse(result));\n}\n\nfunction insertJobSections(params) {\n    return callApi('/backend/JobSection', 'POST', params).then((result) => handleResponse(result), (error) => null);\n}\n\nfunction updateJobSections(params) {\n    return callApi('/backend/JobSection', 'PUT', params).then((result) => handleResponse(result), (error) => null);\n}\n\nfunction handleResponse(result) {\n    if (result.responseCode === '00')\n        return result.data;\n    else {\n        swal({ text: result.responseMessage, icon: \"error\" })\n        return null;\n    }\n}","import React, { useEffect, useState } from \"react\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport {Button} from \"antd\";\n\nexport function AsideCategoriesJobs(props) {\n  const [categories, setCategories] = useState([]);\n\n  useEffect(() => {\n    JobBankService.getCategories().then((result) => {\n      setCategories(result.slice(0, 10));\n    });\n  }, [])\n\n  return (\n    <aside className=\"job-bank-categories\">\n      <h5>Búsquedas populares</h5>\n      <ul className=\"job-bank-categories-content\">\n        {categories.map((category, i) => (\n            <li key={i}>\n                <Button size=\"small\" key={i}>{category.name}</Button>\n            </li>\n        ))}\n      </ul>\n    </aside>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport \"./jobBank.scss\";\nimport { Col, Form, Input, Row, Button, Select } from \"antd\";\n\nimport bannerBolsaTrabajo from \"../../assets/imgs/banner-bolsatrabajo.png\";\nimport { FaSearch } from \"react-icons/fa\";\nimport { AsideCategoriesJobs } from \"./asideCategoriesJobs\";\n\nexport function JobBankHeader({ title, setFilters, filters, searchPage }) {\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [totalCount, setTotalCount] = useState(0);\n\n  useEffect(() => {\n    GetJobsToApprove();\n  }, []);\n\n  const GetJobsToApprove = () => {\n    JobBankService.GetJobsToApprove(1, 8).then((result) => {\n      if (!result) return;\n      setTotalCount(result.totalCount);\n    });\n  };\n\n  const onChangeLocation = (e) =>\n    setFilters({ ...filters, locationFilter: e.target.value });\n\n  const onChangePosition = (e) =>\n    setFilters({ ...filters, occupationFilter: e.target.value });\n\n  return (\n    <Row gutter={8}>\n      <Col xs={24}>\n        <h2>{title}</h2>\n      </Col>\n      <Col xl={12} lg={14} md={12} sm={24} xs={24}>\n        <Row>\n          <Col xs={24}>\n            <AsideCategoriesJobs />\n          </Col>\n          <Col md={{ span: 0 }} sm={{ span: 24 }} xs={24}>\n            <article className=\"job-bank-header\">\n              <div className=\"job-bank-header-thumb\">\n                <img\n                  className=\"drawer__bg__img\"\n                  src={bannerBolsaTrabajo}\n                  alt=\"Ser parte de la comunidad PrideMx te da estos beneficios\"\n                />\n              </div>\n            </article>\n          </Col>\n          <Col xs={24}>\n            <article className=\"job-bank-header\">\n              <div className=\"job-bank-header-info mt-4\">\n                <h4 className=\"mt-4\">\n                  Te ayudamos a encontrar el empleo ideal para ti de forma\n                  rápida\n                </h4>\n                <Form layout=\"vertical\" className=\"form-pride \">\n                  <Row gutter={16}>\n                    <Col lg={12} md={24} sm={24} xs={24}>\n                      <Form.Item label=\"Ubicación\" onChange={onChangeLocation}>\n                        <Input\n                          type=\"text\"\n                          name=\"location\"\n                          prefix={<i className=\"icon-location\"></i>}\n                          size=\"large\"\n                          placeholder=\"Ubicación\"\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col lg={12} md={24} sm={24} xs={24}>\n                      <Form.Item label=\"Puesto\" onChange={onChangePosition}>\n                        <Input\n                          type=\"text\"\n                          size=\"large\"\n                          name=\"position\"\n                          prefix={<i className=\"icon-jobs\"></i>}\n                          placeholder=\"Puesto, profesión, cargo, etc.\"\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col lg={12} md={24} sm={24} xs={24}>\n                      <Form.Item label=\"Ordenar por\" className=\"job__select\">\n                        <Select\n                          size=\"large\"\n                          onChange={(value) => searchPage(1, value)}\n                        >\n                          <Select.Option value=\"Fecha\">Fecha</Select.Option>\n                          <Select.Option value=\"Salario\">Salario</Select.Option>\n                        </Select>\n                      </Form.Item>\n                    </Col>\n                    <Col lg={12} md={24} sm={24} xs={24}>\n                      <div className=\"footer-btn\">\n                        <Button\n                          size=\"large\"\n                          htmlType=\"submit\"\n                          className=\"btn-searcher\"\n                          onClick={() => searchPage()}\n                        >\n                          Buscar <FaSearch />\n                        </Button>\n                      </div>\n                    </Col>\n                  </Row>\n                </Form>\n              </div>\n            </article>\n          </Col>\n        </Row>\n      </Col>\n      <Col xl={12} lg={10} md={12} sm={{ span: 0 }} xs={{ span: 0 }}>\n        <div className=\"container-job-bank-header\">\n          <article className=\"job-bank-header\">\n            <div className=\"job-bank-header-thumb\">\n              <img\n                className=\"drawer__bg__img\"\n                src={bannerBolsaTrabajo}\n                alt=\"Ser parte de la comunidad PrideMx te da estos beneficios\"\n              />\n            </div>\n          </article>\n          <div className=\"job-bank-btns\">\n            {roleName === \"Recursos Humanos\" && (\n              <Link className=\"btn-gradient-green dark\" to=\"/list-new-jobs\">\n                <span className=\"font-weight-bold\">\n                  {totalCount !== 0 ? (\n                    <span style={{ marginRight: \".25rem\" }}>{totalCount}</span>\n                  ) : (\n                    <span style={{ marginRight: \".25rem\" }}>0</span>\n                  )}\n                  Autorizar vacantes\n                </span>\n                <span className=\"min\">Administrador</span>\n              </Link>\n            )}\n            <Link className=\"btn-gradient-green dark\" to=\"/jobs-published\">\n              <span>Mis empleos</span>\n              <span className=\"min\">Empresas</span>\n            </Link>\n            <Link className=\"btn-gradient-green \" to=\"/register-job\">\n              Publicar empleo\n            </Link>\n          </div>\n        </div>\n      </Col>\n      {/* <Col md={{ span: 0 }} sm={24} xs={24}>\n        <div className=\"job-bank-btns\">\n          <Row gutter={8}>\n            {roleName === \"Recursos Humanos\" && (\n              <Col sm={12} xs={24}>\n                <Link className=\"btn-gradient-green\" to=\"/list-new-jobs\">\n                  <span>\n                    {totalCount !== 0 ? (\n                      <span style={{ marginRight: \".5rem\" }}>{totalCount}</span>\n                    ) : (\n                      <span style={{ marginRight: \".5rem\" }}>0</span>\n                    )}\n                    por autorizar\n                  </span>\n                  <span className=\"min\">Administrador</span>\n                </Link>\n              </Col>\n            )}\n            <Col sm={12} xs={24}>\n              <Link className=\"btn-gradient-green\" to=\"/jobs-published\">\n                <span>Mis empleos</span>\n                <span className=\"min\">Empresas</span>\n              </Link>\n            </Col>\n            <Col sm={roleName === \"Recursos Humanos\" ? 24 : 12} xs={24}>\n              <div className=\"d-flex-center\" style={{ height: \"100%\" }}>\n                <Link className=\"btn-outline-dark\" to=\"/register-job\">\n                  Publicar empleo\n                </Link>\n              </div>\n            </Col>\n          </Row>\n        </div>\n      </Col> */}\n    </Row>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { ItemJobPublished } from \"./itemJobPublished\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport { JobBankHeader } from \"./jobBankHeader\";\nimport \"./jobBank.scss\";\nimport { Col, Row } from \"antd\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\n\nexport function JobBank() {\n  const [jobs, setJobs] = useState([]);\n  const [pages, setPages] = useState([]);\n  const [totalCount, setTotalCount] = useState(0);\n  const [totalPages, setTotalPages] = useState(0);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [order, setOrder] = useState(\"Fecha\");\n  const [filters, setFilters] = useState({\n    occupationFilter: \"\",\n    locationFilter: \"\",\n  });\n\n  useEffect(() => {\n    searchPage();\n  }, []);\n\n  const searchPage = (page = 1, order = \"Fecha\") => {\n    setOrder(order);\n    JobBankService.getJobAll(\n      page,\n      12,\n      order,\n      filters.occupationFilter,\n      filters.locationFilter\n    ).then((result) => {\n      if (!result) return;\n\n      setJobs(result.list || []);\n      setTotalCount(result.totalCount);\n      setCurrentPage(page);\n      setTotalPages(result.totalPages);\n\n      let rows = [];\n      for (let index = 1; index <= result.totalPages; index++) {\n        rows.push(\n          <li\n            className={\"page-item\" + (page === index ? \" active\" : \"\")}\n            key={index}\n          >\n            <a className=\"page-link\" onClick={() => searchPage(index, order)}>\n              {index}\n            </a>\n          </li>\n        );\n      }\n      setPages(rows);\n    });\n  };\n\n  const returnPreviousPage = () => {\n    if (currentPage > 1) searchPage(currentPage - 1);\n  };\n\n  const advanceNextPage = () => {\n    if (currentPage < totalPages) searchPage(currentPage + 1);\n  };\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <JobBankHeader\n        title=\"Bolsa de trabajo\"\n        setFilters={setFilters}\n        filters={filters}\n        searchPage={searchPage}\n      />\n      <Row>\n        <Col xs={24}>\n          <div className=\"job-bank-counter\">\n            <p>\n              <span>{totalCount}</span> empleos disponibles\n            </p>\n          </div>\n        </Col>\n      </Row>\n      <Row gutter={[25, 25]}>\n        {jobs.length === 0 ? (\n          <div className=\"empty\">\n            <i className=\"icon-empty\"></i>\n            <p>No hay empleos disponibles</p>\n          </div>\n        ) : (\n          jobs.map((job, index) => (\n            <Col xl={6} lg={8} md={12} sm={12} xs={24} >\n              <ItemJobPublished\n                jobPublished={false}\n                key={job.jobId}\n                job={job}\n                index={index}\n                misEmpl={false}\n              />\n            </Col>\n          ))\n        )}\n      </Row>\n      {jobs.length <= 0 ? (\n        \"\"\n      ) : (\n        <div className=\"job-bank-pagination mt-4\">\n          <nav className=\"pagination-jobs\">\n            <ul className=\"pagination\">\n              <li className=\"page-item\">\n                <a\n                  className=\"page-link\"\n                  onClick={returnPreviousPage}\n                  aria-label=\"Previous\"\n                >\n                  <span aria-hidden=\"true\">&laquo;</span>\n                  <span className=\"sr-only\">Previous</span>\n                </a>\n              </li>\n              {pages}\n              <li className=\"page-item\">\n                <a\n                  className=\"page-link\"\n                  onClick={advanceNextPage}\n                  aria-label=\"Next\"\n                >\n                  <span aria-hidden=\"true\">&raquo;</span>\n                  <span className=\"sr-only\">Next</span>\n                </a>\n              </li>\n            </ul>\n          </nav>\n        </div>\n      )}\n      <Row>\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Link, useParams, useRouteMatch } from \"react-router-dom\";\nimport useInputForm from \"../../components/CustonHooks/FormHook\";\nimport { FaChevronLeft } from \"react-icons/fa\";\n\nimport \"./jobBank.scss\";\nimport { postulanteService } from \"../../services/postulantJob.service\";\nimport Swal from \"sweetalert2\";\nimport { backendService } from \"../../services/backend.service\";\n\nexport function ApplicantForm({ closeForm, job, user }) {\n  const [fileValidator, setFileValidator] = useState(false);\n  const [valMessage, setValMessage] = useState(\"\");\n  const [archivo, setArchivo] = useState({\n    archivo: null,\n    archivoNombre: \"\",\n    archivoURL: \"\",\n  });\n\n  let { id } = useParams();\n\n  useEffect(() => {\n    getFile(user.urlCurriculum);\n  }, []);\n\n  const onSave = (e) => {\n    if (validateFile(e.target.files[0])) {\n      setArchivo({\n        archivo: e.target.files[0],\n        archivoNombre: e.target.files[0].name,\n      });\n      setFileValidator(false);\n    } else {\n      setFileValidator(true);\n    }\n  };\n\n  const onSubmit = (e) => {\n    e.preventDefault();\n    const formdata = new FormData();\n    if (archivo.archivo === null) {\n      formdata.append(\"Curriculum\", null);\n    } else {\n      formdata.append(\"Curriculum\", archivo.archivo);\n    }\n\n    formdata.append(\"JobId\", id);\n\n    postulanteService.agregarPostulante(formdata).then((result) => {\n      if (result?.responseCode === \"00\") {\n        //corregir lo de mensajes y mandar el correo.\n        Swal.fire({\n          title: \"¡Se envió tu postulación!\",\n          text: \"Si resultas seleccionado para una entrevista, la empresa te notificará a través de la bandeja de mensajes\",\n          icon: \"success\",\n          allowOutsideClick: false,\n        }).then(() => {\n          closeForm();\n        });\n      } else {\n        Swal.fire({\n          title: \"Error al postularse\",\n          text: result.responseMessage,\n          icon: \"error\",\n          allowOutsideClick: false,\n        }).then(() => {\n          closeForm();\n        });\n      }\n    });\n  };\n\n  const getFile = async (url) => {\n    if (url === null) return;\n    let barra = url.lastIndexOf(\"/\");\n    let nombre = url.substring(barra + 1);\n\n    let response = await fetch(url);\n    let data = await response.blob();\n    let file = new File([data], nombre);\n    let container = new DataTransfer();\n    container.items.add(file);\n    document.querySelector(\"#archivo\").files = container.files;\n\n    setArchivo({\n      archivo: file,\n      archivoNombre: nombre,\n    });\n  };\n\n  const imageExt = [\"pdf\", \"doc\", \"docx\"];\n\n  const validateFile = (fileData) => {\n    var re = /(?:\\.([^.]+))?$/;\n    if (fileData.size > 10000000) {\n      setValMessage(\"El tamaño debe ser menor a 10MB\");\n      return false;\n    }\n\n    var ext = re.exec(fileData.name)[1];\n    if (imageExt.includes(ext)) {\n      setValMessage(\"\");\n      return true;\n    } else {\n      setValMessage(\"Formato no válido\");\n      return false;\n    }\n  };\n\n  // const { inputs, handleInputChange, handleSubmit, setInputs } = useInputForm(\n  //   onSave,\n  //   data\n  // );\n\n  return (\n    <div className=\"wrapper_applicant_form\">\n      <div className=\"content_applicant_form\">\n        <br />\n        <div>\n          <button className=\"btn-back trans\" onClick={() => closeForm()}>\n            <FaChevronLeft />\n            <p>Regresar</p>\n          </button>\n        </div>\n\n        <div className=\"sec_form_applicant card_shadows\">\n          <div className=\"content_application\">\n            <div className=\"info_business_applicant\">\n              <h5 className=\"text fnt_medium mb-1\">{job.title}</h5>\n              <p>\n                {job.companyName} - {job.location}\n              </p>\n            </div>\n            <form className=\"info_user_applicant\">\n              {user && (\n                <div>\n                  <p className=\"mb-1\">Información del postulante</p>\n                  <h5 className=\"text fnt_medium mb-1\">\n                    {user?.firstName +\n                      \" \" +\n                      user?.middleName +\n                      \" \" +\n                      user?.lastName}\n                  </h5>\n                  <p>{user?.email}</p>\n                  <p>{user?.phoneNumber}</p>\n                  <p>\n                    {user.town}, {user.colony}. CP. {user.postalCode}\n                  </p>\n                </div>\n              )}\n              <div className=\"mt-4\">\n                <p className=\"mb-1\">\n                  Adjunta tu currículum <i>(Formato .pdf o .docx)</i>\n                </p>\n                {fileValidator && (\n                  <p className=\"mb-1 text-danger\">{valMessage}</p>\n                )}\n                <div className=\"custom-file\">\n                  <input\n                    type=\"file\"\n                    className=\"file-upload\"\n                    id=\"archivo\"\n                    lang=\"es\"\n                    name=\"archivo\"\n                    accept=\".pdf\"\n                    // onChange={handleInputChange}\n                    onChange={(x) => onSave(x)}\n                    // required={true}\n                  />\n                  {archivo.archivoNombre === \"\" ? (\n                    <label className=\"custom-file-label\" for=\"archivo\">\n                      Seleccionar Archivo\n                    </label>\n                  ) : (\n                    <label className=\"custom-file-label\" for=\"archivo\">\n                      {archivo.archivoNombre}\n                    </label>\n                  )}\n                  {/* <label className=\"custom-file-label\" for=\"archivo\">\n                    Seleccionar Archivo\n                  </label> */}\n                </div>\n              </div>\n              <div className=\"text-right mt-4\">\n                {/* to=\"/applicant-sent\" */}\n                <button className=\"btn primary\" onClick={onSubmit}>\n                  Continuar\n                </button>\n              </div>\n            </form>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { AsideCategoriesJobs } from \"./asideCategoriesJobs\";\nimport { JobBankHeader } from \"./jobBankHeader\";\nimport { Link } from \"react-router-dom\";\nimport { ApplicantForm } from \"./applicantForm\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport { useParams } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport Moment from \"react-moment\";\nimport Swal from \"sweetalert2\";\nimport \"./jobBank.scss\";\nimport { postulanteService } from \"../../services/postulantJob.service\";\nimport { backendService } from \"../../services/backend.service\";\nimport { SelectionState } from \"draft-js\";\nimport {Button} from \"reactstrap\";\nimport {GrLocation} from \"react-icons/gr\";\nimport {\n  BsCalendar,\n  BsCalendar2,\n  BsChevronLeft,\n  BsMap,\n  BsMapFill,\n} from \"react-icons/bs\";\nimport {\n  FaMapMarkerAlt,\n} from \"react-icons/fa\";\nimport {BiBuilding} from \"react-icons/bi\";\nexport function DetailsJobs() {\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [job, setJob] = useState({});\n  const [showApplicantForm, setShowApplicantForm] = useState(false);\n  const [hasAlreadyApplied, setHasAlreadyApplied] = useState(true);\n  const [user, setUser] = useState();\n  let { id } = useParams();\n\n  useEffect(() => {\n    getJobsById();\n    verifyPostulant();\n\n    backendService.userProfile().then((result) => {\n      setUser(result);\n    });\n\n  }, []);\n\n  const verifyPostulant = () => {\n    postulanteService.verifyPostulant(id).then((result) => {\n      if(result === \"False\")\n        setHasAlreadyApplied(false);\n      else\n        setHasAlreadyApplied(true);\n    })\n  }\n\n  const getJobsById = () => {\n    JobBankService.getJobById(id).then((result) => {\n\n      JobBankService.getJobSections().then(sections => {\n        let sectionsDescriptions = result.jobSection.map(jobSection => {\n          let nameSection = sections.find(section => section.jobSectionTypeId === jobSection.jobSectionTypeId).name;\n          return \"<h6>\" + nameSection + \":</h6>\" + jobSection.description;\n        });\n\n        result.description += sectionsDescriptions.join(\"\");\n        setJob(result);\n      });\n    });\n  }\n\n  const authorize = (e) => {\n    JobBankService.authorizeJob(e.jobId, true).then((result) => {\n      Swal.fire({text: \"El trabajo ha sido aprobado\", icon: \"success\"});\n      getJobsById();\n    });\n  }\n\n  const reject = (e) => {\n    JobBankService.authorizeJob(e.jobId, false).then((result) => {\n      Swal.fire({text: \"El trabajo ha sido rechazado\", icon: \"success\"});\n      getJobsById();\n    });\n  }\n\n  const closeForm = () => {\n    setShowApplicantForm(false);\n    verifyPostulant();\n  }\n\n  return (\n    <section className=\"dashboard-container-page\">\n        {!showApplicantForm && \n          <>\n            <article className=\"details-job-header\">\n              <Link to=\"/job-bank\" className=\"btn-back\">\n                <i><BsChevronLeft /></i>\n                <p>Ir a bolsa de trabajo</p>\n              </Link>\n              <section className=\"btns__box\">\n                {roleName === \"Usuario\" && job.status !== \"Guardado\" && job.createUser !== localStorage.getItem(\"userId\") && !hasAlreadyApplied &&\n                    <Button className=\"btn-gradient-green\" onClick={() => setShowApplicantForm(true)}>\n                      Aplicar ahora\n                    </Button>\n                }\n                {roleName === \"Recursos Humanos\" && job.status === \"Guardado\" &&\n                    <Button className=\"btn-gradient-green\"  onClick={() => authorize(job)}>\n                      Autorizar\n                    </Button>\n                }\n                {roleName === \"Recursos Humanos\" && job.status === \"Guardado\" &&\n                    <Button className=\"btn-gradient-green\"  onClick={() => reject(job)}>\n                      Rechazar\n                    </Button>\n                }\n              </section>\n            </article>\n            <article className=\"details-job-content\">\n              <div className=\"header\">\n                <div className=\"info\">\n                  <h4>{job.title}</h4>\n                  <p className=\"company\"><span><BiBuilding /></span> {job.companyName}</p>\n                  <p className=\"company\"><span><FaMapMarkerAlt /></span> {job.location}</p>\n                  <p className=\"company\">\n                    <span><BsCalendar2 /></span>\n                    <Moment locale=\"es\" format=\"DD [de] MMMM YYYY\">{job.publicationDate}</Moment>\n                  </p>\n                </div>\n                <div className=\"thumbnail\">\n                  <img src={job.companyImage} alt={\"Logo empresa \" + job.companyName}/>\n                </div>\n              </div>\n              <div className=\"content\">\n                <div className=\"content-description\">\n                  <div dangerouslySetInnerHTML={{ __html: job.description }} />\n                </div>\n                {job.salary > 0 &&\n                  <div className=\"salary\">\n                      <h5>Oferta salarial</h5>\n                      <p className=\"quantity\">${job.salary} MNX</p>\n                  </div>\n                }\n              </div>\n            </article>\n          </>\n        }\n        {showApplicantForm && job && <ApplicantForm closeForm={closeForm} job={job} user={user}/>}\n    </section>\n  );\n}\n","import React from \"react\";\nimport { AsideCategoriesJobs } from \"./asideCategoriesJobs\";\nimport { JobBankHeader } from \"./jobBankHeader\";\nimport { Link } from \"react-router-dom\";\nimport { ApplicantForm } from \"./applicantForm\";\nimport \"./jobBank.scss\";\n\nexport function ApplicantSent() {\n  return (\n    <section className=\"wrapper_jobbank padd\">\n      <div className=\"wrapper_applicant_form\">\n        <div className=\"content_applicant_form\">\n          <div className=\"sec_form_applicant card_shadows\">\n            <div className=\"content_application_sent\">\n              <div className=\"text-center ico-sent\">\n                <img\n                  src=\"./imgs/enviar-datos.png\"\n                  alt=\"Se envío tu postulación\"\n                />\n              </div>\n              <h3 className=\"text fnt_medium text-center mt-3 mb-4\">\n                ¡Se envió tu postulación!\n              </h3>\n              <div className=\"box_info_note\">\n                <div className=\"ico_note\">\n                  <ion-icon name=\"checkmark-sharp\"></ion-icon>\n                </div>\n                <p className=\"m-0\">\n                  Te enviaremos un email de confirmación a{\" \"}\n                  <span className=\"text fnt_medium\">\n                    carlosmario@kuimby.com.mx\n                  </span>\n                </p>\n              </div>\n              <div className=\"box_info_note\">\n                <div className=\"ico_note\">\n                  <ion-icon name=\"checkmark-sharp\"></ion-icon>\n                </div>\n                <p className=\"m-0\">\n                  <b>==NAME-EMPRESA==</b> te enviará una actualización del\n                  estado de tu postulación dentro de un plazo de 2 semanas\n                </p>\n              </div>\n              <div className=\"bx_application\">\n                <h5 className=\"text fnt_medium c_primary\">\n                  Da seguimiento a tus postulaciones\n                </h5>\n                <p>\n                  Recibirás una actualización de estado en un email de{\" \"}\n                  <b>==NAME-EMPRESA==</b> después de algunas semanas de haber\n                  enviado tu postulación. Mientras tanto, puedes ver y hacer un\n                  seguimiento de tus postulaciones en Mis Postulaciones del\n                  módulo de Mi perfil en Kuimby en cualquier momento.\n                </p>\n              </div>\n              <div className=\"mt-4 text-center\">\n               \n                <Link to=\"/job-bank\" className=\"btn secundary mx-1\">\n                Volver a Bolsa de trabajo\n                </Link>\n                <Link to=\"/profile\" className=\"btn primary mx-1\">\n                  Ir a Mi perfil\n                </Link>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { JobBankHeader } from \"./jobBankHeader\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport Moment from \"react-moment\";\nimport \"./jobBank.scss\";\nimport Swal from \"sweetalert2\";\nimport { BiCheck } from \"react-icons/bi\";\nimport { IoClose } from \"react-icons/io5\";\nimport { Button } from \"rsuite\";\nimport { Col, Row, Space, Table } from \"antd\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { FaCheck, FaTrash } from \"react-icons/fa\";\n\nexport function ListNewJobs() {\n  const [jobs, setJobs] = useState([]);\n  const [pages, setPages] = useState([]);\n  const [totalCount, setTotalCount] = useState(0);\n  const [totalPages, setTotalPages] = useState(0);\n  const [currentPage, setCurrentPage] = useState(1);\n  useEffect(() => {\n    GetJobsToApprove();\n  }, []);\n\n  const GetJobsToApprove = () => {\n    JobBankService.GetJobsToApprove(1, 8).then((result) => {\n      if (!result) return;\n      setJobs(result.list || []);\n      setTotalCount(result.totalCount);\n      setTotalPages(result.totalPages);\n      let rows = [];\n      for (let index = 1; index <= result.totalPages; index++) {\n        rows.push(\n          <li\n            className={\"page-item\" + (1 === index ? \" active\" : \"\")}\n            key={index}\n          >\n            <a className=\"page-link\" onClick={() => searchPage(index)}>\n              {index}\n            </a>\n          </li>\n        );\n      }\n      setPages(rows);\n    });\n  };\n\n  const deleteJob = (jobId) => {\n    JobBankService.deleteJob(jobId).then((result) => GetJobsToApprove());\n  };\n\n  const authorize = (e) => {\n    JobBankService.authorizeJob(e.jobId, true).then((result) => {\n      Swal.fire({ text: \"El trabajo ha sido aprobado\", icon: \"success\" });\n      GetJobsToApprove();\n    });\n  };\n\n  const reject = (e) => {\n    JobBankService.authorizeJob(e.jobId, false).then((result) => {\n      Swal.fire({ text: \"El trabajo ha sido rechazado\", icon: \"success\" });\n      GetJobsToApprove();\n    });\n  };\n\n  const searchPage = (page) => {\n    JobBankService.GetJobsToApprove(page, 8).then((result) => {\n      if (!result) return;\n      setCurrentPage(page);\n      setJobs(result.list || []);\n      setTotalCount(result.totalCount);\n\n      let rows = [];\n      for (let index = 1; index <= result.totalPages; index++) {\n        rows.push(\n          <li\n            className={\"page-item\" + (page === index ? \" active\" : \"\")}\n            key={index}\n          >\n            <a className=\"page-link\" onClick={() => searchPage(index)}>\n              {index}\n            </a>\n          </li>\n        );\n      }\n      setPages(rows);\n    });\n  };\n\n  const returnPreviousPage = () => {\n    if (currentPage > 1) searchPage(currentPage - 1);\n  };\n\n  const advanceNextPage = () => {\n    if (currentPage < totalPages) searchPage(currentPage + 1);\n  };\n\n  const columns = [\n    {\n      title: \"ID\",\n      dataIndex: \"id\",\n      key: \"id\",\n      fixed: \"left\",\n      width: 80,\n    },\n    {\n      title: \"Título de la vacante\",\n      dataIndex: \"title\",\n      key: \"title\",\n    },\n    {\n      title: \"Empresa\",\n      dataIndex: \"companyName\",\n      key: \"companyName\",\n    },\n    {\n      title: \"Categoría\",\n      dataIndex: \"jobCategory\",\n      key: \"jobCategory\",\n    },\n    {\n      title: \"Usuario que publicó\",\n      dataIndex: \"publicatedBy\",\n      key: \"publicatedBy\",\n    },\n    {\n      title: \"Fecha de publicación\",\n      dataIndex: \"publicationDate\",\n      key: \"publicationDate\",\n    },\n    {\n      title: \"Acciones\",\n      dataIndex: \"options\",\n      key: \"options\",\n    },\n  ];\n\n  const dataSource = jobs.map((item) => {\n    return {\n      key: item.jobId,\n      id: item.jobId,\n      title: item.title,\n      companyName: item.companyName,\n      jobCategory: item?.jobCategory?.[0]?.name,\n      publicatedBy: item.publicatedBy,\n      publicationDate: (\n        <Moment locale=\"es\" format=\"DD/MMMM/YYYY\">\n          {item.publicationDate}\n        </Moment>\n      ),\n      points: item.points,\n      options: (\n        <>\n          <Space>\n            <Button\n              className=\"btn-icon-table edit\"\n              onClick={() => authorize(item)}\n            >\n              <FaCheck />\n            </Button>\n            <Button\n              className=\"btn-icon-table delete\"\n              onClick={() => reject(item)}\n            >\n              <FaTrash />\n            </Button>\n          </Space>\n        </>\n      ),\n    };\n  });\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <JobBankHeader tituloInJobs=\"Empleos por autorizar\" />\n      <div className=\"flex-end mb-3\">\n        <Link to=\"/job-bank\" className=\"btn-back\">\n          <i className=\"icon-chevron-left\"></i>\n          <p>Ir a Bolsa de trabajo </p>\n        </Link>\n      </div>\n      <Table\n        scroll={{ x: \"992px\", y: 800 }}\n        pagination={false}\n        dataSource={dataSource}\n        columns={columns}\n        className=\"table-admin\"\n        locale={{\n          triggerDesc: \"Ordenamiento descendente\",\n          triggerAsc: \"Ordenamiento ascedente\",\n          cancelSort: \"Cancelar ordenamiento\",\n          emptyText: \"Sin registros\",\n        }}\n      />\n      <div className=\"sec_list_new_jobs mt-3\">\n        {jobs.length > 0 ? (\n          <div className=\"job-bank-pagination\">\n            <nav className=\"pagination-jobs\">\n              <ul className=\"pagination\">\n                <li className=\"page-item\">\n                  <a\n                    className=\"page-link\"\n                    onClick={returnPreviousPage}\n                    aria-label=\"Previous\"\n                  >\n                    <span aria-hidden=\"true\">&laquo;</span>\n                    <span className=\"sr-only\">Previous</span>\n                  </a>\n                </li>\n                {pages}\n                <li className=\"page-item\">\n                  <a\n                    className=\"page-link\"\n                    onClick={advanceNextPage}\n                    aria-label=\"Next\"\n                  >\n                    <span aria-hidden=\"true\">&raquo;</span>\n                    <span className=\"sr-only\">Next</span>\n                  </a>\n                </li>\n              </ul>\n            </nav>\n          </div>\n        ) : null}\n      </div>\n      <Row>\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { AsideCategoriesJobs } from \"./asideCategoriesJobs\";\nimport { JobBankHeader } from \"./jobBankHeader\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport \"./jobBank.scss\";\nimport { AiOutlineFileText } from \"react-icons/ai\";\nimport { postulanteService } from \"../../services/postulantJob.service\";\nimport Moment from \"react-moment\";\nimport Swal from \"sweetalert2\";\nimport {FaCheck, FaChevronLeft, FaTimes} from \"react-icons/fa\";\nimport { Button } from \"rsuite\";\nimport { Col, Row, Table, Space } from \"antd\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\n\nexport function CandidatesNominated() {\n  const history = useHistory();\n  let { id } = useParams();\n  const [job, setJob] = useState({});\n  const [candidates, setCandidates] = useState([]);\n\n  useEffect(() => {\n    JobBankService.getJobById(id).then((result) => {\n      setJob(result);\n    });\n\n    postulanteService.getPostulants(id).then((result) => {\n      setCandidates(result);\n    });\n  }, []);\n\n  const approvePostulant = (postulantId, companyName, fullName) => {\n    Swal.fire({\n      text: \"¿Desea seleccionar a \" + fullName + \"?\",\n      icon: \"question\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: \"Si\",\n      cancelButtonText: \"No\",\n    }).then((result) => {\n      if (result.value) {\n        postulanteService\n          .approvePostulant(postulantId, companyName)\n          .then((result) => {\n            Swal.fire({\n              text: \"Postulante aprobado\",\n              icon: \"success\",\n              allowOutsideClick: false,\n            });\n            postulanteService.getPostulants(id).then((result) => {\n              setCandidates(result);\n            });\n          });\n      }\n    });\n  };\n\n  const rejectPostulant = (postulantId, companyName, fullName) => {\n    Swal.fire({\n      text: \"¿Desea rechazar a \" + fullName + \"?\",\n      icon: \"question\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: \"Si\",\n      cancelButtonText: \"No\",\n    }).then((result) => {\n      if (result.value) {\n        postulanteService\n          .rejectPostulant(postulantId, companyName)\n          .then((result) => {\n            Swal.fire({\n              text: \"Postulante rechazado\",\n              icon: \"success\",\n              allowOutsideClick: false,\n            });\n            postulanteService.getPostulants(id).then((result) => {\n              setCandidates(result);\n            });\n          });\n      }\n    });\n  };\n\n  const columns = [\n    {\n        title: '#',\n        dataIndex: 'id',\n        key: 'id',\n        fixed: 'left',\n        width: 80\n    },\n    {\n        title: 'Nombre completo',\n        dataIndex: 'fullName',\n        key: 'fullName',\n    },\n    {\n        title: 'Fecha de postulación',\n        dataIndex: 'postulationDate',\n        key: 'postulationDate',\n    },\n    {\n        title: 'Adjuntos',\n        dataIndex: 'urlCurriculum',\n        key: 'urlCurriculum',\n    },\n    {\n        title: 'Estatus',\n        dataIndex: 'status',\n        key: 'status',\n    },\n    {\n        title: 'Acciones',\n        dataIndex: 'options',\n        key: 'options',\n    },\n];\n\nconst dataSource = candidates?.map((item,i) => {\n    return {\n        key: i + 1,\n        id: i + 1,\n        fullName: item.fullName,\n        postulationDate: <Moment locale=\"es\" format=\"DD/MMMM/YYYY\">\n          {item.postulationDate}\n        </Moment>,\n        urlCurriculum: <a\n          href={item.urlCurriculum}\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          download={\n            item.urlCurriculum !== \"\" ? true : false\n          }\n        >\n          <AiOutlineFileText></AiOutlineFileText>\n        </a>,\n        status: item.status,\n        options: <><Space>\n          {item.status === \"EnProceso\" && (\n            <>\n              <Button\n                className=\"btn-icon-table edit\"\n                title=\"Aprobar\"\n                onClick={() =>\n                  approvePostulant(\n                    item.postulantId,\n                    job.companyName,\n                    item.fullName\n                  )\n                }\n              >\n                <FaCheck />\n              </Button>\n              <Button\n                className=\"btn-icon-table delete\"\n                title=\"Rechazar\"\n                onClick={() =>\n                  rejectPostulant(\n                    item.postulantId,\n                    job.companyName,\n                    item.fullName\n                  )\n                }\n              >\n                <FaTimes />\n              </Button>\n            </>\n            )}\n        </Space>\n        </>\n    };\n})\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <JobBankHeader tituloInJobs=\"Bolsa de trabajo\" />\n      <section className=\"contain_gral_jobbank\">\n        <>\n          <Row>\n            <Col xs={24}>\n              <div className=\"admin-heading\">\n                <div></div>\n                <Button onClick={() => history.goBack()} className=\"btn-back\">\n                  <FaChevronLeft />\n                  <p>Regresar</p>\n                </Button>\n              </div>\n\n              <div className=\"box_items_jobs\">\n\n                <article className=\"item_card_jobs card_shadows\" style={{boxShadow: 'none'}}>\n                  <div className=\"card_info_jobs\">\n                    <h5 className=\"text fnt_medium name_vacant\">{job.title}</h5>\n                    <div className=\"name_business\">\n                      <ion-icon name=\"business-outline\"></ion-icon>{\" \"}\n                      {job.companyName}\n                    </div>\n                    <div className=\"city_jobs mb-3\">\n                      <ion-icon name=\"location\"></ion-icon> {job.location}\n                    </div>\n                    <div className=\"publication_date\">\n                      Publicado{\" \"}\n                      <Moment locale=\"es\" format=\"DD [de] MMMM YYYY\">\n                        {job.publicationDate}\n                      </Moment>\n                    </div>\n                  </div>\n                  <div className=\"card_options\">\n                    <img\n                      src={job.companyImage}\n                      alt={\"Logo empresa \" + job.companyName}\n                    />\n                    {job.salary > 0 && (\n                      <div className=\"box_salary mt-4\">\n                        <p className=\"text-muted m-0\">Oferta salarial</p>\n                        <div className=\"monto_salary text fnt_medium\">\n                          ${job.salary} MNX\n                        </div>\n                      </div>\n                    )}\n                  </div>\n                </article>\n\n                <div className=\"card mt-4 p-3\">\n                  <h5 className=\"text fnt_medium mb-4\">Lista de candidatos</h5>\n                  <Table className=\"table-admin\" scroll={{ x: '992px', y: 800 }} columns={columns} dataSource={dataSource}\n                         locale={{\n                             triggerDesc: 'Ordenamiento descendente',\n                             triggerAsc: 'Ordenamiento ascedente',\n                             cancelSort: 'Cancelar ordenamiento',\n                             emptyText: 'Sin registros',\n                         }}\n                  />\n                </div>\n              </div>\n\n            </Col>\n            <Col xs={24}>\n                <FooterHome />\n            </Col>\n          </Row>\n        </>\n\n        {/* <ApplicantForm /> */}\n      </section>\n    </section>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Nav, NavItem, NavLink, TabContent, TabPane } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { AsideCategoriesJobs } from \"./asideCategoriesJobs\";\nimport { ItemJobPublished } from \"./itemJobPublished\";\nimport { JobBankHeader } from \"./jobBankHeader\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport \"./jobBank.scss\";\nimport Swal from \"sweetalert2\";\nimport { Col, Row } from \"antd\";\n\nexport function JobsPublished() {\n  const [activeTab, setActiveTab] = useState(\"1\");\n  const [activeJobs, setActiveJobs] = useState([]);\n  const [inactiveJobs, setInactiveJobs] = useState([]);\n  const [activePages, setActivePages] = useState([]);\n  const [activeTotalCount, setActiveTotalCount] = useState(0);\n  const [activeTotalPages, setActiveTotalPages] = useState(0);\n  const [activeCurrentPage, setActiveCurrentPage] = useState(1);\n  const [inactivePages, setInactivePages] = useState([]);\n  const [inactiveTotalCount, setInactiveTotalCount] = useState(0);\n  const [inactiveTotalPages, setInactiveTotalPages] = useState(0);\n  const [inactiveCurrentPage, setInactiveCurrentPage] = useState(1);\n\n  useEffect(() => {\n    getActiveJobsByUserId(1);\n    getInactiveJobsByUserId(1);\n  }, []);\n\n  const getActiveJobsByUserId = (pageIndex) => {\n    JobBankService.getJobsByUserId(\n      localStorage.getItem(\"userId\"),\n      true,\n      pageIndex,\n      8\n    ).then((result) => {\n      setActiveJobs(result.list || []);\n      setActiveTotalCount(result.totalCount);\n      setActiveTotalPages(result.totalPages);\n      setActiveCurrentPage(pageIndex);\n\n      let rows = [];\n      for (let index = 1; index <= result.totalPages; index++) {\n        rows.push(\n          <li\n            className={\"page-item \" + (pageIndex === index ? \" active\" : \"\")}\n            key={index}\n          >\n            <a\n              className=\"page-link\"\n              onClick={() => getActiveJobsByUserId(index)}\n            >\n              {index}\n            </a>\n          </li>\n        );\n      }\n      setActivePages(rows);\n    });\n  };\n\n  const getInactiveJobsByUserId = (pageIndex) => {\n    JobBankService.getJobsByUserId(\n      localStorage.getItem(\"userId\"),\n      false,\n      pageIndex,\n      8\n    ).then((result) => {\n      setInactiveJobs(result.list || []);\n      setInactiveTotalCount(result.totalCount);\n      setInactiveTotalPages(result.totalPages);\n      setInactiveCurrentPage(pageIndex);\n\n      let rows = [];\n      for (let index = 1; index <= result.totalPages; index++) {\n        rows.push(\n          <li\n            className={\"page-item \" + (pageIndex === index ? \" active\" : \"\")}\n            key={index}\n          >\n            <a\n              className=\"page-link\"\n              onClick={() => getInactiveJobsByUserId(index)}\n            >\n              {index}\n            </a>\n          </li>\n        );\n      }\n      setInactivePages(rows);\n    });\n  };\n\n  const returnActivePreviousPage = () => {\n    if (activeCurrentPage > 1) getActiveJobsByUserId(activeCurrentPage - 1);\n  };\n\n  const advanceActiveNextPage = () => {\n    if (activeCurrentPage < activeTotalPages)\n      getActiveJobsByUserId(activeCurrentPage + 1);\n  };\n\n  const returnInactivePreviousPage = () => {\n    if (inactiveCurrentPage > 1)\n      getInactiveJobsByUserId(inactiveCurrentPage - 1);\n  };\n\n  const advanceInactiveNextPage = () => {\n    if (inactiveCurrentPage < inactiveTotalPages)\n      getInactiveJobsByUserId(inactiveCurrentPage + 1);\n  };\n\n  const deleteJob = (jobId) => {\n    JobBankService.deleteJob(jobId).then(() => {\n      getActiveJobsByUserId(1);\n      getInactiveJobsByUserId(1);\n      Swal.fire({\n        text: \"Trabajo eliminado correctamente\",\n        icon: \"success\",\n        allowOutsideClick: false,\n      });\n    });\n  };\n\n  const activateJob = (jobId) => {\n    JobBankService.activateJob(jobId).then(() => {\n      getActiveJobsByUserId(1);\n      getInactiveJobsByUserId(1);\n    });\n  };\n\n  return (\n    <section className=\"dashboard-container-page\">\n      <JobBankHeader tituloInJobs=\"Bolsa de trabajo\" />\n      <section className=\"job-bank-content mt-4\">\n        <div className=\"job-bank-content-published\">\n          <div className=\"header\">\n            <h3>\n              <Link to=\"/job-bank\" className=\"btn-back\">\n                <i className=\"icon-chevron-left\"></i>\n                <p>Regresar</p>\n              </Link>{\" \"}\n              <span>Mis empleos publicados</span>\n            </h3>\n          </div>\n\n          <Nav tabs className=\"tabs-job-bank\">\n            <NavItem className=\"mr\">\n              <NavLink\n                className={activeTab === \"1\" ? \"active\" : \"\"}\n                onClick={() => setActiveTab(\"1\")}\n              >\n                Activas\n              </NavLink>\n            </NavItem>\n            <NavItem className=\"ml\">\n              <NavLink\n                className={activeTab === \"2\" ? \"active\" : \"\"}\n                onClick={() => setActiveTab(\"2\")}\n              >\n                Desactivadas\n              </NavLink>\n            </NavItem>\n          </Nav>\n\n          <TabContent activeTab={activeTab}>\n            <TabPane tabId=\"1\">\n              <div className=\"content\">\n                <div className=\"options\">\n                  <p>\n                    <span className=\"badge green\">{activeTotalCount}</span>{\" \"}\n                    empleos\n                  </p>\n                </div>\n                <div className=\"items\">\n                  <Row gutter={[25, 25]}>\n                    {activeJobs\n                      .filter((x) => x.active)\n                      .map((job) => (\n                        <Col xl={12} sm={24}>\n                          <ItemJobPublished\n                            jobPublished={true}\n                            key={job.jobId}\n                            job={job}\n                            misEmpl={true}\n                            deleteJob={deleteJob}\n                          />\n                        </Col>\n                      ))}\n                  </Row>\n                  {activeJobs.length === 0 ? (\n                    <div className=\"empty\">\n                      <i className=\"icon-empty\"></i>\n                      <p>No hay empleos activos</p>\n                    </div>\n                  ) : (\n                    \"\"\n                  )}\n                </div>\n                {activeJobs.length === 0 ? (\n                  \"\"\n                ) : (\n                  <nav className=\"pagination-jobs mt-5\">\n                    <ul className=\"pagination\">\n                      <li className=\"page-item\">\n                        <a\n                          className=\"page-link\"\n                          href=\"#\"\n                          aria-label=\"Previous\"\n                          onClick={returnActivePreviousPage}\n                        >\n                          <span aria-hidden=\"true\">&laquo;</span>\n                          <span className=\"sr-only\">Previous</span>\n                        </a>\n                      </li>\n                      {activePages}\n                      <li className=\"page-item\">\n                        <a\n                          className=\"page-link\"\n                          href=\"#\"\n                          aria-label=\"Next\"\n                          onClick={advanceActiveNextPage}\n                        >\n                          <span aria-hidden=\"true\">&raquo;</span>\n                          <span className=\"sr-only\">Next</span>\n                        </a>\n                      </li>\n                    </ul>\n                  </nav>\n                )}\n              </div>\n            </TabPane>\n            <TabPane tabId=\"2\">\n              <div className=\"content\">\n                <div className=\"options\">\n                  <p>\n                    <span className=\"badge green\">{activeTotalCount}</span>{\" \"}\n                    empleos\n                  </p>\n                </div>\n                <div className=\"items\">\n                  <Row gutter={[25, 25]}>\n                    {inactiveJobs\n                      .filter((x) => !x.active)\n                      .map((job) => (\n                        <Col xl={12} sm={24}>\n                          <ItemJobPublished\n                            key={job.jobId}\n                            job={job}\n                            misEmpl={true}\n                            activateJob={activateJob}\n                          />\n                        </Col>\n                      ))}\n                  </Row>\n\n                  {activeJobs.length === 0 ? (\n                    <div className=\"empty\">\n                      <i className=\"icon-empty\"></i>\n                      <p>No hay empleos inactivos</p>\n                    </div>\n                  ) : (\n                    \"\"\n                  )}\n                </div>\n                {activeJobs.length === 0 ? (\n                  \"\"\n                ) : (\n                  <div className=\"job-bank-pagination\">\n                    <nav className=\"pagination-jobs mt-5\">\n                      <ul className=\"pagination\">\n                        <li className=\"page-item\">\n                          <a\n                            className=\"page-link\"\n                            href=\"#\"\n                            aria-label=\"Previous\"\n                            onClick={returnInactivePreviousPage}\n                          >\n                            <span aria-hidden=\"true\">&laquo;</span>\n                            <span className=\"sr-only\">Previous</span>\n                          </a>\n                        </li>\n                        {inactivePages}\n                        <li className=\"page-item\">\n                          <a\n                            className=\"page-link\"\n                            href=\"#\"\n                            aria-label=\"Next\"\n                            onClick={advanceInactiveNextPage}\n                          >\n                            <span aria-hidden=\"true\">&raquo;</span>\n                            <span className=\"sr-only\">Next</span>\n                          </a>\n                        </li>\n                      </ul>\n                    </nav>\n                  </div>\n                )}\n              </div>\n            </TabPane>\n          </TabContent>\n        </div>\n      </section>\n      <FooterHome />\n    </section>\n  );\n}\n","export function ValidacionEmail(email) {\n    const re =\n      /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n    return re.test(email);\n  }","import React, { useEffect, useState } from \"react\";\nimport { EditorState, convertToRaw, ContentState } from \"draft-js\";\nimport { Editor } from \"react-draft-wysiwyg\";\nimport draftToHtml from \"draftjs-to-html\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport useInputForm from \"../../components/CustonHooks/FormHook\";\nimport CreatableSelect from \"react-select/creatable\";\nimport { ValidacionEmail } from \"../../utils/ValidacionMail\";\nimport Swal from \"sweetalert2\";\nimport {\n  Input,\n  InputGroup,\n  InputGroupText,\n  Label,\n  Modal,\n  ModalBody,\n} from \"reactstrap\";\nimport { Button } from \"rsuite\";\nimport { GeneralUpload } from \"../../components/Helpers/generalUpload\";\nimport { FaChevronRight, FaTimes } from \"react-icons/fa\";\nimport { Col, Row } from \"antd\";\n\nexport function FormJob({ datos, setDatos, toggleView, setJob }) {\n  const [editorState, setEditorState] = useState();\n  const [selectedOption, setSelectedOption] = useState([]);\n  const [options, setOptions] = useState([]);\n  const [image, setImage] = useState(null);\n\n  useEffect(() => {\n    JobBankService.getCategories().then((result) => {\n      if (!result) return;\n      setOptions(\n        result.map((x) => ({ value: x.jobCategoryId, label: x.name }))\n      );\n    });\n  }, []);\n\n  function updateImage(e) {\n    const file = e.target.files[0];\n    inputs.imagen = file;\n    setImage(e.target.files[0]);\n  }\n\n  const handleOnChangeFile = (files) => {\n    // Se agrega imagen\n    inputs.imagen = files[0];\n    setImage(URL.createObjectURL(files[0]));\n  };\n\n  const onSave = () => {\n    inputs.descripcion = editorState;\n    inputs.categoria = selectedOption;\n    let error = ValidacionEmail(inputs.mail);\n    if (error === false) {\n      Swal.fire({\n        text: \"Correo incorrecto, por favor revise.\",\n        icon: \"error\",\n      });\n      return;\n    }\n    if (inputs.categoria.length === 0) {\n      Swal.fire({ text: \"Seleccion al menos una categoría\", icon: \"error\" });\n      return;\n    }\n    if (inputs.descripcion === \"\") {\n      Swal.fire({ text: \"Ingrese una descripción\", icon: \"error\" });\n      return;\n    }\n    insertJob();\n  };\n\n  async function insertJob() {\n    //Agarrar datos del input y ponerlo en este formData\n\n    let formData = new FormData();\n    formData.append(\"CompanyId\", process.env.REACT_APP_COMPANY);\n    formData.append(\"Title\", inputs.title);\n\n    //Intentar agarrar lo que pone el editor y ponerlo un string\n\n    formData.append(\"Description\", inputs.descripcion);\n    formData.append(\"Currency\", \"MXN\");\n    formData.append(\"Salary\", inputs.infoSalarial);\n    formData.append(\"Location\", inputs.location);\n    formData.append(\"Direction\", inputs.ubicacion);\n    formData.append(\"CompanyName\", inputs.titleCompany);\n\n    //En CompanyImage debería ir el logo de la empresa\n\n    formData.append(\"CompanyImage\", inputs.imagen);\n    formData.append(\"PhoneNumber\", inputs.phoneNumber);\n    formData.append(\"Email\", inputs.mail);\n\n    selectedOption.forEach((element, index) => {\n      formData.append(\n        `JobCategory[${index}].JobCategoryId`,\n        element?.__isNew__ ? 0 : element.value\n      );\n      formData.append(`JobCategory[${index}].Name`, element.label);\n    });\n\n    JobBankService.insertJob(formData).then((result) => {\n      setJob(result);\n      Swal.fire({\n        text: \"Se ha registrado la oferta de trabajo\",\n        icon: \"success\",\n        showCloseButton: true,\n        allowOutsideClick: false,\n        allowEscapeKey: false,\n      }).then((result) => {\n        toggleView();\n      });\n      //clean inputs\n\n      setDatos({\n        title: \"\",\n        categoria: [],\n        ubicacion: \"\",\n        location: \"\",\n        titleCompany: \"\",\n        imagen: null,\n        infoSalarial: \"\",\n        descripcion: \"\",\n        phoneNumber: \"\",\n        mail: \"\",\n      });\n      setEditorState(EditorState.createEmpty());\n      setSelectedOption([]);\n    });\n  }\n\n  const { inputs, handleInputChange, handleSubmit, setInputs } = useInputForm(\n    onSave,\n    datos\n  );\n\n  const onEditorStateChange = (editorState) => {\n    setEditorState(draftToHtml(convertToRaw(editorState.getCurrentContent())));\n  };\n\n  const getFileImage = async (url) => {\n    let fileName = url.substring(0, url.lastIndexOf(\".\"));\n    let file = await fetch(url)\n      .then((res) => res.blob())\n      .then((blob) => {\n        const file = new File([blob], fileName, blob);\n        return file;\n      });\n    return file;\n  };\n\n  const handleImageUploadRemove = () => setImage(null);\n\n  const [modal, setModal] = useState(false);\n  const toggle = (img) => {\n    setImageModal(image);\n    setModal(!modal);\n  };\n\n  const [imgModal, setImageModal] = useState(\"\");\n\n  return (\n    <form onSubmit={handleSubmit}>\n      <article className=\"steps\">\n        <div className=\"item active\">\n          <span>1</span>\n        </div>\n        <div className=\"lines\"></div>\n        <div className=\"item\">\n          <span>2</span>\n        </div>\n      </article>\n      <article>\n        <Row gutter={16}>\n          <Col xs={24}>\n            <h4>Información de la vacante</h4>\n          </Col>\n          <Col md={6} sm={24} xs={24}>\n            <div className=\"form-dashboard-group\">\n              <label>Título de la vacante</label>\n              <Input\n                maxLength={50}\n                type=\"text\"\n                name=\"title\"\n                required={true}\n                onChange={handleInputChange}\n              />\n            </div>\n          </Col>\n          <Col md={6} sm={24} xs={24}>\n            <div className=\"form-dashboard-group\">\n              <Label for=\"categoria\">Categoría</Label>\n              <CreatableSelect\n                closeMenuOnSelect={false}\n                value={selectedOption}\n                required={true}\n                onChange={setSelectedOption}\n                isMulti\n                className=\"basic-multi-select\"\n                classNamePrefix=\"select\"\n                options={options}\n                id=\"categoria\"\n              />\n            </div>\n          </Col>\n          <Col md={12} sm={24} xs={24}>\n            <div className=\"form-dashboard-group\">\n              <Label for=\"ubicacion\">Dirección</Label>\n              <Input\n                maxLength={50}\n                type=\"text\"\n                name=\"ubicacion\"\n                errormessage=\"\"\n                onChange={handleInputChange}\n                required={true}\n              />\n            </div>\n          </Col>\n          <Col md={6} sm={24} xs={24}>\n            <div className=\"form-dashboard-group\">\n              <Label for=\"location\">Localidad</Label>\n              <Input\n                maxLength={50}\n                type=\"text\"\n                name=\"location\"\n                errormessage=\"\"\n                onChange={handleInputChange}\n                required={true}\n              />\n            </div>\n          </Col>\n          <Col md={6} sm={24} xs={24}>\n            <div className=\"form-dashboard-group\">\n              <Label for=\"titleCompany\">Nombre de la empresa</Label>\n              <Input\n                maxLength={50}\n                type=\"text\"\n                name=\"titleCompany\"\n                onChange={handleInputChange}\n                required={true}\n              />\n            </div>\n          </Col>\n          <Col md={6} sm={24} xs={24}>\n            <div className=\"form-dashboard-group\">\n              <Label for=\"mail\">Correo</Label>\n              <Input\n                type=\"text\"\n                name=\"mail\"\n                onChange={handleInputChange}\n                required={true}\n              />\n            </div>\n          </Col>\n          <Col md={6} sm={24} xs={24}>\n            <div className=\"form-dashboard-group\">\n              <Label>Número de contacto</Label>\n              <input\n                name=\"phoneNumber\"\n                maxLength={10}\n                minLength={10}\n                onKeyPress={(e) => {\n                  // Solo se admiten números\n                  e = e || window.e;\n                  const charCode = e.keyCode || e.which;\n                  const charStr = String.fromCharCode(charCode);\n                  if (isNaN(charStr)) e.preventDefault();\n                }}\n                type=\"text\"\n                onChange={handleInputChange}\n                required={true}\n              />\n            </div>\n          </Col>\n          <Col md={6} sm={12} xs={24}>\n            {image !== null ? (\n              <div className=\"form-dashboard-group-upload\">\n                <div className=\"uploaded-file\">\n                  <img\n                    src={image}\n                    alt=\"\"\n                    className=\"img-file\"\n                    onClick={() => toggle(image)}\n                  />\n                  <Button\n                    className=\"btn-remove-file\"\n                    onClick={handleImageUploadRemove}\n                  >\n                    <i className=\"icon-close\"></i>\n                  </Button>\n                </div>\n              </div>\n            ) : (\n              <GeneralUpload\n                accept=\"image/*\"\n                isMultiple=\"false\"\n                TitleLabel={\"Subir imagen\"}\n                handleOnChangeFiles={handleOnChangeFile}\n              />\n            )}\n          </Col>\n          <Col xs={24}>\n            <br />\n            <h4>Información salarial</h4>\n          </Col>\n          <Col md={6} sm={24} xs={24}>\n            <InputGroup className=\"group-append\">\n              <InputGroupText>\n                Salario bruto\n                <Input type=\"radio\" name=\"exampleRadios\" />\n              </InputGroupText>\n              <Input\n                type=\"number\"\n                min={0}\n                step=\"0.01\"\n                name=\"infoSalarial\"\n                onChange={handleInputChange}\n                required={true}\n              />\n            </InputGroup>\n          </Col>\n          <Col xs={24}>\n            <br />\n            <h4>Descripción de la empresa</h4>\n          </Col>\n          <Col xs={24}>\n            <div className=\"content__editor_in_jobs\">\n              <Editor\n                onEditorStateChange={onEditorStateChange}\n                wrapperClassName=\"wrapper__editor_text\"\n                editorClassName=\"editor-class\"\n                toolbarClassName=\"toolbar-class\"\n                toolbar={{\n                  options: [\n                    \"inline\",\n                    \"colorPicker\",\n                    \"blockType\",\n                    \"fontSize\",\n                    // \"fontFamily\",\n                    \"list\",\n                    \"textAlign\",\n                    // \"image\",\n                    \"link\",\n                    \"remove\",\n                    \"history\",\n                  ],\n                  inline: {\n                    options: [\"bold\", \"italic\", \"underline\", \"strikethrough\"],\n                  },\n                  list: { inDropdown: true },\n                  textAlign: { inDropdown: true },\n                  link: { inDropdown: true },\n                  history: { inDropdown: true },\n                }}\n              />\n            </div>\n          </Col>\n        </Row>\n\n        <div className=\"form-dashboard-footer\">\n          <Button className=\"btn-dark\" type=\"submit\">\n            <p>Continuar</p>\n            <FaChevronRight />\n          </Button>\n        </div>\n        <Modal\n          isOpen={modal}\n          toggle={toggle}\n          centered={true}\n          className=\"modal-images\"\n        >\n          <ModalBody>\n            <Button className=\"btn-close-modal\" onClick={toggle}>\n              <FaTimes />\n            </Button>\n            <img\n              src={imgModal}\n              width=\"100%\"\n              style={{ maxHeight: \"300px\", objectFit: \"contain\" }}\n              alt=\"\"\n            />\n          </ModalBody>\n        </Modal>\n      </article>\n    </form>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Swal from \"sweetalert2\";\nimport { EditorState, convertToRaw, ContentState } from \"draft-js\";\nimport { Editor } from \"react-draft-wysiwyg\";\nimport draftToHtml from \"draftjs-to-html\";\nimport htmlToDraft from \"html-to-draftjs\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport { BsChevronLeft } from \"react-icons/bs\";\nimport { Button, Col, FormGroup, Label, Row } from \"reactstrap\";\nimport { FaChevronRight, FaPlus } from \"react-icons/fa\";\n\nexport function FormSection({ toggleView, job }) {\n  const [sections, setSections] = useState([]);\n  const [sectionValues, setSectionValues] = useState([]);\n\n  useEffect(() => {\n    JobBankService.getJobSections().then((data) => {\n      setSections(data);\n      setSectionValues(\n        data.map((section) => {\n          return {\n            JobSectionTypeId: section.jobSectionTypeId,\n            JobSection: {\n              Description: \"\",\n              JobSectionTypeId: section.jobSectionTypeId,\n            },\n          };\n        })\n      );\n    });\n  }, []);\n\n  const onEditorStateChange = (editorState, section) => {\n    let descriptionHtml = draftToHtml(\n      convertToRaw(editorState.getCurrentContent())\n    );\n    let newSectionValues = sectionValues.map((x) => {\n      if (x.JobSectionTypeId === section.jobSectionTypeId) {\n        x.JobSection.Description = descriptionHtml;\n        x.JobSection.jobSectionTypeId = section.jobSectionTypeId;\n      }\n      return x;\n    });\n    setSectionValues(newSectionValues);\n  };\n\n  const onSave = (e) => {\n    var validSections = false;\n    sectionValues.map((x) => {\n      if (\n        x.JobSection.Description != \"\" &&\n        x.JobSection.description != \"<p></p>\" &&\n        x.JobSection.description != \"<p></p>\\n\"\n      )\n        validSections = true;\n    });\n    if (validSections == false) {\n      Swal.fire({\n        text: \"Favor de completar al menos una sección\",\n        icon: \"warning\",\n        showCloseButton: true,\n        allowOutsideClick: false,\n        allowEscapeKey: false,\n      });\n      return;\n    }\n    let JobSections = {\n      JobId: job?.jobId,\n      JobSection: sectionValues.flatMap((x) => x.JobSection),\n    };\n    JobBankService.insertJobSections(JobSections).then((data) => {\n      if (data !== null)\n        Swal.fire({\n          title: \"Registro exitoso\",\n          text: \"Nuestro equipo está revisando tu información y en breve podrás verla disponible.\",\n          icon: \"success\",\n          showCloseButton: true,\n          allowOutsideClick: false,\n          allowEscapeKey: false,\n        }).then(() => {\n          window.location.href = \"/job-bank\";\n        });\n    });\n  };\n\n  const returnJob = () => {\n    if (job?.jobId) {\n      window.location.href = \"/edit-job/\" + job.jobId;\n    } else {\n      toggleView();\n    }\n  };\n\n  return (\n    <>\n      <article className=\"steps\">\n        <div className=\"item active\">\n          <span>1</span>\n        </div>\n        <div className=\"lines\"></div>\n        <div className=\"item active\">\n          <span>2</span>\n        </div>\n      </article>\n\n      <article>\n        <div className=\"flex-end\">\n          <button\n            type=\"button\"\n            className=\"btn-back\"\n            onClick={() => returnJob()}\n          >\n            <i>\n              <BsChevronLeft />\n            </i>\n            <span>Volver</span>\n          </button>\n        </div>\n        <Row>\n          <Col sm={12}>\n            <h6>Información adicional</h6>\n          </Col>\n          {sections.map((section, index) => {\n            return (\n              <div key={index}>\n                <Col sm={12} className=\"form-dashboard-group\">\n                  <Label>\n                    {section.name === \"Ubicacion\" ? \"Ubicación\" : section.name}\n                  </Label>\n                </Col>\n                <Col sm={12}>\n                  <FormGroup>\n                    <Editor\n                      onEditorStateChange={(e) =>\n                        onEditorStateChange(e, section)\n                      }\n                      wrapperClassName=\"wrapper__editor_text\"\n                      editorClassName=\"editor-class\"\n                      toolbarClassName=\"toolbar-class\"\n                      toolbar={{\n                        options: [\n                          \"inline\",\n                          \"colorPicker\",\n                          \"blockType\",\n                          \"fontSize\",\n                          // \"fontFamily\",\n                          \"list\",\n                          \"textAlign\",\n                          // \"image\",\n                          \"link\",\n                          \"remove\",\n                          \"history\",\n                        ],\n                        inline: {\n                          options: [\n                            \"bold\",\n                            \"italic\",\n                            \"underline\",\n                            \"strikethrough\",\n                          ],\n                        },\n                        list: { inDropdown: true },\n                        textAlign: { inDropdown: true },\n                        link: { inDropdown: true },\n                        history: { inDropdown: true },\n                      }}\n                    />\n                  </FormGroup>\n                </Col>\n              </div>\n            );\n          })}\n        </Row>\n        <Row>\n          <Col sm={12}>\n            <div className=\"form-dashboard-footer\">\n              <Button className=\"btn-dark\" onClick={onSave}>\n                <p>Registrar empleo</p>\n                <FaChevronRight />\n              </Button>\n            </div>\n          </Col>\n        </Row>\n      </article>\n    </>\n  );\n}\n","import React, { useState } from \"react\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { Link } from \"react-router-dom\";\nimport \"./jobBank.scss\";\nimport { FormJob } from \"./FormJob\";\nimport { FormSection } from \"./FormSection\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { Col, Row } from \"reactstrap\";\n\nexport function RegisterJobs(props) {\n  const [datos, setDatos] = useState({\n    title: \"\",\n    categoria: [],\n    ubicacion: \"\",\n    location: \"\",\n    titleCompany: \"\",\n    imagen: null,\n    infoSalarial: \"\",\n    descripcion: \"\",\n    phoneNumber: \"\",\n    mail: \"\",\n  });\n  const [viewForm, setViewForm] = useState(\"1\");\n  const [job, setJob] = useState(null);\n\n  const toggleView = (sec) => {\n    if (viewForm !== sec) setViewForm(sec);\n  };\n\n  return (\n    <div className=\"dashboard-container-page\">\n      <div className=\"job-bank-register\">\n        <div className=\"d-flex-between\">\n          <h2>Registro de empleo</h2>\n          <Link to=\"/job-bank\" className=\"btn-back\">\n            <i className=\"icon-chevron-left\"></i>\n            <p>Ir a Bolsa de trabajo</p>\n          </Link>\n        </div>\n        <div className=\"border-pointed green\">\n          <p>\n            Llena el siguiente formulario con los datos para poder continuar con\n            el alta de la vacante.\n          </p>\n        </div>\n        <div className=\"job-bank-register-form\">\n          {\n            {\n              1: (\n                <FormJob\n                  datos={datos}\n                  setDatos={setDatos}\n                  toggleView={() => toggleView(\"2\")} //sig\n                  setJob={setJob}\n                />\n              ),\n              2: <FormSection toggleView={() => toggleView(\"1\")} job={job} />,\n            }[viewForm]\n          }\n        </div>\n      </div>\n      <FooterHome />\n    </div>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { EditorState, convertToRaw, ContentState } from \"draft-js\";\nimport { Editor } from \"react-draft-wysiwyg\";\nimport draftToHtml from \"draftjs-to-html\";\nimport htmlToDraft from \"html-to-draftjs\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport \"./jobBank.scss\";\nimport useInputForm from \"../../components/CustonHooks/FormHook\";\nimport CreatableSelect from \"react-select/creatable\";\nimport { ValidacionEmail } from \"../../utils/ValidacionMail\";\nimport { useHistory } from \"react-router-dom\";\nimport { Input, InputGroup, InputGroupText, Label } from \"reactstrap\";\nimport swal from \"sweetalert\";\nimport Swal from \"sweetalert2\";\nimport { Button } from \"rsuite\";\nimport { Row, Col } from \"antd\";\nimport { FaChevronRight } from \"react-icons/fa\";\n\nexport function FormEditJob({ id, job, setJob, toggleView }) {\n  const history = useHistory();\n  const [datos, setDatos] = useState({});\n\n  const [editorState, setEditorState] = useState();\n  const [selectedOption, setSelectedOption] = useState([]);\n  const [options, setOptions] = useState([]);\n  const [defaultContentState, setDefaultContentState] = useState();\n\n  useEffect(() => {\n    JobBankService.getCategories().then((result) => {\n      if (!result) return;\n      setOptions(\n        result.map((x) => ({ value: x.jobCategoryId, label: x.name }))\n      );\n    });\n\n    JobBankService.getJobById(id).then((result) => {\n      // se obtiene un objeto del tipo EditorState para la descripcion del trabajo\n      let blocksFromHtml = htmlToDraft(result.description);\n      let { contentBlocks, entityMap } = blocksFromHtml;\n      let contentState = ContentState.createFromBlockArray(\n        contentBlocks,\n        entityMap\n      );\n      let editorState = EditorState.createWithContent(contentState);\n      setDefaultContentState(editorState);\n      setEditorState(\n        draftToHtml(convertToRaw(editorState.getCurrentContent()))\n      );\n\n      const chargeData = async () => {\n        const imageFile = await getFile(result.companyImage);\n        return imageFile;\n      };\n\n      setJob(result);\n\n      chargeData().then((imageFile) => {\n        setDatos({\n          title: result.title,\n          categoria: result.jobCategory,\n          location: result.location,\n          direction: result.direction,\n          titleCompany: result.companyName,\n          imagen: imageFile,\n          infoSalarial: result.salary,\n          descripcion: result.description,\n          phoneNumber: result.phoneNumber,\n          mail: result.email,\n        });\n      });\n\n      setSelectedOption(\n        result.jobCategory.map((element) => {\n          return { value: element.jobCategoryId, label: element.name };\n        })\n      );\n    });\n  }, []);\n\n  const getFile = async (url) => {\n    let barra = url.lastIndexOf(\"/\");\n    let punto = url.lastIndexOf(\".\");\n    let nombre = url.substring(barra + 1, punto);\n\n    let response = await fetch(url);\n    let data = await response.blob();\n    let file = new File([data], nombre);\n    let container = new DataTransfer();\n    container.items.add(file);\n    document.querySelector(\"#file-upload\").files = container.files;\n    return file;\n  };\n\n  function updateImage(e) {\n    const file = e.target.files[0];\n    inputs.imagen = file;\n  }\n\n  const onSave = () => {\n    inputs.descripcion = editorState;\n    inputs.categoria = selectedOption;\n    let error = ValidacionEmail(inputs.mail);\n    if (error === false) {\n      swal({ text: \"Correo incorrecto, por favor revise.\", icon: \"error\" });\n      return;\n    }\n    if (inputs.categoria.length === 0) {\n      swal({ text: \"Seleccion al menos una categoría\", icon: \"error\" });\n      return;\n    }\n    if (inputs.descripcion === \"\") {\n      swal({ text: \"Ingrese una descripción\", icon: \"error\" });\n      return;\n    }\n    insertJob();\n  };\n\n  async function insertJob() {\n    let formData = new FormData();\n    formData.append(\"JobId\", job.jobId);\n\n    formData.append(\"CompanyId\", process.env.REACT_APP_COMPANY);\n    formData.append(\"Title\", inputs.title);\n    //Intentar agarrar lo que pone el editor y ponerlo un string\n    formData.append(\"Description\", inputs.descripcion);\n    formData.append(\"Currency\", \"MXN\");\n    formData.append(\"Salary\", inputs.infoSalarial);\n    formData.append(\"Location\", inputs.location);\n    formData.append(\"Direction\", inputs.direction);\n    formData.append(\"CompanyName\", inputs.titleCompany);\n    //En CompanyImage debería ir el logo de la empresa\n    formData.append(\"CompanyImage\", inputs.imagen);\n    formData.append(\"PhoneNumber\", inputs.phoneNumber);\n    formData.append(\"Email\", inputs.mail);\n\n    selectedOption.forEach((element, index) => {\n      formData.append(\n        `JobCategory[${index}].JobCategoryId`,\n        element?.__isNew__ ? 0 : element.value\n      );\n      formData.append(`JobCategory[${index}].Name`, element.label);\n    });\n\n    JobBankService.updateJob(formData).then((result) => {\n      JobBankService.getJobById(id).then((result) => {\n        // se obtiene un objeto del tipo EditorState para la descripcion del trabajo\n        let blocksFromHtml = htmlToDraft(result.description);\n        let { contentBlocks, entityMap } = blocksFromHtml;\n        let contentState = ContentState.createFromBlockArray(\n          contentBlocks,\n          entityMap\n        );\n        let editorState = EditorState.createWithContent(contentState);\n        setDefaultContentState(editorState);\n        setEditorState(\n          draftToHtml(convertToRaw(editorState.getCurrentContent()))\n        );\n\n        getFile(result.companyImage);\n\n        setJob(result);\n\n        setDatos({\n          title: result.title,\n          categoria: result.jobCategory,\n          location: result.location,\n          direction: result.direction,\n          titleCompany: result.companyName,\n          imagen: result.companyImage,\n          infoSalarial: result.salary,\n          descripcion: result.description,\n          phoneNumber: result.phoneNumber,\n          mail: result.email,\n        });\n\n        setSelectedOption(\n          result.jobCategory.map((element) => {\n            return { value: element.jobCategoryId, label: element.name };\n          })\n        );\n      });\n      Swal.fire({\n        text: \"Se ha actualizado la oferta de trabajo\",\n        icon: \"success\",\n        showCloseButton: true,\n        allowOutsideClick: false,\n        allowEscapeKey: false,\n      }).then(() => {\n        toggleView();\n      });\n    });\n  }\n\n  const { inputs, handleInputChange, handleSubmit, setInputs } = useInputForm(\n    onSave,\n    datos\n  );\n\n  const onEditorStateChange = (editorState) => {\n    setEditorState(draftToHtml(convertToRaw(editorState.getCurrentContent())));\n  };\n\n  return (\n    <>\n      <article className=\"steps\">\n        <div className=\"item active\">\n          <span>1</span>\n        </div>\n        <div className=\"lines\"></div>\n        <div className=\"item\">\n          <span>2</span>\n        </div>\n      </article>\n      <article className=\"content\">\n        <form onSubmit={handleSubmit}>\n          <div className=\"content_shadows_form\">\n            <Row gutter={16}>\n              <Col xs={24}>\n                <h6>Información de la vacante</h6>\n              </Col>\n              <Col md={12} xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label>Título de la vacante</Label>\n                  <input\n                    type=\"text\"\n                    placeholder=\"Título de la vacante\"\n                    name=\"title\"\n                    required={true}\n                    defaultValue={job.title}\n                    onChange={handleInputChange}\n                  />\n                </div>\n              </Col>\n              <Col md={12} xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label for=\"categoria\"> Categoría</Label>\n                  <CreatableSelect\n                    closeMenuOnSelect={false}\n                    value={selectedOption}\n                    required={true}\n                    onChange={setSelectedOption}\n                    placeholder=\"Selecciona una categoría\"\n                    isMulti\n                    className=\"basic-multi-select\"\n                    classNamePrefix=\"select\"\n                    options={options}\n                    id=\"categoria\"\n                  />\n                </div>\n              </Col>\n              <Col xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label for=\"direction\">Dirección</Label>\n                  <input\n                    type=\"text\"\n                    placeholder=\"Ubicación\"\n                    name=\"direction\"\n                    onChange={handleInputChange}\n                    required={true}\n                    defaultValue={job.direction}\n                  />\n                </div>\n              </Col>\n              <Col xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label for=\"location\">Localidad</Label>\n                  <input\n                    type=\"text\"\n                    placeholder=\"Localidad\"\n                    name=\"location\"\n                    onChange={handleInputChange}\n                    required={true}\n                    defaultValue={job.location}\n                  />\n                </div>\n              </Col>\n              <Col md={12} xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label for=\"titleCompany\">Nombre de la empresa</Label>\n                  <input\n                    type=\"text\"\n                    placeholder=\"Nombre de la empresa\"\n                    name=\"titleCompany\"\n                    onChange={handleInputChange}\n                    required={true}\n                    defaultValue={job.companyName}\n                  />\n                </div>\n              </Col>\n              <Col md={12} xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label for=\"mail\">Correo</Label>\n                  <input\n                    type=\"text\"\n                    placeholder=\"Correo electrónico\"\n                    name=\"mail\"\n                    onChange={handleInputChange}\n                    required={true}\n                    defaultValue={job.email}\n                  />\n                </div>\n              </Col>\n              <Col md={12} xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label>Número de contacto</Label>\n                  <input\n                    placeholder=\"Número de teléfono\"\n                    name=\"phoneNumber\"\n                    type=\"text\"\n                    maxLength={10}\n                    minLength={10}\n                    onKeyPress={(e) => {\n                      // Solo se admiten números\n                      e = e || window.event;\n                      var charCode = e.keyCode || e.which;\n                      var charStr = String.fromCharCode(charCode);\n                      if (isNaN(charStr)) e.preventDefault();\n                    }}\n                    onChange={handleInputChange}\n                    required={true}\n                    defaultValue={job.phoneNumber}\n                  />\n                </div>\n              </Col>\n              <Col md={12} xs={24}>\n                <div className=\"form-dashboard-group\">\n                  <Label for=\"\">Logo empresa</Label>\n                  <input\n                    type=\"file\"\n                    id=\"file-upload\"\n                    placeholder={job.companyImage}\n                    accept=\"image/*\"\n                    name=\"imagen\"\n                    onChange={(x) => updateImage(x)}\n                  />\n                </div>\n              </Col>\n              <Col xs={24} className=\"mt-3 mb-3\">\n                <h6>Información salarial</h6>\n              </Col>\n              <Col md={12} xs={24}>\n                <Label for=\"\">Salario bruto</Label>\n                <InputGroup className=\"group-append\">\n                  <InputGroupText>\n                    Salario bruto\n                    <Input type=\"radio\" name=\"exampleRadios\" />\n                  </InputGroupText>\n                  <Input\n                    type=\"number\"\n                    min={0}\n                    step=\"0.01\"\n                    name=\"infoSalarial\"\n                    onChange={handleInputChange}\n                    required={true}\n                    defaultValue={job.salary}\n                  />\n                </InputGroup>\n              </Col>\n              <Col xs={24} className=\"mt-3 mb-3\">\n                <br />\n                <h6>Descripción de la empresa</h6>\n              </Col>\n              <Col xs={24}>\n                {defaultContentState && (\n                  <Editor\n                    onEditorStateChange={onEditorStateChange}\n                    wrapperClassName=\"wrapper__editor_text\"\n                    editorClassName=\"editor-class\"\n                    toolbarClassName=\"toolbar-class\"\n                    toolbar={{\n                      options: [\n                        \"inline\",\n                        \"colorPicker\",\n                        \"blockType\",\n                        \"fontSize\",\n                        // \"fontFamily\",\n                        \"list\",\n                        \"textAlign\",\n                        // \"image\",\n                        \"link\",\n                        \"remove\",\n                        \"history\",\n                      ],\n                      inline: {\n                        options: [\n                          \"bold\",\n                          \"italic\",\n                          \"underline\",\n                          \"strikethrough\",\n                        ],\n                      },\n                      list: { inDropdown: true },\n                      textAlign: { inDropdown: true },\n                      link: { inDropdown: true },\n                      history: { inDropdown: true },\n                    }}\n                  />\n                )}\n              </Col>\n              <Col xs={24}>\n                <div className=\"form-dashboard-footer\">\n                  <Button className=\"btn-dark\" type=\"submit\">\n                    <p>Modificar empleo</p>\n                    <FaChevronRight />\n                  </Button>\n                </div>\n              </Col>\n            </Row>\n          </div>\n        </form>\n      </article>\n    </>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Swal from \"sweetalert2\";\nimport { ContentState, convertToRaw, EditorState } from \"draft-js\";\nimport { Editor } from \"react-draft-wysiwyg\";\nimport draftToHtml from \"draftjs-to-html\";\nimport htmlToDraft from \"html-to-draftjs\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { JobBankService } from \"../../services/jobBank.service\";\nimport { Col, Row } from \"antd\";\nimport { FaChevronRight } from \"react-icons/fa\";\nimport { Button } from \"rsuite\";\n\nexport function FormEditSectionJob({ id, toggleView, job }) {\n  const [sections, setSections] = useState([]);\n  const [defaultContentState, setDefaultContentState] = useState();\n  const [sectionValues, setSectionValues] = useState([]);\n\n  useEffect(() => {\n    JobBankService.getJobSections().then((data) => {\n      let defaultContentState = data.map((section) => {\n        let description = job.jobSection.find(\n          (x) => x.jobSectionTypeId === section.jobSectionTypeId\n        )?.description;\n        if (description === undefined) return EditorState.createEmpty();\n        let blocksFromHtml = htmlToDraft(description);\n        let { contentBlocks, entityMap } = blocksFromHtml;\n        let contentState = ContentState.createFromBlockArray(\n          contentBlocks,\n          entityMap\n        );\n        return EditorState.createWithContent(contentState);\n      });\n\n      setDefaultContentState(defaultContentState);\n      setSections(data);\n      setSectionValues(\n        data.map((section) => {\n          return {\n            JobSectionTypeId: section.jobSectionTypeId,\n            JobSection: job.jobSection.find(\n              (x) => x.jobSectionTypeId === section.jobSectionTypeId\n            ) || {\n              description: \"\",\n              jobSectionTypeId: section.jobSectionTypeId,\n            },\n          };\n        })\n      );\n    });\n  }, []);\n\n  const onEditorStateChange = (editorState, section) => {\n    let descriptionHtml = draftToHtml(\n      convertToRaw(editorState.getCurrentContent())\n    );\n    let newSectionValues = sectionValues.map((x) => {\n      if (x.JobSectionTypeId === section.jobSectionTypeId) {\n        x.JobSection.description = descriptionHtml;\n        x.JobSection.jobSectionTypeId = section.jobSectionTypeId;\n      }\n      return x;\n    });\n    setSectionValues(newSectionValues);\n  };\n\n  const onSave = (e) => {\n    var validSections = false;\n    sectionValues.map((x) => {\n      if (\n        x.JobSection.description != \"\" &&\n        x.JobSection.description != \"<p></p>\" &&\n        x.JobSection.description != \"<p></p>\\n\"\n      ) {\n        validSections = true;\n      }\n    });\n    if (validSections == false) {\n      Swal.fire({\n        text: \"Favor de completar al menos una sección\",\n        icon: \"warning\",\n        showCloseButton: true,\n        allowOutsideClick: false,\n        allowEscapeKey: false,\n      });\n      return;\n    }\n    let JobSections = {\n      JobId: id,\n      JobSection: sectionValues.map((x) => x.JobSection),\n    };\n    JobBankService.updateJobSections(JobSections).then((data) => {\n      if (data !== null)\n        Swal.fire({\n          text: \"Se han actualizado las secciones de trabajo\",\n          icon: \"success\",\n          showCloseButton: true,\n          allowOutsideClick: false,\n          allowEscapeKey: false,\n        }).then(() => {\n          window.location.href = \"/job-bank\";\n        });\n    });\n  };\n\n  return (\n    <>\n      <article className=\"steps\">\n        <div className=\"item\">\n          <span>1</span>\n        </div>\n        <div className=\"lines\"></div>\n        <div className=\"item active\">\n          <span>2</span>\n        </div>\n      </article>\n\n      <article className=\"content\">\n        <Row gutter={16}>\n          <Col xs={24}>\n            <h5 className=\"mb-4\">Información adicional</h5>\n          </Col>\n          {sections.map((section, index) => {\n            return (\n              <div className=\"w-100\" key={index}>\n                <Col xs={24}>\n                  <h6 className=\"mb-2 ff_medium\">\n                    {section.name === \"Ubicacion\" ? \"Ubicación\" : section.name}\n                  </h6>\n                </Col>\n                <Col xs={24}>\n                  <div className=\"form-dashboard-group mt-1 mb-5\">\n                    {defaultContentState?.[index] && (\n                      <Editor\n                        defaultEditorState={defaultContentState?.[index]}\n                        onEditorStateChange={(e) =>\n                          onEditorStateChange(e, section)\n                        }\n                        wrapperClassName=\"wrapper__editor_text\"\n                        editorClassName=\"editor-class\"\n                        toolbarClassName=\"toolbar-class\"\n                        toolbar={{\n                          options: [\n                            \"inline\",\n                            \"colorPicker\",\n                            \"blockType\",\n                            \"fontSize\",\n                            // \"fontFamily\",\n                            \"list\",\n                            \"textAlign\",\n                            // \"image\",\n                            \"link\",\n                            \"remove\",\n                            \"history\",\n                          ],\n                          inline: {\n                            options: [\n                              \"bold\",\n                              \"italic\",\n                              \"underline\",\n                              \"strikethrough\",\n                            ],\n                          },\n                          list: { inDropdown: true },\n                          textAlign: { inDropdown: true },\n                          link: { inDropdown: true },\n                          history: { inDropdown: true },\n                        }}\n                      />\n                    )}\n                  </div>\n                </Col>\n              </div>\n            );\n          })}\n          <Col xs={24}>\n            <div className=\"form-dashboard-footer\">\n              <Button className=\"btn-dark\" onClick={onSave}>\n                Editar secciones\n                <FaChevronRight />\n              </Button>\n            </div>\n          </Col>\n        </Row>\n      </article>\n    </>\n  );\n}","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { Link } from \"react-router-dom\";\nimport \"./jobBank.scss\";\nimport useInputForm from \"../../components/CustonHooks/FormHook\";\nimport CreatableSelect from \"react-select/creatable\";\nimport { ValidacionEmail } from \"../../utils/ValidacionMail\";\nimport Swal from \"sweetalert2\";\nimport { FormEditJob } from \"./FormEditJob\";\nimport { FormEditSectionJob } from \"./FormEditSectionJob\";\nimport { Col, Row } from \"antd\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { FaChevronLeft } from \"react-icons/fa\";\n\nexport function EditJob(props) {\n  const [datos, setDatos] = useState({\n    title: \"\",\n    categoria: [],\n    ubicacion: \"\",\n    location: \"\",\n    titleCompany: \"\",\n    imagen: null,\n    infoSalarial: \"\",\n    descripcion: \"\",\n    phoneNumber: \"\",\n    mail: \"\",\n  });\n  const [viewForm, setViewForm] = useState(\"1\");\n  const [job, setJob] = useState({});\n  let { id } = useParams();\n\n  const toggleView = (sec) => {\n    //if (viewForm == 2 && sec == 3) subirForm();\n    if (viewForm !== sec) setViewForm(sec);\n  };\n\n  return (\n    <div className=\"dashboard-container-page job_page_sub\">\n      <div className=\"admin-subtitle job_subtitle\">\n        <Link to=\"/job-bank\" className=\"btn-back\">\n          <FaChevronLeft />\n        </Link>\n        <h2>Edición de empleo</h2>\n      </div>\n      <div className=\"border-pointed green\">\n        <p>\n          Llena el siguiente formulario con los datos para poder continuar con\n          la edición de la vacante.\n        </p>\n      </div>\n      <div className=\"job-bank-register-form\">\n        {\n          {\n            1: (\n              <FormEditJob\n                id={id}\n                datos={datos}\n                setDatos={setDatos}\n                toggleView={() => toggleView(\"2\")} //sig\n                setJob={setJob}\n                job={job}\n              />\n            ),\n            2: (\n              <FormEditSectionJob\n                toggleView={() => toggleView(\"1\")}\n                job={job}\n                id={id}\n              />\n            ),\n          }[viewForm]\n        }\n      </div>\n      <Row>\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </div>\n  );\n}\n","import React, {useEffect, useRef, useState} from \"react\";\nimport Swal from \"sweetalert2\";\nimport './inputFile.scss';\nimport {AiOutlineCheckCircle, AiOutlineCloudUpload, AiOutlineFileDone} from \"react-icons/ai\";\nimport {MdClear} from \"react-icons/md\";\n\nexport const InputFile = ({\n                              onFilesSelected,\n                              width = 0,\n                              height = 0,\n                              edit = false,\n                              accept,\n                              valueFile = [],\n                              oneFile = true,\n                              maxFiles = 1,\n                              nameFile,\n                              deleteImage,\n                          }) => {\n    const [files, setFiles] = useState([]);\n    const inputFileRef = useRef();\n    const maxSize = (process.env.REACT_APP_MAX_FILESIZE * 1024);\n    const [format, setFormat] = useState([]);\n    const [acceptedFiles, setAcceptedFiles] = useState([]);\n\n    const handleRemoveFile = (index,files,file) =>  {\n        const filesReceived = Array.from(files);\n        const newFiles = filesReceived.filter((_, i) => i !== index);\n        setFiles(newFiles);\n        deleteImage(newFiles,file);\n        if(newFiles.length === 0) cleanInput();\n    };\n\n    const cleanInput = () => inputFileRef.current.value = null;\n\n    const handleFileChange = (e) => {\n        e.preventDefault();\n        let newFiles = [];\n        let filesToUpload = [];\n\n        if(e.dataTransfer) newFiles = Array.from(e.dataTransfer.files);\n        else newFiles = Array.from(e.target.files)\n\n        newFiles.forEach(currentFile => {\n            const sizeCurrentFile = Math.round(currentFile.size / 1024);\n            const fileType = currentFile.type?.split(\"/\")[1] ?? '';\n\n            if (sizeCurrentFile > maxSize) {\n                if(newFiles.length === 1) {\n                    showAlert('¡Ups!','EL archivo debe ser menor a ' + process.env.REACT_APP_MAX_FILESIZE + ' MB.','error');\n                    selectedFilesUpload(filesToUpload)\n                    cleanInput();\n                    return;\n                } else\n                    return showAlert('¡Cuidado!',`Los archivos que exceden los ${process.env.REACT_APP_MAX_FILESIZE} MB no se subieron`,'warning');\n            }\n\n            if(accept.includes('image') && (fileType === 'png' || fileType === 'jpg' || fileType === 'jpeg' || fileType === 'svg' || fileType === 'webp')) {\n                const currentImg = URL.createObjectURL(currentFile)\n                let img = document.createElement(\"img\"), dimensions = {};\n                img.src = currentImg;\n                img.onload = function () {\n                    dimensions = {\n                        width: img.width,\n                        height: img.height\n                    };\n                    if(newFiles.length === 1) {\n                        if(dimensions.width > width || dimensions.height > height) {\n                            showAlert('¡Ups!','La imagen excede las dimensiones permitidas','error');\n                            selectedFilesUpload(filesToUpload)\n                            cleanInput();\n                        } else {\n                            filesToUpload.push(currentFile);\n                            selectedFilesUpload(filesToUpload);\n                            cleanInput();\n                        }\n                    } else {\n                        if(dimensions.width > width || dimensions.height > height)\n                            showAlert('¡Cuidado!','Las imágenes que exceden las dimensiones permitidas no se subieron','warning');\n                        else  {\n                            filesToUpload.push(currentFile);\n                            selectedFilesUpload(filesToUpload);\n                            cleanInput();\n                        }\n                    }\n                };\n            } else if(format.includes(fileType) ) {\n                filesToUpload.push(currentFile);\n                selectedFilesUpload(filesToUpload);\n                cleanInput();\n            } else {\n                showAlert('El archivo es un formato no permitido');\n                cleanInput();\n            }\n        });\n    }\n\n\n    const selectedFilesUpload = (filesReceived) => {\n        const newFiles = Array.from(filesReceived);\n        if(oneFile) {\n            setFiles(newFiles);\n            onFilesSelected(newFiles)\n        } else {\n            files.forEach(item => newFiles.push(item))\n            setFiles(newFiles)\n            onFilesSelected(newFiles)\n        }\n    }\n\n    const showAlert = (title,textAlert,type) => Swal.fire({title: title, text: textAlert, icon: type});\n\n    useEffect(() => {\n        if(edit) setFiles(valueFile);\n    }, [valueFile]);\n\n    useEffect(() => {\n        const format = [], acceptedFiles = [];\n\n        for(let i  = 0; i < accept.length; i++) {\n            if(accept[i] === 'image') {\n                format.push('png', 'jpg', 'webp', 'svg', 'jpeg')\n                acceptedFiles.push('image/png','image/svg','image/webp','image/jpeg','image/jpg')\n            }\n            if(accept[i] === 'pdf') {\n                format.push('pdf')\n                acceptedFiles.push('application/pdf')\n            }\n            if(accept[i] === 'audio') {\n                format.push('mp3','wav')\n                acceptedFiles.push('audio/*')\n            }\n            if(accept[i] === 'video') {\n                format.push('mp4','mov','mkv,')\n                acceptedFiles.push('video/mov','video/mp4','video/mkv')\n            }\n            if(accept[i] === 'cvs') {\n                format.push('cvs','xls','xlsx')\n                acceptedFiles.push('application/csv','application/xlsx','application/xls')\n            }\n            if(accept[i] === 'document') {\n                format.push('doc','docx','txt')\n                acceptedFiles.push('application/doc','application/docx','application/txt')\n            }\n        }\n        setFormat(format);\n        setAcceptedFiles(acceptedFiles);\n    }, [accept]);\n\n    return (\n        <section className=\"drag-drop-container\">\n            <div\n                className={`document-uploader ${\n                    files.length > 0 ? \"upload-box active\" : \"upload-box\"\n                }`}\n                onDrop={handleFileChange}\n                onDragOver={(e) => e.preventDefault()}\n            >\n                <div className=\"upload-info\">\n                    {((oneFile && files.length === 0) || (!(oneFile) && files.length < maxFiles)) ?\n                        <>\n                            <AiOutlineCloudUpload />\n                            <div>\n                                <p>Arrastra y suelta tus archivos aquí</p>\n                                <p>Límite de {process.env.REACT_APP_MAX_FILESIZE}MB por archivo.\n                                    <br/>Archivos permitidos: {format.join(', ')}\n                                </p>\n                                {accept.includes('image') ? <p>Dimensiones recomendadas: {width}x{height}</p> : null}\n                            </div>\n                        </>\n                        :\n                        <>\n                            <AiOutlineFileDone />\n                            <div>\n                                <p>Límite de archivos alcanzado</p>\n                            </div>\n                        </>\n                    }\n                </div>\n                <input\n                    ref={inputFileRef}\n                    type=\"file\"\n                    hidden\n                    id={`${nameFile}`}\n                    onChange={handleFileChange}\n                    accept={acceptedFiles}\n                    name={`${nameFile}`}\n                    multiple={!(oneFile)}\n                />\n                {\n                    ((oneFile && files.length === 0) || (!(oneFile) && files.length < maxFiles)) ?\n                        <label htmlFor={`${nameFile}`} className=\"browse-btn\">Buscar archivos</label>\n                        : null\n                }\n\n                {files.length > 0 && (\n                    <div className=\"file-list\">\n                        <div className=\"file-list__container\">\n                            {files.map((file, index) => (\n                                <div className=\"file-item\" key={index}>\n                                    <div className=\"file-info\">\n                                        <p>{file?.name ?? file.fileName}</p>\n                                        {/* <p>{file.type}</p> */}\n                                    </div>\n                                    <div className=\"file-actions\">\n                                        <MdClear onClick={() => {handleRemoveFile(index,files,file);} } />\n                                    </div>\n                                </div>\n                            ))}\n                        </div>\n                    </div>\n                )}\n\n                {files.length > 0 && (\n                    <div className=\"success-file\">\n                        <AiOutlineCheckCircle\n                            style={{ color: \"#6DC24B\", marginRight: 1 }}\n                        />\n                        {files.length <= 1 ? <p> Archivo seleccionado</p> : <p> Archivos seleccionados</p>}\n                    </div>\n                )}\n            </div>\n        </section>\n    );\n}\n","import React from \"react\";\nimport { Button, Card } from \"antd\";\nimport { FaChevronLeft } from \"react-icons/fa\";\n\nexport const HeaderCourse = ({ event, title }) => {\n  return (\n    <div className={\"event-pride-approve-header\"}>\n      <Button onClick={event} className=\"btn-back-post\">\n        <FaChevronLeft />\n      </Button>\n      <h2 className={\"course-view-title\"}>{title}</h2>\n    </div>\n  );\n};\n","import React from \"react\";\nimport {Card} from \"antd\";\n\nexport const EventCardInformative = ({title,subtitle,paragraph}) => {\n\n    return (\n        <Card className={'event-pride-ticket-card'}>\n            <h4>{title}</h4>\n            <h2>{subtitle}</h2>\n            <p>{paragraph}</p>\n        </Card>\n    );\n}\n","import swal from \"sweetalert\";\nimport { callApi, callApiFileStorage } from \"./service\";\n\nexport const ticketsEventService = {\n  getAvailableToSale,\n  getByUser,\n  GetEventSectors,\n  create,\n  getToAuthorize,\n  changeStatus,\n};\n\nasync function getAvailableToSale() {\n  const result = await callApi(\"/TicketsEvent/AvailableToSale\", \"GET\");\n  if (result.responseCode === \"00\") {\n    return result.data;\n  } else {\n    console.log(result.responseMessage);\n    return [];\n  }\n}\n\nasync function getByUser() {\n  const result = await callApi(\"/TicketsEvent/ByUser\", \"GET\");\n  if (result.responseCode === \"00\") {\n    return result.data;\n  } else {\n    console.log(result.responseMessage);\n    return [];\n  }\n}\n\nasync function create(model) {\n  const result = await callApiFileStorage(\n    \"/TicketsEvent/Create\",\n    \"POST\",\n    model,\n    false\n  );\n\n  if (result.responseCode === \"00\") return true;\n  else {\n    console.log(result.responseMessage);\n    swal({\n      text: `Error al crear evento: ${result.responseMessage}`,\n      icon: \"error\",\n    });\n    return false;\n  }\n}\n\nasync function GetEventSectors() {\n  const result = await callApi(\"/TicketsEvent/EventSectors\", \"GET\");\n  if (result.responseCode === \"00\") {\n    return result.data;\n  } else {\n    console.log(result.responseMessage);\n    return [];\n  }\n}\n\nasync function getToAuthorize() {\n  const result = await callApi(\"/TicketsEvent/ToAuthorize\", \"GET\");\n  if (result.responseCode === \"00\") {\n    return result.data;\n  } else {\n    console.log(result.responseMessage);\n    return [];\n  }\n}\n\nasync function changeStatus(model) {\n  const result = await callApi(\"/TicketsEvent/ChangeStatus\", \"PATCH\", model);\n\n  if (result.responseCode === \"00\") {\n    swal({\n      text: `El evento se ${model.isApproved ? \"autorizó\" :\"rechazó\"} correctamente`,\n      icon: \"success\",\n    });\n    return true;\n  } else {\n    console.log(result.responseMessage);\n    swal({\n      text: `Error al ${model.isApproved ? \"autorizar\" :\"rechazar\"} evento: ${result.responseMessage}`,\n      icon: \"error\",\n    });\n    return false;\n  }\n}\n","import React, { useEffect, useState } from \"react\";\nimport {\n  Col,\n  Form,\n  Input,\n  Row,\n  Select,\n  Steps,\n  Button,\n  Checkbox,\n  Result,\n  DatePicker,\n  TimePicker,\n} from \"antd\";\nimport {\n  FaChevronLeft,\n  FaChevronRight,\n  FaClock,\n  FaDollarSign,\n} from \"react-icons/fa\";\nimport { useHistory } from \"react-router-dom\";\nimport Swal from \"sweetalert2\";\nimport { FaPerson } from \"react-icons/fa6\";\nimport dayjs from \"dayjs\";\nimport { InputFile } from \"../../backoffice/components/inputFile/inputFile\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { HeaderCourse } from \"./headerCourse\";\nimport { EventCardInformative } from \"./eventCardInformative\";\nimport { ticketsEventService } from \"../../services/ticketsEvent.service\";\nimport moment from \"moment\";\n\nexport const EventForm = () => {\n  const [currentStep, setCurrentStep] = useState(0);\n  const [eventSectors, setEventSectors] = useState([]);\n  const [picker, setPicker] = useState(\"day\");\n  const [eventTicket, setEventTicket] = useState({\n    idEventTicket: 0,\n    eventName: \"\",\n    eventSector: 0,\n    eventDescription: \"\",\n    eventPriceTicket: 0,\n    eventAudience: \"\",\n    eventNote: \"\",\n    eventTicketBanner: [],\n    eventTicketPromo: [],\n    eventTicketAd: [],\n    eventTicketVideo: [],\n    eventPlaceName: \"\",\n    eventStreetName: \"\",\n    eventZipCode: 0,\n    eventState: \"\",\n    eventCity: \"\",\n    eventNeighboor: \"\",\n    eventPhone: \"\",\n    eventDate: \"\",\n    eventHour: \"\",\n    eventTicketDateStart: \"\",\n    eventTicketDateEnd: \"\",\n    eventTicketHourStart: \"\",\n    eventTicketHourEnd: \"\",\n    eventTime: 0,\n    eventOwnerPhone: \"\",\n    eventOwnerEmail: \"\",\n    eventOwnerBankName: \"\",\n    eventOwnerName: \"\",\n    eventOwnerBank: \"\",\n    eventOwnerClabe: 0,\n    eventOwnerFileBankAccount: [],\n    eventOwnerInvoice: false,\n    eventOwnerCompanyReason: \"\",\n    eventOwnerRFC: \"\",\n    eventOwnerFileConstancy: [],\n  });\n  const history = useHistory();\n\n  useEffect(() => {\n    const init = async () => {\n      const result = await ticketsEventService.GetEventSectors();\n      setEventSectors(result);\n    };\n\n    init();\n  }, []);\n\n  const onFinish = async () => {\n    switch (currentStep) {\n      case 0:\n        if (eventTicket.eventTicketPromo.length === 0) {\n          return Swal.fire({\n            title: \"¡Ups!\",\n            text: \"Te falta una imagen de banner promocional del evento\",\n            icon: \"warning\",\n          });\n        }\n\n        if (eventTicket.eventTicketBanner.length === 0) {\n          return Swal.fire({\n            title: \"¡Ups!\",\n            text: \"Te falta una imagen de banner del evento\",\n            icon: \"warning\",\n          });\n        }\n\n        setCurrentStep(1);\n        break;\n      case 1:\n        if (eventTicket.eventTime === 0) {\n          return Swal.fire({\n            title: \"¡Ups!\",\n            text: \"Tu evento necesita una duración mayor a 0 minutos\",\n            icon: \"warning\",\n          });\n        }\n        setCurrentStep(2);\n        break;\n      case 2:\n        setCurrentStep(3);\n        break;\n      case 3:\n        if (eventTicket.eventOwnerFileBankAccount.length === 0)\n          return Swal.fire({\n            title: \"¡Ups!\",\n            text: \"Falta la carátula de tu estado de cuenta\",\n            icon: \"warning\",\n          });\n        if (eventTicket.eventOwnerInvoice) {\n          if (eventTicket.eventOwnerFileConstancy.length === 0)\n            return Swal.fire({\n              title: \"¡Ups!\",\n              text: \"Falta el archivo de constancia de situación fiscal\",\n              icon: \"warning\",\n            });\n        }\n\n        eventTicket.eventTicketAd = eventTicket.eventTicketAd[0];\n        eventTicket.eventTicketVideo = eventTicket.eventTicketVideo[0];\n        eventTicket.eventTicketBanner = eventTicket.eventTicketBanner[0];\n        eventTicket.eventTicketPromo = eventTicket.eventTicketPromo[0];\n        eventTicket.eventOwnerFileBankAccount =\n          eventTicket.eventOwnerFileBankAccount[0];\n        eventTicket.eventOwnerFileConstancy =\n          eventTicket.eventOwnerFileConstancy[0];\n\n        let data = new FormData();\n\n        for (let key in eventTicket) {\n          data.append(key, eventTicket[key]);\n        }\n        const result = await ticketsEventService.create(data);\n        if (result) setCurrentStep(4);\n        break;\n    }\n  };\n\n  const onChangeCheckedInvoice = (e) =>\n    setEventTicket({ ...eventTicket, eventOwnerInvoice: e.target.checked });\n\n  const stepsItems = [\n    {\n      title: \"¿De qué va tu evento?\",\n    },\n    {\n      title: \"¿Cuándo y dónde será?\",\n    },\n    {\n      title: \"Un poco del anfitrión\",\n    },\n    {\n      title: \"¿A dónde te depositaremos?\",\n    },\n  ];\n\n  const handleSelectSector = (value) =>\n    setEventTicket({ ...eventTicket, eventSector: value });\n\n  const handleInput = (e) =>\n    setEventTicket({ ...eventTicket, [e.target.name]: e.target.value });\n\n  const handleFile = (name, files) => {\n    setEventTicket({ ...eventTicket, [name]: files });\n  };\n\n  const handleFileRemove = (name) => {\n    setEventTicket({ ...eventTicket, [name]: [] });\n  };\n\n  const handleDate = (_date, date, name) =>\n    setEventTicket({ ...eventTicket, [name]: date });\n\n  const handleTime = (_time, time, name) =>\n    setEventTicket({ ...eventTicket, [name]: time });\n\n  const handleTimeRange = (_time, time) => {\n    setEventTicket({\n      ...eventTicket,\n      eventTicketHourStart: time[0],\n      eventTicketHourEnd: time[1],\n    });\n  };\n\n  const handleEventTime = (e) =>\n    setEventTicket({ ...eventTicket, eventTime: parseInt(e.target.value) });\n\n  const handleBackStep = () => {\n    if (currentStep === 1) setCurrentStep(0);\n    if (currentStep === 2) setCurrentStep(1);\n    if (currentStep === 3) setCurrentStep(2);\n  };\n\n  const disabledDateStart = (current) => {\n    return current && current < dayjs().startOf(\"day\");\n  };\n\n  const disabledDateEnd = (current) => {\n    return (\n      current &&\n      current <= moment(eventTicket.eventTicketDateStart, \"DD/MM/YYYY\")\n    );\n  };\n\n  return (\n    <section className=\"course-container-view\">\n      <Row gutter={16} style={{ margin: \"0\" }}>\n        <Col xs={24}>\n          <HeaderCourse\n            title={\"Cartelera\"}\n            event={() => history.push(\"/course-view\")}\n          />\n        </Col>\n        {currentStep === 4 ? (\n          <Col xs={24}>\n            <div className=\"drawer_result\">\n              <Result\n                status=\"success\"\n                title=\"¡Solicitud exitosa!\"\n                subTitle=\"¡Has creado exitosamente una solicitud de un nuevo evento!\"\n                extra={[\n                  <Button\n                    type=\"primary\"\n                    key=\"console\"\n                    className={\"btn-pride-ticket\"}\n                    onClick={() => history.push(\"/course-view\")}\n                  >\n                    Terminar <FaChevronRight />\n                  </Button>,\n                ]}\n              />\n            </div>\n          </Col>\n        ) : (\n          <>\n            <Col\n              lg={{ offset: 3, span: 18 }}\n              md={{ offset: 2, span: 22 }}\n              sm={{ span: 24 }}\n              xs={{ span: 24 }}\n            >\n              <header className=\"event-pride-ticket-header\">\n                <h2>Registremos tu evento</h2>\n                <h3>\n                  Este formulario es para aquellas personas que desean organizar\n                  un evento y vender con nosotros.\n                </h3>\n                <p>¡Solo te tomará 3 minutitos!</p>\n              </header>\n            </Col>\n\n            <div className=\"box__step_cartelera\">\n              <Steps size=\"small\" current={currentStep} items={stepsItems} />\n            </div>\n            <Col\n              xl={{ offset: 3, span: 18 }}\n              lg={{ offset: 0, span: 24 }}\n              md={{ offset: 0, span: 24 }}\n              sm={{ span: 24 }}\n              xs={{ span: 24 }}\n            >\n              <Row gutter={16} style={{ margin: \"0\" }}>\n                <Col xl={6} lg={6} md={6} sm={24} xs={24}>\n                  {\n                    {\n                      0: (\n                        <EventCardInformative\n                          title={\"¿De qué va tu evento?\"}\n                          subtitle={\n                            \"Nombra tu evento y dile a los asistentes por qué deberían venir\"\n                          }\n                          paragraph={\"\"}\n                        />\n                      ),\n                      1: (\n                        <EventCardInformative\n                          title={\"¿En dónde será?\"}\n                          subtitle={\n                            \"Ayude a las personas de la zona a descubrir tu evento.\"\n                          }\n                          paragraph={\"\"}\n                        />\n                      ),\n                      2: (\n                        <EventCardInformative\n                          title={\"Un poco del anfitrión\"}\n                          subtitle={\n                            \"Queremos conocerte para saber a quién dirigirnos.\"\n                          }\n                          paragraph={\n                            \"Nuestro equipo se pondrá en contacto contigo para afinar detalles.\"\n                          }\n                        />\n                      ),\n                      3: (\n                        <EventCardInformative\n                          title={\"¿A dónde te depositaremos?\"}\n                          subtitle={\"Cuentas claras, amistades largas...\"}\n                          paragraph={\n                            \"Nuestro equipo se pondrá en contacto contigo para afinar detalles.\"\n                          }\n                        />\n                      ),\n                    }[currentStep]\n                  }\n                </Col>\n                <Col xl={18} lg={18} md={18} sm={24} xs={24}>\n                  <Form\n                    className={\"event-pride-ticket-form\"}\n                    layout={\"vertical\"}\n                    onFinish={onFinish}\n                  >\n                    {\n                      {\n                        0: (\n                          <Row gutter={16}>\n                            <Col xl={15} lg={14} md={14} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Nombre de evento\"}\n                                onChange={handleInput}\n                                htmlFor={\"eventName\"}\n                                name={\"eventName\"}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  placeholder={\"Ejem: Nombre de evento...\"}\n                                  size={\"large\"}\n                                  name={\"eventName\"}\n                                  count={{\n                                    show: true,\n                                    max: 100,\n                                  }}\n                                  maxLength={100}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={9} lg={10} md={10} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Sector\"}\n                                name={\"eventSector\"}\n                                htmlFor={\"eventSector\"}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Select\n                                  defaultValue=\"Seleccionar\"\n                                  onChange={handleSelectSector}\n                                  size={\"large\"}\n                                  options={eventSectors}\n                                  name={\"eventSector\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xs={24}>\n                              <Form.Item\n                                label={\"Describe de qué va tu evento\"}\n                                name={\"eventDescription\"}\n                                htmlFor={\"eventDescription\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Input.TextArea\n                                  name={\"eventDescription\"}\n                                  size={\"large\"}\n                                  count={200}\n                                  rows={5}\n                                  maxLength={200}\n                                  showCount={true}\n                                  placeholder={\n                                    \"Ejem: Aquí va una descripción para tu evento...\"\n                                  }\n                                ></Input.TextArea>\n                              </Form.Item>\n                            </Col>\n                            <Col xl={12} lg={12} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Costo de boletos\"}\n                                name={\"eventPriceTicket\"}\n                                htmlFor={\"eventPriceTicket\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: new RegExp(/^[0-9]*$/g),\n                                    message: \"Sólo se permiten números\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (!/[0-9]/.test(e.key))\n                                      e.preventDefault();\n                                  }}\n                                  maxLength={7}\n                                  prefix={<FaDollarSign />}\n                                  type={\"text\"}\n                                  name={\"eventPriceTicket\"}\n                                  size={\"large\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={12} lg={12} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={<p>Aforo total del evento</p>}\n                                name={\"eventAudience\"}\n                                htmlFor={\"eventAudience\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: new RegExp(/^[0-9]*$/g),\n                                    message: \"Sólo se permiten números\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (!/[0-9]/.test(e.key))\n                                      e.preventDefault();\n                                  }}\n                                  maxLength={7}\n                                  prefix={<FaPerson />}\n                                  type={\"text\"}\n                                  name={\"eventAudience\"}\n                                  size={\"large\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xs={24}>\n                              <Form.Item\n                                label={\n                                  <p>\n                                    Observaciones de venta{\" \"}\n                                    <span className={\"text-orange\"}>\n                                      (Opcional)\n                                    </span>\n                                  </p>\n                                }\n                                name={\"eventNote\"}\n                                htmlFor={\"eventNote\"}\n                                onChange={handleInput}\n                              >\n                                <Input.TextArea\n                                  rows={5}\n                                  placeholder={\n                                    \"Ejem: Alguna nota extra para tu evento...\"\n                                  }\n                                  name={\"eventNote\"}\n                                  size={\"large\"}\n                                  count={200}\n                                  maxLength={200}\n                                  showCount={true}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xs={24}>\n                              <h5>\n                                Añade imágenes que resalten lo espectacular que\n                                será.\n                              </h5>\n                              <Row gutter={16} style={{ margin: \"0\" }}>\n                                <Col md={12} sm={24} xs={24}>\n                                  <Form.Item label={<p>Banner del evento</p>}>\n                                    <InputFile\n                                      onFilesSelected={(f) =>\n                                        handleFile(\"eventTicketBanner\", f)\n                                      }\n                                      deleteImage={() =>\n                                        handleFileRemove(\"eventTicketBanner\")\n                                      }\n                                      width={1200}\n                                      height={700}\n                                      edit={\n                                        eventTicket.eventTicketBanner?.length >\n                                          0 ?? false\n                                      }\n                                      valueFile={eventTicket.eventTicketBanner}\n                                      accept={[\"image\"]}\n                                      nameFile={\"eventTicketBanner\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col md={12} sm={24} xs={24}>\n                                  <Form.Item label={<p>Banner promocional </p>}>\n                                    <InputFile\n                                      onFilesSelected={(f) =>\n                                        handleFile(\"eventTicketPromo\", f)\n                                      }\n                                      deleteImage={() =>\n                                        handleFileRemove(\"eventTicketPromo\")\n                                      }\n                                      width={1200}\n                                      height={700}\n                                      edit={\n                                        eventTicket.eventTicketPromo?.length >\n                                          0 ?? false\n                                      }\n                                      valueFile={eventTicket.eventTicketPromo}\n                                      accept={[\"image\"]}\n                                      nameFile={\"eventTicketPromo\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\n                                      <p>\n                                        Publicidad de boleto{\" \"}\n                                        <span className={\"text-orange\"}>\n                                          (Opcional)\n                                        </span>\n                                      </p>\n                                    }\n                                  >\n                                    <InputFile\n                                      onFilesSelected={(f) =>\n                                        handleFile(\"eventTicketAd\", f)\n                                      }\n                                      deleteImage={() =>\n                                        handleFileRemove(\"eventTicketAd\")\n                                      }\n                                      width={1200}\n                                      height={700}\n                                      edit={\n                                        eventTicket.eventTicketAd?.length > 0 ??\n                                        false\n                                      }\n                                      valueFile={eventTicket.eventTicketAd}\n                                      accept={[\"image\"]}\n                                      nameFile={\"eventTicketAd\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\n                                      <p>\n                                        Video{\" \"}\n                                        <span className={\"text-orange\"}>\n                                          (Opcional)\n                                        </span>\n                                      </p>\n                                    }\n                                  >\n                                    <InputFile\n                                      onFilesSelected={(f) =>\n                                        handleFile(\"eventTicketVideo\", f)\n                                      }\n                                      deleteImage={() =>\n                                        handleFileRemove(\"eventTicketVideo\")\n                                      }\n                                      edit={\n                                        eventTicket.eventTicketAd?.length > 0 ??\n                                        false\n                                      }\n                                      valueFile={eventTicket.eventTicketVideo}\n                                      accept={[\"video\"]}\n                                      nameFile={\"eventTicketVideo\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                              </Row>\n                            </Col>\n                          </Row>\n                        ),\n                        1: (\n                          <Row gutter={16}>\n                            <Col xl={9} lg={10} md={10} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Nombre del lugar\"}\n                                name={\"eventPlaceName\"}\n                                htmlFor={\"eventPlaceName\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (\n                                      !/^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g.test(\n                                        e.key\n                                      )\n                                    )\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\n                                    \"Ejem: Nombre del lugar del evento...\"\n                                  }\n                                  name={\"eventPlaceName\"}\n                                  size={\"large\"}\n                                  count={{\n                                    show: true,\n                                    max: 50,\n                                  }}\n                                  maxLength={50}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={15} lg={14} md={14} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Calle y número\"}\n                                name={\"eventStreetName\"}\n                                htmlFor={\"eventStreetName\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  type={\"text\"}\n                                  placeholder={\"Ejem: Nombre de calle #\"}\n                                  name={\"eventStreetName\"}\n                                  size={\"large\"}\n                                  count={{\n                                    show: true,\n                                    max: 100,\n                                  }}\n                                  maxLength={100}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={9} lg={9} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Código postal\"}\n                                name={\"eventZipCode\"}\n                                htmlFor={\"eventZipCode\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: new RegExp(/^[0-9]*$/g),\n                                    message: \"Sólo se permiten números\",\n                                  },\n                                  {\n                                    min: 5,\n                                    message: \"Se necesitan 5 dígitos\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  type={\"text\"}\n                                  onKeyPress={(e) => {\n                                    if (!/[0-9]/.test(e.key))\n                                      e.preventDefault();\n                                  }}\n                                  maxLength={5}\n                                  placeholder={\"Ejem: 45124\"}\n                                  name={\"eventZipCode\"}\n                                  size={\"large\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={8} lg={9} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\n                                  <p>\n                                    Teléfono{\" \"}\n                                    <span className={\"text-orange\"}>\n                                      (Opcional)\n                                    </span>\n                                  </p>\n                                }\n                                name={\"eventPhone\"}\n                                htmlFor={\"eventPhone\"}\n                                onChange={handleInput}\n                              >\n                                <Input\n                                  maxLength={10}\n                                  onKeyPress={(e) => {\n                                    if (!/[0-9]/.test(e.key))\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\"Ejem: 00-00-00-00-00\"}\n                                  name={\"eventPhone\"}\n                                  size={\"large\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Estado\"}\n                                name={\"eventState\"}\n                                htmlFor={\"eventState\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (\n                                      !/^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g.test(\n                                        e.key\n                                      )\n                                    )\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\"Ejem: Estado\"}\n                                  name={\"eventState\"}\n                                  size={\"large\"}\n                                  count={{\n                                    show: true,\n                                    max: 40,\n                                  }}\n                                  maxLength={40}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Municipio/Delegación\"}\n                                name={\"eventCity\"}\n                                htmlFor={\"eventCity\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (\n                                      !/^[A-Za-z0-9 _]*[A-Za-z0-9 _][A-Za-z0-9 _]*$/g.test(\n                                        e.key\n                                      )\n                                    )\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\"Ejem: Ciudad\"}\n                                  name={\"eventCity\"}\n                                  size={\"large\"}\n                                  count={{\n                                    show: true,\n                                    max: 40,\n                                  }}\n                                  maxLength={40}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Colonia\"}\n                                name={\"eventNeighboor\"}\n                                htmlFor={\"eventNeighboor\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (\n                                      !/^[A-Za-z0-9 _]*[A-Za-z0-9 _][A-Za-z0-9 _]*$/g.test(\n                                        e.key\n                                      )\n                                    )\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\"Ejem: Colonia\"}\n                                  name={\"eventNeighboor\"}\n                                  size={\"large\"}\n                                  count={{\n                                    show: true,\n                                    max: 40,\n                                  }}\n                                  maxLength={40}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xs={24}>\n                              <h5>\n                                Informe a los asistentes cuando presentarse para\n                                que aparten esta fecha.\n                              </h5>\n                              <Row gutter={16}>\n                                <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"¿Cuándo será tu evento?\"}\n                                    name={\"eventDate\"}\n                                    htmlFor={\"eventDate\"}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                    ]}\n                                  >\n                                    <DatePicker\n                                      onChange={(_d, date) =>\n                                        handleDate(_d, date, \"eventDate\")\n                                      }\n                                      format={\"DD/MM/YYYY\"}\n                                      name={\"eventDate\"}\n                                      placeholder={\"Seleccionar fecha\"}\n                                      size={\"large\"}\n                                      showToday={false}\n                                      disabledDate={disabledDateStart}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"Horario de tu evento\"}\n                                    name={\"eventHour\"}\n                                    htmlFor={\"eventHour\"}\n                                    onChange={handleInput}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                    ]}\n                                  >\n                                    <TimePicker\n                                      onChange={(_t, time) =>\n                                        handleTime(_t, time, \"eventHour\")\n                                      }\n                                      name={\"eventHour\"}\n                                      format={\"HH:mm\"}\n                                      placeholder={\"Seleccionar hora\"}\n                                      minuteStep={10}\n                                      showNow={false}\n                                      size={\"large\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                              </Row>\n                            </Col>\n                            <Col xs={24}>\n                              <h5>\n                                Asigna fecha y horarios de venta de boletos\n                              </h5>\n                              <Row gutter={16}>\n                                <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"Fecha de inicio\"}\n                                    name={\"eventTicketDateStart\"}\n                                    htmlFor={\"eventTicketDateStart\"}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                    ]}\n                                  >\n                                    <DatePicker\n                                      onChange={(_d, date) =>\n                                        handleDate(\n                                          _d,\n                                          date,\n                                          \"eventTicketDateStart\"\n                                        )\n                                      }\n                                      format={\"DD/MM/YYYY\"}\n                                      name={\"eventTicketDateStart\"}\n                                      placeholder={\"Inicio\"}\n                                      size={\"large\"}\n                                      showToday={false}\n                                      disabledDate={disabledDateStart}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"Fecha de finalización\"}\n                                    name={\"eventTicketDateEnd\"}\n                                    htmlFor={\"eventTicketDateEnd\"}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                    ]}\n                                  >\n                                    <DatePicker\n                                      onChange={(_d, date) =>\n                                        handleDate(\n                                          _d,\n                                          date,\n                                          \"eventTicketDateEnd\"\n                                        )\n                                      }\n                                      format={\"DD/MM/YYYY\"}\n                                      name={\"eventTicketDateEnd\"}\n                                      placeholder={\"Finalización\"}\n                                      size={\"large\"}\n                                      showToday={false}\n                                      disabled={\n                                        eventTicket.eventTicketDateStart === \"\"\n                                      }\n                                      disabledDate={disabledDateEnd}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"Horario de inicio y finalización\"}\n                                    name={\"eventHourRange\"}\n                                    htmlFor={\"eventHourRange\"}\n                                    onChange={handleInput}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                    ]}\n                                  >\n                                    <TimePicker.RangePicker\n                                      onChange={handleTimeRange}\n                                      name={\"eventHourRange\"}\n                                      format={\"HH:mm\"}\n                                      minuteStep={10}\n                                      showNow={false}\n                                      placeholder={[\"Inicio\", \"Finalización\"]}\n                                      size={\"large\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"Duración de tu evento (minutos)\"}\n                                    name={\"eventTime\"}\n                                    htmlFor={\"eventTime\"}\n                                    onChange={handleEventTime}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                      {\n                                        pattern: new RegExp(/^[0-9]*$/g),\n                                        message: \"Sólo se permiten números\",\n                                      },\n                                    ]}\n                                  >\n                                    <Input\n                                      onKeyPress={(e) => {\n                                        if (!/[0-9]/.test(e.key))\n                                          e.preventDefault();\n                                      }}\n                                      maxLength={3}\n                                      prefix={<FaClock />}\n                                      type={\"text\"}\n                                      name={\"eventTime\"}\n                                      size={\"large\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                              </Row>\n                            </Col>\n                          </Row>\n                        ),\n                        2: (\n                          <Row gutter={16} style={{ margin: \"0\" }}>\n                            <Col xl={15} lg={16} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Nombre completo del organizador\"}\n                                name={\"eventOwnerName\"}\n                                htmlFor={\"eventOwnerName\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: /^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g,\n                                    message: \"Sólo se permiten letras\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (\n                                      !/^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g.test(\n                                        e.key\n                                      )\n                                    )\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\"Ejem: Nombre Apellido...\"}\n                                  name={\"eventOwnerName\"}\n                                  size={\"large\"}\n                                  count={{\n                                    show: true,\n                                    max: 70,\n                                  }}\n                                  maxLength={70}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Teléfono\"}\n                                name={\"eventOwnerPhone\"}\n                                htmlFor={\"eventOwnerPhone\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: /^(?:\\d*)$/,\n                                    message: \"Sólo se permiten números\",\n                                  },\n                                  {\n                                    min: 10,\n                                    message: \"Se necesitan 10 números\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (!/[0-9]/.test(e.key))\n                                      e.preventDefault();\n                                  }}\n                                  maxLength={10}\n                                  placeholder={\"Ejem: 00-00-00-00-00\"}\n                                  name={\"eventOwnerPhone\"}\n                                  size={\"large\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={15} lg={16} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Correo electrónico\"}\n                                name={\"eventOwnerEmail\"}\n                                htmlFor={\"eventOwnerEmail\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    type: \"email\",\n                                    message:\n                                      \"*Se necesita un formato de correo\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  placeholder={\"Ejem: nombre@dominio\"}\n                                  name={\"eventOwnerEmail\"}\n                                  size={\"large\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                          </Row>\n                        ),\n                        3: (\n                          <Row gutter={16} style={{ margin: \"0\" }}>\n                            <Col xl={15} lg={16} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Nombre del titular\"}\n                                name={\"eventOwnerBankName\"}\n                                htmlFor={\"eventOwnerBankName\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: /^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g,\n                                    message: \"Sólo se permiten letras\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (\n                                      !/^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g.test(\n                                        e.key\n                                      )\n                                    )\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\"Ejem: Nombre Apellido...\"}\n                                  name={\"eventOwnerBankName\"}\n                                  size={\"large\"}\n                                  count={{\n                                    show: true,\n                                    max: 70,\n                                  }}\n                                  maxLength={70}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Banco\"}\n                                name={\"eventOwnerBank\"}\n                                htmlFor={\"eventOwnerBank\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: /^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g,\n                                    message: \"Sólo se permiten letras\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (\n                                      !/^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g.test(\n                                        e.key\n                                      )\n                                    )\n                                      e.preventDefault();\n                                  }}\n                                  placeholder={\"Ejem: Nombre del banco\"}\n                                  name={\"eventOwnerBank\"}\n                                  size={\"large\"}\n                                  maxLength={40}\n                                  count={{\n                                    show: true,\n                                    max: 40,\n                                  }}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={15} lg={16} md={12} sm={24} xs={24}>\n                              <Form.Item\n                                label={\"Clave interbancaria\"}\n                                name={\"eventOwnerClabe\"}\n                                htmlFor={\"eventOwnerClabe\"}\n                                onChange={handleInput}\n                                rules={[\n                                  {\n                                    required: true,\n                                    message: \"*Campo requerido\",\n                                  },\n                                  {\n                                    pattern: new RegExp(/^[0-9]*$/g),\n                                    message: \"Sólo se permiten números\",\n                                  },\n                                  {\n                                    min: 18,\n                                    message: \"Se necesitan 18 dígitos\",\n                                  },\n                                ]}\n                              >\n                                <Input\n                                  onKeyPress={(e) => {\n                                    if (!/[0-9]/.test(e.key))\n                                      e.preventDefault();\n                                  }}\n                                  maxLength={18}\n                                  placeholder={\"Ejem: 098713207860784591\"}\n                                  name={\"eventOwnerClabe\"}\n                                  size={\"large\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xl={9} lg={8} md={12} sm={24} xs={24}>\n                              <Form.Item label={\"Carátula de Estado de cuenta\"}>\n                                <InputFile\n                                  onFilesSelected={(f) =>\n                                    handleFile(\"eventOwnerFileBankAccount\", f)\n                                  }\n                                  deleteImage={() =>\n                                    handleFileRemove(\n                                      \"eventOwnerFileBankAccount\"\n                                    )\n                                  }\n                                  edit={\n                                    eventTicket.eventOwnerFileBankAccount\n                                      ?.length > 0 ?? false\n                                  }\n                                  valueFile={\n                                    eventTicket.eventOwnerFileBankAccount\n                                  }\n                                  width={1280}\n                                  height={1980}\n                                  accept={[\"image\"]}\n                                  nameFile={\"eventOwnerFileBankAccount\"}\n                                />\n                              </Form.Item>\n                            </Col>\n                            <Col xs={24}>\n                              <Form.Item\n                                label={\"Facturación\"}\n                                name={\"eventOwnerInvoice\"}\n                                htmlFor={\"eventOwnerInvoice\"}\n                              >\n                                <Checkbox\n                                  onChange={onChangeCheckedInvoice}\n                                  checked={eventTicket.eventOwnerInvoice}\n                                >\n                                  ¿Necesitas facturar?\n                                </Checkbox>\n                              </Form.Item>\n                            </Col>\n                            {eventTicket.eventOwnerInvoice ? (\n                              <>\n                                <Col xl={12} lg={12} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"Razón social\"}\n                                    name={\"eventOwnerCompanyReason\"}\n                                    htmlFor={\"eventOwnerCompanyReason\"}\n                                    onChange={handleInput}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                    ]}\n                                  >\n                                    <Input\n                                      onKeyPress={(e) => {\n                                        if (\n                                          !/^[ a-zA-ZÀ-ÿ\\u00f1\\u00d1]*$/g.test(\n                                            e.key\n                                          )\n                                        )\n                                          e.preventDefault();\n                                      }}\n                                      placeholder={\"Ejem: S.A....\"}\n                                      name={\"eventOwnerCompanyReason\"}\n                                      size={\"large\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col xl={12} lg={12} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"RFC\"}\n                                    name={\"eventOwnerRFC\"}\n                                    htmlFor={\"eventOwnerRFC\"}\n                                    onChange={handleInput}\n                                    rules={[\n                                      {\n                                        required: true,\n                                        message: \"*Campo requerido\",\n                                      },\n                                      {\n                                        pattern:\n                                          /^([A-ZÑ&]{3,4}) ?(?:- ?)?(\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01])) ?(?:- ?)?([A-Z\\d]{2})([A\\d])$/g,\n                                        message:\n                                          \"El formato de R.F.C. es erróneo\",\n                                      },\n                                    ]}\n                                  >\n                                    <Input\n                                      placeholder={\"Ejem: JDME990523F78\"}\n                                      name={\"eventOwnerRFC\"}\n                                      size={\"large\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                                <Col xl={12} lg={12} md={12} sm={24} xs={24}>\n                                  <Form.Item\n                                    label={\"Constancia situación fiscal\"}\n                                  >\n                                    <InputFile\n                                      onFilesSelected={(f) =>\n                                        handleFile(\"eventOwnerFileConstancy\", f)\n                                      }\n                                      deleteImage={() =>\n                                        handleFileRemove(\n                                          \"eventOwnerFileConstancy\"\n                                        )\n                                      }\n                                      edit={\n                                        eventTicket.eventOwnerFileConstancy\n                                          ?.length > 0 ?? false\n                                      }\n                                      valueFile={\n                                        eventTicket.eventOwnerFileConstancy\n                                      }\n                                      accept={[\"pdf\"]}\n                                      nameFile={\"eventOwnerFileConstancy\"}\n                                    />\n                                  </Form.Item>\n                                </Col>\n                              </>\n                            ) : null}\n                          </Row>\n                        ),\n                      }[currentStep]\n                    }\n                    <Col xs={24}>\n                      <div className={\"event-pride-ticket-form-footer\"}>\n                        {currentStep > 0 ? (\n                          <>\n                            <Button\n                              onClick={handleBackStep}\n                              className=\"btn-pride-ticket back\"\n                            >\n                              <FaChevronLeft /> Regresar\n                            </Button>\n                          </>\n                        ) : (\n                          <div></div>\n                        )}\n                        <Button\n                          type={\"primary\"}\n                          htmlType={\"submit\"}\n                          className={\"btn-pride-ticket\"}\n                        >\n                          {currentStep === 3 ? \"Guardar\" : \"Siguiente\"}\n                          <FaChevronRight />\n                        </Button>\n                      </div>\n                    </Col>\n                  </Form>\n                </Col>\n                <Col xs={24}>\n                  <FooterHome />\n                </Col>\n              </Row>\n            </Col>\n          </>\n        )}\n      </Row>\n    </section>\n  );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { courseViewService } from \"../../services/courseView.service\";\nimport \"moment/locale/es\";\nimport {Modal, ModalBody } from \"reactstrap\";\nimport ReactPlayer from \"react-player\";\nimport { FaTimes } from \"react-icons/fa\";\nimport { BsEye } from \"react-icons/bs\";\nimport { Button } from \"rsuite\";\nimport pdfImg from \"../../assets/imgs/pdf.png\";\nimport noImage from \"../../assets/imgs/no-image.jpeg\";\nimport excellImage from \"../../assets/imgs/excel.png\";\nimport wordImage from \"../../assets/imgs/word.png\";\nimport pdfImage from \"../../assets/imgs/pdf.png\";\nimport iconYT from \"../../assets/imgs/icon-yt.png\";\n\nexport function BoxListCourse({ dataGrid, setCompleteCourse, propCourseId }) {\n  //const calendarStrings = useSelector((state) => state.calendarStrings);\n  const [course, setCourse] = useState({ type: 0, value: \"\", fileType: \"\" });\n  const [modalConfig, setModalConfig] = useState({\n    fullscreen: false,\n    size: \"lg\",\n  });\n  const imageExt = [\"jpg\", \"jpeg\", \"png\", \"webp\", \"svg\"];\n  const [video, setVideo] = useState(null);\n\n  const handleOnFiles = (file, course) => {\n    courseViewService\n      .getFileById(file.entityId, file.entityTypeId, file.sequence)\n      .then((result) => {\n        if (result) {\n          setCompleteCourse(course);\n          const fileType = result.fileName.split(\".\")[1];\n          if (fileType == \"pdf\")\n            toggleCourse(\n              1,\n              `data:application/${fileType};base64,${result.file}`,\n              fileType\n            );\n          else if (fileType == \"mp4\") handleVideoUrl(file.path, fileType);\n          else downloadFile(file.fileName, result.file);\n        }\n      });\n  };\n\n  const handleComplete = (course) => {\n    setCompleteCourse(course);\n  };\n\n  const handleUrl = (event, course, type) => {\n    setCompleteCourse(course);\n    toggleCourse(type, course.urlMedia);\n    event.preventDefault();\n  };\n\n  const toggleCourse = (type, value, fileType) => {\n    setCourse({ type, value, fileType });\n    toggle(null, true, \"\");\n  };\n\n  const downloadFile = (fileName, fileb64) => {\n    const linkSource = `data:application/octet-stream;base64,${fileb64}`;\n    const downloadLink = document.createElement(\"a\");\n    downloadLink.href = linkSource;\n    downloadLink.download = fileName;\n    downloadLink.click();\n  };\n\n  const [modal, setModal] = useState(false);\n  const toggle = (video, fullscreen, size) => {\n    setModalConfig({ fullscreen, size });\n    setVideo(video);\n    setModal(!modal);\n  };\n\n  const handleVideoUrl = (link, fileType) => {\n    if (link.length > 0) {\n      const video = (\n        <div className=\"boxImage icon\">\n          <p>video</p>\n        </div>\n      );\n      return video;\n    }\n  };\n\n  const imageBox = (itemFile) => {\n    let image = imageLink(\"document-outline\");\n    const re = /(?:\\.([^.]+))?$/;\n    const ext = re.exec(itemFile.fileName)[1];\n\n    switch (ext) {\n      case \"xslx\":\n        image = (\n          <div\n            className=\"bg_poster_couerse\"\n            style={{ backgroundImage: `url(${excellImage})` }}\n          ></div>\n        );\n        break;\n\n      case \"docx\":\n        image = (\n          <div\n            className=\"bg_poster_couerse\"\n            style={{ backgroundImage: `url(${wordImage})` }}\n          ></div>\n        );\n        break;\n\n      case \"pdf\":\n        image = (\n          <div\n            className=\"bg_poster_couerse\"\n            style={{ backgroundImage: `url(${pdfImage})` }}\n          ></div>\n        );\n        break;\n\n      default:\n        image = (\n          <div\n            className=\"bg_poster_couerse\"\n            style={{ backgroundImage: `url(${noImage})` }}\n          ></div>\n        );\n        break;\n    }\n    return image;\n  };\n\n  const imageBoxLink = (itemFile) => {\n    let image = imageLink(\"unlink-outline\");\n    const re = /(?:\\.([^.]+))?$/;\n    const ext = re.exec(itemFile.fileName)[1];\n    const isPdf = itemFile.fileName.slice(-4);\n\n    if (isPdf !== \".pdf\") {\n      image = (\n        <div\n          className=\"bg_poster_couerse\"\n          style={{\n            backgroundImage: `url(${itemFile.path ? itemFile.path : noImage})`,\n          }}\n        ></div>\n      );\n    }\n\n    if (isPdf === \".pdf\") {\n      image = (\n        <div\n          className=\"bg_poster_couerse\"\n          style={{ backgroundImage: `url(${pdfImg})` }}\n        ></div>\n      );\n    }\n    return image;\n  };\n\n  const imageLink = (icon) => {\n    const image = (\n      <div className=\"boxImage icon\">\n        <p>\n          <ion-icon name={icon}></ion-icon>\n        </p>\n      </div>\n    );\n    return image;\n  };\n\n  const imageYouTube = (frame) => {\n    let image = imageLink(\"play-circle-outline\");\n    let url = \"\";\n    let youtubeid = \"\";\n    const first = frame.split('src=\"');\n    if (first.length > 1) {\n      const second = first[1].split('\"');\n      if (second.length > 0) {\n        url = second[0];\n        const third = url.split(\"embed/\");\n        if (third.length > 0) {\n          youtubeid = third[1];\n          const videoThumb =\n            \"https://img.youtube.com/vi/\" + youtubeid + \"/0.jpg\";\n          const imageBack = { backgroundImage: `url(${videoThumb})` };\n          image = <div className=\"bg_poster_couerse\" style={imageBack} />;\n        }\n      }\n    }\n    return image;\n  };\n\n  const [idBillboardSelected, setIdBillboardSelected] = useState(0);\n  const [billboardCurrentSelected, setBillboardCurrentSelected] = useState(0);\n  const selectedBillboardId = (id) => {\n   setIdBillboardSelected(id);\n    setBillboardCurrentSelected(id);\n    setDetailActive(true)\n  };\n\n  const [modalCard, setModalCard] = useState(false);\n  const [itemModal, setItemModal] = useState(null);\n\n  const currentCardSelected = (item) => setBillboardCurrentSelected(item.courseId);\n\n  const toggleCard = (item) => {\n    debugger\n    setItemModal(item);\n    setModalCard(!modalCard);\n  };\n\n  function getWidthDimensions() {\n    const { innerWidth: width } = window;\n    return width;\n  }\n\n  const [windowDimensions, setWindowDimensions] = useState(\n    getWidthDimensions()\n  );\n\n  useEffect(() => {\n    const handleResize = () => setWindowDimensions(getWidthDimensions());\n    window.addEventListener(\"resize\", handleResize);\n    return () => window.removeEventListener(\"resize\", handleResize);\n  }, []);\n\n  useEffect(() => {\n    if (propCourseId)\n      selectedBillboardId(parseInt(propCourseId))\n  }, [propCourseId]);\n\n  const loadCurrentBillboard = () => {\n    dataGrid.slice(0, 1).map((item) => {\n      setIdBillboardSelected(item.courseId);\n      setBillboardCurrentSelected(item.courseId);\n    });\n  };\n\n  if (!idBillboardSelected && windowDimensions >= 768)\n    setTimeout(() => loadCurrentBillboard(), 100);\n\n  const [detailActive, setDetailActive] = useState(false);\n  \n  const handleDetailActive = () => {\n    setDetailActive(false)\n  }\n\n  return (\n    <section className=\"sec_content_course\">\n      <div className=\"sec_list_course\">\n        {dataGrid.map((item, i) => (\n          <article\n            className=\"item_course\"\n            onClick={\n             () => selectedBillboardId(item.courseId)\n                \n            }\n            key={i}\n          >\n            <div className=\"item_course_picture\">\n              {\n                {\n                  1: imageBox({ fileName: item.fileName, path: item.path }),\n                  2: imageBoxLink({\n                    fileName: item.fileName,\n                    path: item.path,\n                  }),\n                  3: imageYouTube(item.urlMedia),\n                }[item.courseMediaTypeId]\n              }\n            </div>\n            <div \n              className={`item_course_overlay ${\n                billboardCurrentSelected === item.courseId ? \"current\" : \"\"\n              }`}\n            >\n              <BsEye/>\n            </div>\n          </article>\n        ))}\n      </div>\n      <div className={`sec_aside_info_course ${detailActive ? 'is_block': ''}`}>\n        {dataGrid.map((item) => {\n          return item.courseId === idBillboardSelected ? (\n            <>\n             <Button className=\"close__in_modal\" onClick={handleDetailActive}>\n              <i className=\"icon-close\"></i>\n            </Button>\n              <div className=\"info_course_thumb\">\n                <div className=\"box_a\">\n                  {item.courseMediaTypeId === 1 ? (\n                    <img\n                      src={\n                        item.fileName.slice(-4) === \".pdf\"\n                          ? pdfImg\n                          : item.path\n                          ? item.path\n                          : noImage\n                      }\n                      alt=\"Thumbnail cartelera\"\n                    />\n                  ) : item.courseMediaTypeId === 2 ? (\n                    <img\n                      src={item.path ? item.path : noImage}\n                      alt=\"Thumbnail cartelera\"\n                    />\n                  ) : (\n                    <img src={iconYT} alt=\"Thumbnail cartelera\" />\n                  )}\n                </div>\n                <div className=\"box_b\">\n                  <div>\n                    <span>🥇 Garantía Pride</span>\n                  </div>\n                  <h3>{item.name}</h3>\n                </div>\n              </div>\n              <div className=\"info_course_content\">\n                <p>{item.description} </p>\n\n                {item.courseMediaTypeId === 1 ? (\n                  <div className=\"d-flex-center\">\n                    <Button\n                      onClick={() => handleOnFiles(item.courseFiles[0], item)}\n                      className=\"button-outline-gradient\"\n                    >\n                      Ver PDF\n                    </Button>\n                  </div>\n                ) : item.courseMediaTypeId === 2 ? (\n                  <div className=\"d-flex-center\">\n                    <a\n                      href={item.urlMedia}\n                      target=\"_blank\"\n                      className=\"button-outline-gradient\"\n                      onClick={(event) => handleComplete(item)}\n                    >\n                      Ver Link\n                    </a>\n                  </div>\n                ) : (\n                  <div className=\"d-flex-center\">\n                    <Button\n                      onClick={() => toggle(item.urlMedia, false, \"lg\")}\n                      className=\"button-outline-gradient\"\n                    >\n                      Ver Video\n                    </Button>\n                  </div>\n                )}\n              </div>\n            </>\n          ) : (\n            \"\"\n          );\n        })}\n      </div>\n      \n      <Modal\n        className=\"dropmodal\"\n        isOpen={modal}\n        toggle={toggle}\n        centered={true}\n        fullscreen={modalConfig.fullscreen}\n        size={modalConfig.size}\n      >\n        <ModalBody>\n          <div>\n          <Button className=\"close__in_modal md_video\" onClick={toggle}>\n              <i className=\"icon-close\"></i>\n            </Button>\n          </div>\n          {video ? (\n            <ReactPlayer\n              className=\"video-billboard\"\n              url={video}\n              width=\"100%\"\n              height=\"100%\"\n              controls={true}\n            />\n          ) : (\n            <iframe width=\"100%\" height=\"100%\" src={course.value}></iframe>\n          )}\n        </ModalBody>\n\n       \n      </Modal>\n\n      <Modal\n        className=\"dropmodal\"\n        isOpen={modalCard}\n        toggle={toggleCard}\n        centered={true}\n      >\n        <ModalBody>\n          <button\n            type=\"button\"\n            className=\"close__in_modal\"\n            onClick={toggleCard}\n          >\n            <FaTimes />\n          </button>\n          <div className=\"modal-card-billboard\">\n            <div className=\"card-billboard-body\">\n              <div className=\"card-billboard-content\">\n                <div className=\"card-billboard-title\">\n                  <h3>{itemModal ? itemModal.name : \"\"}</h3>\n                </div>\n                <div className=\"card-billboard-description\">\n                  <p>{itemModal ? itemModal.description : \"\"} </p>\n                </div>\n                {(itemModal ? itemModal.courseMediaTypeId === 2 : \"\") ? (\n                  <div className=\"d-flex-center\">\n                    <a\n                      href={itemModal.urlMedia}\n                      target=\"_blank\"\n                      onClick={toggle}\n                      className=\"button-outline-gradient\"\n                    >\n                      Ver Link\n                    </a>\n                  </div>\n                ) : (\n                  \"\"\n                )}\n              </div>\n            </div>\n          </div>\n        </ModalBody>\n      </Modal>\n    </section>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Button, List, Result, Tag } from \"antd\";\nimport { FaChevronRight, FaEdit } from \"react-icons/fa\";\nimport { Card } from \"reactstrap\";\nimport {useHistory, useParams} from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport moment from \"moment\";\nimport { ticketsEventService } from \"../../services/ticketsEvent.service\";\n\nexport const BoxTickets = () => {\n  const history = useHistory();\n  const params = useParams();\n  const [events, setEvents] = useState([]);\n  const [countEventsToApprove, setCountEventsToApprove] = useState(0);\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  {/*<Button\n      type={\"primary\"}\n      onClick={() => history.push(\"/course-view\")}\n      className={(!(params.courseId)) && ('active')}\n    >\n      Mis eventos\n      <FaChevronRight />\n    </Button>*/}\n  const data = [\n    <Button\n        type={\"primary\"}\n        onClick={() => history.push(\"/course-view/approve-event\")}\n        className={((params.courseId === 'approve-event')) && ('active')}\n    >\n      Por autorizar <Tag color={\"#ff2f24\"}>{countEventsToApprove}</Tag>\n      <FaChevronRight />\n    </Button>\n  ];\n\n  useEffect(() => {\n    const init = async () => {\n      const result = await ticketsEventService.getAvailableToSale();\n      if (result.events) {\n        setEvents(result.events);\n        setCountEventsToApprove(result.countEventsToApprove);\n      }\n    };\n\n    init();\n  }, []);\n\n  const handleOpenView = (url) => {\n    window.open(url, \"_blank\");\n  };\n\n  return (\n    <section className=\"box-tickets\">\n      <aside className={\"box-tickets-aside\"}>\n        <Button\n          type={\"primary\"}\n          className={\"btn-pride-ticket\"}\n          htmlType={'button'}\n          onClick={() => history.push(\"/course-view/new-event\")}\n        >\n          <FaEdit />\n          Publicar un evento\n        </Button>\n        {\n          (roleName === 'Recursos Humanos') && (\n            <List\n                  size=\"large\"\n                  header={false}\n                footer={false}\n                bordered\n                dataSource={data}\n                renderItem={(item) => <List.Item>{item}</List.Item>}\n            />\n          )\n        }\n      </aside>\n      <div className={\"box-tickets-body\"}>\n        {events.length === 0 ? (\n          <Result\n            status=\"info\"\n            title=\"No hay eventos publicados en este momento\"\n          />\n        ) : (\n          <div className=\"content_body_items\">\n            {events.map((item, index) => (\n              <Card\n                className={\"card-pride-ticket\"}\n                lang={\"en\"}\n                onClick={() => handleOpenView(item.eventUrl)}\n                key={index}\n              >\n                <div className=\"card_ticket_poster\">\n                  <img\n                    className=\"poster__blur\"\n                    src={item.eventImage}\n                    alt={item.eventName}\n                    title={item.eventName}\n                  />\n                  <img\n                    src={item.eventImage}\n                    alt={item.eventName}\n                    title={item.eventName}\n                  />\n                </div>\n\n                <div className={\"card-pride-ticket-content\"}>\n                  <Tag>{item.eventSector}</Tag>\n                  <p className={\"title\"}>\n                    {item.eventName.length >= 36\n                      ? item.eventName.substring(0, 36) + \"...\"\n                      : item.eventName}\n                  </p>\n                  <p className={\"date\"}>\n                  {item.celebrationDate ? moment(item.celebrationDate).format(\n                      \"DD/MM/YYYY,  HH:mm A\"\n                    ) : null }\n                  </p>\n                  <p className={\"location\"}>{item.locationName}</p>\n                </div>\n              </Card>\n            ))}\n          </div>\n        )}\n      </div>\n    </section>\n  );\n};\n","import React, { useEffect, useState} from \"react\";\nimport { useParams } from 'react-router-dom';\n\nimport \"moment/locale/es\";\nimport { BoxListCourse } from \"./boxListCourse\";\nimport \"./courseView.scss\";\nimport { courseViewService } from \"../../services/courseView.service\";\nimport { useSelector } from \"react-redux\";\nimport { AdvertisingSection } from \"../../components/advertisingSection/advertisingSection\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { useCompanyHoliday } from \"../../services/companyHoliday.service\";\nimport imgHeader from \"../../assets/imgs/palomitas.png\";\nimport {Tabs} from \"antd\";\nimport {BoxTickets} from \"./boxTickets\";\n\nexport const CourseView = () => {\n  const [dataGrid, setDataGrid] = useState([]);\n  const calendarStrings = useSelector((state) => state.calendarStrings);\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n  const [userProfile, setUserProfile] = useState({});\n  const [dataGridCompleted, setDataGridCompleted] = useState([]);\n  const [sliderItems, setSliderItems] = useState([]);\n  const [banner, setBanner] = useState([]);\n  const [defaultBanner, setDefaultBanner] = useState(true);\n  const [holyday, setHolyday] = useState({ type: 0, src: \"\" });\n  const [active, setActive] = useState(\"sec_a\");\n\n  const params = useParams();\n\n  const AsidePurchaseBox = () => setStateAsideSurvey(activeAsideSurvey === \"\" ? \" is-show\" : \"\");\n\n  const GetUserProfileCourse = async () => {\n    courseViewService.GetUserProfileCourse().then((result) => {\n      if (result) {\n        setUserProfile(result[0]);\n      }\n    });\n  }\n\n  const getCourse = async () => {\n    courseViewService.getCourse().then((result) => {\n      if (result) {\n        setDataGrid(result);\n      }\n    });\n  }\n\n  const getCourseCompleted = async () => {\n    courseViewService.getCourseComplete().then((result) => {\n      if (result) {\n        setDataGridCompleted(result);\n      }\n    });\n  }\n\n  const getCompanyHolidays = async () => {\n    if (8) {\n      useCompanyHoliday.getCompanyHolidayFront(8).then((result) => {\n        if (result) {\n          const temp = [];\n          result.map((ch) => {\n            if (holyday.type !== 6) {\n              temp.push({\n                key: ch.companyHolidayId.toString(),\n                file: ch.imagePath,\n              });\n              setDefaultBanner(false);\n            }\n          });\n          setSliderItems(temp);\n          const bannerItem = temp\n            .sort(() => Math.random() - Math.random())\n            .find(() => true);\n          setBanner(bannerItem);\n        }\n      });\n    }\n  }\n\n  const setCompleteCourse = (course) => {\n    if (!course.isCompleted) {\n      courseViewService.completeCourse(course.courseId).then((result) => {\n        getCourse();\n        getCourseCompleted();\n        GetUserProfileCourse();\n      });\n    }\n  }\n\n  const onChange = (key) => setActive(key)\n\n  const items = [\n    {\n      key: 'sec_a',\n      label: <>\n        <h6>CARTELERA</h6>\n        <p>en PrideMxTickets</p>\n      </>,\n      children: <>\n        <div className=\"item_box_navbar\">\n          <BoxTickets />\n        </div>\n      </>,\n    },\n    {\n      key: 'sec_b',\n      label: <>\n        <h6>RECOMENDACIONES</h6>\n        <p>Eventos generales</p>\n      </>,\n      children: <>\n        <BoxListCourse\n            dataGrid={dataGrid}\n            setCompleteCourse={setCompleteCourse}\n            propCourseId = {params?.courseId}\n        />\n      </>,\n    },\n  ];\n\n  useEffect(() => {\n    getCourse();\n    GetUserProfileCourse();\n    getCourseCompleted();\n    getCompanyHolidays();\n    if(params?.courseId) setActive('sec_b')\n    // courseId ? setActive('sec_a') : setActive('sec_b')\n  }, []);\n\n  return (\n    <section className=\"course-container-view\">\n      <div className=\"course-view-banners\">\n        <div className=\"course-view-banners_pt1\">\n          <h2 className=\"course-view-title\">Cartelera Pride</h2>\n          <h2 className=\"ttl_principal_mod\">¿Tienes algún plan para hoy? </h2>\n          <h4>¡Aquí te recomendamos uno!</h4>\n        </div>\n        <div className=\"course-view-banners_pt2\">\n          {banner ? (\n            <AdvertisingSection HolType={8} />\n          ) : (\n            <img src={imgHeader} className=\"header_imgs\" alt={''} />\n          )}\n        </div>\n      </div>\n\n      {dataGrid.length === 0 ? (\n        <div className=\"empty-grid\">\n          <p>No hay publicaciones nuevas</p>\n          <i className=\"icon-empty\"></i>\n        </div>\n      ) : (\n        <div className=\"course-view-navbar\">\n          <div className=\"content_box_navbar\">\n            <Tabs\n                className={'box_navbar'}\n                defaultActiveKey={active}\n                items={items}\n                onChange={onChange}\n            />\n          </div>\n        </div>\n      )}\n\n      <FooterHome />\n    </section>\n  );\n}\n","import React, { useState } from \"react\";\nimport { Button, Col, Drawer, Row, Modal, Image, Tag } from \"antd\";\nimport ReactPlayer from \"react-player\";\nimport { FaPlay } from \"react-icons/fa\";\nimport { useSelector } from \"react-redux\";\nimport moment from \"moment\";\n\nexport const EventApproveModal = ({\n  open,\n  onClose,\n  currentItem,\n  changeStatus,\n  isApprovalView,\n}) => {\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [videoStop, setVideoStop] = useState(false);\n\n  const showModal = () => {\n    setIsModalOpen(true);\n    setVideoStop(true);\n  };\n\n  return (\n    <Drawer onClose={onClose} open={open} size={\"large\"}>\n      <aside className={\"event-pride-approve-aside\"}>\n        <Row gutter={16}>\n          <Col xs={24}>\n            <section className={\"header\"}>\n              <h2>Información completa del evento</h2>\n              {isApprovalView && (\n                <div className={\"btns\"}>\n                  <Button\n                    type={\"primary\"}\n                    className={\"cancel\"}\n                    onClick={() =>\n                      changeStatus(currentItem.ticketsEventId, false)\n                    }\n                  >\n                    Rechazar\n                  </Button>\n                  <Button\n                    type={\"primary\"}\n                    className={\"accept\"}\n                    onClick={() =>\n                      changeStatus(currentItem.ticketsEventId, true)\n                    }\n                  >\n                    Autorizar\n                  </Button>\n                </div>\n              )}\n            </section>\n          </Col>\n          <Col xs={24}>\n            <section className={\"content-section-first\"}>\n              <img\n                src={currentItem.eventTicketBanner}\n                alt={currentItem.eventName}\n              />\n              <div className={\"info\"}>\n                <article className={\"info-left\"}>\n                  <h3>{currentItem.eventName}</h3>\n                  <label>\n                    Sector: <span>{currentItem.ticketsEventSectorName}</span>\n                  </label>\n                  <p>{currentItem.eventDescription}</p>\n                </article>\n                <article className={\"info-right\"}>\n                  <label>\n                    Fecha:{\" \"}\n                    <span>\n                      {moment(currentItem.creationDate).format(\n                        \"DD/MM/YYYY,  HH:mm A\"\n                      )}\n                    </span>\n                  </label>\n                </article>\n              </div>\n            </section>\n          </Col>\n          <Col xs={24}>\n            <section className={\"content-section-second\"}>\n              <>\n                {currentItem.eventTicketPromo && (\n                  <article className={\"banner\"}>\n                    <Image src={currentItem.eventTicketPromo} />\n                  </article>\n                )}\n              </>\n              <>\n                {currentItem.eventTicketAd && (\n                  <article className={\"ad-ticket\"}>\n                    <Image src={currentItem.eventTicketAd} />\n                  </article>\n                )}\n              </>\n              <>\n                {currentItem.eventTicketVideo && (\n                  <article className={\"video\"}>\n                    <ReactPlayer\n                      width={\"100%\"}\n                      height={125}\n                      url={currentItem.eventTicketVideo}\n                    />\n                    <Button\n                      htmlType={\"button\"}\n                      type={\"primary\"}\n                      className={\"btn-play\"}\n                      onClick={showModal}\n                    >\n                      <FaPlay />\n                    </Button>\n                  </article>\n                )}\n              </>\n            </section>\n          </Col>\n          <Col xs={24}>\n            <section className={\"content-section-third\"}>\n              <p>\n                <span>Aforo</span>\n                {currentItem.eventAudience}\n              </p>\n              <p>\n                <span>Costo de boleto</span>\n                {currentItem.eventPriceTicket}\n              </p>\n              <p>\n                <span>Observaciones de venta</span>\n                {currentItem.eventNote}\n              </p>\n            </section>\n          </Col>\n          <Col xs={24}>\n            <section className={\"content-section-fourth\"}>\n              <h4>¿En dónde será?</h4>\n              <div className={\"content\"}>\n                <article className={\"left\"}>\n                  <p>\n                    En:\n                    <span>\n                      {currentItem.eventPlaceName},{\" \"}\n                      {currentItem.eventStreetName},{\" \"}\n                      {currentItem.eventNeighboor}, {currentItem.eventCity},{\" \"}\n                      {currentItem.eventState}, {currentItem.eventZipCode}\n                    </span>\n                  </p>\n                  <p>\n                    Fecha y hora:\n                    <span>\n                      {moment(currentItem.eventDate).format(\n                        \"DD/MM/YYYY,  HH:mm A\"\n                      )}\n                    </span>\n                  </p>\n                  <p>\n                    A la venta a partir de:\n                    <span>\n                      {moment(currentItem.eventTicketDateStart).format(\n                        \"DD/MM/YYYY,  HH:mm A\"\n                      )}\n                    </span>\n                  </p>\n                  <p>\n                    A la venta hasta:\n                    <span>\n                      {moment(currentItem.eventTicketDateEnd).format(\n                        \"DD/MM/YYYY,  HH:mm A\"\n                      )}\n                    </span>\n                  </p>\n                  <p>\n                    Duración del evento:\n                    <span>{currentItem.eventTime} Minuto(s)</span>\n                  </p>\n                </article>\n                <article className={\"right\"}>\n                  <p>\n                    Teléfono:<span>{currentItem.eventPhone}</span>\n                  </p>\n                </article>\n              </div>\n            </section>\n          </Col>\n          <Col xs={24}>\n            <section className={\"content-section-sixth\"}>\n              <h4>Anfitrión</h4>\n              <div className={\"content\"}>\n                <article className={\"left\"}>\n                  <p>\n                    Por:<span>{currentItem.eventOwnerName}</span>\n                  </p>\n                  <p>\n                    Correo electrónico:\n                    <span>{currentItem.eventOwnerEmail}</span>\n                  </p>\n                </article>\n                <article className={\"right\"}>\n                  <p>\n                    Teléfono:<span>{currentItem.eventOwnerPhone}</span>\n                  </p>\n                </article>\n              </div>\n            </section>\n          </Col>\n          <Col xs={24}>\n            <section className={\"content-section-seventh\"}>\n              <h4>Datos bancarios</h4>\n              <div className={\"content\"}>\n                <article className={\"first\"}>\n                  <div className={\"top\"}>\n                    <p>\n                      Titular:<span>{currentItem.eventOwnerBankName}</span>\n                    </p>\n                    <p>\n                      Banco:\n                      <span style={{ textTransform: \"uppercase\" }}>\n                        {currentItem.eventOwnerBank}\n                      </span>\n                    </p>\n                    <p>\n                      CLABE:<span>{currentItem.eventOwnerClabe}</span>\n                    </p>\n                  </div>\n                  <div className={\"bottom\"}>\n                    <p>\n                      Carátula de Edo. Cuentas:\n                      <a\n                        href={currentItem.eventOwnerFileBankAccount}\n                        className={\"link text-orange\"}\n                        target=\"_blank\"\n                      >\n                        Ver\n                      </a>\n                    </p>\n                  </div>\n                </article>\n                <article className={\"second\"}>\n                  <p>\n                    ¿Requiere factura?:\n                    <span>{currentItem.eventOwnerInvoice ? \"Sí\" : \"No\"}</span>\n                  </p>\n                </article>\n                <>\n                  {currentItem.eventOwnerInvoice && (\n                    <article className={\"three\"}>\n                      <div className={\"top\"}>\n                        <p>\n                          Razón social:\n                          <span>{currentItem.eventOwnerCompanyReason}</span>\n                        </p>\n                        <p>\n                          RFC:<span>{currentItem.eventOwnerRFC}</span>\n                        </p>\n                      </div>\n                      <div className={\"bottom\"}>\n                        <p>\n                          Constancia situación fiscal:\n                          <a\n                            href={currentItem.eventOwnerFileConstancy}\n                            className={\"link text-orange\"}\n                            target=\"_blank\"\n                          >\n                            Ver\n                          </a>\n                        </p>\n                      </div>\n                    </article>\n                  )}\n                </>\n              </div>\n            </section>\n          </Col>\n        </Row>\n      </aside>\n      <Modal\n        title=\"Video Promocional\"\n        open={isModalOpen}\n        footer={false}\n        onCancel={() => {\n          setIsModalOpen(false);\n          setVideoStop(false);\n        }}\n      >\n        <ReactPlayer\n          width={\"100%\"}\n          height={\"auto\"}\n          url={currentItem.eventTicketVideo}\n          controls={true}\n          playing={videoStop}\n        />\n      </Modal>\n    </Drawer>\n  );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { Col, Row, Card, Button, Tag, Result } from \"antd\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { useHistory } from \"react-router-dom\";\nimport { EventApproveModal } from \"./eventApproveModal\";\nimport { useSelector } from \"react-redux\";\nimport moment from \"moment\";\nimport MySwal from \"sweetalert2\";\nimport { HeaderCourse } from \"./headerCourse\";\nimport { ticketsEventService } from \"../../services/ticketsEvent.service\";\n\nexport const EventApprove = () => {\n  const roleName = useSelector((state) => state.userSettings.roleName);\n  const history = useHistory();\n  const isApprovalView =\n    history.location.pathname == \"/course-view/approve-event\";\n  const [open, setOpen] = useState(false);\n  const [events, setEvents] = useState([]);\n  const [currentEvent, setCurrentEvent] = useState({});\n\n  const init = async () => {\n    if (isApprovalView) {\n      const result = await ticketsEventService.getToAuthorize();\n      setEvents(result);\n    } else {\n      const result = await ticketsEventService.getByUser();\n      setEvents(result);\n    }\n  };\n\n  useEffect(() => {\n    init();\n  }, []);\n\n  const showDrawer = (gridItem) => {\n    setCurrentEvent(gridItem);\n    setOpen(true);\n  };\n\n  const onClose = () => setOpen(false);\n\n  const handleEventChangeStatus = async (ticketsEventId, isApproved) => {\n    const confirmationResult = await MySwal.fire({\n      title: `¿Deseas ${isApproved ? \"autorizar\" : \"rechazar\"} este evento?`,\n      text: \"No podrás revertir esta acción\",\n      icon: \"warning\",\n      showCancelButton: true,\n      confirmButtonText: `${isApproved ? \"Autorizar\" : \"Rechazar\"}`,\n      cancelButtonText: \"Cancelar\",\n    });\n\n    if (confirmationResult.isConfirmed) {\n      const result = await ticketsEventService.changeStatus({\n        ticketsEventId,\n        isApproved,\n      });\n\n      if (result) {\n        setOpen(false);\n        init();\n      }\n    }\n  };\n\n  return (\n    <section className=\"course-container-view\">\n      <Row gutter={16} style={{ margin: \"0\" }}>\n        <Col xs={24}>\n          <HeaderCourse\n            title={\"Cartelera\"}\n            event={() => history.push(\"/course-view\")}\n          />\n        </Col>\n        <Col xs={24}>\n          <div className={\"event-pride-approve-events\"}>\n            {isApprovalView ? (\n              <h3>\n                Eventos por autorizar{\" \"}\n                <Tag color={\"#ff2f24\"}>{events.length}</Tag>\n              </h3>\n            ) : (\n              <h3>\n                Mis eventos <Tag color={\"#ff2f24\"}>{events.length}</Tag>\n              </h3>\n            )}\n          </div>\n        </Col>\n        {events.length === 0 ? (\n          <Col xs={24}>\n            <Result status=\"info\" title=\"No hay eventos en este momento\" />\n          </Col>\n        ) : (\n          events.map((item) => {\n            return (\n              <Col\n                xl={{ offset: 4, span: 16 }}\n                lg={{ offset: 2, span: 18 }}\n                md={{ offset: 0, span: 24 }}\n                sm={12}\n                xs={24}\n                key={item.ticketsEventId}\n              >\n                <Card\n                  className={\"event-pride-approve-card\"}\n                  onClick={() => showDrawer(item)}\n                >\n                  <div className={\"left\"}>\n                    <div className={\"img\"}>\n                      <img alt={\"\"} src={item.eventTicketBanner} />\n                    </div>\n                    <div className={\"info\"}>\n                      <h2>\n                        {item.eventName.length >= 52\n                          ? item.eventName.substring(0, 52) + \"...\"\n                          : item.eventName}\n                      </h2>\n                      <p>\n                        Sector: <span>{item.ticketsEventSectorName}</span>\n                      </p>\n                      <p>\n                        Aforo:<span>{item.eventAudience}</span>\n                      </p>\n                    </div>\n                  </div>\n                  <div className={\"right\"}>\n                    <div className={\"info\"}>\n                      <p>\n                        Por: <br />\n                        <span>{item.eventOwnerName}</span>\n                      </p>\n                      <p>\n                        En: <br />\n                        <span>\n                          {item.eventPlaceName}, {item.eventState}\n                        </span>\n                      </p>\n                    </div>\n                    <p>\n                      Fecha de registro: <br />\n                      <span>\n                        {moment(item.creationDate).format(\n                          \"DD/MM/YYYY,  HH:mm A\"\n                        )}\n                      </span>\n                    </p>\n                  </div>\n                </Card>\n              </Col>\n            );\n          })\n        )}\n        <EventApproveModal\n          open={open}\n          onClose={onClose}\n          currentItem={currentEvent}\n          changeStatus={handleEventChangeStatus}\n          isApprovalView={isApprovalView}\n        />\n        <Col xs={24}>\n          <FooterHome />\n        </Col>\n      </Row>\n    </section>\n  );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { companyPostService } from \"../../services/companyPost.service\";\n\nexport function CompanyGallery({ item }) {\n  const [images, setImages] = useState([]);\n\n  useEffect(() => {\n    if (item != null && item.companyPostId != null && item.companyPostId > 0) {\n      companyPostService\n        .getCompanyPostImagesPathByIdFront(item.companyPostId)\n        .then((result) => {\n          let imagesList = [];\n          result.files.map((item) =>\n            imagesList.push({\n              src: item.path,\n              thumbnail: item.path,\n            })\n          );\n          setImages(imagesList);\n        });\n    }\n  }, [item]);\n\n  return (\n      <>\n              {/*<Gallery\n          images={images}\n          enableImageSelection={false}\n          backdropClosesModal={true}\n        />*/}\n      </>\n  );\n}\n","import React, {useRef, useState} from \"react\";\nimport {useHistory} from \"react-router-dom\";\nimport { userService } from \"../../services/user.service\";\nimport {IoCheckmarkCircle} from \"react-icons/io5\";\nimport {RegisterAside} from \"../register/registerAside\";\nimport {Col, Flex, Form, Input, Row, Button} from \"antd\";\nimport {RegisterHeader} from \"../register/registerHeader\";\nimport {SocialMedia} from \"../register/socialMedia\";\nimport {RegisterFooter} from \"../register/registerFooter\";\nimport \"../register/register.scss\";\n// import {useForm} from \"react-hook-form\";\n\nexport function ResetPassword(props) {\n  const [user, setUser] = useState({\n    Email: '',\n    Code: '',\n    ConfirmPassword:'',\n    password: '',\n  });\n  const history = useHistory();\n  const [validatePassword, setValidatePassword] = useState(false);\n  const oneCharacter = useRef();\n  const oneN = useRef();\n  const oneLetterL = useRef();\n  const oneLetterU = useRef();\n  const min8Characters = useRef();\n  const [form] = Form.useForm();\n\n  const onSubmit = () => {\n    user.Email = props.location.search.split(\"email=\")[1].split(\"&\")[0];\n    user.Code = props.location.search.split(\"code=\")[1];\n    user.ConfirmPassword = user.password;\n    userService.resetPassword(user);\n  };\n\n  const handlePassword = (e) => {\n    const oneLetterUppercase = /.*[A-Z].*/;\n    const oneLetterLowercase = /.*[a-z].*/;\n    const oneNumber = /.*[0-9].*/;\n    const oneSpecialCharacter = /(.*[!@#$%\\^&*(){}[\\]<>?/|-]+|.*[!@#$%\\^&*(){}[\\]<>?/|\\-]+)/;\n\n    const noSpace = e.target.value.replace(/ /g,\"\");\n\n    if(String(noSpace).length >= 8)\n      min8Characters.current.className = 'success';\n    else min8Characters.current.className = '';\n\n    if(oneLetterUppercase.test(noSpace))\n      oneLetterU.current.className = 'success';\n    else oneLetterU.current.className = '';\n\n    if(oneLetterLowercase.test(noSpace))\n      oneLetterL.current.className = 'success'\n    else oneLetterL.current.className = '';\n\n    if(oneNumber.test(noSpace))\n      oneN.current.className = 'success';\n    else oneN.current.className = '';\n\n    if(oneSpecialCharacter.test(noSpace))\n      oneCharacter.current.className = 'success';\n    else oneCharacter.current.className = '';\n\n    form.setFieldValue('password',noSpace)\n    setUser({...user, [e.target.name]: noSpace})\n  }\n\n  return (\n      <section className=\"register__container\">\n        <article className=\"register__form\">\n          <div className={'register__form__container'}>\n            <Flex gap={16} vertical className={'-h-100 -space-between -w-100'}>\n              <RegisterHeader\n                  title={'Quiero cambiar'}\n                  subtitle={'mi contraseña'}\n              />\n              <Form\n                  className=\"-form-light\"\n                  onFinish={onSubmit}\n                  layout={'vertical'}\n                  form={form}\n              >\n                <Row gutter={[32,0]}>\n                  <Col xl={12} lg={12} md={24} sm={12} xs={24}>\n                    <Form.Item\n                        label={'Contraseña'}\n                        htmlFor={'password'}\n                        name={'password'}\n                        rules={[\n                          {\n                            required: true,\n                            message: '*Campo requerido'\n                          },\n                          {\n                            min: 8,\n                            message: ''\n                          },\n                          {\n                            pattern: new RegExp(/.*[A-Z].*/),\n                            message: ''\n                          },\n                          {\n                            pattern: new RegExp(/.*[a-z].*/),\n                            message: ''\n                          },\n                          {\n                            pattern: new RegExp(/.*[0-9].*/),\n                            message: ''\n                          },\n                          {\n                            pattern: new RegExp(/(.*[!@#$%\\^&*(){}[\\]<>?/|-]+|.*[!@#$%\\^&*(){}[\\]<>?/|\\-]+)/),\n                            message: ''\n                          },\n                        ]}\n                        onChange={handlePassword}\n                    >\n                      <Input.Password\n                          name={'password'}\n                          size={'large'}\n                          onBlur={() => setValidatePassword(false)}\n                          onFocus={() => setValidatePassword(true)}\n                      />\n                    </Form.Item>\n                    <div className={`msg-password`}>\n                      <ul className={'msg-password__list'}>\n                        <li><span ref={min8Characters}><IoCheckmarkCircle /></span>Mínimo 8 carácteres</li>\n                        <li><span ref={oneLetterU}><IoCheckmarkCircle /></span>1 letra mayúscula</li>\n                        <li><span ref={oneLetterL}><IoCheckmarkCircle /></span>1 letra minúscula</li>\n                        <li><span ref={oneN}><IoCheckmarkCircle /></span>1 número</li>\n                        <li><span ref={oneCharacter}><IoCheckmarkCircle /></span>1 carácter especial</li>\n                      </ul>\n                    </div>\n                  </Col>\n                  <Col xl={12} lg={12} md={24} sm={12} xs={24}>\n                    <Form.Item\n                        label={'Confirma tu contraseña'}\n                        name={'confirmPassword'}\n                        rules={[\n                          {\n                            required: true,\n                            message: ''\n                          },\n                          ({ getFieldValue }) => ({\n                            validator(_, value) {\n                              if (!value || getFieldValue('password') === value) {\n                                return Promise.resolve();\n                              }\n                              return Promise.reject(new Error('¡Las contraseñas no coinciden!'));\n                            },\n                          }),\n                        ]}\n                    >\n                      <Input.Password\n                          name={'confirmPassword'}\n                          size={'large'}\n                          disabled={user.password === ''}\n                      />\n                    </Form.Item>\n                  </Col>\n                </Row>\n                <div className=\"-form-light__footer\">\n                  <Button\n                      htmlType={'button'}\n                      className={'outline-dark'}\n                      onClick={() => history.push('/')}\n                  >\n                    Regresar\n                  </Button>\n                  <Button htmlType={'submit'} type={'primary'}>Guardar contraseña</Button>\n                </div>\n              </Form>\n              <SocialMedia />\n              <RegisterFooter />\n            </Flex>\n          </div>\n        </article>\n        <RegisterAside />\n      </section>\n  );\n}\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\n\nexport const contactInfoService = {\n    createContact\n};\nasync function createContact(params) {\n    return callApi('/Site/HelpContact', 'POST', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Gracias por comunicarte con nosotros, en breve un ejecutivo se pondrá en contacto.\", icon: \"success\" });\n            return true\n        } else {\n            swal({ text: \"Ocurrió un error al enviar la información.\", icon: \"error\" });\n            return false\n        }\n    });\n}\n","import React, { useState } from \"react\";\nimport useInputForm from \"../../components/CustonHooks/FormHook\";\nimport { contactInfoService } from \"../../services/helpContact.service\";\nimport { metaPixelService } from \"../../services/metaPixel.service\";\nimport \"./help.scss\";\n\nimport HelpBanner from \"../../assets/imgs/banner_help.png\";\nimport {Col, Nav, NavItem, NavLink, Row, TabContent, TabPane} from \"reactstrap\";\nimport {FooterHome} from \"../../components/footer/footerHome\";\n\nexport function Help() {\n  const onSave = (e) => {\n    contactInfoService.createContact(inputs);\n    e.target.reset();\n  };\n\n  const [contactInfo, setContactInfo] = useState({\n    name: \"\",\n    businessName: \"\",\n    email: \"\",\n    message: \"\",\n  });\n\n  const {inputs} = useInputForm(onSave, contactInfo);\n  return (\n    <section className=\"dashboard-container-page\">\n      <img className=\"banner-help\" src={HelpBanner} alt=\"Encuestas\" />\n      <div className=\"tabs-help\">\n        <h2>Uso de la Plataforma</h2>\n          <Row style={{width: '100%'}}>\n            <Col lg={4} md={6} sm={5}>\n              <Nav tabs pills={true} className=\"flex-column\">\n                <NavItem>\n                  <NavLink>\n                    <span><i className=\"fas fa-tv\"></i></span>\n                    <h5>¿Cómo funciona el portal?</h5>\n                  </NavLink>\n                </NavItem>\n                <Nav.Item>\n                  <Nav.Link onClick={() => {metaPixelService.simpleEvent('track','Contact')}}>\n                    <span><i className=\"fas fa-archive\"></i></span>\n                    <h5>Atención a Usuarios</h5>\n                  </Nav.Link>\n                </Nav.Item>\n              </Nav>\n            </Col>\n            <Col lg={8} md={6} sm={7}>\n              <TabContent activeTab=\"1\" className=\"tabs-help-content\">\n                <TabPane tabId=\"1\" className=\"tabs-help-content-pane\">\n                  <div className=\"tabs-help-content-body\">\n                    <div className=\"info\">\n                      <span><i className=\"fas fa-tv\"></i></span>\n                      <h4>¿Cómo funciona el portal?</h4>\n                    </div>\n                    <div className=\"video\">\n                      <video controls preload=\"true\" id=\"my_video_pride\">\n                        <source src=\"https://stgkumbymx.blob.core.windows.net/ctnprimecontentmx/pride/plataforma/Ayuda/pridemxvideo.mp4\" type=\"video/mp4\"/>\n                      </video>\n                    </div>\n                  </div>\n                </TabPane>\n                <TabPane tabId=\"2\" className=\"tabs-help-content-pane\">\n                  <div className=\"tabs-help-content-body\">\n                    <div className=\"info\">\n                      <span><i className=\"fas fa-archive\"></i></span>\n                      <h4>Atención a Usuarios</h4>\n                    </div>\n                    <div className=\"text\">\n                      <h5>¿Qué sería de la comunidad sin apoyo mutuo?</h5>\n                      <p>Cualquier cosa que necesites, por favor escribenos por chat a PrideMx Administrador.</p>\n                    </div>\n                  </div>\n                </TabPane>\n              </TabContent>\n            </Col>\n          </Row>\n      </div>\n      <FooterHome />\n    </section>\n  );\n}\n","import React from \"react\";\nimport \"./audience.scss\";\nimport \"moment/locale/es\";\nimport {Button, Card} from \"antd\";\nimport {AiOutlinePlayCircle} from \"react-icons/ai\";\nimport dayjs from \"dayjs\";\nimport es from \"dayjs/locale/es\";\nimport imgEmpty from \"../../assets/imgs/no-image.jpeg\";\nimport { audienceService } from \"../../services/audience.service\";\n\nexport const CardAudience = (props) => {\n\n    const addView = (auditoriumId) =>  audienceService.insertView(auditoriumId);\n\n    return (\n        <>\n            <Card className={`card-audience`} key={props.i}>\n                <div\n                    className={`card-audience__thumbnail ${(props.publishedItems || props.onLive) ? 'cursor' : ''}`}\n                    onClick={() => props.handleLinkConference(props.item, props.onLive, props.publishedItems)}\n                >\n                    {(props.onLive) &&(\n                        <span className=\"-on-live\">\n                            <svg height=\"12\" width=\"12\" className=\"blinking\">\n                              <circle cx=\"6\" cy=\"6\" r=\"4\" fill=\"red\" />.\n                            </svg>\n                            En Vivo\n                        </span>)\n                    }\n                    {<img src={(props.item.files.length > 0) ? props.item.files[0].path : imgEmpty} alt={props.item.data.title}/>}\n                    {\n                        (props.publishedItems || props.onLive) && (\n                            <Button\n                                onClick={() => {\n                                    props.handleLinkConference(props.item, props.onLive, props.publishedItems);\n                                    addView(props.item.data.auditoriumId);\n                                }}\n                                htmlType={'button'}\n                                type={'primary'}\n                            >\n                                <AiOutlinePlayCircle />\n                            </Button>\n                        )\n                    }\n                </div>\n                <div className=\"card-audience__info\">\n                    <div className={'text'}>\n                        <h5>\n                            { (props.item.data.title.length >= 50) ?\n                                props.item.data.title.substring(0,50) + '...'\n                                :\n                                props.item.data.title\n                            }\n                        </h5>\n                        <p>\n                            <span> {props.publishedDate ? 'Emisión:' : 'Emitido:'}</span>\n                            {dayjs(props.item.data.conferenceDate).locale(es).format('ddd DD')} de {' '}\n                            {dayjs(props.item.data.conferenceDate).locale(es).format('MMMM')} del {' '}\n                            {dayjs(props.item.data.conferenceDate).locale(es).format('YYYY')}\n                        </p>\n                        <p>\n                            {props.publishedDate && !(props.onLive) && (<span>A las:</span>)}\n                            {props.publishedDate && !(props.onLive) && (`${dayjs(props.item.data.conferenceDate).locale(es).format('HH:mm')} hrs` : '')}\n                        </p>\n                    </div>\n                </div>\n            </Card>\n        </>\n    );\n}\n","import React from \"react\";\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport {Col, Empty, Row, Spin} from \"antd\";\nimport {CardAudience} from \"./cardAudience\";\n\nexport function ListOldItems(props) {\n\n    const loadMore = () => {\n        const lastitem = props.items.slice(-1).pop().data;\n        props.updateComplete(lastitem.conferenceDate,lastitem.auditoriumId)\n    };\n\n    const contentStyle = {\n        padding: 50,\n        background: 'rgba(0, 0, 0, 0)',\n    };\n\n    return (\n        <InfiniteScroll\n            dataLength={props.items.length}\n            next={() => loadMore()}\n            hasMore={!props.disabledHasMore}\n            loader={!props.disabledHasMore ? <Spin tip=\"Cargando\"><div style={contentStyle}></div></Spin> : ''}\n            scrollableTarget=\"scrollableDiv\"\n            style={{overflow: 'unset !important'}}\n        >\n            <Row gutter={[16,16]}>\n                {props.items.map((item,i) => {\n                    return (\n                        <Col xl={6} lg={8} md={8} sm={12} xs={24} key={i}>\n                            <CardAudience\n                                item={item}\n                                publishedItems={true}\n                                onLive={false}\n                                publishedDate={false}\n                                handleLinkConference={props.handleLinkConference}\n                            />\n                        </Col>\n                    );\n                })}\n                {props.items.length === 0 && <Col xs={24}>\n                    <Empty description={'No hay eventos disponibles'} />\n                </Col>}\n            </Row>\n        </InfiniteScroll>\n    );\n}\n","import React from \"react\";\nimport { Col, Empty, Row } from \"antd\";\nimport { CardAudience } from \"./cardAudience\";\nimport dayjs from \"dayjs\";\n\nexport function ListItems(props) {\n  const now = dayjs();\n\n  return (\n    <Row gutter={[16, 16]}>\n      {props.items.map((item, i) => (\n        <Col xl={6} lg={8} md={8} sm={12} xs={24} key={i}>\n          <CardAudience\n            item={item}\n            publishedItems={false}\n            onLive={\n              now < dayjs(item.data.endDate) &&\n              now > dayjs(item.data.conferenceDate)\n            }\n            publishedDate={true}\n            handleLinkConference={props.handleLinkConference}\n          />\n        </Col>\n      ))}\n      {props.items.length === 0 && (\n        <Col xs={24}>\n          <Empty description={\"No hay eventos disponibles\"} />\n        </Col>\n      )}\n    </Row>\n  );\n}\n","import React, { useState } from \"react\";\nimport { Tabs } from \"antd\";\nimport { ListOldItems } from \"./listOldItems\";\nimport { ListItems } from \"./listItems\";\n\nexport function BoxListAudience({\n  disabledHasMore,\n  listAudienceP,\n  listAudienceO,\n  updateComplete,\n  handleLinkConference,\n}) {\n  const [activeKey, setActiveKey] = useState(\"1\");\n\n  const items = [\n    {\n      key: \"1\",\n      label: `Temporadas`,\n      children: activeKey === \"1\" && (\n        <ListOldItems\n          updateComplete={updateComplete}\n          items={listAudienceO}\n          disabledHasMore={disabledHasMore}\n          handleLinkConference={handleLinkConference}\n        />\n      ),\n    },\n    {\n      key: \"2\",\n      label: `Próximamente`,\n      children: activeKey === \"2\" && (\n        <ListItems\n          items={listAudienceP}\n          handleLinkConference={handleLinkConference}\n        />\n      ),\n    },\n  ];\n\n  return (\n    <Tabs\n      activeKey={activeKey}\n      items={items}\n      onChange={(key) => setActiveKey(key)}\n    />\n  );\n}\n","import React from \"react\";\nimport \"./audience.scss\";\nimport \"moment/locale/es\";\nimport bgPridetalks from \"../../assets/imgs/dashboard/bg_pridetalks.svg\";\nimport { Button } from \"antd\";\nimport { AiOutlinePlayCircle } from \"react-icons/ai\";\nimport dayjs from \"dayjs\";\nimport es from \"dayjs/locale/es\";\n\nexport const LastItemAudience = (props) => {\n  return (\n    <>\n      <article\n        className=\"audience-header\"\n        style={{ backgroundImage: `url(${bgPridetalks})` }}\n        key={props.item.eventId}\n      >\n        <div className=\"audience-header__info\">\n          <div className=\"audience-header__info-text\">\n            <div className={\"content\"}>\n              <h4>¡Disfruta de la última transmisión!</h4>\n              <h3>\n                {props.item.data.title.length >= 50\n                  ? props.item.data.title.substring(0, 50) + \"...\"\n                  : props.item.data.title}\n              </h3>\n              <p>{`${dayjs(props.item.data.conferenceDate)\n                .locale(es)\n                .format(\"dddd\")} ${dayjs(props.item.data.conferenceDate).format(\n                \"DD\"\n              )} de ${dayjs(props.item.data.conferenceDate)\n                .locale(es)\n                .format(\"MMMM\")} a las ${dayjs(\n                props.item.data.conferenceDate\n              ).format(\"HH:mm\")} hrs`}</p>\n            </div>\n            <div className=\"audience-header__info-btn\">\n              <Button\n                onClick={() =>\n                  props.handleLinkConference(props.item, true, true)\n                }\n                className=\"-orange\"\n                icon={<AiOutlinePlayCircle />}\n                htmlType={\"button\"}\n                type={\"primary\"}\n              >\n                Ver video\n              </Button>\n            </div>\n          </div>\n        </div>\n        <div className=\"audience-header__thumb\">\n          <div className=\"audience-card\">\n            <div className=\"img\">\n              <img\n                src={props.item.files.length > 0 && props.item.files[0].path}\n                alt={props.item.data.title}\n              />\n            </div>\n          </div>\n        </div>\n      </article>\n    </>\n  );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport \"./audience.scss\";\nimport \"moment/locale/es\";\nimport { BoxListAudience } from \"./boxListAudience\";\nimport { audienceService } from \"../../services/audience.service\";\nimport { AdvertisingSection } from \"../../components/advertisingSection/advertisingSection\";\nimport { SideAdvertising } from \"../../components/sideAdvertising/sideAdvertising\";\nimport { Button } from \"rsuite\";\nimport { useCompanyHoliday } from \"../../services/companyHoliday.service\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport {Col, Flex, Modal, Row} from \"antd\";\nimport {LastItemAudience} from \"./lastItemAudience\";\nimport useWindowViewport from \"../../hooks/useWindowViewport\";\nimport {metaPixelService} from \"../../services/metaPixel.service\";\n\nexport const Audience = ( ) => {\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n  const [listAudienceP, setListAudienceP] = useState([]);\n  const [listAudienceO, setListAudienceO] = useState([]);\n  const [disabledHasMore, setDisabledHasMore] = useState(false);\n  const itemsPerPage = 8;\n  const [lastItemPublished,setLastItemPublished] = useState([]);\n  const [banner, setBanner] = useState(false);\n  const [sliderItems, setSliderItems] = useState([]);\n  const { windowWidth, windowHeight } = useWindowViewport();\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [videoWidth, setVideoWidth] = useState(1280);\n  const [videoHeight, setVideoHeight] = useState(720);\n  const [settingsVideo, setSettingsVideo] = useState({\n    titleVideo: '',\n    urlVideo: ''\n  });\n  \n\n  const AsidePurchaseBox = () => setStateAsideSurvey(activeAsideSurvey === \"\" ? \" is-show\" : \"\");\n\n  async function getPending() {\n    audienceService.getPending().then((result) => {\n      if (result) {\n        setListAudienceP(result.sort((a, b) => a.data.conferenceDate > b.data.conferenceDate ? 1 : -1).map((item) => item))\n      }\n    });\n  }\n  const { idAudience } = useParams();\n\n  async function getComplete() {\n    audienceService.updateComplete(0, 0, itemsPerPage).then((result) => {\n      if (result) {\n        if (idAudience){\n          let itemToOpenInModal = result.slice(0, 1);\n          handleLinkConference(itemToOpenInModal[0], true, true)\n        }\n        setListAudienceO(result);\n        setLastItemPublished(result.slice(0, 1))\n      }\n    });\n  }\n\n  async function updateComplete(date, id) {\n    audienceService.updateComplete(date, id, itemsPerPage).then((result) => {\n      if (result && result.length > 0) setListAudienceO([...listAudienceO, ...result]);\n      else setDisabledHasMore(true)\n    });\n  }\n\n  const getCompanyHolidays = async () => {\n    useCompanyHoliday.getCompanyHolidayFront(4).then((result) => {\n      if (result) setBanner(true)\n    });\n  }\n\n  async function getCompanyHolidaysSide() {\n    useCompanyHoliday.getCompanyHolidayFront(3).then((result) => {\n      if (result) setSliderItems(result.map((ch) => {\n          return {\n            key: ch.companyHolidayId.toString(),\n            file: ch.imagePath,\n            description: ch.description,\n            isVideo: ch.isVideo,\n            link: ch.iframe\n          };\n        }));\n    });\n  }\n\n  const showModal = (child) => {\n    setSettingsVideo({\n      titleVideo: child.title,\n      urlVideo: child.data.conferenceUrl.split('=')[1]\n    })\n    setIsModalOpen(true);\n  };\n\n  const handleCancel = () => {\n    setSettingsVideo({\n      titleVideo: '',\n      urlVideo: ''\n    })\n    setIsModalOpen(false);\n  };\n\n  const handleLinkConference = (child, onLive, publishedItems) => {\n    if(publishedItems || onLive) {\n      const data = {\n        content_name: child.data.title,\n        content_type: \"product\",\n        contents: [\n          {\n            id: child.data.auditoriumId,\n            quantity: 1,\n            link: child.data.conferenceUrl,\n          },\n        ],\n      };\n      metaPixelService.trackEvent(\n          \"track\",\n          \"ViewContent\",\n          data\n      );\n      //window.open(child.data.conferenceUrl,'_blank');\n      showModal(child);\n    }\n  }\n\n  useEffect(() => {\n    getPending();\n    getComplete();\n    getCompanyHolidays();\n    getCompanyHolidaysSide();\n  }, []);\n\n  useEffect(() => {\n    if(windowWidth > 1320) {\n      setVideoWidth(1280)\n      setVideoHeight(720)\n    }\n    if(windowWidth < 1320) {\n      setVideoWidth(854)\n      setVideoHeight(480)\n    }\n    if(windowWidth < 992) {\n      setVideoWidth(640)\n      setVideoHeight(360)\n    }\n    if(windowWidth < 680) {\n      setVideoWidth(426)\n      setVideoHeight(240)\n    }\n    if(windowWidth < 456) {\n      setVideoWidth(300)\n      setVideoHeight(200)\n    }\n  }, [windowWidth])\n\n\n  return (\n      <section className=\"dashboard-container-page\">\n        <article className=\"audience-container\">\n          <Row gutter={[16,0]}>\n            <Col xs={24}>\n              <Flex justify={'space-between'} align={'center'}>\n                <h2>Pride Talks</h2>\n                {(sliderItems && sliderItems.length > 0) &&\n                    <Button\n                        className=\"dots\"\n                        onClick={AsidePurchaseBox}\n                    >\n                      <i className=\"icon-dots-v\"></i>\n                    </Button>\n                }\n              </Flex>\n            </Col>\n            {(banner) && <Col xs={24}>\n                  <AdvertisingSection HolType={4}/>\n                </Col>\n            }\n\n            {lastItemPublished.length > 0 && <Col xs={24}>\n                <LastItemAudience\n                    item={lastItemPublished[0]}\n                    showModal={showModal}\n                    handleLinkConference={handleLinkConference}\n                />\n              </Col>\n            }\n            {listAudienceO.length > 0 && (\n              <Col\n                  lg={sliderItems.length > 0 ? 20 : 24}\n                  md={sliderItems.length > 0 ? 24 : 24}\n                  sm={sliderItems.length > 0 ? 24 : 24}\n                  xs={sliderItems.length > 0 ? 24 : 24}\n              >\n                <BoxListAudience\n                    listAudienceP={listAudienceP}\n                    listAudienceO={listAudienceO}\n                    updateComplete={updateComplete}\n                    disabledHasMore={disabledHasMore}\n                    showModal={showModal}\n                    handleLinkConference={handleLinkConference}\n                />\n              </Col>)\n            }\n            {sliderItems.length > 0 &&\n                <Col lg={4} md={24} sm={24} xs={24}>\n                  <aside className={`aside-lateral ${activeAsideSurvey}`}>\n                    <Button className=\"btn-close\" onClick={AsidePurchaseBox}><i className=\"icon-close\"></i></Button>\n                    <SideAdvertising sliderItems={sliderItems} />\n                  </aside>\n                </Col>\n            }\n            {\n              (settingsVideo.urlVideo !== '') ?\n                  <Modal\n                      open={isModalOpen}\n                      footer={null}\n                      onCancel={handleCancel}\n                      width={'max-content'}\n                      className={'modal-iframe'}\n                      keyboard={true}\n                  >\n                    <iframe\n                        width={videoWidth}\n                        height={videoHeight}\n                        src={`https://www.youtube-nocookie.com/embed/${settingsVideo.urlVideo}?autoplay=1&rel=0`}\n                        title={settingsVideo.titleVideo}\n                        frameBorder=\"0\"\n                        allow=\"autoplay; encrypted-media\"\n                        allowFullScreen></iframe>\n                  </Modal> : null\n            }\n            <Col xs={24}>\n              <FooterHome />\n            </Col>\n          </Row>\n        </article>\n      </section>\n  );\n}\n","import { useEffect, useState } from \"react\";\n\nexport default function useWindowViewport() {\n    const [windowWidth, setWindowWidth] = useState(0);\n    const [windowHeight, setWindowHeight] = useState(0);\n    useEffect(() => {\n        function updateWindowViewport() {\n            setWindowWidth(window.innerWidth);\n            setWindowHeight(window.innerHeight);\n        }\n        window.addEventListener(\"resize\", updateWindowViewport);\n        updateWindowViewport();\n        return () => window.removeEventListener(\"resize\", updateWindowViewport);\n    }, []);\n    return { windowWidth, windowHeight };\n}\n","import React  from \"react\";\n\nexport function BoxListEcommerce(props) {\n  return (\n    <div className=\"  content_card_audience\">\n      <h4 className=\"text-muted text fnt_medium mb-4\">\n        Disfruta de productos y descuentos exclusivos\n      </h4>\n      <div className=\"row\">\n        <div className=\"col-sm-6 col-lg-4 mb-4\">\n          <a\n            className=\"item_ecommerce shadows card\"\n            href=\"https://tiendaserhumano.redvouchers.com/Inicio\"\n            target=\"_blank\"\n          >\n            <figure>\n              <img\n                src=\"https://as-mktp-serhumano-backoffice-mx-prod.azurewebsites.net/imgs/stores/3/products/pi00000256.png?v=20220125103810177\"\n                alt=\"Ecommerce\"\n              />\n            </figure>\n            <h5 className=\"mb-0 text fnt_bold text-uppercase\">Ser Humano AC</h5>\n            <p className=\"paragraph text-muted\">Marketplace</p>\n          </a>\n        </div>\n        <div className=\"col-sm-6 col-lg-4 mb-4\">\n          <a\n            className=\"item_ecommerce shadows card\"\n            href=\"https://tiendaadogcion.redvouchers.com/Inicio\"\n            target=\"_blank\"\n          >\n            <figure>\n              <img\n                src=\"https://as-mktp-adogcion-backoffice-mx-prod.azurewebsites.net/imgs/groups/categories/11/p00000011.png?v=20220127105012944\"\n                alt=\"Ecommerce\"\n              />\n            </figure>\n            <h5 className=\"mb-0 text fnt_bold text-uppercase\">Tienda Adogción</h5>\n            <p className=\"paragraph text-muted\">Marketplace</p>\n          </a>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport \"./ecommerce.scss\";\nimport Moment from \"react-moment\";\nimport \"moment/locale/es\";\nimport { BoxListEcommerce } from \"./boxListEcommerce\";\nimport { SideAdvertising } from \"../../components/sideAdvertising/sideAdvertising\";\nimport { AdvertisingSection } from \"../../components/advertisingSection/advertisingSection\";\n\nexport function Ecommerce(props) {\n  const [activeAsideSurvey, setStateAsideSurvey] = useState(\"\");\n\n  const AsidePurchaseBox = () => {\n    setStateAsideSurvey(activeAsideSurvey === \"\" ? \" is-show\" : \"\");\n  };\n\n  return (\n    <section className=\"wrapper_surveys wrapper_ecommerce padd\">\n      <div className=\"content_surveys \">\n        <div className=\"row align-items-center mb-4\">\n          <div className=\"col\">\n            <h2 className=\"mb-0 text fnt_medium \">Tiendas en Línea</h2>\n          </div>\n          <div className=\"col text-muted box_more_survey\">\n            <span className=\"d-none d-sm-block\">\n              <Moment locale=\"es\" format=\"DD [de] MMMM  YYYY\">\n                {Date()}\n              </Moment>\n            </span>\n            <span className=\"btn_ellipsis\" onClick={AsidePurchaseBox}>\n              <i className=\"fas fa-ellipsis-v\"></i>\n            </span>\n          </div>\n        </div>\n        <AdvertisingSection HolType={5} />\n        {/* <div className=\"content_ttls\">\n          <div className=\"minw\">\n            <h4 className=\"text fnt_medium ttl mb-3 text-white\">\n              Bienvenido a las Tiendas en línea\n            </h4>\n            <p className=\"text fnt_medium\">\n              Este es nuestro acceso a las tiendas en línea.\n            </p>\n          </div>\n          <div className=\"box_img_surveys\">\n            <img src={PictureHelp} alt=\"Encuestas\" />\n          </div>\n        </div> */}\n\n        <BoxListEcommerce />\n\n        {/*       <p className=\"text-muted mt-4 line_height\">*/}\n        {/*           <small>La entrada a esta tienda es mediante la siguiente <a href=\"https://appmarketplacefrontmxprod.azurewebsites.net\">liga</a></small>*/}\n        {/*</p>*/}\n      </div>\n\n      <aside className={`aside_lateral trans ${activeAsideSurvey}`}>\n        <span className=\"btn_ellipsis_close\" onClick={AsidePurchaseBox}>\n          <i className=\"far fa-window-close\"></i>\n        </span>\n        <SideAdvertising />\n      </aside>\n    </section>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { categoryServiceService } from \"../../services/categoryService.service\";\nimport \"./registerServices.scss\";\nimport { FormGroup, Label, Modal, ModalBody } from \"reactstrap\";\nimport { BsInfoCircle } from \"react-icons/bs\";\nimport { FaChevronRight, FaTimes } from \"react-icons/fa\";\n\nimport { Form, Input, Row, Col, Select, Button } from \"antd\";\nimport Swal from \"sweetalert2\";\n\nexport function FormPersonal(props) {\n  let {\n    categoryServiceId,\n    contactImage,\n    directoryContacts,\n    fullName,\n    location,\n    subCategoryServiceId\n  } = props.data;\n\n  const { Option } = Select;\n  const [datos, setDatos] = useState({\n    nombre: \"\",\n    descripcion: \"\",\n    correo: \"\",\n    contacto1: null,\n    contacto1DirectoryContactId: null,\n    contacto2: null,\n    contacto2DirectoryContactId: null,\n    categoria: \"\",\n    subcategoria: \"\",\n    location: \"\",\n    imagen: [],\n  });\n\n  const [band, setBand] = useState(false);\n  const [categoryFilter, setCategoryFilter] = useState([]);\n  const [subCategoryFilter, setSubCategoryFilter] = useState([]);\n  const [indexImagen, setIndexImagen] = useState();\n\n  useEffect(() => {\n    categoryServiceService.getCategoryCatalog().then((categories) => {\n      if (categories != null) setCategoryFilter(categories);\n    });\n  }, []);\n\n  const handleInputStateValue = (e) => {\n    if (e.target.name === \"nombre\")\n      setDatos({ ...datos, nombre: e.target.value });\n    if (e.target.name === \"correo\")\n      setDatos({ ...datos, correo: e.target.value });\n    if (e.target.name === \"contacto1\")\n      setDatos({ ...datos, contacto1: e.target.value });\n    if (e.target.name === \"contacto2\")\n      setDatos({ ...datos, contacto2: e.target.value });\n    if (e.target.name === \"location\")\n      setDatos({ ...datos, location: e.target.value });\n    if (e.target.name === \"descripcion\")\n      setDatos({ ...datos, descripcion: e.target.value });\n\n    //if(e.target.name !== \"imagen\") setDatos({...datos, [e.target.name]: e.target.value,})\n  };\n\n  const handleValidateCategory = (value) => {\n    if (value === 0) {\n      setSubCategoryFilter([]);\n      setDatos({ ...datos, subcategoria: value });\n      return;\n    }\n\n    categoryServiceService\n      .getSubCategoriesCatalogByCatId(value, process.env.REACT_APP_COMPANY)\n      .then((subs) => {\n        setSubCategoryFilter(subs.sort((a, b) => a[1] - b[1]));\n        setDatos({\n          ...datos,\n          categoria: subs[0].categoryServiceId,\n          subcategoria: subs[0].subCategoryServiceId,\n        });\n      });\n  };\n\n  const handleSelectSubCategory = (value) => {\n    setDatos({ ...datos, subcategoria: value });\n  };\n\n  useEffect(() => {\n    if (props.register.personal.hasOwnProperty(\"nombre\")) {\n      let reg = props.register.personal;\n      setDatos({\n        nombre: reg.nombre,\n        correo: reg.correo,\n        contacto1: reg.contacto1,\n        contacto2: reg.contacto2,\n        categoria: reg.categoria,\n        subcategoria: reg.subcategoria,\n        location: reg.location,\n        imagen: reg.imagen,\n        descripcion: reg.descripcion\n      });\n    } else {\n      setDatos({\n        nombre: fullName,\n        correo: \"\",\n        contacto1:\n          directoryContacts !== undefined && directoryContacts.length > 0\n            ? directoryContacts[0].contactValue\n            : null,\n        contacto1DirectoryContactId:\n          directoryContacts !== undefined && directoryContacts.length > 0\n            ? directoryContacts[0].directoryContactId\n            : null,\n        contacto2:\n          directoryContacts !== undefined && directoryContacts.length > 1\n            ? directoryContacts.filter((x) => x.contactTypeId == 1).length > 1\n              ? directoryContacts.filter((x) => x.contactTypeId == 1)[1]\n                .contactValue\n              : null\n            : null,\n        contacto1optDirectoryContactId:\n          directoryContacts !== undefined && directoryContacts.length > 1\n            ? directoryContacts.filter((x) => x.contactTypeId == 1).length > 1\n              ? directoryContacts.filter((x) => x.contactTypeId == 1)[1]\n                .directoryContactId\n              : null\n            : null,\n        contacto2DirectoryContactId:\n          directoryContacts !== undefined && directoryContacts.length > 1\n            ? directoryContacts.filter((x) => x.contactTypeId == 2).length > 0\n              ? directoryContacts.filter((x) => x.contactTypeId == 2)[0]\n                .directoryContactId\n              : null\n            : null,\n        categoria: categoryServiceId,\n        subcategoria: subCategoryServiceId,\n        location: location,\n        imagen: contactImage,\n      });\n    }\n\n    if (\n      props.data &&\n      props.data?.categoryServiceId !== null &&\n      props.data?.categoryServiceId != undefined &&\n      props.data?.categoryServiceId !== 0\n    ) {\n      categoryServiceService\n        .getSubCategoriesCatalogByCatId(\n          props.data.categoryServiceId,\n          process.env.REACT_APP_COMPANY\n        )\n        .then((subs) => {\n          setSubCategoryFilter(subs);\n\n          setDatos({\n            ...datos,\n            categoria: props.data.categoryServiceId,\n            subcategoria: props.data.subCategoryServiceId,\n            nombre: props.data.fullName,\n            descripcion: props.data.directoryDescription,\n            location: props.data.location,\n            //Concatacto1\n            contacto1: props.data.directoryContacts[0].contactValue,\n            contacto1DirectoryContactId: props.data.directoryContacts[0].directoryContactId,\n            //Correo\n            correo: props.data.directoryContacts.filter((x) => x.contactTypeId == 2)[0].contactValue,\n            contacto2DirectoryContactId: props.data.directoryContacts.filter(\n              (x) => x.contactTypeId === 2\n            )[0].directoryContactId,\n            //Contaco2\n            contacto2:  (props.data.directoryContacts[1]?.contactTypeId === 1 && props.data.directoryContacts[1]?.contactTypeName === 'Teléfono' && props.data.directoryContacts[1]?.contactValue !== 'null')\n                ? props.data.directoryContacts[1].contactValue\n                : '',\n            contacto1optDirectoryContactId:\n              props.data.directoryContacts.filter((x) => x.contactTypeId == 1)\n                .length > 1\n                ? props.data.directoryContacts.filter(\n                  (x) => x.contactTypeId == 1\n                )[1].directoryContactId\n                : null,\n            imagen: props.data.contactImage,\n          });\n        });\n    }\n  }, [props.data]);\n\n\n  const updateImage = (e) => {\n    const maxFiles = props.quantityImage;\n    if (e.target.files.length > maxFiles) {\n      Swal.fire({\n        text: `Solo se admitiran ${maxFiles} imagenes.`,\n        icon: \"info\",\n      });\n    }\n\n    const files = Array.from(e.target.files).slice(0, maxFiles);\n    const blobs = [];\n\n    files.forEach((file) => {\n      const reader = new FileReader();\n      const url = reader.readAsDataURL(file);\n      blobs.push(file);  // Agregar el blob al arreglo\n\n      reader.onloadend = function () {\n        setDatos((prevDatos) => ({\n          ...prevDatos,\n          imagen: Array.isArray(prevDatos.imagen) ? [...prevDatos.imagen, reader.result] : [reader.result],\n        }));\n      };\n    });\n    props.setFile(blobs);\n  }\n\n  function deleteImg(index) {\n    let arrayIamge = [];\n    if (Array.isArray(datos.imagen))\n      arrayIamge = datos.imagen;\n    else\n      arrayIamge.push(datos.imagen);\n\n    let newImagen = arrayIamge;\n    newImagen.splice(index, 1);\n    setDatos({ ...datos, imagen: newImagen });\n\n    props.deleteImage(index);\n\n    setBand(false);\n  }\n\n  const [modal, setModal] = useState(false);\n  const toggle = (index) => {\n    setIndexImagen(index);\n    setModal(!modal);\n  };\n\n  const onFinish = () => {\n    if (!datos.categoria || datos.subcategoria === \"\") {\n      return Swal.fire({\n        text: \"Falta seleccionar un Categoría, revísalo por favor\",\n        icon: \"error\",\n      });\n    }\n\n    props.Datepersonal(datos, \"personal\");\n    props.toggleView();\n  };\n  const onFinishFailed = (errorInfo) => false;\n\n  const PrintImage = () => {\n    let arrayIamge = [];\n    if (Array.isArray(datos.imagen)) arrayIamge = datos.imagen;\n    else arrayIamge.push(datos.imagen);\n\n    return arrayIamge.map((item, index) => (\n      <div className=\"box_cnt_picture\" key={index}>\n        <button\n          className=\"btn-close-file\"\n          type=\"button\"\n          onClick={() => deleteImg(index)}\n        >\n          <FaTimes />\n        </button>\n        <img\n          alt=\"Imagen destacada en directorio de PrideMx\"\n          src={item}\n          onClick={() => toggle(index)}\n        />\n      </div>));\n  }\n\n  return (\n    <Form\n      className=\"form-pride\"\n      autoComplete=\"off\"\n      layout=\"vertical\"\n      onFinish={onFinish}\n      onFinishFailed={onFinishFailed}\n      fields={[\n        {\n          name: [\"nombre\"],\n          value: datos.nombre,\n        },\n        {\n          name: [\"correo\"],\n          value: datos.correo,\n        },\n        {\n          name: [\"contacto1\"],\n          value: datos.contacto1,\n        },\n        {\n          name: [\"contacto2\"],\n          value: datos.contacto2,\n        },\n        {\n          name: [\"location\"],\n          value: datos.location,\n        },\n        {\n          name: [\"descripcion\"],\n          value: datos.descripcion,\n        },\n        {\n          name: [\"categoria\"],\n          value: datos.categoria,\n        },\n        {\n          name: [\"subcategoria\"],\n          value: datos.subcategoria,\n        },\n      ]}\n    >\n      <div className=\"title\">\n        <h3>Información personal</h3>\n      </div>\n      <Row gutter={16}>\n        <Col md={12} sm={12} xs={24}>\n          <Form.Item\n            label=\"Nombre del servicio\"\n            name=\"nombre\"\n            rules={[\n              {\n                required: true,\n                message: \"* Campo requerido\",\n              },\n              {\n                min: 3,\n                message: \"Se requieren mínimo 3 carácteres\",\n              },\n            ]}\n            initialValue={datos.nombre}\n            hasfeedback\n          >\n            <Input\n              placeholder=\"Nombre del servicio\"\n              type=\"text\"\n              name=\"nombre\"\n              size=\"large\"\n              minLength={3}\n              onChange={handleInputStateValue}\n            />\n          </Form.Item>\n        </Col>\n        <Col md={12} sm={12} xs={24}>\n          <Form.Item\n            label=\"Correo electrónico\"\n            name=\"correo\"\n            rules={[\n              {\n                required: true,\n                type: \"email\",\n                message: \"* Formato incorrecto\",\n              },\n            ]}\n            initialValue={datos.correo}\n            hasfeedback\n          >\n            <Input\n              placeholder=\"Correo electrónico\"\n              maxLength={500}\n              type=\"email\"\n              size=\"large\"\n              name=\"correo\"\n              onChange={handleInputStateValue}\n              defaultValue={datos.correo}\n            />\n          </Form.Item>\n        </Col>\n        <Col md={12} sm={12} xs={24}>\n          <Row>\n            <Col xs={24}>\n              <Form.Item\n                label=\"Teléfono de contacto\"\n                name=\"contacto1\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"* Solo se permiten números\",\n                  },\n                  {\n                    max: 10,\n                    min: 10,\n                    message: \"Se requieren 10 dígitos\",\n                  },\n                ]}\n                initialValue={datos.contacto1}\n                hasfeedback\n              >\n                <Input\n                  placeholder=\"Teléfono de contacto\"\n                  maxLength={10}\n                  size=\"large\"\n                  name=\"contacto1\"\n                  type=\"text\"\n                  onChange={handleInputStateValue}\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                  defaultValue={\n                    datos.contacto1 !== null ? datos.contacto1 : null\n                  }\n                />\n              </Form.Item>\n            </Col>\n            <Col xs={24}>\n              <Form.Item\n                label=\"Teléfono de contacto 2\"\n                htmlFor={'contacto2'}\n                name={'contacto2'}\n                hasfeedback\n              >\n                <Input\n                  placeholder=\"Teléfono de contacto 2\"\n                  maxLength={10}\n                  size=\"large\"\n                  name=\"contacto2\"\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                  onChange={handleInputStateValue}\n                  defaultValue={\n                    datos.contacto2 !== null ? datos.contacto2 : null\n                  }\n                />\n              </Form.Item>\n            </Col>\n            <Col xs={24}>\n              <Form.Item\n                label=\"Ubicación\"\n                name=\"location\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"* Campo requerido\",\n                  },\n                  {\n                    min: 3,\n                    message: \"Se requieren mínimo 3 carácteres\",\n                  },\n                ]}\n                initialValue={datos.location}\n                hasfeedback\n              >\n                <Input\n                  placeholder=\"Ubicación\"\n                  type=\"text\"\n                  size=\"large\"\n                  minLength={3}\n                  name=\"location\"\n                  onChange={handleInputStateValue}\n                  defaultValue={datos.location}\n                />\n              </Form.Item>\n            </Col>\n          </Row>\n        </Col>\n        <Col md={12} sm={12} xs={24}>\n          <Form.Item\n            label=\"Descripción corta del servicio *\"\n            rules={[\n              {\n                required: true,\n                message: \"* Campo requerido\",\n              },\n              {\n                max: 255,\n                message: \"Solo se permiten máximo 255 carácteres\",\n              },\n            ]}\n            name=\"descripcion\"\n            initialValue={datos.descripcion}\n            hasfeedback\n          >\n            <Input.TextArea\n              placeholder=\"...\"\n              type=\"email\"\n              size=\"large\"\n              maxLength={255}\n              showCount\n              name=\"descripcion\"\n              onChange={handleInputStateValue}\n              defaultValue={datos.descripcion}\n              rows={8}\n            />\n          </Form.Item>\n        </Col>\n        <Col xs={24}>\n          <h3>Información profesional</h3>\n        </Col>\n        <Col md={12} sm={12} xs={24}>\n          <Form.Item\n            label=\"Categoría\"\n            name=\"categoria\"\n            rules={[\n              {\n                required: true,\n                message: \"*Campo Requerido\",\n              },\n            ]}\n            initialValue={datos.categoria}\n            hasfeedback\n          >\n            <Select\n              size=\"large\"\n              placeholder=\"Selecciona una categoría\"\n              onChange={handleValidateCategory}\n              name=\"categoria\"\n              value={datos.categoria}\n              rules={[\n                {\n                  require: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n              hasfeedback\n            >\n              {categoryFilter &&\n                categoryFilter.map((item, index) => {\n                  return (\n                    <Option key={index} value={item.categoryServiceId}>\n                      {item.categoryName}\n                    </Option>\n                  );\n                })}\n            </Select>\n          </Form.Item>\n        </Col>\n        <Col sm={12} xs={24}>\n          <Form.Item\n            label=\"Subcategoría\"\n            name=\"subcategoria\"\n            rules={[\n              {\n                required: true,\n                message: \"*Campo Requerido\",\n              },\n            ]}\n            initialValue={datos.subcategoria}\n          >\n            <Select\n              size=\"large\"\n              placeholder=\"Selecciona una subcategoría\"\n              disabled={!datos.subcategoria}\n              onChange={handleSelectSubCategory}\n              name=\"subcategoria\"\n              value={datos.subcategoria}\n              rules={[\n                {\n                  require: true,\n                  message: \"Campo Requerido\",\n                },\n              ]}\n              hasfeedback\n            >\n              {subCategoryFilter.map((subCategoryItem, index) => {\n                return (\n                  <Option\n                    key={index}\n                    value={subCategoryItem.subCategoryServiceId}\n                  >\n                    {subCategoryItem.subCategoryName}\n                  </Option>\n                );\n              })}\n            </Select>\n          </Form.Item>\n        </Col>\n        <Col xs={24}>\n          <FormGroup className=\"form-dashboard-group-file\">\n            {datos && datos.imagen && datos.imagen.length > 0 ? (\n              <>\n                <p>Previsualización</p>\n                <div className=\"info-uploaded\">\n                  {PrintImage()}\n                </div>\n              </>\n            ) : (\n              <>\n                <p className=\"text-start\">Imagen destacada </p>\n                <div className=\"info-upload\">\n                  <input\n                    type=\"file\"\n                    id=\"file-upload\"\n                    placeholder=\"Imagen destacada\"\n                    accept=\"image/*\"\n                    name=\"imagen\"\n                    onChange={(e) => updateImage(e)}\n                    multiple={props.quantityImage > 1}\n                  />\n                  <Label className=\"btn-upload-file\" for=\"file-upload\">\n                    <i className=\"icon-upload-file\"></i> Subir archivo\n                  </Label>\n                  <div className=\"extra\">\n                    <span>\n                      <BsInfoCircle />\n                    </span>\n                    <p>\n                      El tamaño recomendado de la imagen es de <b>1280 x 720</b>{\" \"}\n                      pixeles.\n                    </p>\n                  </div>\n                </div>\n              </>\n            )}\n          </FormGroup>\n        </Col>\n        <Col xs={24}>\n          <div className=\"form-pride-footer\">\n            <Button htmlType=\"submit\" className=\"green\" type={'primary'}>\n              <p>Siguiente</p>\n              <FaChevronRight />\n            </Button>\n          </div>\n        </Col>\n      </Row>\n      <Modal isOpen={modal} toggle={toggle} style={{ paddingTop: \"8rem\" }}>\n        <ModalBody style={{ padding: 0, position: \"relative\" }}>\n          <Button className=\"btn-outline-dark close\" onClick={toggle}>\n            <FaTimes />\n          </Button>\n          <div className=\"modal-img\">\n            {indexImagen >= 0 ? (\n              <img\n                alt=\"Imagen destacada en directorio de PrideMx\"\n                src={datos.imagen[indexImagen]}\n              />) : ''}\n          </div>\n        </ModalBody>\n      </Modal>\n    </Form>\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport \"./registerServices.scss\";\nimport {FaChevronRight, FaExclamation} from \"react-icons/fa\";\nimport { Col, Form, Input, Row, Select, Button } from \"antd\";\n\nexport function FormAdditional(props) {\n\n  const activeTab3 = props.activeTab3;\n  const [currentSocialMedia, setCurrentSocialMedia] = useState(0)\n  const [datos, setDatos] = useState({\n    website: null,\n    websiteId: null,\n    facebook: null,\n    facebookId: null,\n    instagram: null,\n    instagramId: null,\n    linkedin: null,\n    linkedinId: null,\n    twitter: null,\n    twitterId: null,\n    tiktok: null,\n    tiktokId: null\n  })\n\n  useEffect(() => {\n    let Data = {};\n    if (props.register.additional.hasOwnProperty(\"facebook\")) {\n      let reg = props.register.additional;\n      Data = {\n        website: reg.website,\n        facebook: reg.facebook,\n        instagram: reg.instagram,\n        linkedin: reg.linkedin,\n        twitter: reg.twitter,\n        tiktok: reg.tiktok,\n      };\n      setDatos(Data);\n    }\n\n    if (props.data?.directoryContacts) {\n      let directoryContacts = props.data.directoryContacts;\n      directoryContacts.forEach(element => {\n        switch (element.contactTypeId) {\n          case 3: Data.website = element.contactValue;\n            Data.websiteId = element.directoryContactId;\n            break;\n          case 4: Data.linkedin = element.contactValue;\n            Data.linkedinId = element.directoryContactId;\n            break;\n          case 5: Data.facebook = element.contactValue;\n            Data.facebookId = element.directoryContactId;\n            break;\n          case 6: Data.twitter = element.contactValue;\n            Data.twitterId = element.directoryContactId;\n            break;\n          case 7: Data.instagram = element.contactValue;\n            Data.instagramId = element.directoryContactId;\n            break;\n          case 8: Data.tiktok = element.contactValue;\n            Data.tiktokId = element.directoryContactId;\n            break;\n          default: break;\n        }\n      });\n      setDatos(Data);\n    }\n  }, [props.data]);\n\n  const onFinish = () => {\n    props.Datepersonal(datos, \"additional\");\n    props.toggleView();\n  }\n\n  const onFinishFailed = (errorInfo) => false;\n\n  const { Option } = Select;\n\n  const handleInputChange = (e) => setDatos({ ...datos, [e.target.name]: e.target.value });\n\n  return (\n    <Form\n      className=\"form-pride\"\n      style={{padding: '.5rem !important'}}\n      onFinish={onFinish}\n      onFinishFailed={onFinishFailed}\n      layout=\"vertical\"\n      autoComplete=\"off\"\n      fields={[\n        {\n          \"name\": [\"website\"],\n          \"value\": datos.website\n        },\n        {\n          \"name\": [\"facebook\"],\n          \"value\": datos.facebook\n        },\n        {\n          \"name\": [\"linkedin\"],\n          \"value\": datos.linkedin\n        },\n        {\n          \"name\": [\"twitter\"],\n          \"value\": datos.twitter\n        },\n        {\n          \"name\": [\"tiktok\"],\n          \"value\": datos.tiktok\n        },\n        {\n          \"name\": [\"instagram\"],\n          \"value\": datos.instagram\n        }\n      ]}\n    >\n      <Row gutter={16}>\n        <Col xs={24}>\n          <div className=\"d-flex-between\">\n            <h3>Información adicional</h3>\n            <Button className=\"btn_to_back\" onClick={props.toBack}>\n              <i className=\"icon-chevron-left\"></i>{\" \"}Regresar\n            </Button>\n          </div>\n        </Col>\n        <Col xs={24}>\n          <div className=\"badge-pride blue\">\n            <span><FaExclamation /></span>\n            <p>En redes solo agrega tu nombre de usuario</p>\n          </div>\n        </Col>\n        <Col md={12} sm={24} xs={24}>\n          <Form.Item name=\"website\" initialValue={datos.website} label=\"Sitio web\" style={{marginBottom: '0'}}>\n            <Input\n              onFocus={() => setCurrentSocialMedia(1)}\n              onBlur={() => setCurrentSocialMedia(0)}\n              type=\"text\"\n              name=\"website\"\n              size=\"large\"\n              onChange={handleInputChange}\n            />\n          </Form.Item>\n          <p className={`p-smedia ${(currentSocialMedia === 1) ? \"show\" : ''}`}>https://{datos.website}</p>\n        </Col>\n        <Col md={12} sm={24} xs={24}>\n          <Form.Item name=\"facebook\" initialValue={datos.facebook} label=\"Facebook\" style={{marginBottom: '0'}}>\n            <Input\n              onFocus={() => setCurrentSocialMedia(2)}\n              onBlur={() => setCurrentSocialMedia(0)}\n              type=\"text\"\n              name=\"facebook\"\n              size=\"large\"\n              onChange={handleInputChange}\n            />\n          </Form.Item>\n          <p className={`p-smedia ${(currentSocialMedia === 2) ? \"show\" : ''}`}>https://www.facebook.com/{datos.facebook}</p>\n        </Col>\n        <Col md={12} sm={24} xs={24}>\n          <Form.Item name=\"instagram\" initialValue={datos.instagram} label=\"Instagram\" style={{marginBottom: '0'}}>\n            <Input\n              onFocus={() => setCurrentSocialMedia(3)}\n              onBlur={() => setCurrentSocialMedia(0)}\n              type=\"text\"\n              name=\"instagram\"\n              size=\"large\"\n              onChange={handleInputChange}\n            />\n          </Form.Item>\n          <p className={`p-smedia ${(currentSocialMedia === 3) ? \"show\" : ''}`}>https://www.instagram.com/{datos.instagram}</p>\n        </Col>\n        <Col md={12} sm={24} xs={24}>\n          <Form.Item name=\"linkedin\" initialValue={datos.linkedin} label=\"Linkedin\" style={{marginBottom: '0'}}>\n            <Input\n              onFocus={() => setCurrentSocialMedia(4)}\n              onBlur={() => setCurrentSocialMedia(0)}\n              type=\"text\"\n              name=\"linkedin\"\n              size=\"large\"\n              onChange={handleInputChange}\n            />\n          </Form.Item>\n          <p className={`p-smedia ${(currentSocialMedia === 4) ? \"show\" : ''}`}>https://www.linkedin.com/in/{datos.tiktok}</p>\n        </Col>\n        <Col md={12} sm={24} xs={24}>\n          <Form.Item name=\"twitter\" initialValue={datos.twitter} label=\"Twitter\" style={{marginBottom: '0'}}>\n            <Input\n              onFocus={() => setCurrentSocialMedia(5)}\n              onBlur={() => setCurrentSocialMedia(0)}\n              type=\"text\"\n              name=\"twitter\"\n              size=\"large\"\n              onChange={handleInputChange}\n            />\n          </Form.Item>\n          <p className={`p-smedia ${(currentSocialMedia === 5) ? \"show\" : ''}`}>https://www.twitter.com/{datos.twitter}</p>\n        </Col>\n        <Col md={12} sm={24} xs={24}>\n          <Form.Item name=\"tiktok\" initialValue={datos.tiktok} label=\"TikTok\" style={{marginBottom: '0'}}>\n            <Input\n              onFocus={() => setCurrentSocialMedia(6)}\n              onBlur={() => setCurrentSocialMedia(0)}\n              type=\"text\"\n              name=\"tiktok\"\n              size=\"large\"\n              onChange={handleInputChange}\n            />\n          </Form.Item>\n          <p className={`p-smedia ${(currentSocialMedia === 6) ? \"show\" : ''}`}>https://www.tiktok.com/@{datos.tiktok}</p>\n        </Col>\n        <Col xs={24}>\n          <div className=\"form-pride-footer\">\n            <Button htmlType=\"submit\" className=\"green\" type={'primary'}>\n              <p>{activeTab3 === false ? \"Guardar\" : \"Siguiente\"}</p>\n              <FaChevronRight />\n            </Button>\n          </div>\n        </Col>\n      </Row>\n    </Form>\n  );\n}\n","import swal from \"sweetalert\";\nimport { callApi } from \"./service\"\n\nexport const paymentService = {\n    sendRedPayCardToken,\n    verifyCard\n};\n\nasync function sendRedPayCardToken(param, directoryId) {\n    return callApi(`/BackOffice/RedPayCardToken?directoryInfoid=${directoryId}`, 'POST', param)\n        .then(result => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Exito\", icon: \"success\" });\n                return result.data;\n            }\n            else\n                swal({ text: \"Error al guardar la tarjeta \", icon: \"error\" });\n        });\n}\n\nasync function verifyCard(param, directoryId) {\n    return callApi(`/BackOffice/VerifyCard?directoryInfoid=${directoryId}`, 'POST', param)\n        .then(result => {\n            return result;\n        });\n}","import { callApi, callApiFileStorage } from \"./service\";\nimport swal from \"sweetalert\";\n\nexport const newAccountService = {\n  getMaritalStatusCatalog,\n  getNacionalityCatalog,\n  getStateCatalog,\n};\n\nasync function getMaritalStatusCatalog() {\n  return callApi(`/BackEnd/GetMaritalStatusCatalog`, \"GET\", undefined, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    if (result.responseCode == \"00\") {\n      return result.data;\n    } else {\n      return result.responseMessage;\n    }\n  });\n}\n\nasync function getNacionalityCatalog() {\n  return callApi(`/BackEnd/GetNationalityCatalog`, \"GET\", undefined, {\n    SkipValidationToken: true,\n  }).then((result) => {\n    if (result.responseCode === \"00\") {\n      return result.data;\n    } else {\n      return result.responseMessage;\n    }\n  });\n}\n\nasync function getStateCatalog() {\n  return callApi(`/BackEnd/GetCountryStateCatalog`, \"GET\", undefined, {\n    SkipValidationToken: true,\n  } ).then((result) => {\n    if (result.responseCode == \"00\") {\n      return result.data;\n    } else {\n      return result.responseMessage;\n    }\n  });\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport Cards from \"../../assets/imgs/red-pay.png\";\nimport visaLogo from \"../../assets/imgs/visa_logo.png\";\nimport masterCardLogo from \"../../assets/imgs/mastercard_logo.png\";\nimport amexLogo from \"../../assets/imgs/amex_logo.png\";\nimport BtnRP from \"../../assets/imgs/red-pay-logo.png\";\nimport { paymentService } from \"../../services/payment.service\";\nimport { metaPixelService } from \"../../services/metaPixel.service\";\nimport \"./registerServices.scss\";\nimport { FaExclamation, FaKaaba } from \"react-icons/fa\";\nimport { newAccountService } from \"../../services/newAccountService.service\";\nimport swal from \"sweetalert\";\nimport { Form, Row, Col, Input, Button, Select } from \"antd\";\nimport cheque from \"../../assets/imgs/cheque.png\";\n\nexport function FormCheckoutPay(props) {\n  const [datos, setDatos] = useState({\n    cvv: \"\",\n    cardNumber: \"\",\n    firstName: \"\",\n    LastName: \"\",\n    CardExpirationMonth: \"\",\n    CardExpirationYear: \"\",\n    state: \"\",\n    Street2Del: \"\",\n    Street2Col: \"\",\n    City: \"\",\n    PostalCode: \"\",\n    Street: \"\",\n    streetNumber: \"\",\n  });\n  const [cardTypeName, setcardTypeName] = useState(\"\");\n  const [cvvMaxLenght, setcvvMaxLenght] = useState(0);\n  const [cardImage, setCardImage] = useState(Cards);\n  const [cvvPlaceholder, setCvvPlaceholder] = useState(\"xxx\");\n  const [states, setStates] = useState([]);\n  const [showCVV, setShowCVV] = useState(false);\n  const { Option } = Select;\n\n  const handleInputChange = (event) => {\n    if (event.target.name === \"cardNumber\") {\n      let definedCardType = fnGetCardTypeReq(event.target.value);\n      setcardTypeName(definedCardType);\n      datos.cvv = \"\";\n    }\n\n    setDatos({ ...datos, [event.target.name]: event.target.value });\n    props.Datepersonal(\n      {\n        ...datos,\n        [event.target.name]: event.target.value,\n      },\n      \"pay\"\n    );\n  };\n\n  function fnGetCardTypeReq(cardNumber) {\n    const card_american = /^(?:3[47][0-9]{13})$/;\n    const card_visa = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;\n    const card_master =\n      /^5[1-5]\\d{14}$|^2(?:2(?:2[1-9]|[3-9]\\d)|[3-6]\\d\\d|7(?:[01]\\d|20))\\d{12}$/;\n    let cardType = \"\";\n    if (cardNumber.toString().match(card_visa)) {\n      cardType = \"VISA\";\n      setcvvMaxLenght(3);\n      setCardImage(visaLogo);\n      setCvvPlaceholder(\"xxx\");\n    } else if (cardNumber.toString().match(card_master)) {\n      cardType = \"MASTERCARD\";\n      setcvvMaxLenght(3);\n      setCardImage(masterCardLogo);\n      setCvvPlaceholder(\"xxx\");\n    } else if (cardNumber.toString().match(card_american)) {\n      cardType = \"AMERICAN EXPRESS\";\n      setcvvMaxLenght(4);\n      setCardImage(amexLogo);\n      setCvvPlaceholder(\"xxxx\");\n    } else {\n      cardType = \"UNDEFINED\";\n      setcvvMaxLenght(3);\n      setCardImage(Cards);\n      setCvvPlaceholder(\"xxx\");\n    }\n    return cardType;\n  }\n\n  function getCardType(cardNumber) {\n    const card_american = /^(?:3[47][0-9]{13})$/;\n    const card_visa = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;\n    const card_master =\n      /^5[1-5]\\d{14}$|^2(?:2(?:2[1-9]|[3-9]\\d)|[3-6]\\d\\d|7(?:[01]\\d|20))\\d{12}$/;\n    let cardType = \"\";\n    if (cardNumber.match(card_visa)) {\n      cardType = \"001\";\n    } else if (cardNumber.match(card_master)) {\n      cardType = \"002\";\n    } else if (cardNumber.match(card_american)) {\n      cardType = \"003\";\n    }\n    return cardType;\n  }\n\n  async function onFinish() {\n    if (!datos.countryId || datos.countryId == \"\") {\n      return swal({\n        text: \"Falta seleccionar un Estado, revísalo por favor\",\n        icon: \"error\",\n      });\n    }\n\n    var pixelData = {\n      content_category: \"Directorio\",\n      currency: \"MXN\",\n      value: 10.0,\n    };\n    metaPixelService.trackEvent(\"track\", \"AddPaymentInfo\", pixelData);\n    props.Datepersonal(datos, \"pay\");\n    datos.cardType = getCardType(datos.cardNumber);\n\n    const result = await paymentService.verifyCard(\n      datos,\n      props.data.directoryInfoId\n    );\n    if (result.data?.responseCode == 7) {\n      window.location.href = result.data.urlRedirect;\n      //window.open(result.data.urlRedirect, 'targetWindow', `toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=SomeSize,height=SomeSize`);\n      return props.toggleView();\n    }\n\n    if (result.data?.responseCode == 2 || result.data?.responseCode == 8) {\n      swal({ text: \"Tarjeta verificada con éxito\", icon: \"success\" });\n      return props.toggleView();\n    }\n\n    if (result.data?.responseCode == 7) {\n      return props.toggleView();\n    }\n\n    return swal({\n      text: \"No pudimos registrar la tarjeta: datos incorrectos o saldo insuficiente\",\n      icon: \"error\",\n    });\n  }\n\n  useEffect(() => {\n    props.showButtonPackages(false);\n    newAccountService.getStateCatalog().then((states) => {\n      setStates(states);\n    });\n  }, []);\n\n  const handleSelectState = (value) => setDatos({ ...datos, countryId: value });\n\n  return (\n    <>\n      {props.directory.amount == 0 || props.directory.freePost ? (\n        <div className=\"wrapper_mnj_free\">\n          <div className=\"box_mnj_free\">\n            <img\n              src={cheque}\n              alt=\"ya registramos tu servicio... y fue ¡Gratis!\"\n            />\n            <div className=\"sec__info\">\n              <h4>\n                Enhorabuena{\" \"}\n                <span className=\"c_primary\">{props.directory.name}</span>, ya\n                registramos tu servicio... y fue{\" \"}\n                <span className=\"c_blue fst-italic\">¡Gratis!</span>\n              </h4>\n\n              <p className=\"paragraph\">\n                En el <strong className=\"c_blue\">{props.directory.type}</strong>\n                , no es necesario registrar tu información bancaria. Ya que\n                nuestro compromiso es darte difusión y posicionamiento. Si\n                quieres subir de nivel, espéralo próximamente.\n              </p>\n            </div>\n          </div>\n        </div>\n      ) : (\n        <Form\n          className=\"form-pride\"\n          onFinish={onFinish}\n          layout=\"vertical\"\n          autoComplete=\"off\"\n          fields={[\n            {\n              name: [\"cvv\"],\n              value: datos.cvv,\n            },\n          ]}\n        >\n          <Row gutter={16}>\n            <Col sm={12} xs={24}>\n              <div className=\"header\">\n                <h3>Datos de tarjeta</h3>\n              </div>\n            </Col>\n            <Col sm={12} xs={24}>\n              <div className=\"flex-end\">\n                <Button className=\"btn-back\" onClick={props.toBack}>\n                  <i className=\"icon-chevron-left\"></i>\n                  <p>Volver</p>\n                </Button>\n              </div>\n            </Col>\n            <Col md={12} sm={12} xs={24}>\n              <Form.Item\n                label=\"Nombre(s)\"\n                name=\"firstName\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 100,\n                    message: \"Se permiten máximo 100 carácteres\",\n                  },\n                ]}\n              >\n                <Input\n                  size=\"large\"\n                  name=\"firstName\"\n                  onKeyPress={(e) => {\n                    const regex = new RegExp(\"^[a-zA-Z ]+$\");\n                    const key = String.fromCharCode(\n                      !e.charCode ? e.which : e.charCode\n                    );\n                    if (!regex.test(key)) {\n                      e.preventDefault();\n                      return false;\n                    }\n                  }}\n                  maxLength={100}\n                  onChange={handleInputChange}\n                />\n              </Form.Item>\n            </Col>\n            <Col md={12} sm={12} xs={24}>\n              <Form.Item\n                label=\"Apellidos\"\n                name=\"LastName\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 100,\n                    message: \"Se permiten máximo 100 carácteres\",\n                  },\n                ]}\n              >\n                <Input\n                  size=\"large\"\n                  name=\"LastName\"\n                  maxLength={100}\n                  onKeyPress={(e) => {\n                    const regex = new RegExp(\"^[a-zA-Z ]+$\");\n                    const key = String.fromCharCode(\n                      !e.charCode ? e.which : e.charCode\n                    );\n                    if (!regex.test(key)) {\n                      e.preventDefault();\n                      return false;\n                    }\n                  }}\n                  onChange={handleInputChange}\n                />\n              </Form.Item>\n            </Col>\n            <Col lg={12} md={12} sm={24} xs={24}>\n              <Form.Item\n                label=\"Número de tarjeta\"\n                name=\"cardNumber\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 16,\n                    min: 15,\n                    message: \"Faltan dígitos\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"cardNumber\"\n                  type=\"text\"\n                  size=\"large\"\n                  maxLength={16}\n                  minLength={15}\n                  onChange={handleInputChange}\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                />\n              </Form.Item>\n            </Col>\n            <Col lg={4} md={6} sm={8} xs={12}>\n              <Form.Item\n                label=\"Mes Exp.\"\n                name=\"CardExpirationMonth\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 2,\n                    min: 2,\n                    message: \"Se necesitan 2 dígitos\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"CardExpirationMonth\"\n                  type=\"text\"\n                  maxLength={2}\n                  size=\"large\"\n                  minLength={2}\n                  onChange={handleInputChange}\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                />\n              </Form.Item>\n            </Col>\n            <Col lg={4} md={6} sm={8} xs={12}>\n              <Form.Item\n                label=\"Año Exp.\"\n                name=\"CardExpirationYear\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 4,\n                    min: 4,\n                    message: \"Se necesitan 4 dígitos\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"CardExpirationYear\"\n                  type=\"text\"\n                  maxLength={4}\n                  minLength={4}\n                  size=\"large\"\n                  onChange={handleInputChange}\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                />\n              </Form.Item>\n            </Col>\n            <Col lg={4} md={6} sm={8} xs={12}>\n              <Form.Item\n                label=\"CVV\"\n                name=\"cvv\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: cvvMaxLenght,\n                    min: cvvMaxLenght,\n                    message: `Se necesitan ${cvvMaxLenght} dígitos`,\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"cvv\"\n                  type=\"text\"\n                  size=\"large\"\n                  disabled={cvvMaxLenght === 0}\n                  minlength={cvvMaxLenght}\n                  maxLength={cvvMaxLenght}\n                  onChange={handleInputChange}\n                  onFocus={() => setShowCVV(true)}\n                  onBlur={() => setShowCVV(false)}\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                />\n              </Form.Item>\n            </Col>\n            <Col xs={24}>\n              <div className={`card-credit ${showCVV ? \"cvv\" : \"\"}`}>\n                <div className=\"card-credit-front\">\n                  <div className=\"circle1\"></div>\n                  <div className=\"circle2\"></div>\n                  <label>\n                    {datos.firstName ? datos.firstName : \"Nombre\"}{\" \"}\n                    {datos.LastName ? datos.LastName : \"Apellidos\"}\n                  </label>\n                  <div className=\"card-credit-number\">\n                    <p>\n                      {datos.cardNumber\n                        ? datos.cardNumber.match(/.{1,4}/g).join(\" \")\n                        : \"0000-0000-0000-0000\"}\n                    </p>\n                  </div>\n                  <div className=\"card-credit-footer\">\n                    <div className=\"card-credit-date\">\n                      <p>\n                        {datos.CardExpirationMonth\n                          ? datos.CardExpirationMonth\n                          : \"Mes\"}\n                        /\n                        {datos.CardExpirationYear\n                          ? datos.CardExpirationYear\n                          : \"Año\"}\n                      </p>\n                    </div>\n                    <img src={cardImage} alt=\"\" />\n                  </div>\n                </div>\n                <div className=\"card-credit-back\">\n                  <div className=\"line-card\"></div>\n                  <div className=\"cvv-container\">\n                    <span>{datos.cvv ? datos.cvv : \"CVV\"}</span>\n                  </div>\n                </div>\n              </div>\n            </Col>\n            <Col md={8} sm={12} xs={24}>\n              <Form.Item\n                label=\"Estado\"\n                name=\"state\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo Requerido\",\n                  },\n                ]}\n                initialValue={datos.state}\n                hasFeedback\n              >\n                <Select\n                  size=\"large\"\n                  name=\"state\"\n                  defaultValue={\n                    datos.state ? datos.state : \"Seleccionar estado\"\n                  }\n                  onChange={handleSelectState}\n                >\n                  {states.map((state, index) => (\n                    <Option\n                      key={index}\n                      onClick={() =>\n                        setDatos({\n                          ...datos,\n                          state: state.description,\n                          countryId: state.countryStateTypeId,\n                        })\n                      }\n                      value={state.countryId}\n                    >\n                      {state.description}\n                    </Option>\n                  ))}\n                </Select>\n              </Form.Item>\n            </Col>\n            <Col md={8} sm={12} xs={24}>\n              <Form.Item\n                label=\"Delegación\"\n                name=\"Street2Del\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 100,\n                    message: \"Se permiten máximo 100 carácteres\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"Street2Del\"\n                  size=\"large\"\n                  type=\"text\"\n                  onKeyPress={(e) => {\n                    const regex = new RegExp(\"^[a-zA-Z ]+$\");\n                    const key = String.fromCharCode(\n                      !e.charCode ? e.which : e.charCode\n                    );\n                    if (!regex.test(key)) {\n                      e.preventDefault();\n                      return false;\n                    }\n                  }}\n                  maxLength={100}\n                  onChange={handleInputChange}\n                />\n              </Form.Item>\n            </Col>\n            <Col md={8} sm={12} xs={24}>\n              <Form.Item\n                label=\"Colonia\"\n                name=\"Street2Col\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 100,\n                    message: \"Se permiten máximo 100 carácteres\",\n                  },\n                ]}\n              >\n                <Input\n                  name=\"Street2Col\"\n                  type=\"text\"\n                  size=\"large\"\n                  maxLength={100}\n                  onKeyPress={(e) => {\n                    const regex = new RegExp(\"^[a-zA-Z ]+$\");\n                    const key = String.fromCharCode(\n                      !e.charCode ? e.which : e.charCode\n                    );\n                    if (!regex.test(key)) {\n                      e.preventDefault();\n                      return false;\n                    }\n                  }}\n                  onChange={handleInputChange}\n                />\n              </Form.Item>\n            </Col>\n            <Col md={8} sm={12} xs={24}>\n              <Form.Item\n                label=\"Ciudad\"\n                name=\"City\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 100,\n                    message: \"Se permiten máximo 100 carácteres\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"City\"\n                  size=\"large\"\n                  type=\"text\"\n                  onKeyPress={(e) => {\n                    const regex = new RegExp(\"^[a-zA-Z ]+$\");\n                    const key = String.fromCharCode(\n                      !e.charCode ? e.which : e.charCode\n                    );\n                    if (!regex.test(key)) {\n                      e.preventDefault();\n                      return false;\n                    }\n                  }}\n                  maxLength={100}\n                  onChange={handleInputChange}\n                />\n              </Form.Item>\n            </Col>\n            <Col md={4} sm={12} xs={12}>\n              <Form.Item\n                label=\"Código postal\"\n                name=\"PostalCode\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 5,\n                    message: \"Se permiten máximo 5 dígitos\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"PostalCode\"\n                  size=\"large\"\n                  type=\"text\"\n                  maxLength={5}\n                  onChange={handleInputChange}\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                />\n              </Form.Item>\n            </Col>\n            <Col md={8} sm={12} xs={24}>\n              <Form.Item\n                label=\"Calle\"\n                name=\"Street\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 100,\n                    message: \"Se permiten máximo 100 carácteres\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"Street\"\n                  type=\"text\"\n                  size=\"large\"\n                  maxLength={100}\n                  onChange={handleInputChange}\n                />\n              </Form.Item>\n            </Col>\n            <Col md={4} sm={12} xs={12}>\n              <Form.Item\n                label=\"No.\"\n                name=\"streetNumber\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo requerido\",\n                  },\n                  {\n                    max: 5,\n                    message: \"Se permiten máximo 5 dígitos\",\n                  },\n                ]}\n                hasFeedback\n              >\n                <Input\n                  name=\"streetNumber\"\n                  type=\"text\"\n                  size=\"large\"\n                  maxLength={5}\n                  onChange={handleInputChange}\n                  onKeyPress={(e) => {\n                    e = e || window.e;\n                    const charCode = e.keyCode || e.which;\n                    const charStr = String.fromCharCode(charCode);\n                    if (isNaN(charStr)) e.preventDefault();\n                  }}\n                />\n              </Form.Item>\n            </Col>\n            <Col md={12}>\n              <div className=\"badge-pride blue\">\n                <span>\n                  <FaExclamation />\n                </span>\n                <p>\n                  <strong>Nota:</strong> Se genera un micro cargo de $\n                  {props.amountToVerify} para validar tu método de pago, una vez\n                  aprobado el servicio se hará el reembolso del cargo.\n                </p>\n              </div>\n            </Col>\n            <Col md={12}>\n              <div className=\"badge-pride\">\n                <span>\n                  <FaExclamation />\n                </span>\n                <p>\n                  El cobro será efectuado hasta obtener la aprobación de tu\n                  servicio, una vez publicado, el cargo se realizará de forma\n                  automática.\n                </p>\n              </div>\n            </Col>\n            <Col xs={24}>\n              <div className=\"box_foot_checkout\">\n                <span className=\"red__pay\">\n                  <p>Powered by</p>\n                  <img\n                    src={BtnRP}\n                    alt=\"Métodos de pagos en Red Voucher Online, Red Pay Pasarela de pago, México\"\n                  />\n                </span>\n                <Button htmlType=\"submit\" type=\"primary\" className=\"submit\">\n                  Terminar Registro\n                  <i className=\"icon-send\"></i>\n                </Button>\n              </div>\n            </Col>\n          </Row>\n        </Form>\n      )}\n    </>\n  );\n}\n","import React, {useEffect} from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { metaPixelService } from \"../../services/metaPixel.service\";\n\nimport \"./registerServices.scss\";\nimport {FaUser} from \"react-icons/fa\";\n\nexport function MessageFinish() {\n  useEffect(() => {\n    var pixelData = {currency: 'MXN', value: 10.0}\n    metaPixelService.trackEvent('track','Subscribe', pixelData)\n  }, []);\n  return (\n    <div className=\"message-finish\">\n        <h2>¡Ya estás cerca!</h2>\n        <p>\n            Consulta el estatus de tu anuncio en <b>Mi perfil/Servicios publicados</b>\n            <br></br>\n            Visualiza tus servicios publicados en <b>Economía Incluyente</b>\n        </p>\n        <div className=\"message-finish-footer\">\n          <Link to=\"/directory\" className=\"btn-back\">\n              <i className=\"icon-chevron-left\"></i>\n              <p>Ir a Economía Incluyente</p>\n          </Link>\n          <Link to=\"/profile\" className=\"btn-dark\">\n              <p>Mi Perfil</p>\n              <FaUser />\n          </Link>\n        </div>\n    </div>\n  );\n}\n","import { callApi, callApiFileStorage } from \"./service\";\nimport swal from \"sweetalert\";\n\nexport const directoryTypeService ={\n    getDirectoryType\n};\n\nasync function getDirectoryType(){\n    return callApi(`/BackEnd/DirectoryType`, \"GET\").then((result) => {\n        if (result.responseCode == \"00\") {\n          return result.data;\n        } else {\n          return null;\n        }\n      });\n}","import React, { useEffect, useState } from \"react\";\nimport { Link, useHistory, useLocation } from \"react-router-dom\";\nimport { FormPersonal } from \"./formPersonal\";\nimport { FormAdditional } from \"./formAdditional\";\nimport { FormCheckoutPay } from \"./formCheckoutPay\";\nimport { MessageFinish } from \"./messageFinish\";\nimport { directoryInfoService } from \"../../services/directoryService.service\";\nimport { directoryTypeService } from \"../../services/directoryType.service\";\nimport { useParams } from \"react-router-dom\";\nimport \"./registerServices.scss\";\nimport { Col, Row } from \"reactstrap\";\nimport { BsExclamation } from \"react-icons/bs\";\nimport { FooterHome } from \"../../components/footer/footerHome\";\nimport { Steps } from \"antd\";\nimport bg_package from \"../../assets/imgs/bg_package.png\";\nimport bg_package_lt from \"../../assets/imgs/bg_package_lt.png\";\nimport Swal from \"sweetalert2\";\n\nexport function ItemSelectedPackages(myprops) {\n  return (\n    <div className=\"item_selected_packages\">\n      <h5 className=\"mb-1\">\n        {myprops.directoryTypeSelected.directoryTypeName}\n      </h5>\n      <p className=\"c_primary\">\n        {myprops.directoryTypeSelected.shortDescription}\n      </p>\n      <img\n        className=\"bg_pk_lt\"\n        src={bg_package_lt}\n        alt=\"Puetes Economía incluyente\"\n      />\n    </div>\n  );\n}\n\nexport function RegisterServices(props) {\n  const location = useLocation();\n  const dataState = location.state;\n  const [activeStep3, setActiveStep3] = useState(false);\n  const history = useHistory();\n  let { id } = useParams();\n  const [pubToEdit, setPublicationToEdit] = useState({});\n  const [isEdit, setIdEdit] = useState(false);\n  const [loadPicture, setLoadPicture] = useState(false);\n  const [file, setFile] = useState([]);\n  const [dataCompany, setDataCompany] = useState({});\n  const [viewForm, setViewForm] = useState(1);\n  const [items, setItems] = useState([]);\n  const [directoryType, setDirectoryType] = useState([]);\n  const [showButtonPackages, setShowButtonPackages] = useState(true);\n  const [viewPackage, setViewPackage] = useState(true);\n  const [directoryTypeSelected, setDirectoryTypeSelected] = useState({\n    description: \"\",\n    monthlyPrice: 0,\n  });\n  const [isDoneLoadImg, setIsDoneLoadImg] = useState(false);\n  const toggleView = (sec) => {\n    if (viewForm === \"2\") {\n      if ((activeStep3 === true && sec !== \"1\") || sec === \"3\") {\n        subirForm();\n      }\n    }\n    if (viewForm !== sec) setViewForm(sec);\n  };\n\n  const [register, setRegister] = useState({\n    personal: {},\n    additional: {},\n    pay: {},\n  });\n\n  useEffect(() => {\n    if (id !== \"\" && id !== undefined) {\n      setLoadPicture(true);\n      directoryInfoService.getById(id).then((data) => {\n        if (data == null) {\n          Swal.fire({\n            text: \"Lo sentimos, el registro que está buscando no existe o ha sido dado de baja.\",\n            icon: \"error\",\n            didClose: () => {\n              history.push(\"/directory\");\n            },\n          });\n        } else {\n          data.contactImage = Array.isArray(data.contactImage)\n            ? data.contactImage\n            : data.contactImage.split(\",\");\n          setIdEdit(true);\n          setPublicationToEdit(data);\n        }\n      });\n    }\n    getDataCompany();\n  }, []);\n\n  function getDataCompany() {\n    directoryInfoService.getSettingsUser().then((result) => {\n      if (result) {\n        const object = JSON.parse(result.customizeValues);\n        let showDays =\n          result.directoryInfoCount <\n          parseInt(object.NoPost) + result.directoryInfoExceptionFreePost;\n        setDataCompany({\n          NoPost: object.NoPost,\n          NoDaysGrace: object.NoDaysGrace,\n          Amount: object.Amount,\n          AmountToVerify: object.AmountToVerify,\n          HasTax: result.hasTax,\n          DirectoryInfoCount: result.directoryInfoCount,\n          IsShow: showDays,\n          FreePost: object.FreePost,\n        });\n      }\n    });\n  }\n\n  function getDirectoryType() {\n    directoryTypeService.getDirectoryType().then((result) => {\n      if (result) {\n        if (isEdit) {\n          setShowButtonPackages(false);\n          //aqui se agrega al arreglo de archivos\n          let arrayIamge = [];\n          if (Array.isArray(pubToEdit.contactImage))\n            arrayIamge = pubToEdit.contactImage;\n          else arrayIamge.push(pubToEdit.contactImage);\n\n          setUrlImages(arrayIamge);\n          setTriggerEffect(true);\n          let item = result.find(\n            (x) => x.directoryTypeId == pubToEdit.directoryTypeId\n          );\n          handlViewPackage(item);\n        }\n        setDirectoryType(result);\n      }\n    });\n  }\n\n  const [urlImages, setUrlImages] = useState([]);\n  const [triggerEffect, setTriggerEffect] = useState(false);\n\n  useEffect(() => {\n    if (triggerEffect) {\n      let promises = urlImages.map((itemimage) => {\n        if (itemimage != undefined && itemimage != \"\") {\n          let url = new URL(itemimage);\n          let pathname = url.pathname;\n          let nombreArchivo = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n\n          return fetch(itemimage)\n            .then((response) => response.blob())\n            .then((blob) => {\n              // Aquí es donde convertimos el Blob en un File\n              let file = new File([blob], nombreArchivo, {\n                type: blob.type,\n                lastModified: new Date(),\n              });\n              return file;\n            });\n        }\n      });\n\n      if (promises.length > 0) {\n        Promise.all(promises)\n          .then((files) => {\n            setShowButtonPackages(dataState.isPay ? true : false);\n\n            setIsDoneLoadImg(true);\n            setFile(files);\n          })\n          .catch((error) => console.error(\"Error:\", error));\n      } else {\n        setShowButtonPackages(dataState.isPay ? true : false);\n\n        setIsDoneLoadImg(true);\n      }\n    }\n  }, [triggerEffect]);\n\n  useEffect(() => {\n    if (dataCompany.FreePost != undefined) {\n      if (dataCompany.FreePost) {\n        setActiveStep3(false);\n      } else {\n        setActiveStep3(true);\n      }\n\n      getDirectoryType();\n    }\n  }, [dataCompany]);\n\n  function Datepersonal(event, name) {\n    const prevRegister = register;\n    prevRegister[name] = event;\n    setRegister(prevRegister);\n  }\n\n  function subirForm() {\n    if (register.personal.contacto2 === \"\" || register.personal.contacto2 === 0)\n      register.personal.contacto2 = null;\n    let directoryContacts = [\n      {\n        contactTypeId: 1,\n        contactValue: register.personal.contacto1,\n        directoryContactId: register.personal?.contacto1DirectoryContactId,\n      },\n      {\n        contactTypeId: 1,\n        contactValue: register.personal.contacto2,\n        directoryContactId: register.personal?.contacto1optDirectoryContactId,\n      },\n      {\n        contactTypeId: 2,\n        contactValue: register.personal.correo,\n        directoryContactId: register.personal?.contacto2DirectoryContactId,\n      },\n    ];\n\n    if (register.additional?.website) {\n      directoryContacts.push({\n        contactTypeId: 3,\n        contactValue: register.additional?.website,\n        directoryContactId: register.additional?.websiteId,\n      });\n    }\n    if (register.additional?.linkedin) {\n      directoryContacts.push({\n        contactTypeId: 4,\n        contactValue: register.additional?.linkedin,\n        directoryContactId: register.additional?.linkedinId,\n      });\n    }\n    if (register.additional?.facebook) {\n      directoryContacts.push({\n        contactTypeId: 5,\n        contactValue: register.additional?.facebook,\n        directoryContactId: register.additional?.facebookId,\n      });\n    }\n    if (register.additional?.twitter) {\n      directoryContacts.push({\n        contactTypeId: 6,\n        contactValue: register.additional?.twitter,\n        directoryContactId: register.additional?.twitterId,\n      });\n    }\n    if (register.additional?.instagram) {\n      directoryContacts.push({\n        contactTypeId: 7,\n        contactValue: register.additional?.instagram,\n        directoryContactId: register.additional?.instagramId,\n      });\n    }\n    if (register.additional?.tiktok) {\n      directoryContacts.push({\n        contactTypeId: 8,\n        contactValue: register.additional?.tiktok,\n        directoryContactId: register.additional?.tiktokId,\n      });\n    }\n\n    const formData = new FormData();\n    formData.append(\"CompanyId\", process.env.REACT_APP_COMPANY);\n    formData.append(\"title\", \"lic.\");\n    formData.append(\"fullName\", register.personal.nombre);\n    formData.append(\"directoryDescription\", register.personal.descripcion);\n    formData.append(\"location\", register.personal.location);\n    formData.append(\"categoryServiceId\", register.personal.categoria);\n    formData.append(\"subCategoryServiceId\", register.personal.subcategoria);\n    formData.append(\"createUser\", localStorage.getItem(\"userId\"));\n    formData.append(\n      \"directoryTypeId\",\n      directoryTypeSelected.directoryTypeId\n        ? directoryTypeSelected.directoryTypeId\n        : 0\n    );\n\n    file.forEach((element) => {\n      formData.append(\"contactImage\", element);\n    });\n\n    directoryContacts.forEach((item, index) => {\n      formData.append(\n        `directoryContacts[${index}].contactTypeId`,\n        item.contactTypeId\n      );\n      formData.append(\n        `directoryContacts[${index}].contactValue`,\n        item.contactValue\n      );\n      if (item.directoryContactId) {\n        formData.append(\n          `directoryContacts[${index}].directoryContactId`,\n          item.directoryContactId\n        );\n      }\n    });\n\n    if (isEdit) {\n      formData.append(\"directoryInfoId\", pubToEdit.directoryInfoId);\n      directoryInfoService.updateDirectory(formData).then((result) => {\n        if (activeStep3 && id !== \"\" && id !== undefined) {\n          console.log(\"dataState\", dataState);\n          if (\n            dataState != undefined &&\n            dataState.isPay &&\n            id == result.data.directoryInfoId\n          )\n            setPublicationToEdit(result.data);\n          else\n            history.push(\n              dataState?.origin !== undefined ? dataState.origin : \"/directory\"\n            );\n        }\n        if (result?.data) setPublicationToEdit(result.data);\n      });\n    } else\n      directoryInfoService.insertDirectory(formData).then((result) => {\n        if (result?.data) {\n          setIsDoneLoadImg(true);\n          setPublicationToEdit(result.data);\n        }\n        const newResult = register;\n        const lstContact = result.data.directoryContacts.filter(\n          (element) => element.contactTypeId === 1\n        );\n        if (lstContact.length > 0)\n          newResult.personal.contacto1DirectoryContactId =\n            lstContact[0].directoryContactId;\n        const lstContact2 = result.data.directoryContacts.filter(\n          (element) => element.contactTypeId === 2\n        );\n        if (lstContact2.length > 0)\n          newResult.personal.contacto2DirectoryContactId =\n            lstContact2[0].directoryContactId;\n        setRegister(newResult);\n        setIdEdit(true);\n      });\n  }\n\n  const steps = [\n    {\n      title: \"Información Personal y Profesional\",\n    },\n    {\n      title: \"Información adicional\",\n    },\n    {\n      title: \"Datos de tarjeta\",\n    },\n  ];\n  const steps2 = [\n    {\n      title: \"Información Personal y Profesional\",\n    },\n    {\n      title: \"Información adicional\",\n    },\n  ];\n\n  useEffect(() => {\n    if (activeStep3 == true) {\n      setItems(\n        steps.map((item) => ({\n          key: item.title,\n          title: item.title,\n        }))\n      );\n    } else {\n      setItems(\n        steps2.map((item) => ({\n          key: item.title,\n          title: item.title,\n        }))\n      );\n    }\n  }, [activeStep3]);\n\n  const handlViewPackage = (item) => {\n    if (item != undefined) {\n      let newItem = { ...item }; // Crear una copia del item para evitar la mutación directa\n      if (newItem.monthlyPrice > 0) {\n        let amount = newItem.monthlyPrice.toLocaleString(\"es-MX\", {\n          style: \"currency\",\n          currency: \"MXN\",\n        });\n        amount += dataCompany.HasTax === true ? \" más IVA\" : \"\";\n        newItem.description = newItem.description.replace(\"@Amount\", amount);\n      } else {\n        newItem.description = newItem.description.replace(\"@Amount\", \"gratis\");\n      }\n\n      setDirectoryTypeSelected(newItem);\n      setViewPackage(false);\n    }\n  };\n\n  const deleteFile = (index) => {\n    let currentFiles = [...file];\n    // Elimina el archivo en el índice especificado\n    currentFiles.splice(index, 1);\n\n    // Actualiza el estado con el nuevo arreglo\n    setFile(currentFiles);\n  };\n\n  const filterIfIsFreePost = (directoryType) => {\n    return dataCompany.FreePost\n      ? directoryType.filter((x) => x.monthlyPrice == 0)\n      : directoryType;\n  };\n\n  return (\n    <>\n      {(!isEdit && viewPackage) ||\n      (dataState?.isPay &&\n        isEdit &&\n        viewPackage &&\n        pubToEdit?.directoryTypeId != undefined) ? (\n        <section className=\"dashboard-container-page wrapper_page_packages_inclusive\">\n          <div className=\" d-flex-between\">\n            <h2>Economía Incluyente</h2>\n            <Link to=\"/directory\" className=\"btn-back\">\n              <i className=\"icon-chevron-left\"></i>\n              <p>Regresar</p>\n            </Link>\n          </div>\n          <div className=\"sec_ttl_top text-center\">\n            <p>Selecciona el paquete de tu preferencia</p>\n            <h1>Paquetes Economía incluyente </h1>\n            <h3>\"Lo quiero, lo tengo\" </h3>\n          </div>\n          <div className=\"sec_contain_items_packages row\">\n            {directoryType\n              ? filterIfIsFreePost(directoryType).map((itemType) => {\n                  return (\n                    <article\n                      className=\"box_item_packages col-md-3 col-sm-6\"\n                      key={`typeId${itemType.directoryTypeId}`}\n                    >\n                      <div className=\"item_packages \">\n                        <div className=\"info_items_packages\">\n                          <h3 className=\"ttl_name_pack\">\n                            {itemType.directoryTypeName}\n                          </h3>\n                          <p className=\"c_primary\">\n                            {itemType.shortDescription}\n                          </p>\n                        </div>\n                        <div className=\"details_items_packages\">\n                          <ul className=\"details_ul_items\">\n                            {itemType.benefits &&\n                              JSON.parse(itemType.benefits).map(\n                                (beneficio, index) => {\n                                  return (\n                                    <li\n                                      key={`benefit${itemType.directoryTypeId}${index}`}\n                                    >\n                                      <i className=\"fa-solid fa-circle-check\"></i>{\" \"}\n                                      <span>{beneficio}</span>{\" \"}\n                                    </li>\n                                  );\n                                }\n                              )}\n                          </ul>\n                        </div>\n                        <div className=\"actions_item_packages\">\n                          <h1>\n                            {itemType.monthlyPrice == 0\n                              ? \"¡Gratis!\"\n                              : itemType.monthlyPrice.toLocaleString(\"es-MX\", {\n                                  style: \"currency\",\n                                  currency: \"MXN\",\n                                })}\n                          </h1>\n                          <div className=\"text-center\">\n                            <button\n                              className=\"btn--dark trans\"\n                              onClick={() => handlViewPackage(itemType)}\n                            >\n                              Obtener Plan\n                            </button>\n                          </div>\n                        </div>\n                        <img\n                          src={bg_package}\n                          alt=\"Paquetes Economía incluyente\"\n                        />\n                      </div>\n                    </article>\n                  );\n                })\n              : \"\"}\n          </div>\n          <FooterHome />\n        </section>\n      ) : !isEdit || (isEdit && isDoneLoadImg) ? (\n        <section className=\"dashboard-container-page\">\n          <Row>\n            <Col lg={12} className=\"d-flex-between\">\n              <h2 className=\"d-flex-start\">\n                <Link\n                  to=\"/directory\"\n                  className=\"btn-back-post register_services\"\n                >\n                  <i className=\"icon-chevron-left\"></i>\n                </Link>\n                Registro de servicios\n              </h2>\n              {showButtonPackages ? (\n                <button\n                  onClick={() => setViewPackage(!viewPackage)}\n                  className=\"btn-back\"\n                >\n                  <i className=\"icon-chevron-left\"></i>\n                  <p>Cambiar Paquete</p>\n                </button>\n              ) : (\n                \"\"\n              )}\n            </Col>\n            {dataCompany.FreePost || directoryTypeSelected.monthlyPrice == 0 ? (\n              <Col xl={3} lg={4} md={12} sm={12}>\n                <aside className=\"register-services-aside\">\n                  <ItemSelectedPackages\n                    directoryTypeSelected={directoryTypeSelected}\n                  />\n\n                  <div className=\"icon\">\n                    <BsExclamation />\n                  </div>\n                  <div className=\"paragraph\">\n                    <p\n                      dangerouslySetInnerHTML={{\n                        __html: directoryTypeSelected.description + \"<br />\",\n                      }}\n                    ></p>\n                  </div>\n                  <h3 className=\"text-center c_primary mt-4\">¡Disfrútalo!</h3>\n                </aside>\n              </Col>\n            ) : (\n              <Col xl={3} lg={4} md={12} sm={12}>\n                <aside className=\"register-services-aside\">\n                  <ItemSelectedPackages\n                    directoryTypeSelected={directoryTypeSelected}\n                  />\n\n                  <div className=\"icon\">\n                    <BsExclamation />\n                  </div>\n                  <div className=\"ticker-wrap mb-3\">\n                    <div className=\"ticker\">\n                      <div className=\"ticker__item\">\n                        {dataCompany?.IsShow ? (\n                          <h5>\n                            ¡PrideMx te da los primeros{\" \"}\n                            {dataCompany.NoDaysGrace} días gratis!\n                          </h5>\n                        ) : (\n                          \"\"\n                        )}\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"paragraph mb-4\">\n                    <p\n                      dangerouslySetInnerHTML={{\n                        __html: directoryTypeSelected.description + \"<br />\",\n                      }}\n                    ></p>\n                  </div>\n                  <p>\n                    En caso de requerir factura solicitarla a:{\" \"}\n                    <a href=\"mailto:facturacion@pridemx.com\">\n                      facturacion@pridemx.com\n                    </a>\n                  </p>\n                </aside>\n              </Col>\n            )}\n            <Col xl={9} lg={8} md={12} sm={12}>\n              <section className=\"register-services-content\">\n                <article className=\"register-services-content-steps\">\n                  {activeStep3 === false ? (\n                    <>\n                      {\n                        {\n                          1: <Steps current={0} items={items} />,\n                          2: <Steps current={1} items={items} />,\n                          3: <Steps current={3} items={items} />,\n                        }[viewForm]\n                      }\n                    </>\n                  ) : (\n                    <>\n                      {\n                        {\n                          1: <Steps current={0} items={items} />,\n                          2: <Steps current={1} items={items} />,\n                          3: <Steps current={2} items={items} />,\n                          4: <Steps current={3} items={items} />,\n                        }[viewForm]\n                      }\n                    </>\n                  )}\n                </article>\n                <article className=\"register-services-content-form\">\n                  {activeStep3 === false ? (\n                    <>\n                      {\n                        {\n                          1: (\n                            <FormPersonal\n                              data={pubToEdit}\n                              register={register}\n                              viewForm={viewForm}\n                              loadPicture={loadPicture}\n                              setLoadPicture={setLoadPicture}\n                              setFile={setFile}\n                              deleteImage={deleteFile}\n                              Datepersonal={Datepersonal}\n                              toggleView={() => toggleView(\"2\")} //sig\n                              activeTab3={false}\n                              quantityImage={\n                                directoryTypeSelected &&\n                                directoryTypeSelected.quantityImage\n                                  ? directoryTypeSelected.quantityImage\n                                  : 1\n                              }\n                              showButtonPackages={setShowButtonPackages}\n                            />\n                          ),\n                          2: (\n                            <FormAdditional\n                              viewForm={viewForm}\n                              data={pubToEdit}\n                              register={register}\n                              Datepersonal={Datepersonal}\n                              toBack={() => toggleView(\"1\")}\n                              toggleView={() => toggleView(\"3\")}\n                              activeTab3={false}\n                            />\n                          ),\n                          3: (\n                            <FormCheckoutPay\n                              amountToVerify={dataCompany.AmountToVerify}\n                              viewForm={viewForm}\n                              data={pubToEdit}\n                              Datepersonal={Datepersonal}\n                              toggleView={() => toggleView(\"4\")}\n                              toBack={() => toggleView(\"2\")}\n                              showButtonPackages={setShowButtonPackages}\n                              directory={{\n                                name: register.personal.nombre,\n                                type: directoryTypeSelected\n                                  ? directoryTypeSelected.shortDescription\n                                  : \"\",\n                                amount: directoryTypeSelected\n                                  ? directoryTypeSelected.monthlyPrice\n                                  : 0,\n                                freePost: dataCompany.FreePost,\n                              }}\n                            />\n                          ),\n                        }[viewForm]\n                      }\n                    </>\n                  ) : (\n                    <div className=\"form_info_service\">\n                      {\n                        {\n                          1: (\n                            <FormPersonal\n                              data={pubToEdit}\n                              register={register}\n                              viewForm={viewForm}\n                              loadPicture={loadPicture}\n                              setLoadPicture={setLoadPicture}\n                              setFile={setFile}\n                              deleteImage={deleteFile}\n                              Datepersonal={Datepersonal}\n                              toggleView={() => toggleView(\"2\")} //sig\n                              activeTab3={true}\n                              quantityImage={\n                                directoryTypeSelected &&\n                                directoryTypeSelected.quantityImage\n                                  ? directoryTypeSelected.quantityImage\n                                  : 1\n                              }\n                              showButtonPackages={setShowButtonPackages}\n                            />\n                          ),\n                          2: (\n                            <FormAdditional\n                              viewForm={viewForm}\n                              data={pubToEdit}\n                              register={register}\n                              Datepersonal={Datepersonal}\n                              toggleView={() => toggleView(\"3\")}\n                              toBack={() => toggleView(\"1\")}\n                              activeTab3={true}\n                            />\n                          ),\n                          3: (\n                            <FormCheckoutPay\n                              amountToVerify={dataCompany.AmountToVerify}\n                              viewForm={viewForm}\n                              data={pubToEdit}\n                              Datepersonal={Datepersonal}\n                              toggleView={() => toggleView(\"4\")}\n                              toBack={() => toggleView(\"2\")}\n                              showButtonPackages={setShowButtonPackages}\n                              directory={{\n                                name: register.personal.nombre,\n                                type: directoryTypeSelected\n                                  ? directoryTypeSelected.shortDescription\n                                  : \"\",\n                                amount: directoryTypeSelected\n                                  ? directoryTypeSelected.monthlyPrice\n                                  : 0,\n                                freePost: dataCompany.FreePost,\n                              }}\n                            />\n                          ),\n                          4: <MessageFinish />,\n                        }[viewForm]\n                      }\n                    </div>\n                  )}\n                </article>\n              </section>\n            </Col>\n          </Row>\n          <FooterHome />\n        </section>\n      ) : (\n        \"\"\n      )}\n    </>\n  );\n}\n","import React from \"react\";\nimport './cardTokenizationResult.scss';\nimport { useParams } from \"react-router-dom/cjs/react-router-dom.min\";\nimport { Link } from \"react-router-dom/cjs/react-router-dom\";\nimport {FaUser} from \"react-icons/fa\";\n\nexport function CardTokenizationResult() {\n    const { isSuccess } = useParams();\n    console.log(isSuccess);\n    return (\n        <>\n            <div class=\"container-msg\">\n                <div class=\"result-card\">\n                    {isSuccess == \"true\" ?\n                        <>\n                            <svg class=\"result-svg\" viewBox=\"0 0 130.2 130.2\">\n                                <circle class=\"path circle\" fill=\"#2EBF19\" cx=\"65.1\" cy=\"65.1\" r=\"62.1\" />\n                                <polyline class=\"path check\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"12\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" points=\"100.2,40.2 51.5,88.8 29.8,67.5 \" />\n                            </svg>\n                            <div class=\"result-card-body\">\n                                <h2 class=\"card-title\">Tarjeta verificada con éxito</h2>\n                            </div>\n                        </>\n                        :\n                        <>\n                            <svg class=\"result-svg\" viewBox=\"0 0 130.2 130.2\">\n                                <circle class=\"path circle\" fill=\"#FF002A\" cx=\"65.1\" cy=\"65.1\" r=\"62.1\" />\n                                <line class=\"path line\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"12\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"34.4\" y1=\"37.9\" x2=\"95.8\" y2=\"92.3\" />\n                                <line class=\"path line\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"12\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"95.8\" y1=\"38\" x2=\"34.4\" y2=\"92.2\" />\n                            </svg>\n                            <div class=\"result-card-body\">\n                                <h2 class=\"card-title\">Tarjeta rechazada</h2>\n                                <p>Los datos son inválidos o el saldo es insuficiente.</p>\n                            </div>\n                        </>\n                    }\n                    <Link to=\"/profile\" className=\"btn-dark return-button\">\n                        <p>Ir a Mi Perfil</p>\n                        <FaUser />\n                    </Link>\n                </div>\n            </div>\n        </>\n    );\n}\n","import React from \"react\";\nimport { RegisterAside } from \"./registerAside\";\nimport { NoticeMessage } from \"./noticeMessage\";\nimport { RegisterHeader } from \"./registerHeader\";\nimport { FooterFull } from \"../../components/footer/footerFull\";\nimport \"./register.scss\";\n\nexport const SuccessfulReg = () => {\n  return (\n    <section className=\"register__container\">\n      <article className=\"register__form\">\n        <div className=\"-form-light\">\n          <RegisterHeader\n            title={\"¡Te has registrado!\"}\n            subtitle={\"exitosamente\"}\n          />\n          <NoticeMessage\n            title=\"Registro Exitoso\"\n            subtitle=\"¡Ya eres parte de nuestra comunidad!\"\n            message=\"Te enviamos un link de confirmación a tu correo electrónico, por favor verifícalo para iniciar sesión\"\n            success={1}\n          />\n        </div>\n        <RegisterAside />\n      </article>\n      <FooterFull />\n    </section>\n  );\n};\n","import React, {useEffect, useState, forwardRef, useImperativeHandle, useRef} from 'react';\nimport { companyPostService } from '../../services/companyPost.service';\nimport {Button, Input, Space, Table} from \"antd\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport moment from \"moment/moment\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport MySwal from \"sweetalert2\";\nimport dayjs from \"dayjs\";\n\nconst SearchGalleries = forwardRef((props, ref) => {\n\n    const [dataGrid, setDataGrid] = useState([]);\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    useImperativeHandle(ref, () => ({\n        refreshDataGrid: refreshDataGrid\n    }));\n\n    const handleDelete = (event, data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                companyPostService.deletet(data).then((result) => getAll());\n        })\n    };\n\n    async function getAll() {\n        companyPostService.getAll(1)\n            .then((result) => {\n                if (result) setDataGrid(result);\n            });\n    }\n\n    const refreshDataGrid = () => getAll();\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{marginBottom: 8, display: 'block',}}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined style={{color: filtered ? '#1677ff' : undefined,}}/>\n        ),\n        onFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) setTimeout(() => searchInput.current?.select(), 100);\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{backgroundColor: '#ffc069', padding: 0,}}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (text),\n    });\n\n    const columns = [\n        {\n            title: 'Título de álbum',\n            dataIndex: 'title',\n            key: 'title',\n            ...getColumnSearchProps('title'),\n        },\n        {\n            title: 'Fecha de publicación',\n            dataIndex: 'date',\n            key: 'date',\n            sorter: (a, b) => moment(a.date).unix() - moment(b.date).unix(),\n        },\n        {\n            title: 'Elementos',\n            dataIndex: 'elements',\n            key: 'elements',\n            sorter: (a, b) => {\n                if(a.elements < b.elements) {\n                    return -1;\n                }\n                if(a.elements > b.elements) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const data = dataGrid.map((item,i) => {\n        return {\n            key: i,\n            title: item.title,\n            date: dayjs(item.publishDate).format('DD/MMM/YYYY'),\n            elements: `${item.galleryImageCount} Elemento(s)`,\n            options: <Space>\n                <Button\n                    type={'primary'}\n                    htmlType={'button'}\n                    className=\"edit\"\n                    onClick={(event) => props.handleRowSelect(item)}\n                >\n                    <FaEdit />\n                </Button>\n                {item.active ?\n                    <>\n                        <Button\n                            type={'primary'}\n                            htmlType={'button'}\n                            className=\"delete\"\n                            onClick={(event) => handleDelete(event, item)}\n                        >\n                            <FaTrash />\n                        </Button>\n                    </>\n                    : null\n                }\n            </Space>\n        };\n    })\n\n    useEffect(() => {\n        getAll();\n    }, []);\n\n    return (\n        <>\n            <Table\n                dataSource={data}\n                columns={columns}\n                className={'table-admin'}\n                scroll={{ x: '992px', y: 800 }}\n                locale={{\n                    triggerDesc: 'Ordenamiento descendente',\n                    triggerAsc: 'Ordenamiento ascedente',\n                    cancelSort: 'Cancelar ordenamiento',\n                    emptyText: 'Sin registros',\n                }}\n            />\n        </>\n    );\n\n});\n\nexport default SearchGalleries;\n","import React, { useRef, useState } from \"react\";\nimport {\n  Col,\n  Form,\n  FormGroup,\n  Label,\n  Input,\n  Row,\n  Card,\n  CardImg,\n  CardTitle,\n  Button,\n  CardColumns,\n  Table,\n} from \"reactstrap\";\nimport useInputSingleForm from \"../../components/CustonHooks/inputFormHook\";\nimport { GeneralUpload } from \"../../components/Helpers/generalUpload\";\nimport { storageService } from \"../../services/storage.service\";\nimport SearchGalleries from \"../../components/companyPost/searchGalleries\";\nimport { companyPostService } from \"../../services/companyPost.service\";\nimport { SelectCustom } from \"../../components/Helpers/SelectCustom\";\n\nexport function AdminGallery() {\n  let companyInit = {\n    CompanyPostId: 0,\n    Title: \"\",\n    Subtitle: \"\",\n    Text: \"\",\n    DepartmentId: 0,\n    JobRoleId: 0,\n  };\n  const [localfiles, setLocalFiles] = useState([]);\n  const [showEdit, setShowEdit] = useState(false);\n  const [dataUsers, setDataUsers] = useState([]);\n  const [userSelec, setuserSelec] = useState([]);\n  const [images, setImages] = useState([]);\n  const [postType, setPostType] = useState(1);\n  const [newImages, setNewImages] = useState([]);\n  const [selectedItem, setSelectedItem] = useState({});\n  const gridRef = useRef();\n  const onSave = () => {\n    let model = {\n      CompanyPostId: parseInt(inputs.CompanyPostId),\n      Title: inputs.Title,\n      Subtitle: inputs.Subtitle,\n      Text: inputs.Text,\n      PostType: postType,\n      ListUser: userSelec,\n    };\n\n    if (parseInt(inputs.CompanyPostId) === 0) {\n      companyPostService.create(model, localfiles).then((result) => {\n        gridRef.current.refreshDataGrid();\n      });\n    } else {\n      companyPostService.update(model, localfiles).then((result) => {\n        gridRef.current.refreshDataGrid();\n      });\n    }\n    setuserSelec([]);\n    setDataUsers([]);\n    setInputs({});\n    setShowEdit(false);\n    setLocalFiles([]);\n    setPostType(1);\n    setImages([]);\n    setSelectedItem({});\n  };\n  const { inputs, handleInputChange, handleSubmit, setInputs } =\n    useInputSingleForm(onSave, {});\n\n  const handleOnCancel = () => {\n    setInputs({});\n    setShowEdit(false);\n    setuserSelec([]);\n    setDataUsers([]);\n    setLocalFiles([]);\n    setPostType(1);\n    setImages([]);\n    setSelectedItem({});\n  };\n\n  const handleOnChangeFile = (files) => {\n    setLocalFiles(files);\n  };\n\n  const handleOnNewGallery = () => {\n    setInputs(companyInit);\n    setShowEdit(true);\n    setuserSelec([]);\n    setDataUsers([]);\n    setImages([]);\n    setLocalFiles([]);\n    setPostType(1);\n    setSelectedItem({});\n  };\n  const handleRowSelect = (gridItem) => {\n    setShowEdit(true);\n    setPostType(gridItem.postType);\n    setSelectedItem(gridItem);\n\n    setInputs({\n      CompanyPostId: gridItem.companyPostId,\n      Title: gridItem.title,\n      Subtitle: gridItem.subtitle,\n      Text: gridItem.text,\n      PostType: gridItem.postType,\n    });\n    companyPostService\n      .getCompanyPostImagesPathById(gridItem.companyPostId)\n      .then((result) => {\n        setImages(result.files);\n      });\n  };\n\n  const handleOnSearch = () => {\n    let model = {\n      DepartmentId: parseInt(\n        inputs.DepartmentId === \"\" ? 0 : inputs.DepartmentId\n      ),\n      JobRoleId: parseInt(inputs.JobRoleId === \"\" ? 0 : inputs.JobRoleId),\n    };\n    companyPostService.getPostUsers(model).then((result) => {\n      if (result) {\n        setDataUsers(result);\n      }\n    });\n  };\n\n  const handleSelectUser = (event, data) => {\n    if (event.target.checked) {\n      setuserSelec([\n        ...userSelec,\n        { UserProfileId: data.userProfileId, EmployeeNo: data.employeeNo },\n      ]);\n    } else {\n      let result = userSelec.filter(\n        (item) => item.UserProfileId !== data.userProfileId\n      );\n      setuserSelec(result);\n    }\n    event.stopPropagation();\n  };\n\n  const handleDeleteImageGallery = (entityId, entityTypeId, sequence) => {\n    storageService.deleteStorage({\n      EntityId: entityId,\n      EntityTypeId: entityTypeId,\n      Sequence: sequence,\n    });\n    setImages(\n      images.filter(function (image) {\n        return image.sequence !== sequence;\n      })\n    );\n  };\n  const handleChangeImageGallery = (entityId, entityTypeId, sequence) => {\n    var data = newImages.filter((image) => image.sequence === sequence);\n    if (data && data.length > 0) {\n      storageService.updateStorage(\n        { EntityId: entityId, EntityTypeId: entityTypeId, Sequence: sequence },\n        data[0].file\n      );\n      companyPostService\n        .getCompanyPostImagesPathById(entityId)\n        .then((result) => {\n          setImages(result.files);\n        });\n    }\n  };\n  const handleImageGallerySelected = (\n    event,\n    entityId,\n    entityTypeId,\n    sequence\n  ) => {\n    let imageList = [];\n    if (event.target.files !== null && event.target.files.length > 0) {\n      var targetfiles = event.target.files;\n      imageList = [\n        ...newImages.filter((image) => image.sequence !== sequence),\n        { sequence: sequence, file: targetfiles[0] },\n      ];\n      setNewImages(imageList);\n    }\n  };\n\n  return (\n    <Row>\n      <Col xs=\"2\">\n        <table>\n          <thead>\n            <tr>\n              <th>Galer�a</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <th>\n                <SearchGalleries\n                  handleRowSelect={handleRowSelect}\n                  ref={gridRef}\n                  postType={1}\n                />\n              </th>\n            </tr>\n          </tbody>\n        </table>\n      </Col>\n      <Col xs=\"8\">\n        <div>\n          <Label for=\"Title\">{selectedItem.title}</Label>\n          <br />\n          <Label for=\"Title\">{selectedItem.galleryImageCount} Elementos</Label>\n        </div>\n        {showEdit ? (\n          <FormGroup row>\n            <CardColumns>\n              {images.map((image, index) => (\n                <Card body key={index}>\n                  <CardTitle>{image.fileName}</CardTitle>\n                  <CardImg\n                    top\n                    src={image.path}\n                    style={{ width: \"350px\" }}\n                    alt=\"Card image cap\"\n                  />\n                  <Button\n                    type=\"button\"\n                    onClick={() =>\n                      handleDeleteImageGallery(\n                        image.entityId,\n                        image.entityTypeId,\n                        image.sequence\n                      )\n                    }\n                  >\n                    Delete\n                  </Button>\n                  <Row>\n                    <Input\n                      type=\"file\"\n                      onChange={(event) =>\n                        handleImageGallerySelected(\n                          event,\n                          image.entityId,\n                          image.entityTypeId,\n                          image.sequence\n                        )\n                      }\n                    />\n                    <Button\n                      type=\"button\"\n                      onClick={() =>\n                        handleChangeImageGallery(\n                          image.entityId,\n                          image.entityTypeId,\n                          image.sequence\n                        )\n                      }\n                    >\n                      Change Image\n                    </Button>\n                  </Row>\n                </Card>\n              ))}\n            </CardColumns>\n          </FormGroup>\n        ) : null}\n      </Col>\n      <Col xs=\"2\">\n        <Button type=\"button\" onClick={handleOnNewGallery}>\n          Add\n        </Button>\n        {showEdit ? (\n          <Form onSubmit={handleSubmit}>\n            <FormGroup row>\n              <Label for=\"Title\">Nombre de álbum</Label>\n              <Input\n                name=\"Title\"\n                placeholder=\"Nombre de �lbum\"\n                onChange={handleInputChange}\n                value={inputs.Title}\n              ></Input>\n            </FormGroup>\n            <GeneralUpload\n              TitleLabel={\"Image\"}\n              handleOnChangeFiles={handleOnChangeFile}\n              IsMultipe={true}\n            />\n            {inputs.CompanyPostId == 0 ? (\n              <div>\n                <FormGroup row>\n                  <Label>Para:</Label>\n                </FormGroup>\n                <FormGroup row>\n                  <Label for=\"DepartmentId\">Department</Label>\n                  <SelectCustom\n                    selectName=\"DepartmentId\"\n                    handleOnChange={handleInputChange}\n                    selectValue={inputs.DepartmentId}\n                    method=\"Department\"\n                    textField=\"departmentName\"\n                    valueField=\"departmentId\"\n                  />\n                </FormGroup>\n\n                <FormGroup row>\n                  <Label for=\"JobRoleId\">Role</Label>\n                  <SelectCustom\n                    selectName=\"JobRoleId\"\n                    handleOnChange={handleInputChange}\n                    selectValue={inputs.JobRoleId}\n                    method=\"JobRole\"\n                    textField=\"name\"\n                    valueField=\"jobRoleId\"\n                  />\n                </FormGroup>\n                <button type=\"button\" onClick={handleOnSearch}>\n                  Search\n                </button>\n                <Table>\n                  <thead>\n                    <tr>\n                      <th>Employee No</th>\n                      <th>Name</th>\n                      <th>Estatus</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {dataUsers.map((item) => (\n                      <tr key={item.userProfileId}>\n                        <td>{item.employeeNo}</td>\n                        <td>\n                          {item.middleName} {item.lastName} {item.firstName}\n                        </td>\n                        <td>{item.active ? \"Active\" : \"Inactive\"}</td>\n                        <td>\n                          <Input\n                            type=\"checkbox\"\n                            name=\"Selected\"\n                            onClick={(event) => handleSelectUser(event, item)}\n                          />\n                        </td>\n                      </tr>\n                    ))}\n                  </tbody>\n                </Table>\n              </div>\n            ) : null}\n            <input type=\"submit\" value=\"Submit\" />\n            <Button type=\"button\" onClick={handleOnCancel}>\n              Cancel\n            </Button>\n\n            <FormGroup row>\n              <Label for=\"Title\">Nombre de álbum</Label>\n              <br />\n              <Label for=\"Title\">{selectedItem.title}</Label>\n              <br />\n              <Label for=\"Title\">Creado el {selectedItem.publishDate}</Label>\n              <br />\n              {/* <Label for=\"Title\">Por {selectedItem.writter}</Label><br /> */}\n              <Label for=\"Title\">\n                {selectedItem.galleryImageCount} Elementos\n              </Label>\n              <br />\n            </FormGroup>\n          </Form>\n        ) : null}\n      </Col>\n    </Row>\n  );\n}\n","import { callApi } from './service'\n\nexport const attendeeService = {\n    getAttendeeUsers\n};\n\nasync function getAttendeeUsers(targetId, eventType) {\n    return callApi(`/backoffice/Attendee/${targetId}/${eventType}`, 'GET')\n        .then((result) => {\n            if (result.responseCode === '00') {\n                return result.data;\n            } else {\n                console.log(result.responseMessage);\n                return [];\n            }\n        });\n}\n","import React, {useEffect, useState} from 'react';\n\nimport './checkbox.scss'\n\nexport function Checkbox({text, label, name, disabled = false, handleValueCheck}) {\n\n    const [checkStatus, setCheckStatus] = useState(name);\n\n    const handleCheck = () => {\n        if(checkStatus) setCheckStatus(false)\n        else setCheckStatus(true)\n    };\n\n    useEffect(() => {\n        handleValueCheck(checkStatus);\n    }, [checkStatus]);\n\n    useEffect(() => {\n        setCheckStatus(name)\n    }, [name]);\n\n    return (\n        <label className={`toggler-wrapper dark ${disabled ? 'disabled' : ''}`} htmlFor={label}>\n            <input\n                type=\"checkbox\"\n                id={label}\n                checked={checkStatus}\n                disabled={disabled}\n                onChange={handleCheck}\n            />\n            <div className=\"toggler-slider\">\n                <div className=\"toggler-knob\"></div>\n            </div>\n            <p>{text}</p>\n        </label>\n    );\n}\n","import React, {useState} from \"react\";\nimport { attendeeService } from \"../../services/attendee.service\";\nimport { SelectUsers } from \"./selectUsers\";\nimport { useEffect } from \"react\";\nimport {FaChevronRight, FaPlus, FaTimesCircle, FaTrash} from \"react-icons/fa\";\nimport {Col, Row} from \"antd\";\nimport {HeadingAdmin} from \"../../backoffice/components/headingAdmin/headingAdmin\";\nimport {Table} from \"reactstrap\";\nimport {Checkbox} from \"../../backoffice/components/checkbox/checkbox\";\nimport MySwal from \"sweetalert2\";\n\nexport const AudienceUsers = ({ targetId, eventType, selectUser, showBtn = false }) => {\n  const [users, setUsers] = useState([]);\n  const [showSelect, setShowSelect] = useState(false);\n  const [show, setShow] = useState(showBtn);\n  const [userSelec, setUserSelec] = useState([]);\n  const [usersRemove, setUsersRemove] = useState([]);\n\n  const getUsers = () => {\n    attendeeService.getAttendeeUsers(targetId, eventType).then((result) => {\n      if (result) {\n        setUsers(result);\n        selectUser(result);\n      } else {\n        setUsers([]);\n        selectUser([]);\n      }\n    });\n  };\n\n  const addUsers = () => {\n    setUsers([...users, ...userSelec]);\n    selectUser([...users, ...userSelec]);\n    closeModal();\n  };\n\n  const removeUsers = (removeUsersId) => {\n    MySwal.fire({\n      title: '¿Estás seguro?',\n      text: \"No podrás revertir esta acción\",\n      icon: 'warning',\n      showCancelButton: true,\n      confirmButtonColor: '#FF002A',\n      confirmButtonText: 'Eliminar',\n      cancelButtonText: 'Cancelar'\n    }).then((result) => {\n      if(result.isConfirmed) {\n        setUsers(users.filter((item) => !usersRemove.includes(item.id)));\n        selectUser(users.filter((item) => !usersRemove.includes(item.id)));\n        setUsersRemove([]);\n      }\n    })\n\n  };\n\n  const closeModal = () => {\n    setShowSelect(false);\n    setUserSelec([]);\n  };\n\n  const handleSelectUser = (value, data) => {\n    data.check = value;\n    if (data.check) setUsersRemove([...usersRemove, data.id]);\n    else setUsersRemove(usersRemove.filter((item) => item != data.id));\n  };\n\n  const handleSelectUserAll = (value) => {\n    let localUsers = [];\n    users.map((data) => {\n      if (value && !data.check) {\n        usersRemove.push(data.id);\n        localUsers = usersRemove;\n      }\n      data.check = value;\n    });\n\n    setUsersRemove(localUsers.length === 0 ? [] : [...localUsers]);\n  };\n\n  useEffect(() => {\n    setShow(showBtn);\n    getUsers();\n  }, [targetId, eventType,showBtn]);\n\n  return (\n      <>\n        <HeadingAdmin\n            text={show ? \"Ocultar audiencia\" : \"Ver audiencia\"}\n            icon={show ?  <FaTimesCircle /> : <FaChevronRight />}\n            event={() => show ?  setShow(false) : setShow(true)}\n        />\n        {show && (\n            <Row gutter={16}>\n              <Col xs={24}>\n                <SelectUsers\n                    selectUser={setUserSelec}\n                    title=\"Agregar usuarios:\"\n                    usersFilter={users}\n                    filter={true}\n                />\n              </Col>\n              {userSelec.length > 0 && (\n                  <Col xs={24}>\n                    <HeadingAdmin\n                        text={'Agregar'}\n                        icon={<FaPlus />}\n                        event={() => addUsers()}\n                    />\n                  </Col>\n              )}\n              <Col xs={24}>\n                <h4>Audiencia</h4>\n                {usersRemove.length > 0 && (\n                    <HeadingAdmin\n                        text={'Eliminar'}\n                        icon={<FaTrash />}\n                        event={() => removeUsers(usersRemove)}\n                    />\n                )}\n              </Col>\n              <Col xs={24}>\n                <div className=\"table-responsive\">\n                  <Table className=\"admin-table\" hover>\n                    <thead>\n                    <tr>\n                      <th>Nombre</th>\n                      <th>Grupo</th>\n                      <th>\n                        {users.length > 0 ?\n                            <Checkbox\n                                text={'Seleccionar'}\n                                label={`checkboxAllAtenndee`}\n                                handleValueCheck={(val) => handleSelectUserAll(val)}\n                            />\n                            : \"Seleccionar\"}\n                      </th>\n                    </tr>\n                    </thead>\n                    <tbody>\n                    {users && (\n                        <>\n                          {users.map((user, index) => (\n                              <tr key={index}>\n                                <td>{user.name}</td>\n                                <td>{user.department}</td>\n                                <td>\n                                  <Checkbox\n                                      text={''}\n                                      label={`check-a-${user.id}`}\n                                      name={(user.check)}\n                                      handleValueCheck={(val) => handleSelectUser(val,user)}\n                                  />\n                                </td>\n                              </tr>\n                          ))}\n                        </>\n                    )}\n                    </tbody>\n                  </Table>\n                </div>\n              </Col>\n            </Row>\n        )}\n      </>\n  );\n}\n","import { callApi, callApiFileStorage } from './service'\n\nexport const courseService = {\n    createCourse,\n    updateCourse,\n    getCourse,\n    deleteCourse,\n    getCourseFilesById,\n    getCoursesPaginated,\n    getTypes\n};\n\nasync function createCourse(params, files, createEventCalendar) {\n    var data = new FormData();\n    if (files) {\n        for (var i = 0; i < files.length; i++) {\n            var f = files[i];\n            data.append('files', f, f.name);\n        }\n    }\n\n    data.append(\"model\", JSON.stringify(params));\n    return callApiFileStorage(`/backoffice/Course?createCalendarEvent=${createEventCalendar}`, 'POST', data).then((result) => {\n        return handleResponse(result);\n    });\n}\n\nasync function updateCourse(params, files) {\n    var data = new FormData();\n\n    if (files) {\n        for (var i = 0; i < files.length; i++) {\n            var f = files[i];\n            data.append('files', f, f.name);\n        }\n    }\n\n    data.append(\"model\", JSON.stringify(params));\n\n    return callApiFileStorage('/backoffice/Course', 'PUT', data).then((result) => {\n        return handleResponse(result);\n    });\n}\n\nasync function getCourse() {\n    return callApi('/backoffice/Course', 'GET').then((result) => {\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function getCoursesPaginated(pageIndex, elements, typeId = 0) {\n    return callApi(`/backoffice/Course/Paginated?pageIndex=${pageIndex}&elements=${elements}&typeId=${typeId}`, 'GET').then((result) => {\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function getTypes() {\n    return callApi(`/backoffice/Course/Types`, 'GET').then((result) => {\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function getCourseFilesById(courseId) {\n    return callApi('/backoffice/Course/WithFiles/' + courseId, 'GET').then((result) => handleResponse(result));\n}\n\nasync function deleteCourse(params) {\n    return callApi('/backoffice/Course', 'DELETE', params);\n}\n\nfunction handleResponse(result) {\n    if (result.responseCode === '00')\n        return result.data;\n    else {\n        //alert(result.responseMessage);\n        return null;\n    }\n}\n","export const EventTypes = {\n    COMPANY_DIARY: 'Agenda',\n    COURSE: 'Curso',\n    TALK: 'Auditorio',\n    SURVEY: 'Encuesta'\n};","import React, {useEffect, useState} from \"react\";\nimport {Button, Input} from \"antd\";\nimport {FaMinus, FaPlus} from \"react-icons/fa\";\nimport './inputAdd.scss';\n\nexport const InputAdd = ({maxLength, maxQuantity, minQuantity, handleCurrentNumber, valueInt, disabled = false, name}) => {\n\n    const [quantity, setQuantity] = useState(valueInt);\n\n    const addNumber = () => {\n        if(parseInt(quantity) <= maxQuantity) setQuantity(parseInt(quantity) + 1)\n    }\n\n    const minusNumber = () => {\n        if(parseInt(quantity) !== minQuantity) setQuantity(parseInt(quantity) - 1)\n    }\n\n    const handleQuantity = (e) => {\n        const value = e.target.value;\n        if(parseInt(!value)) setQuantity(minQuantity)\n        else setQuantity(value)\n        if(value === '') setQuantity(minQuantity)\n        if(parseInt(value) > maxQuantity) setQuantity(31)\n        if(parseInt(value) < minQuantity) setQuantity(minQuantity)\n    }\n\n    useEffect(() => {\n        handleCurrentNumber(parseInt(quantity))\n    }, [quantity])\n\n    useEffect(() => setQuantity(valueInt), [valueInt])\n\n    return (\n        <div className=\"container-numbers\">\n            <Button onClick={minusNumber} disabled={(disabled === true) ? disabled : (parseInt(quantity) === minQuantity)}>\n                <FaMinus />\n            </Button>\n            <Input\n                size=\"large\"\n                type=\"text\"\n                name={`${name}`}\n                value={quantity}\n                maxLength={maxLength}\n                onChange={handleQuantity}\n                disabled={disabled}\n                style={{minHeight: '50px'}}\n            />\n            <Button onClick={addNumber} disabled={(disabled === true) ? disabled : (parseInt(quantity) === maxQuantity)}>\n                <FaPlus />\n            </Button>\n        </div>\n    );\n}\n","export function base64ToBlob(b64Data, contentType = '', filename = '', sliceSize = 512) {\n    const byteCharacters = atob(b64Data);\n    const byteArrays = [];\n\n    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n        const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n        const byteNumbers = new Array(slice.length);\n        for (let i = 0; i < slice.length; i++) {\n            byteNumbers[i] = slice.charCodeAt(i);\n        }\n\n        const byteArray = new Uint8Array(byteNumbers);\n        byteArrays.push(byteArray);\n    }\n\n    const blob = new Blob(byteArrays, { type: contentType });\n    return new File([blob], filename, { type: contentType });\n}","import React, {useEffect, useState, forwardRef, useImperativeHandle, useRef} from 'react';\nimport { courseService } from '../../services/course.service';\nimport {Space, Table, Pagination, Button, Dropdown, Input} from \"antd\";\nimport {FaChevronDown, FaEdit, FaTrash} from \"react-icons/fa\";\nimport withReactContent from \"sweetalert2-react-content\";\nimport Swal from \"sweetalert2\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nconst MySwal = withReactContent(Swal);\n\nconst SearchCourse = forwardRef((props, ref) => {\n    const [dataGrid, setDataGrid] = useState([]);\n    const [tableConfig, setTableConfig] = useState({});\n    const [types, setTypes] = useState([]);\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    useImperativeHandle(ref, () => ({\n        refreshDataGrid: refreshDataGrid\n    }));\n\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed) courseService.deleteCourse(data).then((result) => {\n                MySwal.fire({\n                    title: \"¡Se eliminó correctamente!\",\n                    icon: \"success\",\n                    confirmButtonText: \"Confirmar\"\n                });\n                getCourse();\n            })\n        })\n    }\n\n    async function getCourse() {\n        courseService.getCoursesPaginated(1, 10).then((result) => {\n            if (result) {\n                setDataGrid(result.list);\n                setTableConfig({\n                    totalPages: result.totalPages,\n                    activePage: 1,\n                    type: {\n                        courseMediaTypeId: 0,\n                        courseMediaTypeName: \"\"\n                    }\n                });\n            }\n        });\n    }\n\n    const getTypes = () => {\n        courseService.getTypes().then((result) => {\n            if (result) setTypes(result);\n        });\n    }\n\n    const handleSelectPage = (page,pageSize) => {\n        courseService.getCoursesPaginated(page, 10, tableConfig.type.courseMediaTypeId).then((result) => {\n            if (result) {\n                setDataGrid(result.list);\n                setTableConfig({\n                    ...tableConfig,\n                    totalPages: result.totalPages,\n                    activePage: page\n                });\n            }\n        });\n    };\n\n    const filterItems = (type) => {\n        courseService.getCoursesPaginated(1, 10, type.courseMediaTypeId).then((result) => {\n            if (result) {\n                setDataGrid(result.list);\n                setTableConfig({\n                    totalPages: result.totalPages,\n                    activePage: 1,\n                    type: {\n                        courseMediaTypeId: type.courseMediaTypeId,\n                        courseMediaTypeName: type.name\n                    }\n                });\n            }\n        });\n    };\n\n    const refreshDataGrid = () => getCourse();\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    // const getColumnSearchProps = (dataIndex) => ({\n    //     filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n    //         <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n    //             <Input\n    //                 ref={searchInput}\n    //                 placeholder={`Buscar`}\n    //                 value={selectedKeys[0]}\n    //                 onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n    //                 onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n    //                 style={{\n    //                     marginBottom: 8,\n    //                     display: 'block',\n    //                 }}\n    //             />\n    //             <Space>\n    //                 <Button\n    //                     type=\"primary\"\n    //                     onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n    //                     icon={<SearchOutlined />}\n    //                     size=\"small\"\n    //                     style={{width: 90,}}\n    //                 >\n    //                     Buscar\n    //                 </Button>\n    //                 <Button\n    //                     onClick={() => clearFilters && handleReset(clearFilters)}\n    //                     size=\"small\"\n    //                     style={{\n    //                         width: 90,\n    //                     }}\n    //                 >\n    //                     Limpiar\n    //                 </Button>\n    //             </Space>\n    //         </div>\n    //     ),\n    //     filterIcon: (filtered) => (\n    //         <SearchOutlined\n    //             style={{\n    //                 color: filtered ? '#1677ff' : undefined,\n    //             }}\n    //         />\n    //     ),\n    //     onFilter: (value, record) =>\n    //         record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n    //     onFilterDropdownOpenChange: (visible) => {\n    //         if (visible) {\n    //             setTimeout(() => searchInput.current?.select(), 100);\n    //         }\n    //     },\n    //     render: (text) =>\n    //         searchedColumn === dataIndex ? (\n    //             <Highlighter\n    //                 highlightStyle={{\n    //                     backgroundColor: '#ffc069',\n    //                     padding: 0,\n    //                 }}\n    //                 searchWords={[searchText]}\n    //                 autoEscape\n    //                 textToHighlight={text ? text.toString() : ''}\n    //             />\n    //         ) : (\n    //             text\n    //         ),\n    // });\n\n    const columnsCourses = [\n        {\n            title: 'Tipo de capacitación',\n            key: 'id',\n            dataIndex: 'id',\n            fixed: 'left',\n            width: 120,\n        },\n        {\n            title: 'Nombre',\n            key: 'name',\n            dataIndex: 'name',\n        },\n        {\n            title: 'Descripción',\n            key: 'description',\n            dataIndex: 'description'\n        },\n        {\n            title: 'Opciones',\n            key: 'options',\n            dataIndex: 'options',\n        },\n    ];\n\n    const dataCourses = dataGrid.map(item => {\n        return (\n            {\n                \"key\": item.courseId,\n                id: item.courseMediaTypeName,\n                name: item.name,\n                description: (item.description.length > 0) ? item.description.substring(0, 80)+'...' : '',\n                options: <Space size=\"middle\">\n                    <Button type=\"primary\" htmlType={'button'} className=\"edit\" onClick={() => props.handleRowSelect(item)}>\n                        <FaEdit />\n                    </Button>\n                    <Button type=\"primary\" htmlType={'button'} className=\"delete\" disabled={(!item.active)} onClick={() => handleDelete(item)}>\n                        <FaTrash />\n                    </Button>\n                </Space>\n            }\n        );\n    });\n\n    const items = types?.map((type, index) => {\n        return {\n            key: index,\n            label: (\n                <>\n                    <Button className={'btn-item-dropdown'} onClick={() => filterItems(type)} key={index}>\n                        {type?.name}\n                    </Button>\n                </>\n            ),\n        }\n    })\n\n    items.push({\n        key: 99,\n        label: (\n            <>\n                <Button onClick={refreshDataGrid}>\n                    Limpiar filtro\n                </Button>\n            </>\n        ),\n    })\n\n    useEffect(() => {\n        getCourse();\n        getTypes();\n    }, []);\n\n    return (\n        <>\n            <Dropdown\n                menu={{items,}}\n                placement=\"bottomLeft\"\n                arrow={{\n                    pointAtCenter: true,\n                }}\n            >\n                <Button className={'btn-dropdown'}>Tipos de capacitación <FaChevronDown /></Button>\n            </Dropdown>\n            <Table\n                className=\"table-admin\"\n                columns={columnsCourses}\n                dataSource={dataCourses}\n                pagination={false}\n                scroll={{ x: '992px', y: 800 }}\n                locale={{\n                    triggerDesc: 'Ordenamiento descendente',\n                    triggerAsc: 'Ordenamiento ascedente',\n                    cancelSort: 'Cancelar ordenamiento',\n                    emptyText: 'Sin registros',\n                }}\n            />\n            <div className={'table-admin-footer'}>\n                <Pagination\n                    style={{marginTop: '1rem'}}\n                    current={tableConfig.activePage}\n                    total={tableConfig.totalPages}\n                    pageSize={1}\n                    responsive={true}\n                    simple={true}\n                    onChange={handleSelectPage}\n                />\n            </div>\n        </>\n    );\n\n});\n\nexport default SearchCourse;\n","import React, { useRef, useState } from \"react\";\nimport { SelectUsers } from \"../../components/Helpers/selectUsers\";\nimport { AudienceUsers } from \"../../components/Helpers/audienceUsers\";\nimport { courseService } from \"../../services/course.service\";\nimport ImgInfog from \"../../assets/imgs/imgInfografia.jpg\";\nimport videoYT from \"../../assets/imgs/video-yt.jpg\";\nimport \"../admin/admin.scss\";\nimport {\n  FaChevronRight,\n  FaInfoCircle,\n  FaSave,\n  FaTimesCircle,\n} from \"react-icons/fa\";\nimport { companyEventTypeService } from \"../../services/companyEventType.service\";\nimport { useEffect } from \"react\";\nimport { EventTypes } from \"../../enums/eventTypes\";\nimport { useHistory } from \"react-router-dom\";\nimport { HeadingAdmin } from \"../components/headingAdmin/headingAdmin\";\nimport { TitleAdmin } from \"../components/titleAdmin/titleAdmin\";\nimport {\n  Col,\n  DatePicker,\n  Form,\n  Input,\n  Row,\n  Select,\n  Tag,\n  Modal,\n  Button,\n} from \"antd\";\nimport { Checkbox } from \"../components/checkbox/checkbox\";\nimport { InputAdd } from \"../components/inputAdd/inputAdd\";\nimport { InputFile } from \"../components/inputFile/inputFile\";\nimport dayjs from \"dayjs\";\nimport \"./adminCourse.scss\";\nimport { base64ToBlob } from \"../../utils/ConvertBase64ToBlob\";\nimport SearchCourse from \"../../components/courseAdmin/searchCourse\";\nimport Swal from \"sweetalert2\";\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\n\nexport const AdminCourse = () => {\n  const history = useHistory();\n  const gridRef = useRef();\n  const [showEdit, setShowEdit] = useState(false);\n  const [userSelec, setUserSelec] = useState([]);\n  const [files, setFiles] = useState([]);\n  const [createCalendarEvent, setCreateCalendarEvent] = useState(false);\n  const [isAudienceAddressed, setIsAudienceAddressed] = useState(false);\n  const [iframeData, setIframeData] = useState(null);\n  const [fileUpdated, setFileUpdated] = useState(false);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [initTraining, setInitTraining] = useState({\n    CourseId: 0,\n    CourseMediaTypeId: 2,\n    Name: \"\",\n    Description: \"\",\n    StartDate: \"\",\n    EndDate: \"\",\n    Reward: 0,\n    UrlMedia: \"\",\n    EventId: 0,\n    DepartmentId: 0,\n    JobRoleId: 0,\n  });\n  const [form] = Form.useForm();\n\n  const onSave = () => {\n    const model = {\n      CourseId: initTraining.CourseId,\n      CourseMediaTypeId: parseInt(initTraining.CourseMediaTypeId),\n      Name: initTraining.Name,\n      Description: initTraining.Description,\n      StartDate: initTraining.StartDate,\n      EndDate: initTraining.EndDate,\n      Reward: parseInt(initTraining.Reward),\n      UrlMedia: initTraining.UrlMedia,\n      EventId: initTraining.EventId,\n      DepartmentId: parseInt(initTraining.DepartmentId),\n      RoleId: parseInt(initTraining.JobRoleId),\n      ListUser: userSelec,\n    };\n    const isNew = parseInt(initTraining.CourseId) === 0;\n\n    if (\n      (model.CourseMediaTypeId === 1 && files.length === 0) ||\n      (model.CourseMediaTypeId === 2 && files.length === 0)\n    )\n      return Swal.fire({\n        text: \"Debe agregarse al menos un archivo\",\n        icon: \"error\",\n      });\n\n    if (isAudienceAddressed && userSelec.length <= 0)\n      return Swal.fire({\n        text: \"Debes elegir al menos un usuario\",\n        icon: \"error\",\n      });\n\n    if (isNew) {\n      courseService\n        .createCourse(\n          model,\n          model.CourseMediaTypeId === 3 ? null : files,\n          createCalendarEvent\n        )\n        .then((result) => {\n          setShowEdit(false);\n          gridRef.current.refreshDataGrid();\n          setFiles([]);\n        });\n    } else if (!isNew) {\n      let file = [];\n      const fileType = files[0]?.fileName?.split(\".\")[1] ?? \"\";\n      if (model.CourseMediaTypeId !== 3) {\n        if (fileType === \"pdf\" && model.CourseMediaTypeId === 1)\n          file = files[0].name\n            ? files\n            : [\n                base64ToBlob(\n                  files[0].file,\n                  \"application/pdf\",\n                  files[0].fileName\n                ),\n              ];\n\n        if (\n          fileType !== \"pdf\" &&\n          (model.CourseMediaTypeId === 1 || model.CourseMediaTypeId === 2)\n        )\n          file = files[0].name\n            ? files\n            : [\n                base64ToBlob(\n                  files[0].file,\n                  `image/${fileType}`,\n                  files[0].fileName\n                ),\n              ];\n      }\n\n      courseService\n        .updateCourse(model, model.CourseMediaTypeId === 3 ? null : file)\n        .then((result) => {\n          setShowEdit(false);\n          gridRef.current.refreshDataGrid();\n          setFiles([]);\n          Swal.fire({ text: \"Publicación actualizada\", icon: \"success\" });\n        });\n    }\n  };\n\n  const handleOnNewCourse = () => {\n    if (showEdit) {\n      clearObjInitTraining();\n      form.resetFields();\n      setFiles([]);\n      setIframeData(null);\n      setShowEdit(false);\n      return;\n    }\n    setShowEdit(true);\n  };\n\n  const clearObjInitTraining = () =>\n    setInitTraining({\n      CourseId: 0,\n      CourseMediaTypeId: 2,\n      Name: \"\",\n      Description: \"\",\n      StartDate: \"\",\n      EndDate: \"\",\n      Reward: 0,\n      UrlMedia: \"\",\n      EventId: 0,\n      DepartmentId: 0,\n      JobRoleId: 0,\n    });\n\n  const handleRowSelect = async (gridItem) => {\n    setShowEdit(true);\n    setInitTraining({\n      CourseId: gridItem.courseId,\n      CourseMediaTypeId: gridItem.courseMediaTypeId,\n      Name: gridItem.name,\n      Description: gridItem.description == null ? \"\" : gridItem.description,\n      StartDate: dayjs(gridItem.startDate),\n      EndDate: dayjs(gridItem.endDate),\n      Reward: gridItem.reward,\n      UrlMedia: gridItem.urlMedia,\n      EventId: gridItem.eventId,\n    });\n\n    if (parseInt(gridItem.courseMediaTypeId) === 3) {\n      const range = document.createRange();\n      const fragment = range.createContextualFragment(gridItem.urlMedia);\n      setIframeData(fragment.firstChild.src);\n    }\n\n    if (gridItem.courseId) getAttachments(gridItem.courseId);\n  };\n\n  const getAttachments = (courseId) => {\n    if (courseId !== null && courseId > 0) {\n      courseService.getCourseFilesById(courseId).then((result) => {\n        if (result !== null && result.files.length > 0)\n          setFiles([result.files.at(-1)]);\n      });\n    }\n  };\n\n  const handleIframe = (e) => {\n    const range = document.createRange();\n    const fragment = range.createContextualFragment(e.target.value);\n    setIframeData(fragment.firstChild.src);\n  };\n\n  const getCompanyEventType = () => {\n    companyEventTypeService\n      .getByCompanyAndEventType(\n        process.env.REACT_APP_COMPANY,\n        EventTypes.COURSE\n      )\n      .then((result) => {\n        if (result) setIsAudienceAddressed(result.isAudienceAddressed);\n      });\n  };\n\n  const handleCheck = (value) => setCreateCalendarEvent(value);\n\n  const disabledDate = (current) => {\n    return current && current < dayjs().startOf(\"day\");\n  };\n\n  const disabledDateEnd = (current) => {\n    return current && current < dayjs(initTraining.StartDate);\n  };\n\n  const onChangeDate = (date, name) =>\n    setInitTraining({ ...initTraining, [name]: dayjs(date) });\n\n  const handleSelectChange = (value) => {\n    if (value === 4) setInitTraining({ ...initTraining, CourseMediaTypeId: 0 });\n    else setInitTraining({ ...initTraining, CourseMediaTypeId: value });\n    setFiles([]);\n  };\n\n  const handleCurrentReward = (value) =>\n    setInitTraining({ ...initTraining, Reward: value });\n\n  const handleInputValue = (e) =>\n    setInitTraining({ ...initTraining, [e.target.name]: e.target.value });\n\n  const onFilesSelected = (files) => {\n    setFiles(files);\n    setFileUpdated(false);\n  };\n\n  const showModal = () => setIsModalOpen(true);\n\n  const handleDeleteImage = () => setFiles([]);\n\n  useEffect(() => {\n    getCompanyEventType();\n  }, []);\n\n  useEffect(() => {\n    if (dayjs(initTraining.StartDate) > dayjs(initTraining.EndDate)) {\n      setInitTraining({ ...initTraining, EndDate: \"\" });\n      form.setFieldValue(\"EndDate\", \"\");\n    }\n  }, [initTraining.StartDate]);\n\n  return (\n    <>\n      <section className=\"dashboard-admin-container\">\n        <TitleAdmin\n          title={\"Cartelera Pride\"}\n          subtitle={\"Información de publicaciones\"}\n          event={() => history.push(\"/admin\")}\n        />\n        <HeadingAdmin\n          text={showEdit ? \"Cancelar\" : \"Agregar cartelera\"}\n          event={handleOnNewCourse}\n          icon={showEdit ? <FaTimesCircle /> : <PlusCircleOutlined />}\n        />\n        {!showEdit ? (\n          <SearchCourse handleRowSelect={handleRowSelect} ref={gridRef} />\n        ) : (\n          <Form\n            className=\"form-backoffice\"\n            onFinish={onSave}\n            layout={\"vertical\"}\n            form={form}\n            fields={[\n              {\n                name: [\"CourseMediaType\"],\n                value: initTraining.CourseMediaTypeId\n                  ? initTraining.CourseMediaTypeId\n                  : \"\",\n              },\n              {\n                name: [\"Name\"],\n                value: initTraining.Name,\n              },\n              {\n                name: [\"Description\"],\n                value: initTraining.Description,\n              },\n              {\n                name: [\"StartDate\"],\n                value:\n                  initTraining.StartDate !== \"\" ? initTraining.StartDate : \"\",\n              },\n              {\n                name: [\"EndDate\"],\n                value: initTraining.EndDate !== \"\" ? initTraining.EndDate : \"\",\n              },\n              {\n                name: [\"Reward\"],\n                value: initTraining.Reward,\n              },\n              {\n                name: [\"UrlMedia\"],\n                value: initTraining.UrlMedia,\n              },\n              {\n                name: [\"UrlMedia\"],\n                value: initTraining.UrlMedia,\n              },\n            ]}\n          >\n            <Row gutter={[16, 0]}>\n              <Col lg={8} md={12} sm={24} xs={24}>\n                <Form.Item\n                  label={\"Tipo de taller\"}\n                  htmlFor={\"CourseMediaType\"}\n                  name={\"CourseMediaType\"}\n                  rules={[\n                    {\n                      required: true,\n                      message: \"*Campo Requerido\",\n                    },\n                  ]}\n                >\n                  <Select\n                    name={\"CourseMediaType\"}\n                    placeholder={\"Seleccionar tipo de curso\"}\n                    onChange={handleSelectChange}\n                    options={[\n                      {\n                        value: 2,\n                        label: \"Link\",\n                      },\n                      {\n                        value: 1,\n                        label: \"Attachment\",\n                      },\n                      {\n                        value: 3,\n                        label: \"Video de Youtube\",\n                      },\n                      {\n                        value: 4,\n                        label: \"Borrar\",\n                      },\n                    ]}\n                  />\n                </Form.Item>\n              </Col>\n              <Col lg={8} md={12} sm={24} xs={24}>\n                <Form.Item\n                  label={\"Nombre\"}\n                  htmlFor={\"Name\"}\n                  rules={[\n                    {\n                      required: true,\n                      message: \"*Campo requerido\",\n                    },\n                    {\n                      pattern: new RegExp(/^\\S/),\n                      message: \"No se aceptan espacios en blanco al inicio\",\n                    },\n                  ]}\n                  name={\"Name\"}\n                >\n                  <Input name=\"Name\" onChange={handleInputValue} />\n                </Form.Item>\n              </Col>\n              <Col lg={8} md={12} sm={24} xs={24}>\n                <Form.Item\n                  label={\"Descripción\"}\n                  htmlFor={\"Description\"}\n                  rules={[\n                    {\n                      required: true,\n                      message: \"*Campo requerido\",\n                    },\n                    {\n                      pattern: new RegExp(/^\\S/),\n                      message: \"No se aceptan espacios en blanco al inicio\",\n                    },\n                  ]}\n                  name={\"Description\"}\n                >\n                  <Input name=\"Description\" onChange={handleInputValue} />\n                </Form.Item>\n              </Col>\n              <Col lg={8} md={12} sm={24} xs={24}>\n                <Form.Item\n                  label={\"Fecha de inicio\"}\n                  htmlFor={\"StartDate\"}\n                  name={\"StartDate\"}\n                  rules={[\n                    {\n                      required: true,\n                      message: \"*Campo Requerido\",\n                    },\n                  ]}\n                >\n                  <DatePicker\n                    name=\"StartDate\"\n                    placeholder={\"Inicia\"}\n                    allowEmpty={false}\n                    allowClear={false}\n                    onChange={(_, date) => onChangeDate(date, \"StartDate\")}\n                    format={\"DD/MMM/YYYY\"}\n                    showToday={false}\n                    disabledDate={disabledDate}\n                  />\n                </Form.Item>\n              </Col>\n              <Col lg={8} md={12} sm={24} xs={24}>\n                <Form.Item\n                  label={\"Fecha de finalización\"}\n                  htmlFor={\"EndDate\"}\n                  name={\"EndDate\"}\n                  rules={[\n                    {\n                      required: true,\n                      message: \"*Campo Requerido\",\n                    },\n                  ]}\n                >\n                  <DatePicker\n                    name=\"EndDate\"\n                    placeholder={\"Termina\"}\n                    allowEmpty={false}\n                    allowClear={false}\n                    onChange={(_, date) => onChangeDate(date, \"EndDate\")}\n                    format={\"DD/MMM/YYYY\"}\n                    showToday={false}\n                    disabled={initTraining.StartDate === \"\"}\n                    disabledDate={disabledDateEnd}\n                  />\n                </Form.Item>\n              </Col>\n              <Col lg={8} md={12} sm={24} xs={24}>\n                <Form.Item label={\"Reward\"} htmlFor={\"Reward\"}>\n                  <InputAdd\n                    maxLength={6}\n                    maxQuantity={99999}\n                    minQuantity={-99999}\n                    valueInt={initTraining.Reward}\n                    handleCurrentNumber={handleCurrentReward}\n                  />\n                </Form.Item>\n              </Col>\n              {/* {parseInt(initTraining.CourseId) === 0 && (\n                <Col xs={24}>\n                  <Form.Item\n                    label={\"Evento de calendario\"}\n                    htmlFor={\"CreateCalendarEvent\"}\n                  >\n                    <Checkbox\n                      text={\"Crear evento de calendario\"}\n                      label={\"CreateCalendarEvent\"}\n                      name={createCalendarEvent}\n                      handleValueCheck={handleCheck}\n                    />\n                  </Form.Item>\n                </Col>\n              )} */}\n              {\n                {\n                  1: (\n                    <>\n                      <Col xs={24}>\n                        <Form.Item label={\"Archivo para adjuntar\"}>\n                          <InputFile\n                            onFilesSelected={onFilesSelected}\n                            edit={initTraining.CourseId > 0}\n                            valueFile={files}\n                            width={1200}\n                            height={800}\n                            nameFile={\"fileAttachment\"}\n                            accept={[\"image\", \"pdf\"]}\n                            deleteImage={handleDeleteImage}\n                          />\n                        </Form.Item>\n                      </Col>\n                    </>\n                  ),\n                  2: (\n                    <>\n                      <Col md={12} xs={24}>\n                        <Form.Item\n                          label=\"Url Media\"\n                          htmlFor={\"UrlMedia\"}\n                          name={\"UrlMedia\"}\n                          rules={[\n                            {\n                              required: true,\n                              message: \"*Campo Requerido\",\n                            },\n                          ]}\n                          initialValue={initTraining.UrlMedia}\n                        >\n                          <Input name=\"UrlMedia\" onChange={handleInputValue} />\n                        </Form.Item>\n                      </Col>\n                      <Col md={12} xs={24}>\n                        <Form.Item label={\"Imagen de link\"}>\n                          <InputFile\n                            onFilesSelected={onFilesSelected}\n                            width={1000}\n                            height={1250}\n                            edit={showEdit && initTraining.CourseId > 0}\n                            valueFile={files}\n                            nameFile={\"thumbLink\"}\n                            accept={[\"image\"]}\n                            deleteImage={handleDeleteImage}\n                          />\n                        </Form.Item>\n                      </Col>\n                    </>\n                  ),\n                  3: (\n                    <>\n                      <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                          label={`Iframe para video (Youtube)`}\n                          htmlFor={\"UrlMedia\"}\n                          name={\"UrlMedia\"}\n                          rules={[\n                            {\n                              required: true,\n                              message: \"*Campo Requerido\",\n                            },\n                          ]}\n                          initialValue={initTraining.UrlMedia}\n                        >\n                          <Input.TextArea\n                            rows=\"3\"\n                            name=\"UrlMedia\"\n                            onChange={(e) => {\n                              handleInputValue(e);\n                              handleIframe(e);\n                            }}\n                          ></Input.TextArea>\n                        </Form.Item>\n                      </Col>\n                      <Col md={12} sm={24} xs={24}>\n                        {iframeData ? (\n                          <iframe\n                            src={iframeData}\n                            title=\"YouTube video player\"\n                            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n                          ></iframe>\n                        ) : (\n                          <div className={\"iframe-youtube-info\"}>\n                            <Tag\n                              icon={<FaInfoCircle />}\n                              color=\"#cd201f\"\n                              onClick={showModal}\n                              className={\"info-yt\"}\n                            >\n                              <p>\n                                ¿Cómo crear un iframe en youtube?{\" \"}\n                                <FaChevronRight />\n                              </p>\n                            </Tag>\n                            <img\n                              className=\"yt\"\n                              src={videoYT}\n                              alt=\"Video Youtube\"\n                            />\n                          </div>\n                        )}\n                      </Col>\n                    </>\n                  ),\n                }[initTraining.CourseMediaTypeId]\n              }\n              {/* <Col md={4} sm={12}>\n                                {(inputs.CourseMediaTypeId == 1 || inputs.CourseMediaTypeId == 2)&&\n                                    inputs.CourseId != null &&\n                                    inputs.CourseId > 0 ? (\n                                        <CourseAttachment\n                                            CourseId={inputs.CourseId}\n                                            IsDelete={true}\n                                            setCountStorageFiles={setCountStorageFiles}\n                                        />\n                                    ) : null}\n                            </Col> */}\n              <Col xs={24}>\n                {isAudienceAddressed &&\n                  (initTraining.CourseId > 0 ? (\n                    <>\n                      <AudienceUsers\n                        targetId={initTraining.CourseId}\n                        eventType=\"Curso\"\n                        selectUser={setUserSelec}\n                      />\n                    </>\n                  ) : (\n                    <>\n                      <SelectUsers\n                        selectUser={setUserSelec}\n                        title={\"Taller dirigido a:\"}\n                      />\n                    </>\n                  ))}\n              </Col>\n              <Col xs={24}>\n                <div className=\"form-backoffice-footer\">\n                  <Button type={\"primary\"} htmlType=\"submit\">\n                    <p>Guardar</p>\n                    <FaSave />\n                  </Button>\n                </div>\n              </Col>\n            </Row>\n          </Form>\n        )}\n      </section>\n      <Modal\n        open={isModalOpen}\n        footer={(_, { OkBtn, CancelBtn }) => <></>}\n        onCancel={() => setIsModalOpen(!isModalOpen)}\n      >\n        <img\n          src={ImgInfog}\n          width=\"100%\"\n          style={{ width: \"100%\", borderRadius: \"1rem\", objectFit: \"contain\" }}\n          alt=\"Infografía Kuimby\"\n        />\n      </Modal>\n    </>\n  );\n};\n","import React, {useState, useEffect} from \"react\";\n\nimport \"./users.scss\";\nimport \"../admin/admin.scss\";\nimport { userProfileService } from \"../../services/backoffice/userProfile.service\";\nimport moment from \"moment\";\nimport {useHistory} from \"react-router-dom\";\nimport {FaEdit} from \"react-icons/fa\";\nimport {Button, Col, message, Row, Space, Table, Pagination, Divider, Tag} from \"antd\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\nimport Search from \"antd/es/input/Search\";\n\nexport const Users = () => {\n  const [disablePagination, setDisablePagination] = useState(false);\n    const [tableData, setTableData] = useState({\n    list: [],\n    totalPages: 1,\n    totalCount: 0,\n    pageIndex: 1,\n    filterBy: \"\",\n    pageSize: 20,\n    filter: \"\",\n    orderBy: \"EmployeeNo\",\n    ascending: false,\n  });\n  const history = useHistory();\n\n  const onSearch = (value, _e, info) => {\n    setTableData({\n      ...tableData,\n      filter: value === \"\" ? '' : value,\n      filterBy: value === \"\" ? '' : \"Name\",\n      pageIndex: 1,\n    })\n  }\n\n  const getUsers = () => {\n    userProfileService\n        .getAll(tableData.pageIndex, tableData.pageSize, tableData.filterBy, tableData.filter, tableData.orderBy, tableData.ascending)\n        .then((result) => {\n          if (result.list.length > 0){\n            setTableData({\n              ...tableData,\n              list: result.list,\n              totalPages: result.totalPages,\n              totalCount: result.totalCount\n            });\n            setDisablePagination(false)\n          }\n        });\n  };\n\n  const handleSelectPage = (page, pageSize) => {\n    setDisablePagination(true)\n    setTableData({...tableData,\n      pageIndex: page,\n      pageSize: pageSize\n    })\n  };\n\n  const goUserDetail = (id) => history.push( \"/admin/users-details/\"+id);\n\n  const handleMenuClick = (e) => {\n    let msg = '';\n    if(e.key === '1') msg = 'Carga individual de usuario';\n    else msg = 'Carga masiva de usuarios'\n    return message.success(msg);\n  };\n\n  const items = [\n    {\n      label: <Button onClick={() => history.push('/admin/users-details/new')}>Carga individual</Button>,\n      key: '1',\n    },\n    {\n      label: <Button onClick={() => history.push('/admin/bulk-load')}>Carga Masiva</Button>,\n      key: '2',\n    },\n  ];\n\n  const menuProps = {\n    items,\n    onClick: (e) => handleMenuClick(e),\n  };\n\n  const columns = [\n    {\n      title: 'No. Usuario',\n      key: 'id',\n      dataIndex: 'id',\n      fixed: 'left',\n      width: 120,\n    },\n    {\n      title: 'Nombre completo',\n      key: 'fullname',\n      dataIndex: 'fullname',\n      width: 100,\n    },\n    {\n      title: 'Género',\n      key: 'gender',\n      dataIndex: 'gender',\n      width: 100,\n    },\n    {\n      title: 'Edad',\n      key: 'age',\n      dataIndex: 'age',\n      width: 100,\n    },\n    {\n      title: 'Antigüedad',\n      key: 'old',\n      dataIndex: 'old',\n      width: 100,\n    },\n    {\n      title: 'Sucursal',\n      key: 'branchOffice',\n      dataIndex: 'branchOffice',\n      width: 100,\n    },\n    {\n      title: 'Grupo',\n      key: 'group',\n      dataIndex: 'group',\n      width: 100,\n    },\n    {\n      title: 'Opciones',\n      key: 'options',\n      dataIndex: 'options',\n      width: 90,\n    },\n  ];\n\n  const data = tableData.list?.map(item => {\n    return (\n        {\n          id: item.employeeNo,\n          fullname: item.name,\n          gender:  item.gender,\n          age: moment().diff(item.birthday, \"years\"),\n          old: item.seniority,\n          branchOffice: item.branchOfficeName,\n          group: item.jobRoleName,\n          options: <Space wrap>\n            <Button type=\"primary\" htmlType={'button'} className=\"edit\" onClick={() => goUserDetail(item.aspNetUserId)}>\n              <FaEdit />\n            </Button>\n          </Space>\n        }\n    );\n  }) ?? [];\n\n  useEffect(() => {\n    getUsers()\n  }, []);\n\n  useEffect(() => {\n    getUsers()\n  }, [tableData.pageIndex, tableData.pageSize, tableData.filter]);\n\n  return (\n      <section className=\"dashboard-admin-container\">\n        <TitleAdmin\n            title={'Usuarios'}\n            subtitle={'Lista de usuarios'}\n            event={() => history.push('/admin')}\n        />\n        <Row gutter={16}>\n          <Col xs={24}>\n            <HeadingAdmin\n                btnAdd={false}\n                isDropdown={true}\n                menuDropdown={menuProps}\n                btnDropdownName={`Cargar usuarios`}\n            />\n          </Col>\n          <Col xl={12} md={12} sm={24} xs={24}>\n            <Search\n                placeholder=\"Buscar usuarios\"\n                allowClear\n                size={'large'}\n                enterButton\n                onSearch={onSearch}\n            />\n          </Col>\n          <Col xl={12} md={12} sm={24} xs={24}>\n            <Divider dashed={true} orientation={'right'}>\n              <Tag color={'default'}>\n                <Space>\n                  <p style={{fontSize: '1.1rem'}}>Total de usuarios:</p>\n                  <p style={{fontSize: '1.1rem'}}><strong>{tableData.totalCount}</strong></p>\n                </Space>\n              </Tag>\n            </Divider>\n          </Col>\n          <Col xs={24}>\n            <Table\n              className={'table-admin'}\n              columns={columns}\n              dataSource={data}\n              pagination={false}\n              locale={{\n                triggerDesc: 'Ordenamiento descendente',\n                triggerAsc: 'Ordenamiento ascedente',\n                cancelSort: 'Cancelar ordenamiento'\n              }}\n              scroll={{ x: '992px', y: 800 }}\n            />\n            <div className=\"table-admin-footer\">\n              <Pagination\n                  disabled={disablePagination}\n                  onChange={handleSelectPage}\n                  current={tableData.pageIndex}\n                  defaultCurrent={tableData.pageIndex}\n                  total={tableData.totalCount}\n                  pageSize={tableData.pageSize}\n                  responsive={true}\n              />\n            </div>\n          </Col>\n        </Row>\n      </section>\n  );\n}\n","import React from 'react';\n\nimport {Link, useHistory} from 'react-router-dom';\nimport './cardModule.scss'\nimport {FaExternalLinkAlt} from \"react-icons/fa\";\n\nexport function CardModule({title, description, link, icon, color = ''}) {\n\n    const history = useHistory();\n\n    return (\n        <Link to={link} className={`card-module ${color === '' ? 'outline' : color}`}>\n            <h3>{title}</h3>\n            <div>{description}</div>\n            <div className=\"card-module-footer\">\n                <button className=\"btn-show-more\" onClick={() => history.push(link)}><FaExternalLinkAlt /></button>\n            </div>\n            <i className=\"bg-icon\"><span className={icon}></span></i>\n        </Link>\n    );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { backendService } from \"../../services/backend.service\";\nimport \"./admin.scss\";\nimport { useGenericSection } from \"../../services/genericSection.service\";\nimport { Row, Col } from \"antd\";\nimport { CardModule } from \"../components/cardModule/cardModule\";\n\nexport const Admin = () => {\n  const [profile, setProfileInfo] = useState({});\n\n  async function getProfileInfo() {\n    backendService.userProfile().then((data) => {\n      setProfileInfo(data);\n    });\n  }\n\n  useEffect(() => {\n    backendService.userSettings().then((result) => {\n      getProfileInfo();\n    });\n  }, []);\n\n  return (\n    <section className=\"dashboard-admin-container\">\n      {\n        {\n          \"Recursos Humanos\": <MenuAdministrador />,\n        }[profile.aspNetRoleName]\n      }\n    </section>\n  );\n};\n\nconst MenuAdministrador = () => {\n  const [sections, setSections] = useState([]);\n\n  useEffect(() => {\n    getGenericItemSections();\n  }, []);\n\n  const getGenericItemSections = () => {\n    useGenericSection.getGenericItemSectionsByCompany().then((sections) => {\n      setSections(sections);\n    });\n  };\n\n  return (\n    <Row gutter={16}>\n      {/* <Col xl={6} lg={12} md={12} sm={24} xs={24}>\n        <CardModule\n          title={\"Calendario\"}\n          description={\"Gestión de eventos del calendario\"}\n          link={\"/admin/admin-diary\"}\n          icon={\"icon-calendar\"}\n        />\n      </Col> */}\n      <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n        <CardModule\n          title={\"Cartelera\"}\n          description={\"Gestión de publicaciones en cartelera\"}\n          link={\"/admin/course\"}\n          icon={\"icon-billboard\"}\n        />\n      </Col>\n      <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n        <CardModule\n          title={\"Recompensas\"}\n          description={\"Gestión de recompensas\"}\n          link={\"/admin/product-filter\"}\n          icon={\"icon-gif\"}\n        />\n      </Col>\n      <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n        <CardModule\n          title={\"Tu opinión\"}\n          description={\"Gestión de encuestas\"}\n          link={\"/admin/AdminSurvey\"}\n          icon={\"icon-opinion\"}\n        />\n      </Col>\n      <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n        <CardModule\n          title={\"Control\"}\n          description={\n            \"Gestión de grupos, eventos, sucursales, categorías, avisos y personalización\"\n          }\n          link={\"/admin/control\"}\n          icon={\"icon-docs-published\"}\n          color={\"fill purple\"}\n        />\n      </Col>\n      <Col xl={12} lg={12} md={24} sm={24} xs={24}>\n        <CardModule\n          title={\"Mundo Pride\"}\n          description={\"Gestión de artículos y galerías\"}\n          link={\"/admin/company-post\"}\n          icon={\"icon-pride-world\"}\n          color={\"fill darkblue\"}\n        />\n      </Col>\n      <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n        <CardModule\n          title={\"Pride Talks\"}\n          description={\"Gestión de publicaciones\"}\n          link={\"/admin/admin-audience\"}\n          icon={\"icon-pride-talks\"}\n        />\n      </Col>\n      <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n        <CardModule\n          title={\"Usuarios\"}\n          description={\"Gestión de usuarios registrados\"}\n          link={\"/admin/users\"}\n          icon={\"icon-user\"}\n        />\n      </Col>\n      <Col xl={8} lg={8} md={24} sm={24} xs={24}>\n        <CardModule\n          title={\"Publicaciones Genéricas\"}\n          description={\n            <ul>\n              {sections.map((s, index) => (\n                <li key={index}>{s.sectionName}</li>\n              ))}\n            </ul>\n          }\n          link={\"/admin/generic-section\"}\n          icon={\"icon-docs-published\"}\n        />\n      </Col>\n    </Row>\n  );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { userProfileService } from \"../../services/backoffice/userProfile.service\";\nimport \"./users.scss\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport { FaChevronRight, FaSave } from \"react-icons/fa\";\nimport { TitleAdmin } from \"../components/titleAdmin/titleAdmin\";\nimport {\n  Button,\n  Col,\n  DatePicker,\n  Divider,\n  Form,\n  Input,\n  Row,\n  Select,\n  Tag,\n} from \"antd\";\nimport { Checkbox } from \"../components/checkbox/checkbox\";\nimport dayjs from \"dayjs\";\nimport moment from \"moment\";\n\nexport const UserDetails = (props) => {\n  const companyId = useSelector((state) => state.userSettings.companyId);\n  const [catalogs, setCatalogs] = useState({\n    aspNetRolesCatalog: [],\n    branchOfficeCatalog: [],\n    departmentCatalog: [],\n    jobRoleCatalog: [],\n  });\n  const [IsConfirmed, setIsConfirmed] = useState(false);\n  const history = useHistory();\n  const [user, setUser] = useState({\n    roleId: \"\",\n    roleName: \"\",\n    email: \"\",\n    departmentId: 0,\n    branchOfficeId: 0,\n    employeeNo: \"\",\n    jobRoleId: 0,\n    firstName: \"\",\n    middleName: \"\",\n    lastName: \"\",\n    birthday: \"\",\n    hiringDate: \"\",\n    gender: \"\",\n    mobile: \"\",\n    phoneNumber: \"\",\n    password: \"\",\n    extension: \"\",\n    active: false,\n    nickname: \"\",\n    additionalEmail: \"\",\n    emailConfirmed: false,\n    userId: \"\",\n    urlProfileImage: \"\",\n    preferences: \"\",\n    notification: false,\n    companyId: companyId,\n    IsCorporateUser: false,\n  });\n  const { id } = useParams();\n\n  const getById = (id) => {\n    userProfileService.getById(id).then((result) => {\n      setUser({\n        roleId: result.roleId,\n        roleName: result.roleName,\n        userName: result.userName,\n        email: result.email,\n        departmentId: result.departmentId,\n        branchOfficeId: result.branchOfficeId,\n        employeeNo: result.employeeNo,\n        jobRoleId: result.jobRoleId,\n        firstName: result.firstName,\n        middleName: result.middleName,\n        lastName: result.lastName,\n        birthday: result.birthday,\n        hiringDate: result.hiringDate,\n        gender: result.gender,\n        mobile: result.mobile,\n        phoneNumber: result.phoneNumber,\n        extension: result.extension,\n        active: result.active,\n        nickname: result.nickname,\n        additionalEmail: result.additionalEmail,\n        emailConfirmed: result.emailConfirmed,\n        userId: result.aspNetUserId,\n        urlProfileImage: result.urlProfileImage,\n        preferences: result.preferences,\n        notification: result.notification,\n        companyId: result.companyId,\n        IsCorporateUser: result.IsCorporateUser,\n      });\n      setIsConfirmed(result.emailConfirmed);\n      //reset(result);\n    });\n  };\n\n  const fnEmailConfirm = () => {\n    userProfileService.VerifyAccount(props.match.params.id).then((result) => {\n      if (result) setIsConfirmed(result.succeded);\n    });\n  };\n\n  const onSubmit = () => {\n    user.birthday = moment(user.birthday).format(\"YYYY-MM-DD\");\n    user.hiringDate = moment(user.hiringDate).format(\"YYYY-MM-DD\");\n\n    if (id === \"new\") userProfileService.create(user);\n    else {\n      if (user.additionalEmail) user.isCorporateUser = true;\n      userProfileService.edit(user);\n    }\n  };\n\n  const handleCheck = (value) => setUser({ ...user, active: value });\n\n  const handleSelectRoleId = (value) => setUser({ ...user, roleId: value });\n\n  const handleInputValue = (e) =>\n    setUser({ ...user, [e.target.name]: e.target.value });\n\n  const handleSelectGender = (value) => setUser({ ...user, gender: value });\n\n  const handleSelectJobRole = (value) => setUser({ ...user, jobRoleId: value });\n\n  const handleDateHiring = (date, dateStr) =>\n    setUser({ ...user, hiringDate: dateStr });\n\n  const handleSelectBranchOffice = (value) =>\n    setUser({ ...user, branchOfficeId: value });\n\n  const handleSelectDepartment = (value) =>\n    setUser({ ...user, departmentId: value });\n\n  const handleBirthday = (date, dateStr) =>\n    setUser({ ...user, birthday: dateStr });\n\n  useEffect(() => {\n    if (id !== \"new\") {\n      getById(id);\n      setUser({ ...user, active: true });\n    }\n  }, [id]);\n\n  useEffect(() => {\n    if (id === \"new\") setUser({ ...user, active: true });\n    userProfileService.getCatalogs().then((result) => setCatalogs(result));\n  }, []);\n\n  return (\n    <section className=\"dashboard-admin-container\">\n      <TitleAdmin\n        title={\"Usuarios\"}\n        subtitle={id === \"new\" ? \"Usuario nuevo\" : \"Detalle del usuario\"}\n        event={() => history.push(\"/admin/users\")}\n      />\n      <Form\n        onFinish={onSubmit}\n        className=\"form-backoffice\"\n        layout={\"vertical\"}\n        fields={[\n          {\n            name: [\"roleId\"],\n            value: user.roleId,\n          },\n          {\n            name: [\"email\"],\n            value: user.email,\n          },\n          {\n            name: [\"employeeNo\"],\n            value: user.employeeNo,\n          },\n          {\n            name: [\"firstName\"],\n            value: user.firstName,\n          },\n          {\n            name: [\"middleName\"],\n            value: user.middleName,\n          },\n          {\n            name: [\"lastName\"],\n            value: user.lastName,\n          },\n          {\n            name: [\"gender\"],\n            value: user.gender,\n          },\n          {\n            name: [\"birthday\"],\n            value: user.birthday ? dayjs(user.birthday) : \"\",\n          },\n          {\n            name: [\"mobile\"],\n            value: user.mobile,\n          },\n          {\n            name: [\"phoneNumber\"],\n            value: user.phoneNumber,\n          },\n          {\n            name: [\"extension\"],\n            value: user.extension,\n          },\n          {\n            name: [\"hiringDate\"],\n            value: user.hiringDate ? dayjs(user.hiringDate) : \"\",\n          },\n          {\n            name: [\"additionalEmail\"],\n            value: user.additionalEmail,\n          },\n          {\n            name: [\"branchOfficeId\"],\n            value: user.branchOfficeId,\n          },\n          {\n            name: [\"departmentId\"],\n            value: user.departmentId,\n          },\n          {\n            name: [\"jobRoleId\"],\n            value: user.jobRoleId,\n          },\n        ]}\n      >\n        <Row gutter={16}>\n          <Col xs={24}>\n            {IsConfirmed ? (\n              <Divider dashed={true}>\n                <Tag color={\"success\"}>Cuenta confirmada</Tag>\n              </Divider>\n            ) : null}\n          </Col>\n          <Col xs={24}>\n            <h3>Datos de usuario</h3>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item label={\"Activo\"}>\n              <Checkbox\n                disabled={id === \"new\"}\n                text={\"Activo\"}\n                label={\"active\"}\n                name={user.active}\n                handleValueCheck={handleCheck}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Perfil\"}\n              htmlFor={\"roleId\"}\n              name={\"roleId\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <Select onChange={handleSelectRoleId} name={\"roleId\"}>\n                {catalogs.aspNetRolesCatalog.map((item) => (\n                  <Select.Option key={item.value} value={item.value}>\n                    {\" \"}\n                    {item.label}\n                  </Select.Option>\n                ))}\n              </Select>\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Correo electrónico\"}\n              htmlFor={\"email\"}\n              name={\"email\"}\n              rules={[\n                {\n                  type: \"email\",\n                  message: \"*Formato incorrecto\",\n                },\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <Input name={\"email\"} type=\"email\" onChange={handleInputValue} />\n            </Form.Item>\n          </Col>\n          {id === \"new\" ? (\n            <Col lg={8} md={12} sm={24} xs={24}>\n              <Form.Item\n                label={\"Password\"}\n                htmlFor={\"password\"}\n                name={\"password\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo Requerido\",\n                  },\n                ]}\n              >\n                <Input.Password\n                  name={\"password\"}\n                  type=\"password\"\n                  onChange={handleInputValue}\n                />\n              </Form.Item>\n            </Col>\n          ) : null}\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"No. Usuario\"}\n              htmlFor={\"employeeNo\"}\n              name={\"employeeNo\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n                {\n                  pattern: new RegExp(/^\\S/),\n                  message: \"No se aceptan espacios en blanco al inicio\",\n                },\n              ]}\n            >\n              <Input\n                name={\"employeeNo\"}\n                type=\"text\"\n                onChange={handleInputValue}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Nombre(s)\"}\n              name={\"firstName\"}\n              htmlFor={\"firstName\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n                {\n                  pattern: new RegExp(/^\\S/),\n                  message: \"No se aceptan espacios en blanco al inicio\",\n                },\n              ]}\n            >\n              <Input\n                type=\"text\"\n                name={\"firstName\"}\n                onChange={handleInputValue}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Apellido paterno\"}\n              htmlFor={\"middleName\"}\n              name={\"middleName\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n                {\n                  pattern: new RegExp(/^\\S/),\n                  message: \"No se aceptan espacios en blanco al inicio\",\n                },\n              ]}\n            >\n              <Input\n                type=\"text\"\n                name={\"middleName\"}\n                onChange={handleInputValue}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Apellido materno\"}\n              htmlFor={\"lastName\"}\n              name={\"lastName\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n                {\n                  pattern: new RegExp(/^\\S/),\n                  message: \"No se aceptan espacios en blanco al inicio\",\n                },\n              ]}\n            >\n              <Input\n                type=\"text\"\n                name={\"lastName\"}\n                onChange={handleInputValue}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Género\"}\n              htmlFor={\"gender\"}\n              name={\"gender\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <Select name={\"gender\"} onChange={handleSelectGender}>\n                <Select.Option value=\"M\">Masculino</Select.Option>\n                <Select.Option value=\"F\">Femenino</Select.Option>\n              </Select>\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Fecha de nacimiento\"}\n              htmlFor={\"birthday\"}\n              name={\"birthday\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <DatePicker\n                format={\"DD/MMM/YYYY\"}\n                type=\"date\"\n                placeholder={\"Seleccionar fecha\"}\n                name={\"birthday\"}\n                showToday={false}\n                onChange={handleBirthday}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Tel. Personal\"}\n              htmlFor={\"mobile\"}\n              name={\"mobile\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n                {\n                  pattern: new RegExp(/^\\S/),\n                  message: \"No se aceptan espacios en blanco al inicio\",\n                },\n              ]}\n            >\n              <Input type=\"text\" name={\"mobile\"} onChange={handleInputValue} />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Tel. Oficina\"}\n              name={\"phoneNumber\"}\n              htmlFor={\"phoneNumber\"}\n            >\n              <Input\n                type=\"text\"\n                name={\"phoneNumber\"}\n                onChange={handleInputValue}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item label={\"Ext.\"} name={\"extension\"}>\n              <Input\n                type=\"text\"\n                name={\"extension\"}\n                onChange={handleInputValue}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Fecha de ingreso\"}\n              htmlFor={\"hiringDate\"}\n              name={\"hiringDate\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <DatePicker\n                format={\"DD/MMM/YYYY\"}\n                type=\"date\"\n                placeholder={\"Seleccionar fecha\"}\n                name={\"hiringDate\"}\n                showToday={false}\n                onChange={handleDateHiring}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Correo adicional\"}\n              htmlFor={\"additionalEmail\"}\n              name={\"additionalEmail\"}\n            >\n              <Input\n                type=\"text\"\n                name={\"additionalEmail\"}\n                onChange={handleInputValue}\n              />\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Sucursal\"}\n              htmlFor={\"branchOfficeId\"}\n              name={\"branchOfficeId\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <Select\n                name={\"branchOfficeId\"}\n                onChange={handleSelectBranchOffice}\n              >\n                {catalogs.branchOfficeCatalog.map((item) => (\n                  <Select.Option key={item.value} value={parseInt(item.value)}>\n                    {item.label}\n                  </Select.Option>\n                ))}\n              </Select>\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Grupo\"}\n              htmlFor={\"departmentId\"}\n              name={\"departmentId\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <Select name={\"departmentId\"} onChange={handleSelectDepartment}>\n                {catalogs.departmentCatalog.map((item) => (\n                  <Select.Option key={item.value} value={parseInt(item.value)}>\n                    {item.label}\n                  </Select.Option>\n                ))}\n              </Select>\n            </Form.Item>\n          </Col>\n          <Col lg={8} md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Categoría\"}\n              htmlFor={\"jobRoleId\"}\n              name={\"jobRoleId\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <Select name={\"jobRoleId\"} onChange={handleSelectJobRole}>\n                {catalogs.jobRoleCatalog.map((item) => (\n                  <Select.Option key={item.value} value={parseInt(item.value)}>\n                    {item.label}\n                  </Select.Option>\n                ))}\n              </Select>\n            </Form.Item>\n          </Col>\n          <Col xs={24}>\n            <div className=\"form-backoffice-footer\">\n              {!IsConfirmed ? (\n                <Button\n                  htmlType=\"button\"\n                  onClick={() => fnEmailConfirm()}\n                  type={\"primary\"}\n                >\n                  <p>Confirmar Cuenta</p>\n                  <FaChevronRight />\n                </Button>\n              ) : null}\n              <Button type=\"primary\" htmlType={\"submit\"}>\n                <p>Guardar</p>\n                <FaSave />\n              </Button>\n            </div>\n          </Col>\n        </Row>\n      </Form>\n    </section>\n  );\n};\n","import React from 'react'\nimport { useDropzone } from 'react-dropzone';\nimport { userProfileService } from '../../services/backoffice/userProfile.service'\nimport './users.scss'\nimport { useSelector } from 'react-redux';\nimport {FaDownload, FaUpload} from \"react-icons/fa\";\nimport {useHistory} from \"react-router-dom\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport Swal from \"sweetalert2\";\nimport {Button, Col, Row} from \"antd\";\n\nexport const BulkLoad = () => {\n\tconst companyId = useSelector(state => state.userSettings.companyId)\n\tconst { acceptedFiles, getRootProps, getInputProps } = useDropzone({\n\t\tmultiple: false,\n\t});\n\tconst history = useHistory();\n\n\tconst files = acceptedFiles.map(file => (\n\t\t<li key={file.path}>\n\t\t\t<i className=\"icon-doc\"></i> {file.path} - {file.size} bytes\n\t\t</li>\n\t));\n\n\tconst upload = () => {\n\t\tif (acceptedFiles.length === 0) Swal.fire({\n\t\t\ttext: \"Debes cargar un archivo para continuar\",\n\t\t\ticon: \"warning\"\n\t\t});\n\t\telse {\n\t\t\tif(acceptedFiles[0].type === 'text/csv')\n\t\t\t\tuserProfileService.uploadMigrationFile(companyId, acceptedFiles[0]);\n\t\t\telse Swal.fire({\n\t\t\t\ttext: \"El archivo no es un formato .csv\",\n\t\t\t\ticon: \"warning\"\n\t\t\t});\n\t\t}\n\t}\n\n\treturn (\n\t\t<section className=\"dashboard-admin-container\">\n\t\t\t<TitleAdmin\n\t\t\t\ttitle={'Usuarios'}\n\t\t\t\tsubtitle={'Carga masiva'}\n\t\t\t\tevent={() => history.push(\"/admin/users\")}\n\t\t\t/>\n\t\t\t<Row gutter={16}>\n\t\t\t\t<Col xs={24} className={'form-backoffice-footer'}>\n\t\t\t\t\t<Button type={'primary'} htmlType={'button'} href=\"https://storagervadmindev.blob.core.windows.net/ctnprimecontentmx/Common/TemplateUser.csv\">\n\t\t\t\t\t\t<p>Descargar template</p>\n\t\t\t\t\t\t<FaDownload />\n\t\t\t\t\t</Button>\n\t\t\t\t</Col>\n\t\t\t\t<Col xs={24} {...getRootProps({ className: 'dropzone' })}>\n\t\t\t\t\t<input {...getInputProps()} />\n\t\t\t\t\t<div className=\"dropzone-box\">\n\t\t\t\t\t\t<span><FaUpload /></span>\n\t\t\t\t\t\t<p>Arrastre y suelte un archivo <span>.csv</span> aquí, o haga clic para seleccionar un archivo.</p>\n\t\t\t\t\t</div>\n\t\t\t\t</Col>\n\t\t\t\t{\n\t\t\t\t\t(acceptedFiles.length === 0) ? '' :\n\t\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t\t<h5>Archivo seleccionado:</h5>\n\t\t\t\t\t\t\t<ul className=\"list-files\">{files}</ul>\n\t\t\t\t\t\t</Col>\n\t\t\t\t}\n\t\t\t\t<Col xs={24}>\n\t\t\t\t\t<div className=\"form-backoffice-footer\">\n\t\t\t\t\t\t<Button onClick={upload} type={'primary'} htmlType={'button'}>\n\t\t\t\t\t\t\t<p>Subir archivo</p>\n\t\t\t\t\t\t\t<FaUpload />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</Col>\n\t\t\t</Row>\n\n\t\t</section>\n\t)\n}\n","import { callApi, callApiFile } from './service'\nimport Swal from \"sweetalert2\";\n\nexport const useSurvey = {\n    createSurvey,\n    updateSurvey,\n    deleteSurvey,\n    getSurveys,\n    getSurveysById,\n    getSurveysInfoById,\n    getChartData,\n    downloadCSV\n};\nasync function createSurvey(params) {\n    return callApi('/backoffice/Survey/Create', 'POST', params).then((result) => {\n        if (result.responseCode === '00') {\n            Swal.fire({\n                text: \"Se guardó exitosamente\",\n                icon: \"success\"\n            }).then(() => window.location.href = '/admin/details-survey/' + result.data)\n        } else {\n            console.log(result.responseMessage);\n            Swal.fire({ text: \"Error al guardar\", icon: \"error\" });\n        }\n    });\n}\nasync function getSurveys() {\n    return callApi('/backoffice/Survey', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function getSurveysById(id) {\n    return callApi('/backoffice/Survey/Get/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            Swal.fire({\n                text: result.responseMessage,\n                icon: \"error\"\n            }).then((value) => {\n                window.location.href = '/AdminSurvey'\n            });\n            return null;\n        }\n    });\n}\n\nasync function getSurveysInfoById(id) {\n    return callApi('/backoffice/Survey/GetSurveyInfo/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            Swal.fire({\n                text: result.responseMessage,\n                icon: \"error\"\n            }).then((value) => {\n                window.location.href = '/AdminSurvey'\n            });\n            return null;\n        }\n    });\n}\n\nasync function getChartData(surveyId, questionId, surveyGroupId) {\n    return callApi('/backoffice/Survey/GetChartData/' + surveyId + '/' + questionId + '/' + surveyGroupId, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function updateSurvey(params) {\n    return callApi('/backoffice/Survey/PutSurvey', 'PUT', params).then((result) => {\n        if (result.responseCode === '00') {\n            Swal.fire({\n                text: \"La encuesta se guardó exitosamente\",\n                icon: \"success\"\n            })\n        } else {\n            console.log(result.responseMessage);\n            Swal.fire({\n                text: \"Error al guardar encuesta\",\n                icon: \"error\"\n            });\n        }\n    });\n}\nasync function deleteSurvey(params) {\n    return callApi('/backoffice/Survey', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00') {\n            Swal.fire({\n                text: \"La encuesta se desactivó correctamente\",\n                icon: \"success\"\n            })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            Swal.fire({\n                text: \"Error al desactivar encuesta\",\n                icon: \"error\"\n            });\n            return null;\n        }\n    });\n}\n\nasync function downloadCSV(id) {\n    return callApiFile('/backoffice/Survey/GetCSV/' + id, 'GET').then(function (blob) {\n        if (blob.size !== 0) {\n            const FileSaver = require(\"file-saver\");\n            FileSaver.saveAs(blob, \"Encuesta\" + id + \".csv\");\n        }\n    });\n}\n","import React, {useEffect, useRef, useState} from 'react';\nimport Moment from \"react-moment\";\nimport { useSurvey } from '../../services/survey.service';\nimport {Space, Table, Button, Input, Tag} from \"antd\";\nimport {FaDownload, FaEdit, FaPowerOff, FaTrash} from \"react-icons/fa\";\nimport Highlighter from \"react-highlight-words\";\nimport moment from \"moment\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport MySwal from \"sweetalert2\";\n\nexport function SearchSurvey(props) {\n\tconst [surveysData, setSurveysData] = useState({ surveys: [] });\n\tconst [searchText, setSearchText] = useState('');\n\tconst [searchedColumn, setSearchedColumn] = useState('');\n\tconst searchInput = useRef(null);\n\n\tconst handleDelete = (data) => {\n\t\tMySwal.fire({\n\t\t\ttitle:\"¿Deseas desactivar encuesta?\",\n\t\t\ttext: \"No podrás revertir esta acción\",\n\t\t\ticon: 'warning',\n\t\t\tshowCancelButton: true,\n\t\t\tconfirmButtonColor: '#FF002A',\n\t\t\tconfirmButtonText: 'Eliminar',\n\t\t\tcancelButtonText: 'Cancelar'\n\t\t}).then((result) => {\n\t\t\tif(result.isConfirmed)  useSurvey.deleteSurvey(data).then((result) => { getSurveys(); });\n\t\t})\n\t};\n\n\tconst handleDownload = (surveyId) => useSurvey.downloadCSV(surveyId);\n\n\tasync function getSurveys() {\n\t\tuseSurvey.getSurveys().then((result) => {\n\t\t\tif (result) setSurveysData({ surveys: result });\n\t\t});\n\t}\n\n\tconst goToSurvey = (id) => window.location.href = '/admin/details-survey/'+id;\n\n\tconst handleSearch = (selectedKeys, confirm, dataIndex) => {\n\t\tconfirm();\n\t\tsetSearchText(selectedKeys[0]);\n\t\tsetSearchedColumn(dataIndex);\n\t};\n\n\tconst handleReset = (clearFilters) => {\n\t\tclearFilters();\n\t\tsetSearchText('');\n\t};\n\n\tconst getColumnSearchProps = (dataIndex) => ({\n\t\tfilterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n\t\t\t<div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n\t\t\t\t<Input\n\t\t\t\t\tref={searchInput}\n\t\t\t\t\tplaceholder={`Buscar`}\n\t\t\t\t\tvalue={selectedKeys[0]}\n\t\t\t\t\tonChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n\t\t\t\t\tonPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tmarginBottom: 8,\n\t\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<Space>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\tonClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n\t\t\t\t\t\ticon={<SearchOutlined />}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: 90,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tBuscar\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={() => clearFilters && handleReset(clearFilters)}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: 90,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tLimpiar\n\t\t\t\t\t</Button>\n\t\t\t\t</Space>\n\t\t\t</div>\n\t\t),\n\t\tfilterIcon: (filtered) => (\n\t\t\t<SearchOutlined\n\t\t\t\tstyle={{\n\t\t\t\t\tcolor: filtered ? '#1677ff' : undefined,\n\t\t\t\t}}\n\t\t\t/>\n\t\t),\n\t\tonFilter: (value, record) =>\n\t\t\trecord[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n\t\tonFilterDropdownOpenChange: (visible) => {\n\t\t\tif (visible) {\n\t\t\t\tsetTimeout(() => searchInput.current?.select(), 100);\n\t\t\t}\n\t\t},\n\t\trender: (text) =>\n\t\t\tsearchedColumn === dataIndex ? (\n\t\t\t\t<Highlighter\n\t\t\t\t\thighlightStyle={{\n\t\t\t\t\t\tbackgroundColor: '#ffc069',\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t}}\n\t\t\t\t\tsearchWords={[searchText]}\n\t\t\t\t\tautoEscape\n\t\t\t\t\ttextToHighlight={text ? text.toString() : ''}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\ttext\n\t\t\t),\n\t});\n\n\n\tconst columnsSurveys = [\n\t\t{\n\t\t\ttitle: 'ID',\n\t\t\tdataIndex: 'id',\n\t\t\tkey: 'id',\n\t\t\tfixed: 'left',\n\t\t\twidth: 80,\n\t\t\tdefaultSortOrder: 'descend',\n\t\t\tsorter: (a, b) => a.id - b.id,\n\t\t\tsortDirections: ['descend','ascend'],\n\t\t},\n\t\t{\n\t\t\ttitle: 'Titulo de encuesta',\n\t\t\tdataIndex: 'title',\n\t\t\tkey: 'title',\n\t\t\t...getColumnSearchProps('title'),\n\t\t},\n\t\t{\n\t\t\ttitle: 'No. Encuestados',\n\t\t\tdataIndex: 'no',\n\t\t\tkey: 'no',\n\t\t\tsorter: (a, b) => a.no - b.no,\n\t\t\tsortDirections: ['descend','ascend'],\n\t\t},\n\t\t{\n\t\t\ttitle: 'Tot. Respuestas',\n\t\t\tdataIndex: 'total',\n\t\t\tkey: 'total',\n\t\t\tsorter: (a, b) => a.total - b.total,\n\t\t\tsortDirections: ['descend','ascend'],\n\t\t},\n\t\t{\n\t\t\ttitle: 'Fecha límite',\n\t\t\tdataIndex: 'date',\n\t\t\tkey: 'date',\n\t\t\tsorter: (a, b) => moment(a.date.props.children).unix() - moment(b.date.props.children).unix()\n\t\t},\n\t\t{\n\t\t\ttitle: 'Estatus',\n\t\t\tdataIndex: 'status',\n\t\t\tkey: 'status',\n\t\t\tsorter: (a, b) => {\n\t\t\t\tif(a.status < b.status) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif(a.status > b.status) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\tsortDirections: ['descend','ascend'],\n\t\t},\n\n\t\t{\n\t\t\ttitle: 'Acciones',\n\t\t\tdataIndex: 'options',\n\t\t\tkey: 'options',\n\t\t},\n\t];\n\n\n\tconst dataSurveys = surveysData.surveys.map(survey => {\n\t\treturn {\n\t\t\tkey: survey.surveyId,\n\t\t\tid: survey.surveyId,\n\t\t\ttitle: survey.title,\n\t\t\tno: survey.surveyedCount,\n\t\t\ttotal: survey.answeredCount,\n\t\t\tdate: <Moment locale=\"es\" format=\"DD/MM/YYYY\">{survey.endDate}</Moment>,\n\t\t\tstatus: <Tag color={survey.estatus === 'Terminada' ? 'success' : 'warning'}>{survey.estatus}</Tag>,\n\t\t\toptions: <><Space>\n\t\t\t\t<Button type=\"primary\" htmlType={'button'} className=\"edit\" onClick={() => goToSurvey(survey.surveyId)}>\n\t\t\t\t\t<FaEdit />\n\t\t\t\t</Button>\n\t\t\t\t<Button type=\"primary\" htmlType={'button'} className=\"edit\" onClick={() => handleDownload(survey.surveyId)}>\n\t\t\t\t\t<FaDownload />\n\t\t\t\t</Button>\n\t\t\t\t<Button type=\"primary\" htmlType={'button'} className=\"delete\" onClick={() => handleDelete(survey)} disabled={(!survey.active === true)}>\n\t\t\t\t\t<FaPowerOff />\n\t\t\t\t</Button>\n\t\t\t</Space></>\n\t\t};\n\t})\n\n\tuseEffect(() => {\n\t\tgetSurveys();\n\t}, []);\n\n\treturn (\n\t\t<div className='wpr_quest_search'>\n\t\t\t<Table\n\t\t\t\tclassName=\"table-admin\"\n\t\t\t\tcolumns={columnsSurveys}\n\t\t\t\tdataSource={dataSurveys}\n\t\t\t\tscroll={{ x: '992px', y: 800 }}\n\t\t\t\tlocale={{\n\t\t\t\t\ttriggerDesc: 'Ordenamiento descendente',\n\t\t\t\t\ttriggerAsc: 'Ordenamiento ascedente',\n\t\t\t\t\tcancelSort: 'Cancelar ordenamiento',\n\t\t\t\t\temptyText: 'Sin registros',\n\t\t\t\t}}\n\t\t\t/>\n\t\t</div>\n\n\t);\n}\n","import React, { useState } from 'react';\nimport { SearchSurvey } from './searchSurvey';\nimport './surveyAdmin.scss'\nimport {useHistory} from 'react-router-dom';\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\n\nexport function AdminSurvey() {\n    const [refresh, setRefresh] = useState(0);\n    const history = useHistory();\n\n    return (\n        <section className=\"dashboard-admin-container\">\n            <TitleAdmin\n                title={'Tu Opinión'}\n                subtitle={'Información de encuestas'}\n                event={() => history.push(\"/admin\")}\n            />\n            <HeadingAdmin\n                text={'Agregar encuesta'}\n                event={() => history.push(\"/admin/details-survey/0\")}\n            />\n            <SearchSurvey refresh={refresh} />\n        </section>\n    );\n}\n","import React, {useEffect, useRef, useState} from 'react';\n\nimport { Button } from \"rsuite\";\nimport { useSurveyScale } from '../../services/surveyScale.service';\nimport {useHistory, useParams} from 'react-router-dom';\nimport {Input, Space, Table} from \"antd\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport withReactContent from \"sweetalert2-react-content\";\nimport Swal from \"sweetalert2\";\nconst MySwal = withReactContent(Swal);\n\nexport function SearchSurveyScale(props) {\n    const [surveyScales, setSurveyScales] = useState([]);\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n    const { surveyId } = useParams();\n    const location = useHistory();\n\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                useSurveyScale.deleteSurveyScale(data).then((result) => getSurveyScales());\n        })\n    }\n\n    async function getSurveyScales() {\n        useSurveyScale.getSurveyScales().then((result) => {\n            if (result) setSurveyScales(result);\n        });\n    }\n\n    const goToSurvey = (id) => location.push(`/admin/details-survey-scale/${surveyId}/${id}`)\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{\n                        marginBottom: 8,\n                        display: 'block',\n                    }}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined\n                style={{\n                    color: filtered ? '#1677ff' : undefined,\n                }}\n            />\n        ),\n        onFilter: (value, record) =>\n            record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) {\n                setTimeout(() => searchInput.current?.select(), 100);\n            }\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{\n                        backgroundColor: '#ffc069',\n                        padding: 0,\n                    }}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (text),\n    });\n\n    const columns = [\n        {\n            title: 'ID',\n            dataIndex: 'id',\n            key: 'id',\n            fixed: 'left',\n            width: 80,\n            sorter: (a, b) => a.id - b.id,\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Titulo de escala',\n            dataIndex: 'title',\n            key: 'title',\n            ...getColumnSearchProps('title'),\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const dataSource = surveyScales?.map(surveyScale => {\n        return {\n            key: surveyScale.surveyScaleId,\n            id: surveyScale.surveyScaleId,\n            title: surveyScale.description,\n            options: <><Space>\n                <Button type=\"button\" className=\"btn-icon-table edit\" onClick={() => goToSurvey(surveyScale.surveyScaleId)}>\n                    <FaEdit />\n                </Button>\n                <Button type=\"button\" className=\"btn-icon-table delete\" onClick={() => handleDelete(surveyScale)}>\n                    <FaTrash />\n                </Button>\n            </Space></>\n        };\n    })\n\n    useEffect(() => {\n        getSurveyScales();\n    }, [props.refresh]);\n\n    return (\n        <div className='table-admin'>\n            <Table\n                className=\"table-admin\"\n                scroll={{ x: '992px', y: 800 }}\n                columns={columns}\n                dataSource={dataSource}\n                locale={{\n                    triggerDesc: 'Ordenamiento descendente',\n                    triggerAsc: 'Ordenamiento ascedente',\n                    cancelSort: 'Cancelar ordenamiento',\n                    emptyText: 'Sin registros',\n                }}\n            />\n        </div>\n\n    );\n}\n","import React, { useState } from 'react';\nimport {useHistory, useParams} from 'react-router-dom';\nimport { SearchSurveyScale } from './searchSurveyScale';\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\n\nexport function AdminSurveyScale() {\n    const [refresh, setRefresh] = useState(0);\n    const { surveyId } = useParams();\n    const history = useHistory();\n\n    return (\n        <section className=\"dashboard-admin-container\">\n            <TitleAdmin\n                title={'Escalas de valoración'}\n                subtitle={'Listado de escalas de valoración'}\n                event={() => history.push(`/admin/details-survey/${surveyId}`)}\n            />\n            <HeadingAdmin\n                text={'Agregar escala'}\n                event={() => history.push(`/admin/details-survey-scale/${surveyId}/0`)}\n            />\n            <SearchSurveyScale refresh={refresh} />\n        </section>\n    );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { Button } from \"rsuite\";\nimport { useSurveyScale } from '../../services/surveyScale.service';\nimport {Space,Table} from \"antd\";\nimport {FaTrash} from \"react-icons/fa\";\nimport MySwal from \"sweetalert2\";\n\nexport function SearchSurveyScaleAnswer(props) {\n    const [surveyScaleAnswers, setSurveyScaleAnswers] = useState([]);\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title:\"¿Estás seguro?\",\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed) useSurveyScale.deleteSurveyScaleAnswer(data).then((result) => getSurveyScaleAnswers(props.surveyScale));\n        })\n    };\n    const handleSelectAnswer = (data) => {\n        if (props.onSelectAnswer)\n            props.onSelectAnswer(data);\n    };\n\n    useEffect(() => {\n        getSurveyScaleAnswers(props.surveyScale);\n    }, [props.refresh]);\n\n    async function getSurveyScaleAnswers(surveyScale) {\n        if (surveyScale.surveyScaleId !== \"\")\n            useSurveyScale.getSurveyScaleAnswers(surveyScale.surveyScaleId).then((result) => {\n                if (result) {\n                    setSurveyScaleAnswers(result);\n                }\n            });\n    }\n\n    const columns = [\n        {\n            title: 'Respuesta',\n            dataIndex: 'answer',\n            key: 'answer',\n        },\n        {\n            title: 'Valor',\n            dataIndex: 'value',\n            key: 'value',\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const dataSource = surveyScaleAnswers?.map((scaleAnswer, i) => {\n        return {\n            key: i+i,\n            answer: scaleAnswer.description,\n            value: scaleAnswer.scaleValue,\n            options: <><Space>\n                <Button type=\"button\" className=\"btn-icon-table delete\" onClick={() => handleDelete(scaleAnswer)}>\n                    <FaTrash />\n                </Button>\n            </Space></>\n        };\n    })\n\n    return (\n        <div className=\"wpr_quest_search\">\n            <Table className=\"table-admin\" columns={columns} dataSource={dataSource}\n                   locale={{\n                       triggerDesc: 'Ordenamiento descendente',\n                       triggerAsc: 'Ordenamiento ascedente',\n                       cancelSort: 'Cancelar ordenamiento',\n                       emptyText: 'Sin registros',\n                   }}\n            />\n        </div>\n\n    );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useSurveyScale } from '../../services/surveyScale.service';\nimport {FaSave} from \"react-icons/fa\";\nimport {Col, Form, Input, Row, Button} from \"antd\";\n\nexport function EditSurveyScaleAnswer(props) {\n    const onSave = () => {\n        if (answer.SurveyScaleAnswerId && answer.SurveyScaleAnswerId > 0)\n            useSurveyScale.updateSurveyScaleAnswer({\n                SurveyScaleAnswerId: parseInt(answer.SurveyScaleAnswerId),\n                SurveyScaleId: parseInt(answer.SurveyScaleId),\n                Description: answer.Description, ScaleValue: parseInt(answer.ScaleValue),\n                AnswerOrder: parseInt(answer.AnswerOrder)\n            }).then((result) => {\n                if (props.onSave) props.onSave();\n            });\n        else\n            useSurveyScale.createSurveyScaleAnswer({\n                SurveyScaleId: parseInt(answer.SurveyScaleId),\n                Description: answer.Description,\n                ScaleValue: parseInt(answer.ScaleValue),\n                AnswerOrder: parseInt(answer.AnswerOrder)\n            }).then((result) => {\n                if (props.onSave) props.onSave();\n            });\n    };\n\n    const [answer, setAnswer] = useState({\n        SurveyScaleAnswerId: \"\",\n        SurveyScaleId: \"\",\n        Description: \"\",\n        ScaleValue: \"\",\n        AnswerOrder: \"\"\n    });\n\n    useEffect(() => {\n        if (props.currentAnswer) {\n            setAnswer({\n                SurveyScaleAnswerId: props.currentAnswer.SurveyScaleAnswerId.toString(),\n                SurveyScaleId: props.currentAnswer.SurveyScaleId.toString(),\n                Description: props.currentAnswer.Description,\n                ScaleValue: props.currentAnswer.ScaleValue.toString(),\n                AnswerOrder: props.currentAnswer.AnswerOrder.toString()\n            });\n        }\n        else\n            setAnswer({\n                SurveyScaleAnswerId: \"\",\n                SurveyScaleId: props.surveyScaleId,\n                Description: \"\", ScaleValue: \"\",\n                AnswerOrder: \"\"\n            });\n    }, [props.currentQuestion]);\n\n    const handleInputValue = (e) => setAnswer({...answer, [e.target.name]: e.target.value})\n\n    return (\n        <>\n            <Form\n                onFinish={onSave}\n                className={'form-backoffice'}\n                layout={'vertical'}\n            >\n                <Row gutter={16}>\n                    <Col xs={24}>\n                        <Form.Item\n                            label={'Respuesta'}\n                            htmlFor={'Description'}\n                            name=\"Description\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                        >\n                            <Input\n                                type=\"text\"\n                                name=\"Description\"\n                                onChange={handleInputValue}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                        <Form.Item\n                            label={'Orden'}\n                            htmlFor={'AnswerOrder'}\n                            name=\"AnswerOrder\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                        >\n                            <Input\n                                type=\"number\"\n                                name=\"AnswerOrder\"\n                                onChange={handleInputValue}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                        <Form.Item\n                            label={'Valor'}\n                            htmlFor={'ScaleValue'}\n                            name=\"ScaleValue\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                        >\n                            <Input\n                                type=\"number\"\n                                name=\"ScaleValue\"\n                                onChange={handleInputValue}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                        <div className=\"form-backoffice-footer\">\n                            <Button type={'primary'} htmlType={'submit'}>\n                                <p>Guardar</p>\n                                <FaSave/>\n                            </Button>\n                        </div>\n                    </Col>\n                </Row>\n            </Form>\n        </>\n\n    );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useSurveyScale } from '../../services/surveyScale.service';\nimport { SearchSurveyScaleAnswer } from './searchSurveyScaleAnswer';\nimport { EditSurveyScaleAnswer } from './editSurveyScaleAnswer';\nimport {FaPlus, FaSave, FaTimesCircle} from \"react-icons/fa\";\nimport {Button, Col, Form, Input, Row} from \"antd\";\n\nexport function EditSurveyScale(props) {\n    const [surveyScale, setSurveyScale] = useState({\n        SurveyScaleId: 0,\n        Description: \"\",\n        Active: true\n    });\n    const [refreshAnswer, setRefreshAnswer] = useState(0);\n    const [showEditAnswer, setShowEditAnswer] = useState(false);\n    const [selectedAnswer, setSelectedAnswer] = useState();\n    const { surveyId, id } = useParams();\n\n    const onSave = () => {\n        if (surveyScale.SurveyScaleId && surveyScale.SurveyScaleId > 0)\n            useSurveyScale.updateSurveyScale(surveyScale);\n        else {\n            useSurveyScale.createSurveyScale(surveyScale).then(data => {\n                setSurveyScale({\n                    SurveyScaleId: data.surveyScaleId,\n                    Description: data.description,\n                    Active: data.active\n                });\n            });\n        }\n    };\n\n    const handleInputValue = (e) => setSurveyScale({...surveyScale, [e.target.name]: e.target.value})\n\n    useEffect(() => {\n        if (parseInt(id) !== 0) {\n            useSurveyScale.getSurveyScaleById(id).then((result) => {\n                setSurveyScale({\n                    SurveyScaleId: result.surveyScaleId,\n                    Description: result.description,\n                    Active: result.active\n                });\n            });\n        }\n\n        setRefreshAnswer(prev => prev + 1);\n        setSelectedAnswer(null);\n        setShowEditAnswer(false);\n    }, [props.survey]);\n\n    const onSelectAnswer = (scaleAnswer) => {\n        setShowEditAnswer(true);\n        setSelectedAnswer({\n            SurveyScaleAnswerId: scaleAnswer.surveyScaleAnswerId,\n            SurveyScaleId: scaleAnswer.surveyScaleId,\n            Description: scaleAnswer.description,\n            ScaleValue: scaleAnswer.scaleValue,\n            AnswerOrder: scaleAnswer.answerOrder,\n            Active: scaleAnswer.active\n        });\n    }\n    const handleOnNewScaleAnswer = () => {\n        setSelectedAnswer(null);\n        setShowEditAnswer(true);\n    };\n    const handleOnCancelEditQuestion = () => {\n        setSelectedAnswer(null);\n        setShowEditAnswer(false);\n    }\n    const handleOnSaveEditQuestion = () => {\n        setRefreshAnswer(prev => prev + 1);\n        setShowEditAnswer(false);\n    }\n\n    return (\n        <div className=\"dashboard-admin-container\">\n            <Form\n                onFinish={onSave}\n                className=\"form-backoffice\"\n                layout={'vertical'}\n                fields={[\n                    {\n                        \"name\": [\"Description\"],\n                        \"value\": surveyScale.Description\n                    },\n                ]}\n            >\n                <Row gutter={16}>\n                    <Col xs={24}>\n                        <Form.Item\n                            label={'Descripción'}\n                            name=\"Description\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo Requerido'\n                                }\n                            ]}\n                        >\n                            <Input\n                                type=\"text\"\n                                name=\"Description\"\n                                onChange={handleInputValue}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                        <div className=\"form-backoffice-footer\">\n                            <Button\n                                type={'primary'}\n                                htmlType={'submit'}\n                            >\n                                <p>Guardar</p>\n                                <FaSave />\n                            </Button>\n                        </div>\n                    </Col>\n                </Row>\n            </Form>\n            {\n                (surveyScale.SurveyScaleId !== 0) &&\n                <Row gutters={16}>\n                    <Col md={12} sm={24} xs={24}>\n                        <div className=\"admin-heading mobile\">\n                            <h4>Lista de respuestas</h4>\n                            {\n                                (!showEditAnswer) ?\n                                    <Button type={'primary'}\n                                            htmlType={'button'} onClick={handleOnNewScaleAnswer}>\n                                        <p>Agregar respuesta</p>\n                                        <FaPlus />\n                                    </Button>\n                                    :\n                                    <Button type={'primary'}\n                                        htmlType=\"button\"\n                                        onClick={handleOnCancelEditQuestion}\n                                    >\n                                        <p>Cancelar</p>\n                                        <FaTimesCircle />\n                                    </Button>\n                            }\n                        </div>\n                        {\n                            showEditAnswer ?\n                                <EditSurveyScaleAnswer\n                                    surveyScaleId={surveyScale.SurveyScaleId}\n                                    currentAnswer={selectedAnswer}\n                                    onCancelEdit={handleOnCancelEditQuestion}\n                                    onSave={handleOnSaveEditQuestion}\n                                />\n                                : null\n                        }\n                        <SearchSurveyScaleAnswer\n                            surveyScale={{ surveyScaleId: props.surveyScaleId }}\n                            onSelectAnswer={onSelectAnswer}\n                            refresh={refreshAnswer}\n                        />\n                    </Col>\n                </Row>\n            }\n\n        </div>\n    );\n}\n","import React from 'react';\nimport { EditSurveyScale } from './editSurveyScale';\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\n\nexport function DetailsSurveyScale(props) {\n    return (\n        <div className=\"dashboard-admin-container\">\n            <TitleAdmin\n                title={'Escalas de valoración'}\n                subtitle={props.match.params.id !== \"0\" ? \"Editar escala\" : \"Nueva escala\"}\n                event={() => window.history.back()}\n            />\n            <EditSurveyScale surveyScaleId={props.match.params.id} />\n        </div>\n    );\n}\n","import React, { useState, useEffect, Fragment } from 'react';\nimport { Link } from 'react-router-dom'\nimport Moment from 'react-moment'\nimport { useAcknowledgment } from '../../services/acknowledgment.service'\n\nexport function SearchBoard(props) {\n\tconst [acknowledgmentTypes, setAcknowledgmentTypes] = useState([]);\n\tconst [isActive, setIsActive] = useState(1);\n\n\tuseEffect(() => {\n\t\tuseAcknowledgment.getAcknowledgments()\n\t\t\t.then((data) => setAcknowledgmentTypes(data))\n\t}, [])\n\n\tconst showAcknowledgmentType = (acknowledgmentType) => {\n\t\tlet show = false\n\t\tswitch (isActive) {\n\t\t\tcase 1:\n\t\t\t\tshow = true\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tshow = (Date.now() - Date.parse(acknowledgmentType.validTo) <= 86400000)\n\t\t\t\t\t&& Date.parse(acknowledgmentType.validFrom) < Date.now()\n\t\t\t\t\t&& acknowledgmentType.active\n\t\t\t\tbreak\n\t\t\tcase 3:\n\t\t\t\tshow = (Date.parse(acknowledgmentType.validTo) < Date.now()) ||\n\t\t\t\t\t(Date.parse(acknowledgmentType.validFrom) > Date.now()) ||\n\t\t\t\t\t(!acknowledgmentType.active)\n\t\t\t\tbreak\n\t\t}\n\t\treturn show\n\t}\n\n\treturn (\n\t\t<div className=\"table-responsive card shadows p-3\">\n\t\t\t<div className=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n\t\t\t\t<button className={\"btns \" + (isActive === 1 ? \"active\" : \"\")} onClick={() => setIsActive(1)}>Todos</button>\n\t\t\t\t<button className={\"btns \" + (isActive === 2 ? \"active\" : \"\")} onClick={() => setIsActive(2)}>Activos</button>\n\t\t\t\t<button className={\"btns \" + (isActive === 3 ? \"active\" : \"\")} onClick={() => setIsActive(3)}>Inactivos</button>\n\t\t\t</div>\n\t\t\t<table className=\"wrapper_table table table-hover table-sm\">\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th className=\"text fnt_medium\">ID Categoría</th>\n\t\t\t\t\t\t<th className=\"text fnt_medium\">Titulo</th>\n\t\t\t\t\t\t<th className=\"text fnt_medium\">Descripción</th>\n\t\t\t\t\t\t<th className=\"text fnt_medium\">Status</th>\n\t\t\t\t\t\t<th className=\"text fnt_medium\">Desde</th>\n\t\t\t\t\t\t<th className=\"text fnt_medium\">Hasta</th>\n\t\t\t\t\t\t<th className=\"text fnt_medium\">Acciones</th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{acknowledgmentTypes.map(acknowledgmentType => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t{showAcknowledgmentType(acknowledgmentType) &&\n\t\t\t\t\t\t\t\t<tr key={acknowledgmentType.acknowledgmentTypeId}>\n\t\t\t\t\t\t\t\t\t<td>{acknowledgmentType.acknowledgmentTypeId}</td>\n\t\t\t\t\t\t\t\t\t<td>{acknowledgmentType.title}</td>\n\t\t\t\t\t\t\t\t\t<td>{acknowledgmentType.descritption}</td>\n\t\t\t\t\t\t\t\t\t<td>{acknowledgmentType.active ? 'Active' : 'Inactive'}</td>\n\t\t\t\t\t\t\t\t\t<td><Moment locale=\"es\" format=\"DD/MM/YYYY\">{acknowledgmentType.validFrom}</Moment></td>\n\t\t\t\t\t\t\t\t\t<td><Moment locale=\"es\" format=\"DD/MM/YYYY\">{acknowledgmentType.validTo}</Moment></td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<Link to={'/details-category/' + acknowledgmentType.acknowledgmentTypeId}>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"icon_tables\">\n\t\t\t\t\t\t\t\t\t\t\t\t<i className=\"fas fa-pen\"></i>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n}","import React from 'react';\nimport { Link } from 'react-router-dom'\nimport { SearchBoard } from './searchBoard';\n\nimport './boardAdmin.scss'\n\nexport const AdminBoard = () => {\n  return (\n    <section className=\"dashboard-container-page\">\n      <div className=\"admin-board-container\">\n        <div className=\"box_ttl_opt mb-0\">\n          <h2 className=\"mb-0 text fnt_medium\">Reconocimiento</h2>\n          <div className=\"box_actions\">\n            <Link className=\"link_data\" to=\"/details-category\">\n              <button type=\"button\" className=\"btn secundary\">\n                <i className=\"fas fa-plus\"></i> Nueva categoría\n              </button>\n            </Link>\n          </div>\n        </div>\n        <div className=\"box_ttl_opt\">\n          <h6 className=\"mb-0 text-muted\">Administrador</h6>\n        </div>\n      </div>\n      <div>\n        <SearchBoard />\n      </div>\n    </section>\n  );\n}\n","import { callApi } from './service'\n\nexport const useSurveyAnswerType = {\n    createSurveyAnswerType,\n    updateSurveyAnswerType,\n    deleteSurveyAnswerType,\n    getSurveyAnswerTypes\n};\nasync function createSurveyAnswerType(params) {\n    return callApi('/backoffice/SurveyAnswerType', 'POST', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function getSurveyAnswerTypes() {\n    return callApi('/backoffice/SurveyAnswerType', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function updateSurveyAnswerType(params) {\n    return callApi('/backoffice/SurveyAnswerType', 'PUT', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function deleteSurveyAnswerType(params) {\n    return callApi('/backoffice/SurveyAnswerType', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}","import React, { useEffect, useState } from 'react';\nimport useInputForm from '../../components/CustonHooks/FormHook'\nimport { useSurveyAnswerType } from '../../services/surveyAnswerType.service'\n\nexport function EditAnswerType(props) {\n\tconst onSave = () => {\n\t\tif (inputs.SurveyAnswerTypeId && inputs.SurveyAnswerTypeId > 0)\n\t\t\tuseSurveyAnswerType.updateSurveyAnswerType({ SurveyAnswerTypeId: parseInt(inputs.SurveyAnswerTypeId), Description: inputs.Description }).then((result) => {\n\t\t\t\tif (props.onSave)\n\t\t\t\t\tprops.onSave();\n\t\t\t});\n\t\telse\n\t\t\tuseSurveyAnswerType.createSurveyAnswerType({ Description: inputs.Description }).then((result) => {\n\t\t\t\tif (props.onSave)\n\t\t\t\t\tprops.onSave();\n\t\t\t});\n\t};\n\tconst handleOnCancel = () => {\n\t\tif (props.onCancelEdit)\n\t\t\tprops.onCancelEdit();\n\t};\n\tconst [survey, setSurvey] = useState({ SurveyAnswerTypeId: \"\", Description: \"\" });\n\tconst { handleSubmit, handleInputChange, inputs, setInputs } = useInputForm(onSave, survey);\n\n\tuseEffect(() => {\n\t\tlet newP = {};\n\t\tif (props.currentAnswerType) {\n\t\t\tnewP = { SurveyAnswerTypeId: props.currentAnswerType.SurveyAnswerTypeId.toString(), Description: props.currentAnswerType.Description };\n\t\t\tsetSurvey(newP);\n\t\t}\n\t\telse\n\t\t\tsetSurvey({ SurveyAnswerTypeId: \"\", Description: \"\" });\n\t}, [props.currentAnswerType]);\n\n\treturn (\n\t\t<div className=\"row\">\n\t\t\t<div className=\"col-md-8\">\n\t\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"SurveyAnswerTypeId\" onChange={handleInputChange} value={inputs.SurveyAnswerTypeId} />\n\t\t\t\t\t\t<div className=\"form-group\">\n\n\t\t\t\t\t\t\t<label>Tipo de respuesta</label>\n\t\t\t\t\t\t\t<input type=\"text\" className=\"form-control\" name=\"Description\" onChange={handleInputChange} value={inputs.Description} required />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"mt-4\">\n\t\t\t\t\t\t<button className=\"btn minimum ml-1 mr-1 secundary\" type=\"button\" onClick={handleOnCancel}>Cancelar</button>\n\t\t\t\t\t\t<button className=\"btn minimum primary ml-1 mr-1\" type=\"submit\">Guardar</button>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\t);\n}   ","import React, { useEffect, useState } from 'react';\nimport { useSurveyAnswerType } from '../../services/surveyAnswerType.service';\nimport { EditAnswerType } from '../surveyAdmin/editAnswerType'\n\nexport function SearchSurveyAnswerType(props) {\n\tconst [surveysData, setSurveysData] = useState({ surveys: [] });\n\tconst handleDelete = (data) => {\n\t\tuseSurveyAnswerType.deleteSurveyAnswerType(data).then((result) => { getSurveyAnswerTypes(); });\n\t};\n\n\tuseEffect(() => {\n\t\tgetSurveyAnswerTypes();\n\t}, [props.refresh]);\n\n\tasync function getSurveyAnswerTypes() {\n\t\tuseSurveyAnswerType.getSurveyAnswerTypes().then((result) => {\n\t\t\tif (result) {\n\t\t\t\tsetSurveysData({ surveys: result });\n\t\t\t}\n\t\t});\n\t}\n\n\treturn (\n\t\t<div className=\"wrapper_type_answer\">\n\t\t\t<div className=\"row\">\n\t\t\t\t<div className=\"col-md-6 mb-3\">\n\t\t\t\t\t<EditAnswerType />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"col-md-6 mb-3\">\n\t\t\t\t\t<h4 className=\" mb-4\">Lista de tipos de respuestas</h4>\n\t\t\t\t\t<div className=\"table-responsive\">\n\t\t\t\t\t\t<table className=\"wrapper_table table table-sm table-hover\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th className=\"text fnt_medium\">Id\t</th>\n\t\t\t\t\t\t\t\t<th className=\"text fnt_medium min_width\">Description</th>\n\t\t\t\t\t\t\t\t<th className=\"text fnt_medium\">Active\t\t</th>\n\t\t\t\t\t\t\t\t<th className=\"text fnt_medium\">Acciones\t\t</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{surveysData.surveys.map(survey => (\n\t\t\t\t\t\t\t\t<tr key={survey.surveyAnswerTypeId} >\n\t\t\t\t\t\t\t\t\t<td>{survey.surveyAnswerTypeId}</td>\n\t\t\t\t\t\t\t\t\t<td>{survey.description}</td>\n\t\t\t\t\t\t\t\t\t<td>{survey.active ? 'Active' : 'Inactive'}</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"icon_tables\" onClick={() => props.onSelectAnswerType(survey)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<i className=\"icon-edit\"></i>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<span className=\"icon_tables\" onClick={() => handleDelete(survey)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<i className=\"icon-trash\"></i>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</div>\n\n\t);\n}\n","import React, { useState } from 'react';\nimport { EditAnswerType } from './editAnswerType';\nimport { SearchSurveyAnswerType } from './searchAnswerTypes';\n\nexport function AdminAnswerTypes() {\n    const [showEdit, setShowEdit] = useState(false);\n    const [selectedAnswerType, setSelectedAnswerType] = useState();\n    const [refresh, setRefresh] = useState(0);\n\n    const handleOnSelected = (survey) => {\n        setShowEdit(true);\n        setSelectedAnswerType({ SurveyAnswerTypeId: survey.surveyAnswerTypeId, Description: survey.description });\n    };\n    const handleOnNew = () => {\n        setSelectedAnswerType(null);\n        setShowEdit(true);\n    };\n    const handleOnCancelEdit = () => {\n        setSelectedAnswerType(null);\n        setShowEdit(false);\n    }\n    const handleOnSaveEdit = () => {\n        setRefresh(prev => prev + 1);\n        setShowEdit(false);\n    }\n    return (\n        <div>\n            <div>\n                <button type=\"button\" onClick={handleOnNew}>Add Answer Type</button>\n            </div>\n            <div>\n                <SearchSurveyAnswerType onSelectAnswerType={handleOnSelected} refresh={refresh} />\n            </div>\n            <div>\n                {showEdit ? <EditAnswerType currentAnswerType={selectedAnswerType} onCancelEdit={handleOnCancelEdit} onSave={handleOnSaveEdit} /> : null}\n            </div>\n        </div>\n    );\n}","import React, { useEffect, useRef, useState } from \"react\";\nimport { useQuestion } from \"../../services/surveyQuestion.service\";\nimport { Button, Col, Dropdown, Input, Space, Table, Tag } from \"antd\";\nimport { FaEdit, FaTrash } from \"react-icons/fa\";\nimport { SearchOutlined } from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport { FaEllipsisVertical } from \"react-icons/fa6\";\nimport withReactContent from \"sweetalert2-react-content\";\nimport Swal from \"sweetalert2\";\nconst MySwal = withReactContent(Swal);\n\nexport const SearchQuestion = (props) => {\n  const [questionsData, setQuestionsData] = useState({ questions: [] });\n  const [searchText, setSearchText] = useState(\"\");\n  const [searchedColumn, setSearchedColumn] = useState(\"\");\n  const searchInput = useRef(null);\n\n  const handleDelete = (data) => {\n    if (props.isSurveyAlreadyStarted) return;\n\n    MySwal.fire({\n      title: \"¿Estás seguro?\",\n      text: \"No podrás revertir esta acción\",\n      icon: \"warning\",\n      showCancelButton: true,\n      confirmButtonText: \"Eliminar\",\n      cancelButtonText: \"Cancelar\",\n    }).then((result) => {\n      if (result.isConfirmed)\n        useQuestion\n          .deleteQuestion(data)\n          .then((result) => getQuestions(props.survey));\n    });\n  };\n  const handleSelectQuestion = (data) => {\n    if (props.onSelectQuestion) props.onSelectQuestion(data);\n  };\n\n  useEffect(() => {\n    getQuestions(parseInt(props.survey));\n  }, [props.survey, props.refresh]);\n\n  const getQuestions = async (id) => {\n    if (id !== 0)\n      useQuestion.getQuestions(id).then((result) => {\n        if (result) {\n          setQuestionsData({ questions: result });\n          props.setSurveyQuestions(result);\n        }\n      });\n  };\n\n  const handleSearch = (selectedKeys, confirm, dataIndex) => {\n    confirm();\n    setSearchText(selectedKeys[0]);\n    setSearchedColumn(dataIndex);\n  };\n\n  const handleReset = (clearFilters) => {\n    clearFilters();\n    setSearchText(\"\");\n  };\n\n  const getColumnSearchProps = (dataIndex) => ({\n    filterDropdown: ({\n      setSelectedKeys,\n      selectedKeys,\n      confirm,\n      clearFilters,\n      close,\n    }) => (\n      <div style={{ padding: 8 }} onKeyDown={(e) => e.stopPropagation()}>\n        <Input\n          ref={searchInput}\n          placeholder={`Buscar`}\n          value={selectedKeys[0]}\n          onChange={(e) =>\n            setSelectedKeys(e.target.value ? [e.target.value] : [])\n          }\n          onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n          style={{\n            marginBottom: 8,\n            display: \"block\",\n          }}\n        />\n        <Space>\n          <Button\n            type=\"primary\"\n            onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n            icon={<SearchOutlined />}\n            size=\"small\"\n            style={{\n              width: 90,\n            }}\n          >\n            Buscar\n          </Button>\n          <Button\n            onClick={() => clearFilters && handleReset(clearFilters)}\n            size=\"small\"\n            style={{\n              width: 90,\n            }}\n          >\n            Limpiar\n          </Button>\n        </Space>\n      </div>\n    ),\n    filterIcon: (filtered) => (\n      <SearchOutlined\n        style={{\n          color: filtered ? \"#1677ff\" : undefined,\n        }}\n      />\n    ),\n    onFilter: (value, record) =>\n      record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n    onFilterDropdownOpenChange: (visible) => {\n      if (visible) {\n        setTimeout(() => searchInput.current?.select(), 100);\n      }\n    },\n    render: (text) =>\n      searchedColumn === dataIndex ? (\n        <Highlighter\n          highlightStyle={{\n            backgroundColor: \"#ffc069\",\n            padding: 0,\n          }}\n          searchWords={[searchText]}\n          autoEscape\n          textToHighlight={text ? text.toString() : \"\"}\n        />\n      ) : (\n        text\n      ),\n  });\n\n  const columnsQuestions = [\n    {\n      title: \"Pregunta\",\n      key: \"question\",\n      dataIndex: \"question\",\n      fixed: \"left\",\n      width: 200,\n      ...getColumnSearchProps(\"question\"),\n    },\n    {\n      title: \"Tipo de pregunta\",\n      key: \"typeQuestion\",\n      dataIndex: \"typeQuestion\",\n      width: 60,\n      sorter: (a, b) => {\n        if (a.typeQuestion < b.typeQuestion) {\n          return -1;\n        }\n        if (a.typeQuestion > b.typeQuestion) {\n          return 1;\n        }\n        return 0;\n      },\n      sortDirections: [\"descend\", \"ascend\"],\n    },\n    {\n      title: \"Estatus\",\n      key: \"status\",\n      dataIndex: \"status\",\n      width: 80,\n    },\n    {\n      title: \"Opciones\",\n      key: \"options\",\n      dataIndex: \"options\",\n      width: 50,\n    },\n  ];\n\n  let items;\n\n  const handleItems = (item) => {\n    let i = 1;\n    items = [\n      {\n        key: item.surveyQuestionId,\n        label: (\n          <Button\n            type=\"primary\"\n            htmlType={\"button\"}\n            className=\"edit\"\n            onClick={() => handleSelectQuestion(item)}\n          >\n            <FaEdit /> Editar\n          </Button>\n        ),\n      },\n      {\n        key: item.surveyQuestionId + (i + 1),\n        label: (\n          <Button\n            type=\"primary\"\n            htmlType={\"button\"}\n            className=\"delete\"\n            onClick={() => handleDelete(item)}\n          >\n            <FaTrash /> Eliminar\n          </Button>\n        ),\n      },\n    ];\n  };\n\n  const questions = questionsData.questions.map((item) => {\n    handleItems(item);\n    return {\n      key: item.surveyQuestionId,\n      question: item.question,\n      typeQuestion: item.answerType,\n      status: (\n        <Tag color={item.estatus === \"Activa\" ? \"success\" : \"blue\"}>\n          {item.estatus}\n        </Tag>\n      ),\n      options: (\n        <Space wrap>\n          <Dropdown\n            menu={{ items }}\n            placement=\"bottomRight\"\n            arrow={{\n              pointAtCenter: true,\n            }}\n          >\n            <Button type={\"primary\"} htmlType={\"button\"} className={\"dots\"}>\n              <FaEllipsisVertical />\n            </Button>\n          </Dropdown>\n        </Space>\n      ),\n    };\n  });\n\n  return (\n    <div className=\"wpr_quest_search\">\n      <Table\n        dataSource={questions}\n        columns={columnsQuestions}\n        className=\"table-admin \"\n        locale={{\n          triggerDesc: \"Ordenamiento descendente\",\n          triggerAsc: \"Ordenamiento ascedente\",\n          cancelSort: \"Cancelar ordenamiento\",\n          emptyText: \"Sin registros\",\n        }}\n      />\n    </div>\n  );\n};\n","import { callApi } from './service'\n\nexport const useAnswerConfig = {\n    createAnswerConfig,\n    updateAnswerConfig,\n    deleteAnswerConfig,\n    getAnswerConfigs\n};\nasync function createAnswerConfig(params) {\n    return callApi('/backoffice/SurveyAnswerConfig', 'POST', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function getAnswerConfigs(params) {\n    return callApi('/backoffice/SurveyAnswerConfig/' + params, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function updateAnswerConfig(params) {\n    return callApi('/backoffice/SurveyAnswerConfig', 'PUT', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function deleteAnswerConfig(params) {\n    return callApi('/backoffice/SurveyAnswerConfig', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}","import React, { useEffect, useRef, useState } from \"react\";\nimport { useAnswerConfig } from \"../../services/surveyAnswerConfig.service\";\nimport { FaEdit, FaTrash } from \"react-icons/fa\";\nimport { Col, Input, Space, Button, Table, Tag } from \"antd\";\nimport { SearchOutlined } from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport withReactContent from \"sweetalert2-react-content\";\nimport Swal from \"sweetalert2\";\nconst MySwal = withReactContent(Swal);\n\nexport function SearchAnswer(props) {\n  const [answerData, setAnswersData] = useState([]);\n  const [searchText, setSearchText] = useState(\"\");\n  const [searchedColumn, setSearchedColumn] = useState(\"\");\n  const searchInput = useRef(null);\n\n  const handleDelete = (data) => {\n    MySwal.fire({\n      title: \"¿Estás seguro?\",\n      text: \"No podrás revertir esta acción\",\n      icon: \"warning\",\n      showCancelButton: true,\n      confirmButtonColor: \"#FF002A\",\n      confirmButtonText: \"Eliminar\",\n      cancelButtonText: \"Cancelar\",\n    }).then((result) => {\n      if (result.isConfirmed)\n        useAnswerConfig.deleteAnswerConfig(data).then((result) => getAnswers());\n    });\n  };\n\n  const handleSelectAnswer = (data) => {\n    if (props.onSelectAnswer) props.onSelectAnswer(data);\n  };\n\n  async function getAnswers() {\n    useAnswerConfig\n      .getAnswerConfigs(props.surveyQuestionId)\n      .then((result) => setAnswersData(result));\n  }\n\n  const handleSearch = (selectedKeys, confirm, dataIndex) => {\n    confirm();\n    setSearchText(selectedKeys[0]);\n    setSearchedColumn(dataIndex);\n  };\n\n  const handleReset = (clearFilters) => {\n    clearFilters();\n    setSearchText(\"\");\n  };\n\n  const getColumnSearchProps = (dataIndex) => ({\n    filterDropdown: ({\n      setSelectedKeys,\n      selectedKeys,\n      confirm,\n      clearFilters,\n      close,\n    }) => (\n      <div style={{ padding: 8 }} onKeyDown={(e) => e.stopPropagation()}>\n        <Input\n          ref={searchInput}\n          placeholder={`Buscar`}\n          value={selectedKeys[0]}\n          onChange={(e) =>\n            setSelectedKeys(e.target.value ? [e.target.value] : [])\n          }\n          onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n          style={{\n            marginBottom: 8,\n            display: \"block\",\n          }}\n        />\n        <Space>\n          <Button\n            type=\"primary\"\n            onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n            icon={<SearchOutlined />}\n            size=\"small\"\n            style={{ width: 90 }}\n          >\n            Buscar\n          </Button>\n          <Button\n            onClick={() => clearFilters && handleReset(clearFilters)}\n            size=\"small\"\n            style={{\n              width: 90,\n            }}\n          >\n            Limpiar\n          </Button>\n        </Space>\n      </div>\n    ),\n    filterIcon: (filtered) => (\n      <SearchOutlined\n        style={{\n          color: filtered ? \"#1677ff\" : undefined,\n        }}\n      />\n    ),\n    onFilter: (value, record) =>\n      record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n    onFilterDropdownOpenChange: (visible) => {\n      if (visible) {\n        setTimeout(() => searchInput.current?.select(), 100);\n      }\n    },\n    render: (text) =>\n      searchedColumn === dataIndex ? (\n        <Highlighter\n          highlightStyle={{\n            backgroundColor: \"#ffc069\",\n            padding: 0,\n          }}\n          searchWords={[searchText]}\n          autoEscape\n          textToHighlight={text ? text.toString() : \"\"}\n        />\n      ) : (\n        text\n      ),\n  });\n\n  const columnsAnswers = [\n    {\n      title: \"Orden\",\n      key: \"order\",\n      dataIndex: \"order\",\n      fixed: \"left\",\n      width: 5,\n      sorter: (a, b) => {\n        if (a.order < b.order) {\n          return -1;\n        }\n        if (a.order > b.order) {\n          return 1;\n        }\n        return 0;\n      },\n      sortDirections: [\"descend\", \"ascend\"],\n    },\n    {\n      title: \"Respuesta\",\n      key: \"answer\",\n      dataIndex: \"answer\",\n      width: 300,\n      sorter: (a, b) => {\n        if (a.answer < b.answer) {\n          return -1;\n        }\n        if (a.answer > b.answer) {\n          return 1;\n        }\n        return 0;\n      },\n      sortDirections: [\"descend\", \"ascend\"],\n      ...getColumnSearchProps(\"answer\"),\n    },\n    {\n      title: \"Estatus\",\n      key: \"status\",\n      dataIndex: \"status\",\n      width: 80,\n      sorter: (a, b) => {\n        if (a.status < b.status) {\n          return -1;\n        }\n        if (a.status > b.status) {\n          return 1;\n        }\n        return 0;\n      },\n      sortDirections: [\"descend\", \"ascend\"],\n    },\n    {\n      title: \"Opciones\",\n      key: \"options\",\n      dataIndex: \"options\",\n      width: 90,\n    },\n  ];\n\n  const dataAnswers =\n    answerData?.map((item) => {\n      return {\n        key: item.surveyAnswerConfigId,\n        order: item.answerOrder,\n        answer: item.answer,\n        status: (\n          <Tag color={item.estatus === \"Activa\" ? \"success\" : \"blue\"}>\n            {item.estatus}\n          </Tag>\n        ),\n        options: (\n          <Space wrap>\n            {!props.isSurveyAlreadyStarted && (\n              <Button\n                type=\"primary\"\n                htmlType={\"button\"}\n                className=\"edit\"\n                onClick={() => handleSelectAnswer(item)}\n              >\n                <FaEdit />\n              </Button>\n            )}\n            <Button\n              type=\"primary\"\n              htmlType={\"button\"}\n              className=\"delete\"\n              onClick={() => handleDelete(item)}\n            >\n              <FaTrash />\n            </Button>\n          </Space>\n        ),\n      };\n    }) ?? [];\n\n  useEffect(() => {\n    if (props.surveyQuestionId !== \"\") getAnswers();\n  }, [props.refresh]);\n\n  return (\n    <div className=\"wpr_quest_search\">\n      <Table\n        className={\"table-admin\"}\n        columns={columnsAnswers}\n        dataSource={dataAnswers}\n        locale={{\n          triggerDesc: \"Ordenamiento descendente\",\n          triggerAsc: \"Ordenamiento ascedente\",\n          cancelSort: \"Cancelar ordenamiento\",\n          emptyText: \"Sin registros\",\n        }}\n      />\n    </div>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useAnswerConfig } from '../../services/surveyAnswerConfig.service'\nimport {Button, Col, Form, Input, Row, Select} from 'antd';\nimport {FaSave} from \"react-icons/fa\";\nimport {Checkbox} from \"../components/checkbox/checkbox\";\nimport Swal from \"sweetalert2\";\n\nexport function EditAnswer(props) {\n    const [answer, setAnswer] = useState({\n        SurveyAnswerConfigId: 0,\n        SurveyQuestionId: parseInt(props.surveyQuestionId),\n        AnswerOrder: 0,\n        Answer: \"\",\n        IsRight: false,\n        IsImage: false,\n        StepAnswer: 0\n    });\n    const [stepOptions, setStepOptions] = useState([]);\n\n    const onSaveAnswer = () => {\n        if (answer.SurveyAnswerConfigId > 0)\n            useAnswerConfig.updateAnswerConfig({\n                SurveyAnswerConfigId: answer.SurveyAnswerConfigId,\n                SurveyQuestionId: answer.SurveyQuestionId,\n                AnswerOrder: parseInt(answer.AnswerOrder),\n                Answer: answer.Answer,\n                IsRight: answer.IsRight,\n                IsImage: answer.IsImage,\n                StepAnswer: answer.StepAnswer\n            }).then((result) => {\n                if (props.onSave) {\n                    props.onSave();\n                    Swal.fire({\n                        icon: \"success\",\n                        confirmButtonColor: \"#80d96b\",\n                        title: \"La respuesta se actualizó correctamente\",\n                        showConfirmButton: false,\n                        timer: 1500\n                    });\n                }\n            });\n        else\n            useAnswerConfig.createAnswerConfig({\n                SurveyQuestionId: parseInt(props.surveyQuestionId),\n                AnswerOrder: answer.AnswerOrder,\n                Answer: answer.Answer,\n                IsRight: answer.IsRight,\n                IsImage: answer.IsImage,\n                StepAnswer: answer.StepAnswer\n            }).then((result) => {\n                if (props.onSave) {\n                    props.onSave();\n                    Swal.fire({\n                        icon: \"success\",\n                        confirmButtonColor: \"#80d96b\",\n                        title: \"La respuesta se creó correctamente\",\n                        showConfirmButton: false,\n                        timer: 1500\n                    });\n                }\n            });\n\n        setAnswer({\n            SurveyAnswerConfigId: 0,\n            SurveyQuestionId: parseInt(props.surveyQuestionId),\n            AnswerOrder: 0,\n            Answer: \"\",\n            IsRight: false,\n            IsImage: false,\n            StepAnswer: 0\n        })\n    };\n\n    useEffect(() => {\n        if ((props.currentAnswer)) {\n            setAnswer({\n                SurveyAnswerConfigId: props.currentAnswer.SurveyAnswerConfigId,\n                SurveyQuestionId: props.currentAnswer.SurveyQuestionId,\n                AnswerOrder: props.currentAnswer.AnswerOrder,\n                Answer: props.currentAnswer.Answer,\n                IsRight: props.currentAnswer.IsRight,\n                IsImage: props.currentAnswer.IsImage,\n                StepAnswer: props.currentAnswer.StepAnswer\n            });\n        }\n    }, [props.currentAnswer]);\n\n    useEffect(() => {\n        const filterData = props.surveyQuestions.filter(item => item.surveyQuestionId > props.surveyQuestionId);\n        setStepOptions(filterData)\n    }, [props.surveyQuestionId]);\n\n    const handleSelectState = (value) => setAnswer({ ...answer, StepAnswer: value });\n\n    const handleCheck = (value) => setAnswer({...answer, IsImage: value});\n\n    const handleInputChange = (e) => setAnswer({...answer, [e.target.name]: e.target.value});\n\n    return (\n        <Col xs={24}>\n            <Form\n                onFinish={onSaveAnswer}\n                className=\"form-backoffice\"\n                layout={'vertical'}\n                fields={[\n                    {\n                        \"name\": [\"AnswerOrder\"],\n                        \"value\": answer.AnswerOrder\n                    },\n                    {\n                        \"name\": [\"Answer\"],\n                        \"value\": answer.Answer\n                    },\n                    {\n                        \"name\": [\"StepAnswer\"],\n                        \"value\": answer.StepAnswer\n                    },\n                ]}\n            >\n                <Row gutter={16}>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Orden'}\n                            htmlFor={'AnswerOrder'}\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                            name=\"AnswerOrder\"\n                        >\n                            <Input\n                                type=\"number\"\n                                name=\"AnswerOrder\"\n                                min=\"1\"\n                                onChange={handleInputChange}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Respuesta'}\n                            htmlFor={'Answer'}\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                            name=\"Answer\"\n                        >\n                            <Input\n                                type=\"text\"\n                                name=\"Answer\"\n                                onChange={handleInputChange}\n                            />\n                        </Form.Item>\n                    </Col>\n                        <Col xs={24}>\n                            <Form.Item\n                                label={'¿La respuesta es solo una imagen?'}\n                                htmlFor={'StepAnswer'}\n                                name={answer.IsImage}\n                            >\n                                <Checkbox\n                                    text={'¿Es imagen?'}\n                                    label={'IsImage'}\n                                    name={answer.IsImage}\n                                    handleValueCheck={handleCheck}\n                                />\n                            </Form.Item>\n                        </Col>\n                        {\n                            props.isMultipleOption && <>\n                                {\n                                    stepOptions.length > 0 &&\n                                    <Col md={16} sm={24} xs={24}>\n                                        <Form.Item\n                                            label={'Salto'}\n                                            htmlFor={'StepAnswer'}\n                                            name={'StepAnswer'}\n                                        >\n                                            <Select\n                                                name=\"StepAnswer\"\n                                                placeholder=\"Seleccione una opción\"\n                                                onChange={handleSelectState}\n                                            >\n                                                {\n                                                    stepOptions.map(item =>\n                                                        <Select.Option key={item.surveyQuestionId} value={item.surveyQuestionId}> {item.question}</Select.Option>\n                                                    )\n                                                }\n                                                <Select.Option value={-1}>[Finalizar Encuesta]</Select.Option>\n                                            </Select>\n                                        </Form.Item>\n                                    </Col>\n                                }\n                            </>\n                        }\n                    <Col xs={24}>\n                        <div className=\"form-backoffice-footer\">\n                            <Button type={'primary'} htmlType=\"submit\">\n                                <p>Guardar</p>\n                                <FaSave />\n                            </Button>\n                        </div>\n                    </Col>\n                </Row>\n            </Form>\n        </Col>\n    );\n}\n","import React from 'react';\nimport {Result} from \"antd\";\n\nexport function AlertResult({title,html = '', status,subTitle = ''}) {\n    return (\n        <Result\n            status={status}\n            title={title}\n            extra={html}\n            subTitle={subTitle}\n            className={'table-empty'}\n        />\n    );\n}\n","import React, { useEffect, useState } from 'react';\nimport { SearchAnswer } from './searchAnswers';\nimport { EditAnswer } from './answer';\nimport { SurveyTypes } from '../../enums/surveyTypes';\nimport {Row} from \"antd\";\nimport {AlertResult} from \"../components/alertResult\";\n\nexport function EditQuestionAnswer(props, {surveyId}) {\n\n\tconst [question, setQuestion] = useState({\n\t\tSurveyQuestionId: \"\",\n\t\tSurveyId: parseInt(surveyId),\n\t\tSurveyAnswerTypeId: \"\",\n\t\tQuestion: \"\"\n\t});\n\tconst [refreshAnswers, setRefreshAnswers] = useState(0);\n\n\tuseEffect(() => {\n\t\tif (props.currentQuestion) {\n\t\t\tsetQuestion({\n\t\t\t\tSurveyQuestionId: props.currentQuestion.SurveyQuestionId,\n\t\t\t\tSurveyId: props.currentQuestion.SurveyId,\n\t\t\t\tSurveyAnswerTypeId: props.currentQuestion.SurveyAnswerTypeId,\n\t\t\t\tQuestion: props.currentQuestion.Question\n\t\t\t});\n\t\t}\n\t\tsetRefreshAnswers(prev => prev + 1);\n\t\tprops.setSelectedAnswer(null);\n\t}, [props.currentQuestion]);\n\n\tconst handleOnSelectAnswer = (answer) => {\n\t\tprops.onCancelEdit(true,null)\n\t\tprops.setSelectedAnswer({\n\t\t\tSurveyAnswerConfigId: answer.surveyAnswerConfigId,\n\t\t\tSurveyQuestionId: answer.surveyQuestionId,\n\t\t\tAnswerOrder: answer.answerOrder,\n\t\t\tAnswer: answer.answer,\n\t\t\tIsRight: answer.isRight,\n\t\t\tIsImage: answer.isImage,\n\t\t\tStepAnswer: answer.stepAnswer\n\t\t});\n\t}\n\n\tconst handleOnSaveEditAnswer = () => setRefreshAnswers(prev => prev + 1);\n\n\treturn (\n\t\t<>\n\t\t\t{question.SurveyAnswerTypeId !== parseInt(SurveyTypes.MULTIMEDIA) && question.SurveyAnswerTypeId !== parseInt(SurveyTypes.OPEN) ?\n\t\t\t\t<>\n\t\t\t\t\t<Row xs={24}>\n\t\t\t\t\t\t{(props.editAnswer) &&\n\t\t\t\t\t\t\t<EditAnswer\n\t\t\t\t\t\t\t\tsurveyQuestions={props.surveyQuestions}\n\t\t\t\t\t\t\t\tisMultipleOption={(question.SurveyAnswerTypeId === parseInt(SurveyTypes.MULTIPLE_OPTION))}\n\t\t\t\t\t\t\t\tsurveyQuestionId={question.SurveyQuestionId}\n\t\t\t\t\t\t\t\tcurrentAnswer={props.selectedAnswer}\n\t\t\t\t\t\t\t\tonSave={handleOnSaveEditAnswer}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<SearchAnswer\n\t\t\t\t\t\t\tisSurveyAlreadyStarted={props.isSurveyAlreadyStarted}\n\t\t\t\t\t\t\tsurveyQuestionId={question.SurveyQuestionId}\n\t\t\t\t\t\t\tonSelectAnswer={handleOnSelectAnswer}\n\t\t\t\t\t\t\trefresh={refreshAnswers}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Row>\n\t\t\t\t</>\n\t\t\t\t:\n\t\t\t\t<AlertResult\n\t\t\t\t\ttitle={'¡Ups!'}\n\t\t\t\t\tsubTitle=\"Este tipo de pregunta no necesita añadir respuestas\"\n\t\t\t\t/>\n\t\t\t}\n\t\t</>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { useQuestion } from '../../services/surveyQuestion.service'\nimport { Link } from 'react-router-dom/cjs/react-router-dom';\nimport {Button, Col, Form, Input, Row, Select} from \"antd\";\nimport {FaPlus, FaSave} from \"react-icons/fa\";\nimport {useSurveyScale} from \"../../services/surveyScale.service\";\nimport {useSurveyAnswerType} from \"../../services/surveyAnswerType.service\";\nimport Swal from \"sweetalert2\";\n\n\nexport function EditQuestion({currentQuestion,surveyId,onSaveParent,isSurveyAlreadyStarted}) {\n\n\tconst [scalesValues, setScalesValues] = useState([]);\n\tconst [answerValues, setAnswerValues] = useState([]);\n\tconst [question, setQuestion] = useState({\n\t\tSurveyQuestionId: \"\",\n\t\tSurveyId: parseInt(surveyId),\n\t\tSurveyAnswerTypeId: \"\",\n\t\tQuestion: \"\",\n\t\tSurveyScaleId: \"\"\n\t});\n\n\tconst onSave = () => {\n\t\tif (question.SurveyQuestionId && question.SurveyQuestionId > 0) {\n\t\t\tuseQuestion.updateQuestion({\n\t\t\t\tSurveyQuestionId: question.SurveyQuestionId,\n\t\t\t\tSurveyId: question.SurveyId,\n\t\t\t\tSurveyAnswerTypeId: question.SurveyAnswerTypeId,\n\t\t\t\tQuestion: question.Question,\n\t\t\t\tSurveyScaleId: question.SurveyScaleId ? question.SurveyScaleId : 0 })\n\t\t\t\t.then((result) => {\n\t\t\t\t\tonSaveParent();\n\t\t\t\t})\n\t\t\tSwal.fire({\n\t\t\t\ticon: \"success\",\n\t\t\t\tconfirmButtonColor: \"#80d96b\",\n\t\t\t\ttitle: \"La pregunta se actualizó correctamente\",\n\t\t\t\tshowConfirmButton: false,\n\t\t\t\ttimer: 1500\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tuseQuestion.createQuestion({\n\t\t\t\tSurveyId: question.SurveyId,\n\t\t\t\tSurveyAnswerTypeId: question.SurveyAnswerTypeId,\n\t\t\t\tQuestion: question.Question,\n\t\t\t\tSurveyScaleId: question.SurveyScaleId ? question.SurveyScaleId : 0\n\t\t\t}).then((result) => {\n\t\t\t\tonSaveParent();\n\t\t\t});\n\n\t\t\tSwal.fire({\n\t\t\t\ticon: \"success\",\n\t\t\t\tconfirmButtonColor: \"#80d96b\",\n\t\t\t\ttitle: \"La pregunta se creó correctamente\",\n\t\t\t\tshowConfirmButton: false,\n\t\t\t\ttimer: 1500\n\t\t\t});\n\t\t}\n\t};\n\n\tconst handleInputValue = (e) => setQuestion({...question, [e.target.name]: e.target.value})\n\n\tconst handleChangeSelectEscale = (value) => setQuestion({...question, SurveyScaleId: value });\n\n\tconst handleChangeSelectTypeAnswer = (value) => setQuestion({...question, SurveyAnswerTypeId: value });\n\n\tconst getCatalogScales = () => {\n\t\tuseSurveyScale.getSurveyScales()\n\t\t\t.then((result) => {\n\t\t\t\tsetScalesValues(result.map(item => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: item.surveyScaleId,\n\t\t\t\t\t\tlabel: item.description\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t});\n\t}\n\n\tconst getCatalogAnswers = () => {\n\t\tuseSurveyAnswerType.getSurveyAnswerTypes()\n\t\t\t.then((result) => {\n\t\t\t\tsetAnswerValues(result.map(item => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tlabel: item.description,\n\t\t\t\t\t\tvalue: item.surveyAnswerTypeId\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t});\n\t}\n\n\tuseEffect(() => {\n\t\tgetCatalogScales();\n\t\tgetCatalogAnswers();\n\t\tif (currentQuestion) {\n\t\t\tsetQuestion({\n\t\t\t\tSurveyQuestionId: parseInt(currentQuestion.SurveyQuestionId),\n\t\t\t\tSurveyId: parseInt(currentQuestion.SurveyId),\n\t\t\t\tSurveyAnswerTypeId: parseInt(currentQuestion.SurveyAnswerTypeId),\n\t\t\t\tQuestion: currentQuestion.Question,\n\t\t\t\tSurveyScaleId: parseInt(currentQuestion.SurveyScaleId)\n\t\t\t});\n\t\t}\n\t\t//setRefreshAnswers(prev => prev + 1);\n\t\t//setSelectedAnswer(null);\n\t\t//setShowEditAnswer(false);\n\t}, [currentQuestion]);\n\n\treturn (\n\t\t<Col xs={24}>\n\t\t\t<Form\n\t\t\t\tonFinish={onSave}\n\t\t\t\tclassName=\"form-backoffice\"\n\t\t\t\tlayout={'vertical'}\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tfields={[\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": [\"Question\"],\n\t\t\t\t\t\t\"value\": question.Question\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": [\"surveyAnswerTypeId\"],\n\t\t\t\t\t\t\"value\": question.SurveyAnswerTypeId\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": [\"surveyScaleId\"],\n\t\t\t\t\t\t\"value\": question.SurveyScaleId\n\t\t\t\t\t},\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t<Row gutter={16}>\n\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Pregunta'}\n\t\t\t\t\t\t\thtmlFor={'Question'}\n\t\t\t\t\t\t\tname=\"Question\"\n\t\t\t\t\t\t\tonChange={handleInputValue}\n\t\t\t\t\t\t\trules={[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\tmessage: '*Campo requerido'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Input type=\"text\" name=\"Question\" />\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Tipo de respuesta'}\n\t\t\t\t\t\t\thtmlFor={'surveyAnswerTypeId'}\n\t\t\t\t\t\t\trules={[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\tmessage: '*Campo requerido'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\tname={'surveyAnswerTypeId'}\n\t\t\t\t\t\t\tinitialValue={question.SurveyAnswerTypeId}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\tname={'surveyAnswerTypeId'}\n\t\t\t\t\t\t\t\tonChange={handleChangeSelectTypeAnswer}\n\t\t\t\t\t\t\t\toptions={answerValues}\n\t\t\t\t\t\t\t\tdisabled={(isSurveyAlreadyStarted)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t{question.SurveyAnswerTypeId === 3 &&\n\t\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\t\tlabel={'Tipo de escala'}\n\t\t\t\t\t\t\t\thtmlFor={'surveyScaleId'}\n\t\t\t\t\t\t\t\tname={'surveyScaleId'}\n\t\t\t\t\t\t\t\trules={[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\tmessage: '*Campo requerido'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tname={'surveyScaleId'}\n\t\t\t\t\t\t\t\t\tonChange={handleChangeSelectEscale}\n\t\t\t\t\t\t\t\t\toptions={scalesValues}\n\t\t\t\t\t\t\t\t\tdisabled={(isSurveyAlreadyStarted)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t\t\t<div className=\"form-backoffice-footer\">\n\t\t\t\t\t\t\t\t<Link to={`/admin/AdminSurveyScale/${surveyId}`}>\n\t\t\t\t\t\t\t\t\t<p>Agregar tipo de escala</p>\n\t\t\t\t\t\t\t\t\t<FaPlus />\n\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Col>\n\t\t\t\t\t}\n\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t<div className=\"form-backoffice-footer\">\n\t\t\t\t\t\t\t<Button type=\"primary\" htmlType={'submit'}>\n\t\t\t\t\t\t\t\t<p>Guardar</p>\n\t\t\t\t\t\t\t\t<FaSave />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Col>\n\t\t\t\t</Row>\n\t\t\t</Form>\n\t\t</Col>\n\n\t);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { SelectUsers } from \"../../components/Helpers/selectUsers\";\nimport { AudienceUsers } from \"../../components/Helpers/audienceUsers\";\nimport { useSurvey } from \"../../services/survey.service\";\nimport { SearchQuestion } from \"./searchQuestion\";\nimport { EditQuestionAnswer } from \"./editQuestionAnswer\";\nimport { Link, useParams } from \"react-router-dom\";\nimport moment from \"moment\";\nimport { AlertResult } from \"../components/alertResult\";\nimport { FaChevronRight, FaSave, FaTimes } from \"react-icons/fa\";\nimport { companyEventTypeService } from \"../../services/companyEventType.service\";\nimport { EventTypes } from \"../../enums/eventTypes\";\nimport Swal from \"sweetalert2\";\nimport dayjs from \"dayjs\";\nimport { Col, DatePicker, Form, Row, Button, Input } from \"antd\";\nimport { InputAdd } from \"../components/inputAdd/inputAdd\";\nimport withReactContent from \"sweetalert2-react-content\";\nimport { EditQuestion } from \"./editQuestion\";\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { SurveyTypes } from \"../../enums/surveyTypes\";\nconst MySwal = withReactContent(Swal);\n\nexport const EditSurvey = () => {\n  const [userSelec, setUserSelec] = useState([]);\n  const [refreshQuestions, setRefreshQuestions] = useState(0);\n  const [showEditQuestion, setShowEditQuestion] = useState(false);\n  const [selectedQuestion, setSelectedQuestion] = useState();\n  const [surveyQuestions, setSurveyQuestions] = useState([]);\n  const [isAudienceAddressed, setIsAudienceAddressed] = useState(false);\n  const [survey, setSurvey] = useState({\n    SurveyId: 0,\n    Title: \"\",\n    StartDate: \"\",\n    EndDate: \"\",\n    Reward: 0,\n    IsFullAnswered: false,\n    Active: true,\n  });\n  const { RangePicker } = DatePicker;\n  const { id } = useParams();\n  const [showEditAnswer, setShowEditAnswer] = useState(false);\n  const [selectedAnswer, setSelectedAnswer] = useState(null);\n  const [disabledSubmit, setDisabledSubmit] = useState(false);\n\n  const onSave = () => {\n    setDisabledSubmit(true);\n    if (isAudienceAddressed && userSelec.length <= 0) {\n      return MySwal.fire({\n        icon: \"error\",\n        title: \"Oops...\",\n        text: \"Debes elegir al menos un usuario\",\n      });\n    }\n    survey.Reward = parseInt(survey.Reward);\n    survey.ListUser = userSelec;\n    if (!(survey.SurveyId && survey.SurveyId > 0)) {\n      useSurvey.createSurvey(survey);\n      clearObj();\n    } else {\n      useSurvey.updateSurvey(survey);\n      clearObj();\n    }\n  };\n\n  const clearObj = () => {\n    setSurvey({\n      SurveyId: 0,\n      Title: \"\",\n      StartDate: \"\",\n      EndDate: \"\",\n      Reward: 0,\n      IsFullAnswered: false,\n      Active: true,\n    });\n  };\n\n  const handleOnSelectQuestion = (question) => {\n    setShowEditQuestion(true);\n    setSelectedQuestion({\n      SurveyQuestionId: parseInt(question.surveyQuestionId),\n      SurveyId: parseInt(question.surveyId),\n      SurveyAnswerTypeId: parseInt(question.surveyAnswerTypeId),\n      Question: question.question,\n      SurveyScaleId: parseInt(question.surveyScaleId),\n    });\n  };\n  const handleOnNewQuestion = () => {\n    setSelectedQuestion(null);\n    setShowEditQuestion(true);\n  };\n  const handleOnCancelEditQuestion = (selectedQuestion, editQuestion) => {\n    setSelectedQuestion(selectedQuestion);\n    setShowEditQuestion(editQuestion);\n  };\n  const handleOnSaveEditQuestion = () => {\n    setRefreshQuestions((prev) => prev + 1);\n    setShowEditQuestion(false);\n  };\n\n  const getCompanyEventType = () => {\n    companyEventTypeService\n      .getByCompanyAndEventType(\n        process.env.REACT_APP_COMPANY,\n        EventTypes.SURVEY\n      )\n      .then((result) => {\n        if (result) setIsAudienceAddressed(result.isAudienceAddressed);\n      });\n  };\n\n  const disabledDate = (current) => {\n    return current && current < dayjs().startOf(\"day\");\n  };\n\n  const onChangeDate = (date, dateString) => {\n    const startDate = moment(dateString[0]).format(\"YYYY-MM-DD\");\n    const endDate = moment(dateString[1]).format(\"YYYY-MM-DD\");\n    setSurvey({ ...survey, StartDate: startDate, EndDate: endDate });\n  };\n\n  const handleCurrentSurvey = (value) =>\n    setSurvey({ ...survey, Reward: value });\n\n  const handleInputValue = (e) =>\n    setSurvey({ ...survey, [e.target.name]: e.target.value });\n\n  const handleOnNewAnswer = (value) => setShowEditAnswer(value);\n\n  const handleOnCancelEditAnswer = (editAnswer, selectedAnswer) => {\n    setShowEditAnswer(editAnswer);\n    setSelectedAnswer(selectedAnswer);\n  };\n\n  useEffect(() => {\n    getCompanyEventType();\n    if (parseInt(id) !== 0) {\n      useSurvey.getSurveysById(id).then((result) => {\n        setSurvey({\n          SurveyId: result.surveyId,\n          Title: result.title,\n          StartDate: result.startDate,\n          EndDate: result.endDate,\n          Reward: result.reward,\n          IsFullAnswered: result.isFullAnswered,\n          Active: result.active,\n          IsAlreadyStarted: result.isAlreadyStarted,\n          Estatus: result.estatus,\n        });\n        if (result.isAlreadyStarted && String(result.estatus) === \"Activa\") {\n          MySwal.fire({\n            title: \"Upps!\",\n            text: \"Algunos usuarios ya han comenzado la encuesta, por lo que ya no es posible añadir o eliminar preguntas\",\n            icon: \"warning\",\n          });\n        }\n      });\n      setDisabledSubmit(false);\n    }\n\n    setRefreshQuestions((prev) => prev + 1);\n    setSelectedQuestion(null);\n    setShowEditQuestion(false);\n  }, [id]);\n\n  return (\n    <div className=\"dashboard-container-page\">\n      <Form\n        layout={\"vertical\"}\n        onFinish={onSave}\n        className=\"form-backoffice\"\n        fields={[\n          {\n            name: [\"Title\"],\n            value: survey.Title,\n          },\n          {\n            name: [\"Date\"],\n            value: survey.StartDate\n              ? [dayjs(survey.StartDate), dayjs(survey.EndDate)]\n              : \"\",\n          },\n        ]}\n      >\n        <Row gutter={16}>\n          <Col md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Título de encuesta\"}\n              htmlFor={\"Title\"}\n              className=\"form-dashboard-group\"\n              name=\"Title\"\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo requerido\",\n                },\n                {\n                  pattern: new RegExp(/^\\S/),\n                  message: \"No se aceptan espacios en blanco al inicio\",\n                },\n              ]}\n              onChange={handleInputValue}\n            >\n              <Input type=\"text\" name=\"Title\" />\n            </Form.Item>\n          </Col>\n        </Row>\n        <Row gutter={16}>\n          <Col md={12} sm={24} xs={24}>\n            <Form.Item\n              label={\"Fecha de inicio y finalización\"}\n              htmlFor={\"Date\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo requerido\",\n                },\n              ]}\n              name=\"Date\"\n            >\n              <RangePicker\n                name=\"Date\"\n                placeholder={[\"Inicia\", \"Termina\"]}\n                onChange={onChangeDate}\n                format={\"DD/MMM/YYYY\"}\n                disabledDate={disabledDate}\n              />\n            </Form.Item>\n          </Col>\n          <Col md={12} sm={24} xs={24}>\n            <Form.Item label={\"Reward\"} htmlFor={\"Reward\"}>\n              <InputAdd\n                maxLength={6}\n                maxQuantity={99999}\n                minQuantity={-99999}\n                valueInt={survey.Reward}\n                handleCurrentNumber={handleCurrentSurvey}\n              />\n            </Form.Item>\n          </Col>\n        </Row>\n        {isAudienceAddressed &&\n          (parseInt(id) > 0 ? (\n            <AudienceUsers\n              targetId={id}\n              eventType=\"Encuesta\"\n              selectUser={setUserSelec}\n            />\n          ) : (\n            <SelectUsers\n              selectUser={setUserSelec}\n              title={\"Encuesta dirigida a:\"}\n            />\n          ))}\n        <Row>\n          <Col xs={24}>\n            <div className=\"form-backoffice-footer\">\n              <Button\n                htmlType={\"submit\"}\n                type=\"primary\"\n                disabled={disabledSubmit}\n              >\n                <p>Guardar</p>\n                <FaSave />\n              </Button>\n              {survey.IsFullAnswered ? (\n                <Link\n                  to={\"/admin/survey-results/\" + id}\n                  className={\"btn-secondary\"}\n                >\n                  <p>Ver Resultados</p>\n                  <FaChevronRight />\n                </Link>\n              ) : null}\n            </div>\n          </Col>\n        </Row>\n      </Form>\n      {parseInt(id) !== 0 ? (\n        <Row gutter={16} style={{ marginTop: \"1rem\" }}>\n          <Col lg={12} md={24} sm={24} xs={24}>\n            <div className=\"admin-heading mobile\">\n              <h4>Lista de preguntas</h4>\n              {!showEditQuestion ? (\n                <Button\n                  disabled={\n                    survey.IsAlreadyStarted &&\n                    String(survey.Estatus) === \"Activa\"\n                  }\n                  onClick={handleOnNewQuestion}\n                  type={\"primary\"}\n                  htmlType={\"button\"}\n                >\n                  <p>Agregar pregunta</p>\n                  <PlusCircleOutlined />\n                </Button>\n              ) : (\n                <Button\n                  disabled={\n                    survey.IsAlreadyStarted &&\n                    String(survey.Estatus) === \"Activa\"\n                  }\n                  type={\"primary\"}\n                  htmlType={\"button\"}\n                  onClick={handleOnCancelEditQuestion}\n                >\n                  <p>Cancelar </p>\n                  <FaTimes />\n                </Button>\n              )}\n            </div>\n            <Row gutter={16}>\n              {showEditQuestion && (\n                <EditQuestion\n                  surveyId={id}\n                  isSurveyAlreadyStarted={\n                    survey.IsAlreadyStarted &&\n                    String(survey.Estatus) === \"Activa\"\n                  }\n                  currentQuestion={selectedQuestion}\n                  onSaveParent={handleOnSaveEditQuestion}\n                  edit={showEditQuestion}\n                />\n              )}\n              <SearchQuestion\n                setSurveyQuestions={setSurveyQuestions}\n                survey={id}\n                isSurveyAlreadyStarted={\n                  survey.IsAlreadyStarted && String(survey.Estatus) === \"Activa\"\n                }\n                onSelectQuestion={handleOnSelectQuestion}\n                refresh={refreshQuestions}\n              />\n            </Row>\n          </Col>\n          <Col lg={12} md={24} sm={24} xs={24}>\n            <div className=\"admin-heading mobile\">\n              {selectedQuestion?.SurveyAnswerTypeId !== SurveyTypes.MULTIMEDIA &&\n              selectedQuestion?.SurveyAnswerTypeId !== SurveyTypes.OPEN ? (\n                <>\n                  <h4>Lista de Respuestas</h4>\n                  {showEditQuestion ? (\n                    <Button\n                      disabled={\n                        survey.IsAlreadyStarted &&\n                        String(survey.Estatus) === \"Activa\"\n                      }\n                      onClick={() =>\n                        !showEditAnswer\n                          ? handleOnNewAnswer(true)\n                          : handleOnCancelEditAnswer(false)\n                      }\n                      type={\"primary\"}\n                      htmlType={\"button\"}\n                    >\n                      <p>\n                        {!showEditAnswer ? \"Agregar respuesta\" : \"Cancelar\"}\n                      </p>\n                      {!showEditAnswer ? <PlusCircleOutlined /> : <FaTimes />}\n                    </Button>\n                  ) : null}\n                </>\n              ) : null}\n            </div>\n            {showEditQuestion ? (\n              <EditQuestionAnswer\n                surveyQuestions={surveyQuestions}\n                editAnswer={showEditAnswer}\n                //isSurveyAlreadyStarted={survey.IsAlreadyStarted && String(survey.Estatus) === \"Activa\"}\n                surveyId={id}\n                setSelectedAnswer={setSelectedAnswer}\n                selectedAnswer={selectedAnswer}\n                currentQuestion={selectedQuestion}\n                onCancelEdit={handleOnCancelEditAnswer}\n                onSave={handleOnSaveEditQuestion}\n              />\n            ) : (\n              <AlertResult\n                title={\"¡Ups!\"}\n                subTitle={\"Debes seleccionar una pregunta\"}\n                status={\"warning\"}\n              />\n            )}\n          </Col>\n        </Row>\n      ) : null}\n    </div>\n  );\n};\n","import React from 'react';\nimport { EditSurvey } from './editSurvey'\nimport {useHistory, useParams} from \"react-router-dom\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\n\nexport const DetailsSurvey = () => {\n\n    const history = useHistory();\n    const {surveyId} = useParams();\n\n    return (\n        <div className=\"dashboard-admin-container\">\n            <TitleAdmin\n                title={'Tu Opinión'}\n                subtitle={surveyId !== \"0\" ? \"Editar encuesta\" : \"Nueva encuesta\"}\n                event={() => history.push(\"/admin/AdminSurvey\")}\n            />\n            <EditSurvey surveyId={surveyId} />\n        </div>\n    );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useSurvey } from \"../../services/survey.service\";\nimport { ResponsivePie } from \"@nivo/pie\";\nimport { ResponsiveBar} from '@nivo/bar'\n\nexport const SurveyChart = (props) => {\n\n  const [chartData , setChartData ] = useState([]);\n  const [keys, setKeys] = useState([]);\n\n  useEffect(() => {\n    if ((String(props.surveyId) !== \"\" && props.surveyId) ||\n        (String(props.surveyQuestionId) !== \"\" && props.surveyQuestionId) ||\n        (String(props.chartGrouping) !== \"\" && props.chartGrouping)\n    ) getChartData(props.surveyId, props.surveyQuestionId, props.chartGrouping);\n  }, [props]);\n\n\n  const getChartData = async (surveyId, questionId, chartGroupId) => {\n\n    if(parseInt(props.anwerTypeId) !== 1){\n      useSurvey.getChartData(surveyId, questionId, chartGroupId).then((result) => {\n        if (result.length !== []) {\n          if(parseInt(chartGroupId) === 1){\n            let dataValues = result?.filter(item => parseInt(item.id) === 1) ?? [];\n            if(dataValues.length !== 0) {\n              const dataValuesParsed = JSON.parse(dataValues[0].data);\n              setChartData(dataValuesParsed)\n            }\n          } else {\n            let dataValues = result?.filter(item => parseInt(item.id) === 0) ?? [];\n            if(dataValues.length !== 0) {\n              const dataValuesParsed = JSON.parse(dataValues[0].data);\n              setChartData(dataValuesParsed);\n              const keyValues = result.filter(item => parseInt(item.id) === 1);\n              const keyValuesParsed = JSON.parse(keyValues[0].data);\n              setKeys(keyValuesParsed)\n            }\n\n          }\n        }\n\n      });\n    }\n  };\n\n  const styles = {\n    root: {\n      fontFamily: \"consolas, sans-serif\",\n    },\n    totalLabel: {\n      fontSize: 24,\n    },\n  };\n\n  return (\n      <>\n          <h2>{props.questionTitle}</h2>\n          <div className=\"drawer__cont_svg\" style={styles.root}>\n              {props.chartGrouping === 1 ?\n                  <ResponsivePie\n                      data={chartData}\n                      margin={{ top: 40, right: 80, bottom: 80, left: 80 }}\n                      innerRadius={0.5}\n                      padAngle={0.7}\n                      cornerRadius={3}\n                      activeOuterRadiusOffset={8}\n                      borderWidth={1}\n                      borderColor={{ from: \"color\", modifiers: [[\"darker\", 0.2]] }}\n                      arcLinkLabelsSkipAngle={10}\n                      arcLinkLabelsTextColor=\"#333333\"\n                      arcLinkLabelsThickness={2}\n                      arcLinkLabelsColor={{ from: \"color\" }}\n                      arcLabelsSkipAngle={10}\n                      arcLabelsTextColor={{\n                        from: \"color\",\n                        modifiers: [[\"darker\", 2]],\n                      }}\n                      defs={[\n                        {\n                          id: \"dots\",\n                          type: \"patternDots\",\n                          background: \"inherit\",\n                          color: \"rgba(255, 255, 255, 0.3)\",\n                          size: 4,\n                          padding: 1,\n                          stagger: true,\n                        },\n                        {\n                          id: \"lines\",\n                          type: \"patternLines\",\n                          background: \"inherit\",\n                          color: \"rgba(255, 255, 255, 0.3)\",\n                          rotation: -45,\n                          lineWidth: 6,\n                          spacing: 10,\n                        },\n                      ]}\n                      legends={[\n                        {\n                          anchor: \"bottom\",\n                          direction: \"row\",\n                          justify: false,\n                          translateX: 0,\n                          translateY: 56,\n                          itemsSpacing: 0,\n                          itemWidth: 100,\n                          itemHeight: 18,\n                          itemTextColor: \"#999\",\n                          itemDirection: \"left-to-right\",\n                          itemOpacity: 1,\n                          symbolSize: 18,\n                          symbolShape: \"circle\",\n                          effects: [\n                            {\n                              on: \"hover\",\n                              style: {\n                                itemTextColor: \"#000\",\n                              },\n                            },\n                          ],\n                        },\n                      ]}\n                  />\n                  : \"\"\n              }\n              {props.chartGrouping !== 1 ?\n                  <ResponsiveBar\n                      data={chartData}\n                      keys={keys}\n                      indexBy=\"Grupo\"\n                      margin={{ top: 60, right: 100, bottom: 100, left: 60 }}\n                      padding={0.45}\n                      valueScale={{ type: 'linear' }}\n                      indexScale={{ type: 'band', round: true }}\n                      colors={{ scheme: 'nivo' }}\n                      defs={[\n                        {\n                          id: 'dots',\n                          type: 'patternDots',\n                          background: 'inherit',\n                          color: '#38bcb2',\n                          size: 4,\n                          padding: 1,\n                          stagger: true\n                        },\n                        {\n                          id: 'lines',\n                          type: 'patternLines',\n                          background: 'inherit',\n                          color: '#eed312',\n                          rotation: -45,\n                          lineWidth: 6,\n                          spacing: 10\n                        }\n                      ]}\n                      borderColor={{ from: 'color', modifiers: [ [ 'darker', 1.6 ] ] }}\n                      axisTop={null}\n                      axisRight={null}\n                      axisBottom={{\n                        tickSize: 5,\n                        tickPadding: 5,\n                        tickRotation: -45,\n                        legend: 'Grupo',\n                        legendPosition: 'middle',\n                        legendOffset: 50\n                      }}\n                      axisLeft={{\n                        tickSize: 5,\n                        tickPadding: 5,\n                        tickRotation: 0,\n                        legend: 'total',\n                        legendPosition: 'middle',\n                        legendOffset: -40\n                      }}\n                      labelSkipWidth={12}\n                      labelSkipHeight={12}\n                      labelTextColor={{ from: 'color', modifiers: [ [ 'darker', 1.6 ] ] }}\n                      legends={[\n                        {\n                          dataFrom: 'keys',\n                          anchor: 'bottom-right',\n                          direction: 'column',\n                          justify: false,\n                          translateX: 120,\n                          translateY: 0,\n                          itemsSpacing: 2,\n                          itemWidth: 100,\n                          itemHeight: 20,\n                          itemDirection: 'left-to-right',\n                          itemOpacity: 0.85,\n                          symbolSize: 20,\n                          effects: [\n                            {\n                              on: 'hover',\n                              style: {\n                                itemOpacity: 1\n                              }\n                            }\n                          ]\n                        }\n                      ]}\n                      role=\"application\"\n                      ariaLabel=\"Nivo bar chart demo\"\n                      // barAriaLabel={function(e){return e.id+\": \"+e.formattedValue+\" in country: \"+e.indexValue}}\n                  />\n\n                  : \"\"\n              }\n\n            </div>\n      </>\n  );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useQuestion } from '../../services/surveyQuestion.service'\n\nexport function SurveyAnswerList(props) {\n\tconst [answerList, setAnswerList] = useState(0);\n\n\tuseEffect(() => {\n\t\tgetAnswerList(props.questionId);\n\t}, [props.questionId]);\n\n\tconst getAnswerList = async (questionId) => {\n\t\tuseQuestion.getQuestionAnswerList(questionId).then((result) => {\n\t\t\tif (result) {\n\t\t\t\tsetAnswerList(result);\n\t\t\t}\n\t\t});\n\t};\n\n\treturn (\n\t\t<div className=\"table-responsive card shadows p-3\">\n\t\t\t<table className=\"wrapper_table table table-hover table-sm\">\n\t\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th className=\"text fnt_medium min_width\">Usuario </th>\n\t\t\t\t\t<th className=\"text fnt_medium\">Respuesta</th>\n\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t{answerList && answerList.map(answer => (\n\t\t\t\t\t<tr key={answer.surveyUserProfileAnswerId}>\n\t\t\t\t\t\t<td className=\"text-left\">\n\t\t\t\t\t\t\t{answer.userName}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td className=\"text-left\">{answer.answerText}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n}\n","import React, {useEffect, useRef, useState} from \"react\";\nimport { useSurvey } from \"../../services/survey.service\";\nimport { SurveyChart } from \"./surveyChart\";\nimport { SurveyAnswerList } from \"./surveyAnswerList\";\nimport \"./surveyResult.scss\";\nimport {Button, Col, Divider, Radio, Row, Space} from \"antd\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport { useHistory, useParams} from \"react-router-dom\";\nimport {Splide, SplideSlide} from \"@splidejs/react-splide\";\n\nexport const SurveyResults = () => {\n\n  const {id} = useParams();\n  const history = useHistory();\n  const splidejs = useRef();\n\n  const [surveyResult,setSurveyResult] = useState({\n    surveyInfo: [],\n    questions: [],\n    questionIndex: 1,\n    questionCount: 0,\n    questionIndexSave: -1,\n    chartGrouping: 1,\n  });\n\n  const handleToggleGroupChange = (e) => setSurveyResult( {...surveyResult, chartGrouping: e.target.value} );\n\n  const getSurveyInfo = async (id) => {\n    useSurvey.getSurveysInfoById(id).then((result) => {\n      if (result) {\n        setSurveyResult({\n          ...surveyResult,\n          surveyInfo: result,\n          questionCount: result.questionCount,\n          questions: result.questionList,\n          questionIndex: 1,\n        });\n      }\n    });\n  };\n\n  const handleArrowPrev = () => {\n    if(surveyResult.questionIndex > 1) {\n      setSurveyResult({ ...surveyResult, questionIndex: surveyResult.questionIndex - 1 });\n      splidejs.current.splide.go('-1')\n    }\n  }\n\n  const handleArrowNext = () => {\n    if(surveyResult.questionIndex < surveyResult.questions.length) {\n      setSurveyResult({ ...surveyResult, questionIndex: surveyResult.questionIndex + 1 });\n      splidejs.current.splide.go('+1')\n    }\n  }\n\n  useEffect(() => {\n    if (id) getSurveyInfo(id);\n  }, [id])\n\n  return (\n      <>\n        <section className=\"dashboard-admin-container\">\n          <TitleAdmin\n              title={'Tu Opinión'}\n              subtitle={`Resultado de la encuesta | ${surveyResult.surveyInfo.title}`}\n              event={() => history.push(`/admin/details-survey/${id}`)}\n          />\n\n          <Row className=\"section-surveys\">\n            <Col xs={24}>\n              <Divider>\n                  <Space>\n                    Pregunta\n                    <span>{surveyResult.questionIndex} </span>\n                    <span>/</span>\n                    <span>{surveyResult.questionCount}</span>\n                  </Space>\n              </Divider>\n            </Col>\n\n            <Col xs={24}>\n              <div className={'section-surveys-header'}>\n                <Button\n                    type={'primary'}\n                    htmlType={'button'}\n                    onClick={handleArrowPrev}\n                >\n                  <p>Anterior</p>\n                </Button>\n                <Button\n                    type={'primary'}\n                    htmlType={'button'}\n                    onClick={handleArrowNext}\n                >\n                  <p>Siguiente</p>\n                </Button>\n              </div>\n            </Col>\n            <Splide\n                ref={splidejs}\n                options={ {\n                  rewind: true,\n                  perPage: 1,\n                  arrows: false,\n                  speed: 2000,\n                  perMove: 1,\n                  drag: true,\n                }}\n            >\n              {surveyResult.questions.map((question, index) => (\n                  <SplideSlide>\n                      {question.surveyAnswerTypeId === 2 ?\n                          <div className={'section-surveys-radios'}>\n                            <Radio.Group\n                                onChange={handleToggleGroupChange}\n                                defaultValue={surveyResult.chartGrouping}\n                                size=\"large\"\n                            >\n                              <Radio.Button value=\"1\">General</Radio.Button>\n                              <Radio.Button value=\"2\">Por Género</Radio.Button>\n                              <Radio.Button value=\"3\">Por Edad</Radio.Button>\n                              <Radio.Button value=\"4\">Por Segmento</Radio.Button>\n                            </Radio.Group>\n                          </div>\n                          :\n                          <h5>Pregunta de respuesta abierta</h5>\n                      }\n                      <>\n                        {question.surveyAnswerTypeId === 2 ?\n                            <SurveyChart\n                                key={index+question.surveyQuestionId}\n                                surveyId={surveyResult.surveyInfo.surveyId}\n                                surveyQuestionId={question.surveyQuestionId}\n                                chartGrouping={surveyResult.chartGrouping}\n                                questionTitle = {question.question}\n                                anwerTypeId = {question.surveyAnswerTypeId}\n                            />\n                            :\n                            <SurveyAnswerList\n                                key={index+question.surveyQuestionId+index}\n                                questionId={question.surveyQuestionId}\n                            />\n                        }\n                      </>\n                  </SplideSlide>\n              ))}\n            </Splide>\n          </Row>\n        </section>\n      </>\n  );\n}\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\n\nexport const deparmentService = {\n    createDeparment,\n    updateDeparment,\n    getDeparment,\n    deletetDeparment\n};\n\n\nasync function createDeparment(params) {\n    return callApi('/backoffice/Department', 'POST', params);\n}\n\nasync function updateDeparment(params) {\n    return callApi('/backoffice/Department', 'PUT', params);\n}\n\nasync function getDeparment() {\n    return callApi('/backoffice/Department', 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function deletetDeparment(params) {\n    return callApi('/backoffice/Department', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"El grupo se desactivo correctamente\", icon: \"success\" })\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar el grupo\", icon: \"error\" });\n        }\n    });\n}\n\n","import React, {useEffect, useState, forwardRef, useImperativeHandle, useRef} from 'react';\nimport { deparmentService } from '../../services/deparment.service';\nimport '../admin/admin.scss';\nimport {Button, Input, Space, Table, Tag} from \"antd\";\nimport MySwal from \"sweetalert2\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\n\n\nconst SearchDepartment = forwardRef((props, ref) => {\n\n\tconst [dataGrid, setDataGrid] = useState([]);\n\tconst [searchText, setSearchText] = useState('');\n\tconst [searchedColumn, setSearchedColumn] = useState('');\n\tconst searchInput = useRef(null);\n\n\tconst handleDelete = (data) => {\n\t\tMySwal.fire({\n\t\t\ttitle:\"¿Deseas desactivar este grupo?\",\n\t\t\ttext: \"No podrás revertir esta acción\",\n\t\t\ticon: 'warning',\n\t\t\tshowCancelButton: true,\n\t\t\tconfirmButtonText: 'Eliminar',\n\t\t\tcancelButtonText: 'Cancelar'\n\t\t}).then((result) => {\n\t\t\tif(result.isConfirmed)\n\t\t\t\tdeparmentService.deletetDeparment(data).then((result) => getDeparment());\n\t\t})\n\t};\n\n\tasync function getDeparment() {\n\t\tdeparmentService.getDeparment()\n\t\t\t.then((result) => {\n\t\t\t\tif (result) setDataGrid(result);\n\t\t\t});\n\t}\n\n\tconst refreshDataGrid = () => getDeparment();\n\n\tconst handleSearch = (selectedKeys, confirm, dataIndex) => {\n\t\tconfirm();\n\t\tsetSearchText(selectedKeys[0]);\n\t\tsetSearchedColumn(dataIndex);\n\t};\n\n\tconst handleReset = (clearFilters) => {\n\t\tclearFilters();\n\t\tsetSearchText('');\n\t};\n\n\tconst getColumnSearchProps = (dataIndex) => ({\n\t\tfilterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n\t\t\t<div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n\t\t\t\t<Input\n\t\t\t\t\tref={searchInput}\n\t\t\t\t\tplaceholder={`Buscar`}\n\t\t\t\t\tvalue={selectedKeys[0]}\n\t\t\t\t\tonChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n\t\t\t\t\tonPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n\t\t\t\t\tstyle={{marginBottom: 8, display: 'block',}}\n\t\t\t\t/>\n\t\t\t\t<Space>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\tonClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n\t\t\t\t\t\ticon={<SearchOutlined />}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tstyle={{width: 90,}}\n\t\t\t\t\t>\n\t\t\t\t\t\tBuscar\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={() => clearFilters && handleReset(clearFilters)}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tstyle={{width: 90,}}\n\t\t\t\t\t>\n\t\t\t\t\t\tLimpiar\n\t\t\t\t\t</Button>\n\t\t\t\t</Space>\n\t\t\t</div>\n\t\t),\n\t\tfilterIcon: (filtered) => (\n\t\t\t<SearchOutlined style={{color: filtered ? '#1677ff' : undefined,}}/>\n\t\t),\n\t\tonFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n\t\tonFilterDropdownOpenChange: (visible) => {\n\t\t\tif (visible) setTimeout(() => searchInput.current?.select(), 100);\n\t\t},\n\t\trender: (text) =>\n\t\t\tsearchedColumn === dataIndex ? (\n\t\t\t\t<Highlighter\n\t\t\t\t\thighlightStyle={{backgroundColor: '#ffc069', padding: 0,}}\n\t\t\t\t\tsearchWords={[searchText]}\n\t\t\t\t\tautoEscape\n\t\t\t\t\ttextToHighlight={text ? text.toString() : ''}\n\t\t\t\t/>\n\t\t\t) : (text),\n\t});\n\n\tconst columnsDepartment = [\n\t\t{\n\t\t\ttitle: 'Grupo',\n\t\t\tdataIndex: 'name',\n\t\t\tkey: 'name',\n\t\t\t...getColumnSearchProps('name'),\n\t\t},\n\t\t{\n\t\t\ttitle: 'Estatus',\n\t\t\tdataIndex: 'status',\n\t\t\tkey: 'status',\n\t\t\tsorter: (a, b) => {\n\t\t\t\tif(a.status < b.status) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif(a.status > b.status) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\tsortDirections: ['descend','ascend'],\n\t\t},\n\n\t\t{\n\t\t\ttitle: 'Acciones',\n\t\t\tdataIndex: 'options',\n\t\t\tkey: 'options',\n\t\t},\n\t];\n\n\tconst dataDepartment = dataGrid.map(department => {\n\t\treturn {\n\t\t\tkey: department.departmentId,\n\t\t\tname: department.departmentName,\n\t\t\tstatus: <Tag color={department.estatus ? 'success' : 'danger'}>{department.estatus}</Tag>,\n\t\t\toptions: <Space>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\thtmlType={'button'}\n\t\t\t\t\tclassName=\"edit\"\n\t\t\t\t\tonClick={() => props.handleRowSelect(department)}\n\t\t\t\t>\n\t\t\t\t\t<FaEdit />\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\thtmlType={'button'}\n\t\t\t\t\tclassName=\"delete\"\n\t\t\t\t\tonClick={() => handleDelete(department)}\n\t\t\t\t>\n\t\t\t\t\t<FaTrash />\n\t\t\t\t</Button>\n\t\t\t</Space>\n\t\t};\n\t})\n\n\tuseEffect(() => {\n\t\tgetDeparment();\n\t}, []);\n\n\tuseImperativeHandle(ref, () => ({\n\t\trefreshDataGrid: refreshDataGrid\n\t}));\n\n\treturn (\n\t\t<Table\n\t\t\tclassName=\"table-admin\"\n\t\t\tcolumns={columnsDepartment}\n\t\t\tdataSource={dataDepartment}\n\t\t\tscroll={{ x: '992px', y: 800 }}\n\t\t\tlocale={{\n\t\t\t\ttriggerDesc: 'Ordenamiento descendente',\n\t\t\t\ttriggerAsc: 'Ordenamiento ascedente',\n\t\t\t\tcancelSort: 'Cancelar ordenamiento',\n\t\t\t\temptyText: 'Sin registros',\n\t\t\t}}\n\t\t/>\n\t);\n\n});\n\nexport default SearchDepartment;\n","import React, { useRef, useState } from 'react';\nimport SearchDeparment from './searchDepartment';\nimport { deparmentService } from '../../services/deparment.service';\nimport { useSelector } from 'react-redux';\nimport {FaSave, FaTimesCircle} from \"react-icons/fa\";\nimport {Button, Col, Form, Input, Row} from \"antd\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {PlusCircleOutlined} from \"@ant-design/icons\";\nimport MySwal from \"sweetalert2\";\n\nexport const AdminDeparment = () => {\n\tconst companyId = useSelector(state => state.userSettings.companyId)\n\tconst gridRef = useRef();\n\tconst [deparmentInit,setDepartmentInit] = useState({\n\t\tDepartmentId: 0,\n\t\tCompanyId: 0,\n\t\tDepartmentName: ''\n\t});\n\tconst [showEdit, setShowEdit] = useState(false);\n\n\tconst onSave = () => {\n\t\tif (parseInt(deparmentInit.DepartmentId) === 0) {\n\t\t\tdeparmentService.createDeparment(deparmentInit).then((result) => {\n\t\t\t\tgridRef.current.refreshDataGrid();\n\t\t\t\tMySwal.fire({\n\t\t\t\t\ttitle: \"Grupo creado exitosamente\",\n\t\t\t\t\ticon: \"success\"\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tdeparmentService.updateDeparment(deparmentInit).then((result) => {\n\t\t\t\tgridRef.current.refreshDataGrid();\n\t\t\t\tMySwal.fire({\n\t\t\t\t\ttitle: \"Grupo actualizado exitosamente\",\n\t\t\t\t\ticon: \"success\"\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tsetDepartmentInit({\n\t\t\tDepartmentId: 0,\n\t\t\tCompanyId: 0,\n\t\t\tDepartmentName: ''\n\t\t});\n\t\tsetShowEdit(false);\n\t};\n\n\tconst handleOnNewDeparment = () => {\n\t\tsetDepartmentInit({\n\t\t\tDepartmentId: 0,\n\t\t\tCompanyId: companyId,\n\t\t\tDepartmentName: ''\n\t\t});\n\t\tsetShowEdit(true);\n\t};\n\n\tconst handleModeEdit = () => setShowEdit(!showEdit);\n\n\tconst handleRowSelect = (gridItem) => {\n\t\tsetShowEdit(true);\n\t\tsetDepartmentInit({\n\t\t\tDepartmentId: gridItem.departmentId,\n\t\t\tCompanyId: gridItem.companyId,\n\t\t\tDepartmentName: gridItem.departmentName\n\t\t});\n\t}\n\n\tconst handleInputValue = (e) => setDepartmentInit({...deparmentInit, [e.target.name]: e.target.value})\n\n\treturn (\n\t\t<>\n\t\t\t<TitleAdmin\n\t\t\t\ttitle={'Lista de Grupos'}\n\t\t\t\tsubtitle={'Listado y alta de grupos'}\n\t\t\t\tbtnBack={false}\n\n\t\t\t/>\n\t\t\t<HeadingAdmin\n\t\t\t\ttext={!(showEdit) ? 'Agregar grupo' : 'Cancelar'}\n\t\t\t\ticon={!(showEdit) ? <PlusCircleOutlined /> : <FaTimesCircle />}\n\t\t\t\tevent={() => !(showEdit) ? handleOnNewDeparment() : handleModeEdit()}\n\t\t\t/>\n\t\t\t<Row gutter={16}>\n\t\t\t\t<Col xs={24}>\n\t\t\t\t\t{(showEdit) ?\n\t\t\t\t\t\t<Form\n\t\t\t\t\t\t\tonFinish={onSave}\n\t\t\t\t\t\t\tlayout={'vertical'}\n\t\t\t\t\t\t\tclassName={'form-backoffice'}\n\t\t\t\t\t\t\tfields={[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: ['DepartmentName'],\n\t\t\t\t\t\t\t\t\tvalue: deparmentInit.DepartmentName\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<h3>{deparmentInit.DepartmentId === 0 ? \"Nuevo grupo\" : \"Editar grupo\"}</h3>\n\t\t\t\t\t\t\t<Row>\n\t\t\t\t\t\t\t\t<Col md={12} sm={12} xs={24}>\n\t\t\t\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\t\t\t\tlabel={'Grupo'}\n\t\t\t\t\t\t\t\t\t\tname=\"DepartmentName\"\n\t\t\t\t\t\t\t\t\t\trules={[\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t\t\tmessage: '*Campo requerido'\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tpattern: new RegExp(/^\\S/),\n\t\t\t\t\t\t\t\t\t\t\t\tmessage: \"No se aceptan espacios en blanco al inicio\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\tname=\"DepartmentName\"\n\t\t\t\t\t\t\t\t\t\t\tonChange={handleInputValue}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t\t\t\t<div className=\"form-backoffice-footer\">\n\t\t\t\t\t\t\t\t\t\t<Button type=\"primary\" htmlType={'submit'}>\n\t\t\t\t\t\t\t\t\t\t\t<p>Guardar</p>\n\t\t\t\t\t\t\t\t\t\t\t<FaSave />\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</Col>\n\t\t\t\t\t\t\t</Row>\n\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t:\n\t\t\t\t\t\t<SearchDeparment handleRowSelect={handleRowSelect} ref={gridRef} />\n\t\t\t\t\t}\n\t\t\t\t</Col>\n\t\t\t</Row>\n\n\t\t</>\n\t);\n}\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\n\nexport const branchOfficeService = {\n    create,\n    update,\n    getAll,\n    deleteBranchOffice\n};\n\nasync function create(params) {\n    return callApi('/backoffice/BranchOffice', 'POST', params);\n}\n\nasync function update(params) {\n    return callApi('/backoffice/BranchOffice', 'PUT', params);\n}\n\nasync function getAll() {\n    return callApi('/backoffice/BranchOffice', 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            alert(result.responseMessage);\n            return null;\n        }\n\n    });\n}\n\nasync function deleteBranchOffice(params) {\n    return callApi('/backoffice/BranchOffice', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"La sucursal se desactivo correctamente\", icon: \"success\" })\n        } else {\n            swal({ text: \"Error al desactivar la sucursal\", icon: \"error\" });\n        }\n    });\n}\n","import React, {useEffect, useState, forwardRef, useImperativeHandle, useRef} from 'react';\nimport { branchOfficeService } from '../../../services/branchOffice.service';\nimport {Button, Input, Space, Tag, Table} from \"antd\";\nimport MySwal from \"sweetalert2\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\n\n\nconst SearchBranchOffice = forwardRef((props, ref) => {\n\n    const [dataGrid, setDataGrid] = useState([]);\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    const handleDelete = (event, data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                branchOfficeService.deleteBranchOffice(data).then((result) => getAll());\n        })\n    };\n\n    async function getAll() {\n        branchOfficeService.getAll()\n            .then((result) => {\n                if (result) setDataGrid(result);\n            });\n    }\n\n    const refreshDataGrid = () => getAll();\n\n    useImperativeHandle(ref, () => ({\n        refreshDataGrid: refreshDataGrid\n    }));\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{marginBottom: 8, display: 'block',}}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined style={{color: filtered ? '#1677ff' : undefined,}}/>\n        ),\n        onFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) setTimeout(() => searchInput.current?.select(), 100);\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{backgroundColor: '#ffc069', padding: 0,}}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (text),\n    });\n\n    const columnsBranchOffice = [\n        {\n            title: 'Sucursal',\n            dataIndex: 'branchoffice',\n            key: 'branchoffice',\n            ...getColumnSearchProps('branchoffice'),\n        },\n        {\n            title: 'Estatus',\n            dataIndex: 'status',\n            key: 'status',\n            sorter: (a, b) => {\n                if(a.status < b.status) {\n                    return -1;\n                }\n                if(a.status > b.status) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const dataBranchOffice = dataGrid.map(item => {\n        return {\n            key: item.branchOfficeId,\n            branchoffice: item.branchOfficeName,\n            status: <Tag color={item.active ? 'success' : 'danger'}>{item.active ? 'Activo' : 'Inactivo'}</Tag>,\n            options: <Space>\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"edit\"\n                    onClick={() => props.handleRowSelect(item)}\n                >\n                    <FaEdit />\n                </Button>\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"delete\"\n                    onClick={(e) => handleDelete(e, item)}\n                >\n                    <FaTrash />\n                </Button>\n            </Space>\n        };\n    })\n\n    useEffect(() => {\n        getAll();\n    }, []);\n\n    return (\n        <Table\n            className=\"table-admin\"\n            columns={columnsBranchOffice}\n            dataSource={dataBranchOffice}\n            scroll={{ x: '992px', y: 800 }}\n            locale={{\n                triggerDesc: 'Ordenamiento descendente',\n                triggerAsc: 'Ordenamiento ascedente',\n                cancelSort: 'Cancelar ordenamiento',\n                emptyText: 'Sin registros',\n            }}\n        />\n    );\n});\n\nexport default SearchBranchOffice;\n","import React, { useRef, useState } from \"react\";\nimport SearchBranchOffice from \"./searchBranchOffice\";\nimport { branchOfficeService } from \"../../../services/branchOffice.service\";\nimport \"../../admin/admin.scss\";\nimport { FaSave, FaTimesCircle } from \"react-icons/fa\";\nimport { TitleAdmin } from \"../../components/titleAdmin/titleAdmin\";\nimport { HeadingAdmin } from \"../../components/headingAdmin/headingAdmin\";\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { Button, Col, Form, Input, Row } from \"antd\";\nimport Swal from \"sweetalert2\";\n\nexport function BranchOffice() {\n  const gridRef = useRef();\n  const [showEdit, setShowEdit] = useState(false);\n  const [initBranchOff, setInitBranchOff] = useState({\n    BranchOfficeId: 0,\n    BranchOfficeName: \"\",\n  });\n\n  const onSave = () => {\n    if (initBranchOff.BranchOfficeId === 0) {\n      branchOfficeService.create(initBranchOff).then((result) => {\n        gridRef.current.refreshDataGrid();\n        cleanObj();\n        setShowEdit(false);\n        Swal.fire({\n          text: \"Se ha creado exitosamente una nueva sucursal\",\n          icon: \"success\",\n          showCloseButton: true,\n          allowOutsideClick: false,\n          allowEscapeKey: false,\n        });\n      });\n    } else {\n      branchOfficeService.update(initBranchOff).then((result) => {\n        gridRef.current.refreshDataGrid();\n        cleanObj();\n        setShowEdit(false);\n        Swal.fire({\n          text: \"Se ha actualizado exitosamente la sucursal\",\n          icon: \"success\",\n          showCloseButton: true,\n          allowOutsideClick: false,\n          allowEscapeKey: false,\n        });\n      });\n    }\n  };\n\n  const handleRowSelect = (gridItem) => {\n    setShowEdit(true);\n    setInitBranchOff({\n      BranchOfficeId: gridItem.branchOfficeId,\n      BranchOfficeName: gridItem.branchOfficeName,\n    });\n  };\n\n  const handleOnCancel = () => {\n    cleanObj();\n    setShowEdit(false);\n  };\n\n  const handleOnNew = () => {\n    setInitBranchOff(initBranchOff);\n    setShowEdit(true);\n  };\n\n  const cleanObj = () =>\n    setInitBranchOff({ BranchOfficeId: 0, BranchOfficeName: \"\" });\n\n  const handleInputChange = (e) =>\n    setInitBranchOff({ ...initBranchOff, [e.target.name]: e.target.value });\n\n  return (\n    <>\n      <TitleAdmin\n        title={\"Sucursales\"}\n        subtitle={\"Listado y alta de sucursales\"}\n        btnBack={false}\n      />\n      <HeadingAdmin\n        text={!showEdit ? \"Agregar Sucursal\" : \"Cancelar\"}\n        icon={!showEdit ? <PlusCircleOutlined /> : <FaTimesCircle />}\n        event={() => (!showEdit ? handleOnNew() : handleOnCancel())}\n      />\n      {showEdit ? (\n        <Form\n          onFinish={onSave}\n          layout={\"vertical\"}\n          className={\"form-backoffice\"}\n          fields={[\n            {\n              name: [\"BranchOfficeName\"],\n              value: initBranchOff.BranchOfficeName,\n            },\n          ]}\n        >\n          <h4>\n            {initBranchOff.BranchOfficeId === 0\n              ? \"Nuevo sucursal\"\n              : \"Editar sucursal\"}\n          </h4>\n          <Row gutter={16}>\n            <Col xs={24}>\n              <Form.Item\n                label={\"Nombre de sucursal\"}\n                htmlFor={\"BranchOfficeName\"}\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo Requerido\",\n                  },\n                  {\n                    pattern: new RegExp(/^\\S/),\n                    message: \"No se aceptan espacios en blanco al inicio\",\n                  },\n                ]}\n                name=\"BranchOfficeName\"\n              >\n                <Input\n                  name=\"BranchOfficeName\"\n                  type=\"text\"\n                  onChange={handleInputChange}\n                />\n              </Form.Item>\n            </Col>\n            <Col xs={24}>\n              <div className=\"form-backoffice-footer\">\n                <Button htmlType={\"submit\"} type=\"primary\">\n                  <p>Guardar</p>\n                  <FaSave />\n                </Button>\n              </div>\n            </Col>\n          </Row>\n        </Form>\n      ) : (\n        <SearchBranchOffice handleRowSelect={handleRowSelect} ref={gridRef} />\n      )}\n    </>\n  );\n}\n","import { callApi } from './service'\nimport swal from \"sweetalert\"\n\nexport const useJobRole = {\n    createJobRole,\n    updateJobRole,\n    deleteJobRole,\n    getJobRoles\n};\nasync function createJobRole(params) {\n    return callApi('/backoffice/JobRole', 'POST', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function getJobRoles() {\n    return callApi('/backoffice/JobRole', 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function updateJobRole(params) {\n    return callApi('/backoffice/JobRole', 'PUT', params).then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\nasync function deleteJobRole(params) {\n    return callApi('/backoffice/JobRole', 'DELETE', params).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"La categoría se desactivo correctamente\", icon: \"success\" })\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar la categoría\", icon: \"error\" });\n        }\n    });\n}","import React, { useEffect, useState } from \"react\";\nimport { useJobRole } from \"../../../services/jobRole.service\";\nimport { FaSave } from \"react-icons/fa\";\nimport { Button, Col, Form, Input, Row } from \"antd\";\nimport Swal from \"sweetalert2\";\n\nexport const EditJobRole = (props) => {\n  const [survey, setSurvey] = useState({\n    JobRoleId: 0,\n    Description: \"\",\n    Name: \"\",\n  });\n\n  const onSave = () => {\n    if (survey.JobRoleId && survey.JobRoleId > 0)\n      useJobRole\n        .updateJobRole({\n          JobRoleId: survey.JobRoleId,\n          Name: survey.Name,\n          Description: survey.Description,\n        })\n        .then((result) => {\n          if (props.onSave) props.onSave();\n          Swal.fire({\n            text: \"Se ha actualizado exitosamente una nueva categoría\",\n            icon: \"success\",\n            showCloseButton: true,\n            allowOutsideClick: false,\n            allowEscapeKey: false,\n          });\n        });\n    else\n      useJobRole\n        .createJobRole({\n          Name: survey.Name,\n          Description: survey.Description,\n        })\n        .then((result) => {\n          if (props.onSave) props.onSave();\n          Swal.fire({\n            text: \"Se ha creado exitosamente una nueva categoría\",\n            icon: \"success\",\n            showCloseButton: true,\n            allowOutsideClick: false,\n            allowEscapeKey: false,\n          });\n        });\n  };\n\n  const handleInputChange = (e) =>\n    setSurvey({ ...survey, [e.target.name]: e.target.value });\n\n  useEffect(() => {\n    if (props.currentJobRole) {\n      setSurvey({\n        JobRoleId: parseInt(props.currentJobRole.JobRoleId),\n        Description: props.currentJobRole.Description,\n        Name: props.currentJobRole.Name,\n      });\n    } else {\n      setSurvey({\n        JobRoleId: 0,\n        Description: \"\",\n        Name: \"\",\n      });\n    }\n  }, [props.currentJobRole]);\n\n  return (\n    <Form\n      onFinish={onSave}\n      layout={\"vertical\"}\n      className={\"form-backoffice\"}\n      fields={[\n        {\n          name: [\"Name\"],\n          value: survey.Name,\n        },\n        {\n          name: [\"Description\"],\n          value: survey.Description,\n        },\n      ]}\n    >\n      <h3>{survey.JobRoleId === 0 ? \"Nueva categoría\" : \"Editar categoría\"}</h3>\n\n      <Row gutter={16}>\n        <Col md={12} sm={24}>\n          <Form.Item\n            label={\"Nombre\"}\n            name=\"Name\"\n            htmlFor={\"Name\"}\n            rules={[\n              {\n                required: true,\n                message: \"*Campo Requerido\",\n              },\n              {\n                pattern: new RegExp(/^\\S/),\n                message: \"No se aceptan espacios en blanco al inicio\",\n              },\n            ]}\n          >\n            <Input type=\"text\" name=\"Name\" onChange={handleInputChange} />\n          </Form.Item>\n        </Col>\n        <Col md={12} sm={24}>\n          <Form.Item\n            label={\"Descripción\"}\n            name=\"Description\"\n            htmlFor={\"Description\"}\n            rules={[\n              {\n                required: true,\n                message: \"*Campo Requerido\",\n              },\n              {\n                pattern: new RegExp(/^\\S/),\n                message: \"No se aceptan espacios en blanco al inicio\",\n              },\n            ]}\n          >\n            <Input\n              type=\"text\"\n              name=\"Description\"\n              onChange={handleInputChange}\n            />\n          </Form.Item>\n        </Col>\n        <Col xs={24}>\n          <div className=\"form-backoffice-footer\">\n            <Button htmlType={\"submit\"} type=\"primary\">\n              <p>Guardar</p>\n              <FaSave />\n            </Button>\n          </div>\n        </Col>\n      </Row>\n    </Form>\n  );\n};\n","import React, {useEffect, useRef, useState} from 'react';\nimport { useJobRole } from '../../../services/jobRole.service';\nimport {Button, Input, Space, Table, Tag} from \"antd\";\nimport MySwal from \"sweetalert2\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\n\nexport function SearchJobRole(props) {\n    const [jobsData, setJobsData] = useState({\n        jobs: []\n    });\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                useJobRole.deleteJobRole(data).then((result) => getJobRoles());\n        })\n    };\n\n    useEffect(() => {\n        getJobRoles();\n    }, [props.refresh]);\n\n    async function getJobRoles() {\n        useJobRole.getJobRoles().then((result) => {\n            if (result) setJobsData({ jobs: result });\n        });\n    }\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{marginBottom: 8, display: 'block',}}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined style={{color: filtered ? '#1677ff' : undefined,}}/>\n        ),\n        onFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) setTimeout(() => searchInput.current?.select(), 100);\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{backgroundColor: '#ffc069', padding: 0,}}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (text),\n    });\n\n    const columnsJobRoles = [\n        {\n            title: 'Nombre',\n            dataIndex: 'name',\n            key: 'name',\n            ...getColumnSearchProps('name'),\n        },\n        {\n            title: 'Descripción',\n            dataIndex: 'description',\n            key: 'description',\n            ...getColumnSearchProps('description'),\n        },\n        {\n            title: 'Estatus',\n            dataIndex: 'status',\n            key: 'status',\n            sorter: (a, b) => {\n                if(a.status < b.status) {\n                    return -1;\n                }\n                if(a.status > b.status) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const dataJobRoles = jobsData.jobs.map(job => {\n        return {\n            key: job.jobRoleId,\n            name: job.name,\n            description: job.description,\n            status: <Tag color={job.active ? 'success' : 'danger'}>{job.active ? 'Activo' : 'Inactivo'}</Tag>,\n            options: <Space>\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"edit\"\n                    onClick={() => props.onSelectJobRole(job)}\n                >\n                    <FaEdit />\n                </Button>\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"delete\"\n                    onClick={() => handleDelete(job)}\n                >\n                    <FaTrash />\n                </Button>\n            </Space>\n        };\n    })\n\n    return (\n        <Table\n            className=\"table-admin\"\n            columns={columnsJobRoles}\n            dataSource={dataJobRoles}\n            scroll={{ x: '992px', y: 800 }}\n            locale={{\n                triggerDesc: 'Ordenamiento descendente',\n                triggerAsc: 'Ordenamiento ascedente',\n                cancelSort: 'Cancelar ordenamiento',\n                emptyText: 'Sin registros',\n            }}\n        />\n    );\n}\n","import React, { useState } from 'react';\nimport { EditJobRole } from './editJobRole';\nimport { SearchJobRole } from './searchJobRoles';\nimport {FaTimesCircle} from \"react-icons/fa\";\nimport {TitleAdmin} from \"../../components/titleAdmin/titleAdmin\";\nimport {HeadingAdmin} from \"../../components/headingAdmin/headingAdmin\";\nimport {PlusCircleOutlined} from \"@ant-design/icons\";\n\nexport function AdminJobRoles() {\n\tconst [showEdit, setShowEdit] = useState(false);\n\tconst [selectedJobRole, setSelectedJobRole] = useState();\n\tconst [refresh, setRefresh] = useState(0);\n\n\tconst handleOnSelected = (jobRole) => {\n\t\tsetShowEdit(true);\n\t\tsetSelectedJobRole({ JobRoleId: jobRole.jobRoleId, Description: jobRole.description, Name: jobRole.name });\n\t};\n\tconst handleOnNew = () => {\n\t\tsetSelectedJobRole(null);\n\t\tsetShowEdit(true);\n\t};\n\tconst handleOnCancelEdit = () => {\n\t\tsetSelectedJobRole(null);\n\t\tsetShowEdit(false);\n\t}\n\tconst handleOnSaveEdit = () => {\n\t\tsetRefresh(prev => prev + 1);\n\t\tsetShowEdit(false);\n\t}\n\treturn (\n\t\t<>\n\t\t\t<TitleAdmin\n\t\t\t\ttitle={'Lista de categorías'}\n\t\t\t\tsubtitle={'Listado y alta de sucursales'}\n\t\t\t\tbtnBack={false}\n\n\t\t\t/>\n\t\t\t<HeadingAdmin\n\t\t\t\ttext={!(showEdit) ? 'Agregar categoría' : 'Cancelar'}\n\t\t\t\ticon={!(showEdit) ? <PlusCircleOutlined /> : <FaTimesCircle />}\n\t\t\t\tevent={() => !(showEdit) ? handleOnNew() : handleOnCancelEdit()}\n\t\t\t/>\n\t\t\t{(showEdit) ?\n\t\t\t\t<EditJobRole\n\t\t\t\t\tcurrentJobRole={selectedJobRole}\n\t\t\t\t\tonSave={handleOnSaveEdit}\n\t\t\t\t/>\n\t\t\t\t:\n\t\t\t\t<SearchJobRole\n\t\t\t\t\tonSelectJobRole={handleOnSelected}\n\t\t\t\t\trefresh={refresh}\n\t\t\t\t/>\n\t\t\t}\n\t\t</>\n\t);\n}\n","import React, {useEffect, useRef, useState} from 'react';\nimport { useCompanyHoliday } from '../../../services/companyHoliday.service';\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport {Button, Input, Space, Table, Image} from \"antd\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport moment from \"moment\";\nimport MySwal from \"sweetalert2\";\n\nexport const ListNotice = (props) => {\n\n    const [CompanyHolidaysData, setCompanyHolidaysData] = useState([]);\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                useCompanyHoliday.deleteCompanyHoliday(data).then((result) => getCompanyHolidays());\n        })\n    };\n\n    useEffect(() => {\n        getCompanyHolidays();\n    }, [props.refresh]);\n\n    async function getCompanyHolidays() {\n        useCompanyHoliday.getCompanyHolidays().then((result) => {\n            if (result) {\n                setCompanyHolidaysData(result);\n            }\n        });\n    }\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{marginBottom: 8, display: 'block',}}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined style={{color: filtered ? '#1677ff' : undefined,}}/>\n        ),\n        onFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) setTimeout(() => searchInput.current?.select(), 100);\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{backgroundColor: '#ffc069', padding: 0,}}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (text),\n    });\n\n    const columnsNotice = [\n        {\n            title: 'Imagen',\n            dataIndex: 'image',\n            key: 'image',\n        },\n        {\n            title: 'Aviso',\n            dataIndex: 'notice',\n            key: 'notice',\n            ...getColumnSearchProps('notice'),\n        },\n        {\n            title: 'Fecha de evento',\n            dataIndex: 'date',\n            key: 'date',\n            defaultSortOrder: 'descend',\n            sorter: (a, b) => moment(a.date).unix() - moment(b.date).unix(),\n        },\n        {\n            title: 'Desde',\n            dataIndex: 'startDate',\n            key: 'startDate',\n            sorter: (a, b) => moment(a.startDate).unix() - moment(b.startDate).unix()\n        },\n        {\n            title: 'Hasta',\n            dataIndex: 'endDate',\n            key: 'endDate',\n            sorter: (a, b) => moment(a.endDate).unix() - moment(b.endDate).unix()\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const dataNotice = CompanyHolidaysData.map(item => {\n        return {\n            key: item.companyHolidayId,\n            image: <Image src={item.imagePath} width={65} />,\n            notice: item.description,\n            date: moment(item.date).format('DD/MMM/YYYY'),\n            startDate: moment(item.startDate).format('DD/MMM/YYYY'),\n            endDate: moment(item.endDate).format('DD/MMM/YYYY'),\n            options: <Space>\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"edit\"\n                    onClick={() => props.onSelectCompanyHoliday(item)}\n                >\n                    <FaEdit />\n                </Button>\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"delete\"\n                    onClick={() => handleDelete(item)}\n                >\n                    <FaTrash />\n                </Button>\n            </Space>\n        };\n    })\n\n    return (\n        <>\n            <Table\n                className=\"table-admin\"\n                columns={columnsNotice}\n                dataSource={dataNotice}\n                scroll={{ x: '992px', y: 800 }}\n                locale={{\n                    triggerDesc: 'Ordenamiento descendente',\n                    triggerAsc: 'Ordenamiento ascedente',\n                    cancelSort: 'Cancelar ordenamiento',\n                    emptyText: 'Sin registros',\n                }}\n            />\n        </>\n\n    )\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useCompanyHoliday } from \"../../../services/companyHoliday.service\";\nimport ReactPlayer from \"react-player\";\nimport { FaChevronRight, FaInfoCircle, FaSave } from \"react-icons/fa\";\nimport {\n  Button,\n  Col,\n  DatePicker,\n  Form,\n  Input,\n  Row,\n  Tabs,\n  Select,\n  Tag,\n  Modal,\n} from \"antd\";\nimport dayjs from \"dayjs\";\nimport { InputFile } from \"../../components/inputFile/inputFile\";\nimport { Checkbox } from \"../../components/checkbox/checkbox\";\nimport MySwal from \"sweetalert2\";\nimport videoYT from \"../../../assets/imgs/video-yt.jpg\";\nimport ImgInfog from \"../../../assets/imgs/imgInfografia.jpg\";\n\nexport const EditNotice = (props) => {\n  const [files, setFiles] = useState([]);\n  const [urlVideo, setUrlVideo] = useState(\"\");\n  const [filesVideo, setFilesVideo] = useState([]);\n  const [holidayType, setHolidayType] = useState([]);\n  const [selectedTypeId, setSelectedTypeId] = useState(1);\n  const [activeTab, setActiveTab] = useState(\"1\");\n  const [CompanyHoliday, setCompanyHoliday] = useState({\n    CompanyHolidayId: 0,\n    Description: \"\",\n    Date: \"\",\n    WorkingDay: false,\n    StartDate: \"\",\n    EndDate: \"\",\n    TypeId: 0,\n    IsVideo: false,\n    Iframe: \"\",\n    videoPath: [],\n  });\n  const [dimensionsImage, setDimensionsImage] = useState({\n    width: 0,\n    height: 0,\n  });\n  const typesNotice = [\n    {\n      label: \"Agenda\",\n      value: 1,\n    },\n    {\n      label: \"Aviso\",\n      value: 2,\n    },\n    {\n      label: \"Publicidad\",\n      value: 3,\n    },\n    {\n      label: \"Pride Talks\",\n      value: 4,\n    },\n    {\n      label: \"Tienda en línea\",\n      value: 5,\n    },\n    /*{\n          label: 'Comunidad Solidaria',\n          value: 6\n        },*/\n    {\n      label: \"Bolsa de trabajo\",\n      value: 7,\n    },\n    {\n      label: \"Cartelera Pride\",\n      value: 8,\n    },\n    {\n      label: \"Tu Opinión\",\n      value: 9,\n    },\n  ];\n  const [fileUpdated, setFileUpdated] = useState(false);\n  const [videoUpdated, setVideoUpdated] = useState(false);\n  const [form] = Form.useForm();\n  const { Option } = Select;\n  const [selectBeforeOption, setSelectBeforeOption] = useState(\"https://\");\n  const [myModal, setMyModal] = useState(false);\n  const toggleMyModal = () => setMyModal(myModal ? false : true);\n  const [showVideo, setShowVideo] = useState(false);\n\n  const onSave = () => {\n    let localfiles = [];\n\n    if (files.length > 0) {\n      if (!fileUpdated) localfiles.push(files[0]);\n    }\n\n    if (filesVideo.length > 0) {\n      if (!videoUpdated) localfiles.push(filesVideo[0]);\n    }\n\n    if (\n      (files.length === 0 && CompanyHoliday.IsVideo) ||\n      (files.length === 0 && !CompanyHoliday.IsVideo)\n    )\n      return MySwal.fire({\n        title: \"¡Falta una imagen para tu publicación!\",\n        icon: \"error\",\n        confirmButtonText: \"Confirmar\",\n      });\n\n    if (\n      (filesVideo.length === 0 &&\n        CompanyHoliday.IsVideo &&\n        activeTab === \"1\") ||\n      (CompanyHoliday.Iframe === \"\" &&\n        CompanyHoliday.IsVideo &&\n        activeTab === \"2\")\n    )\n      return MySwal.fire({\n        title: \"¡Falta un video para tu publicación!\",\n        icon: \"error\",\n        confirmButtonText: \"Confirmar\",\n      });\n    const model = {\n      CompanyHolidayId: parseInt(CompanyHoliday.CompanyHolidayId),\n      Description: CompanyHoliday.Description,\n      Date: dayjs(CompanyHoliday.Date).format(\"YYYY-MM-DD\"),\n      WorkingDay: CompanyHoliday.WorkingDay,\n      EndDate: dayjs(CompanyHoliday.EndDate).format(\"YYYY-MM-DD\"),\n      StartDate: dayjs(CompanyHoliday.StartDate).format(\"YYYY-MM-DD\"),\n      TypeId: selectedTypeId,\n      IsVideo: CompanyHoliday.IsVideo,\n      Iframe:\n        CompanyHoliday.IsVideo &&\n        selectedTypeId === 2 &&\n        filesVideo.length === 0\n          ? CompanyHoliday.Iframe\n          : CompanyHoliday.IsVideo &&\n            selectedTypeId === 2 &&\n            filesVideo.length > 0\n          ? \"\"\n          : selectBeforeOption + CompanyHoliday.Iframe,\n    };\n    if (CompanyHoliday.CompanyHolidayId > 0) {\n      useCompanyHoliday\n        .updateCompanyHoliday(model, localfiles)\n        .then((result) => {\n          if (props.onSave) {\n            props.onSave(result);\n            MySwal.fire({\n              title: \"¡Aviso actualizado exitosamente!\",\n              icon: \"success\",\n              confirmButtonText: \"OK\",\n            });\n          }\n        });\n    } else {\n      useCompanyHoliday\n        .createCompanyHoliday(model, localfiles)\n        .then((result) => {\n          if (props.onSave) {\n            props.onSave(result);\n            MySwal.fire({\n              title: \"¡Se creó correctamente!\",\n              icon: \"success\",\n              confirmButtonText: \"Confirmar\",\n            });\n          }\n        });\n    }\n  };\n\n  const handleOptionChange = (value) => {\n    handleSelectTypeId(value);\n    setSelectedTypeId(value);\n    setCompanyHoliday({ ...CompanyHoliday, TypeId: value });\n    if (value !== 2) {\n      setFiles([]);\n      setUrlVideo(\"\");\n      setFilesVideo([]);\n      setActiveTab(\"1\");\n      setCompanyHoliday({ ...CompanyHoliday, IsVideo: false });\n    }\n  };\n\n  const handleValueIframe = (e) => {\n    setCompanyHoliday({ ...CompanyHoliday, Iframe: e.target.value });\n    setFilesVideo([]);\n  };\n\n  const handleSelectTypeId = (value) => {\n    if (value === 1 || value === 9)\n      setDimensionsImage({ width: 850, height: 350 });\n    if (value === 2) setDimensionsImage({ width: 2200, height: 950 });\n    if (value === 3) setDimensionsImage({ width: 800, height: 1800 });\n    if (value === 4 || value === 5 || value === 6 || value === 7 || value === 8)\n      setDimensionsImage({ width: 1980, height: 850 });\n  };\n\n  async function getCompanyHolidaysType() {\n    useCompanyHoliday.getCompanyHolidayFront(0).then((result) => {\n      if (result) {\n        console.log(result, \"result\");\n        const temp = [];\n        result.map((ch) => {\n          temp.push({\n            key: ch.companyHolidayId.toString(),\n            file: ch.imagePath,\n            description: ch.description,\n            isVideo: ch.isVideo,\n            link: ch.iframe,\n          });\n        });\n        setHolidayType(temp);\n      }\n    });\n  }\n\n  const handleInputDate = (date, strDate, name) =>\n    setCompanyHoliday({ ...CompanyHoliday, [name]: strDate });\n\n  const onChangeIsVideo = (value) =>\n    setCompanyHoliday({ ...CompanyHoliday, IsVideo: value });\n\n  const handleInputChange = (e) =>\n    setCompanyHoliday({ ...CompanyHoliday, [e.target.name]: e.target.value });\n\n  const onChangeTabs = (key) => setActiveTab(key);\n\n  const handleVideoUpload = (files) => {\n    if (CompanyHoliday.CompanyHolidayId !== 0) {\n      setVideoUpdated(false);\n      setUrlVideo(\"\");\n    }\n    setFilesVideo(files);\n    setCompanyHoliday({ ...CompanyHoliday, Iframe: \"\" });\n  };\n\n  const handleVideoRemove = (files) => setFilesVideo(files);\n\n  const deleteImage = (files) => setFiles(files);\n\n  const handleFiles = (value) => {\n    setFiles(value);\n    if (CompanyHoliday.CompanyHolidayId !== 0) setFileUpdated(false);\n  };\n\n  const disabledDate = (current) => {\n    return current && current < dayjs().startOf(\"day\");\n  };\n\n  const handleGridItem = () => {\n    setCompanyHoliday({\n      ...CompanyHoliday,\n      CompanyHolidayId: parseInt(props.currentCompanyHoliday.companyHolidayId),\n      Description: props.currentCompanyHoliday.description,\n      Date: props.currentCompanyHoliday.date,\n      WorkingDay: props.currentCompanyHoliday.workingDay,\n      EndDate: props.currentCompanyHoliday.endDate,\n      StartDate: props.currentCompanyHoliday.startDate,\n      TypeId: parseInt(props.currentCompanyHoliday.typeId),\n      IsVideo: Boolean(props.currentCompanyHoliday.isVideo),\n      Iframe:\n        props.currentCompanyHoliday.isVideo &&\n        parseInt(props.currentCompanyHoliday.typeId) === 2\n          ? props.currentCompanyHoliday.iframe\n          : props.currentCompanyHoliday.iframe.split(\"//\")[1],\n      imagePath: props.currentCompanyHoliday.imagePath,\n      videoPath: props.currentCompanyHoliday.videoPath,\n    });\n    setSelectedTypeId(parseInt(props.currentCompanyHoliday.typeId));\n    handleSelectTypeId(parseInt(props.currentCompanyHoliday.typeId));\n\n    if (\n      !props.currentCompanyHoliday.isVideo &&\n      parseInt(props.currentCompanyHoliday.typeId) !== 2\n    ) {\n      setSelectBeforeOption(\n        props.currentCompanyHoliday.iframe.split(\"//\")[0] + \"//\"\n      );\n      form.setFieldValue(\n        \"Iframe\",\n        props.currentCompanyHoliday.iframe.split(\"//\")[1]\n      );\n    } else form.setFieldValue(\"Iframe\", props.currentCompanyHoliday.iframe);\n\n    if (props.currentCompanyHoliday.imagePath !== null) {\n      setFileUpdated(true);\n      const file = new File(\n        [props.currentCompanyHoliday.imagePath],\n        \"img_edit_notice.png\",\n        {\n          type: \"image/png\",\n        }\n      );\n      setFiles([file]);\n    }\n\n    if (props.currentCompanyHoliday.videoPath !== null) {\n      setActiveTab(\"1\");\n      setVideoUpdated(true);\n      setUrlVideo(props.currentCompanyHoliday.videoPath);\n      const fileVideo = new File(\n        [props.currentCompanyHoliday.videoPath],\n        \"video_edit_notice.mp4\",\n        { type: \"video/mp4\" }\n      );\n      setTimeout(() => {\n        setFilesVideo([fileVideo]);\n      }, 500);\n    } else {\n      setActiveTab(\"2\");\n      setShowVideo(props.currentCompanyHoliday.typeId === 2);\n    }\n  };\n\n  const handleSelectBefore = (value) => setSelectBeforeOption(value);\n\n  useEffect(() => {\n    if (props.currentCompanyHoliday) {\n      handleGridItem();\n    } else {\n      setActiveTab(\"1\");\n      handleSelectTypeId(1);\n    }\n  }, [props.currentCompanyHoliday]);\n\n  useEffect(() => {\n    if (!props.currentCompanyHoliday) {\n      if (\n        dayjs(CompanyHoliday.Date) < dayjs(CompanyHoliday.StartDate) ||\n        dayjs(CompanyHoliday.Date) <= dayjs(CompanyHoliday.EndDate)\n      ) {\n        setCompanyHoliday({ ...CompanyHoliday, StartDate: \"\", EndDate: \"\" });\n        form.setFields([\n          {\n            name: \"StartDate\",\n            value: \"\",\n          },\n          {\n            name: \"EndDate\",\n            value: \"\",\n          },\n        ]);\n      }\n    }\n  }, [CompanyHoliday.Date]);\n\n  return (\n    <>\n      <Form\n        onFinish={onSave}\n        className=\"form-backoffice\"\n        layout={\"vertical\"}\n        fields={[\n          {\n            name: [\"Description\"],\n            value: CompanyHoliday.Description,\n          },\n          {\n            name: [\"Date\"],\n            value: CompanyHoliday.Date ? dayjs(CompanyHoliday.Date) : \"\",\n          },\n          {\n            name: [\"StartDate\"],\n            value:\n              CompanyHoliday.StartDate !== \"\"\n                ? dayjs(CompanyHoliday.StartDate)\n                : \"\",\n          },\n          {\n            name: [\"EndDate\"],\n            value:\n              CompanyHoliday.EndDate !== \"\"\n                ? dayjs(CompanyHoliday.EndDate)\n                : \"\",\n          },\n          {\n            name: [\"TypeId\"],\n            value: selectedTypeId,\n          },\n          {\n            name: [\"IsVideo\"],\n            value: CompanyHoliday.IsVideo,\n          },\n        ]}\n        form={form}\n      >\n        <Row gutter={16}>\n          <Col md={16} sm={12} xs={24}>\n            <Form.Item\n              label={\"Descripción\"}\n              htmlFor={\"Description\"}\n              name=\"Description\"\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n                {\n                  pattern: new RegExp(/^\\S/),\n                  message: \"No se aceptan espacios en blanco al inicio\",\n                },\n              ]}\n            >\n              <Input\n                type=\"text\"\n                name=\"Description\"\n                onChange={handleInputChange}\n              />\n            </Form.Item>\n          </Col>\n          <Col md={8} sm={12} xs={24}>\n            <Form.Item\n              label={\"Tipo\"}\n              htmlFor={\"TypeId\"}\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n              name={\"TypeId\"}\n            >\n              <Select\n                onChange={handleOptionChange}\n                name={\"TypeId\"}\n                options={typesNotice}\n              />\n            </Form.Item>\n          </Col>\n          <Col md={8} sm={10} xs={24}>\n            <Form.Item\n              label={\"Fecha de evento\"}\n              htmlFor={\"Date\"}\n              name=\"Date\"\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <DatePicker\n                placeholder={\"Seleccionar fecha\"}\n                name=\"Date\"\n                format={\"DD/MMM/YYYY\"}\n                onChange={(_, date) => handleInputDate(_, date, \"Date\")}\n                showToday={false}\n                allowClear={false}\n                disabledDate={disabledDate}\n              />\n            </Form.Item>\n          </Col>\n          <Col md={8} sm={12} xs={24}>\n            <Form.Item\n              label={\"Fecha de inicio\"}\n              required\n              tooltip=\"Fecha en que comienza a publicarse el aviso\"\n              htmlFor={\"StartDate\"}\n              name=\"StartDate\"\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <DatePicker\n                name=\"StartDate\"\n                placeholder={\"Inicia\"}\n                onChange={(_date, strDate) =>\n                  handleInputDate(_date, strDate, \"StartDate\")\n                }\n                format={\"DD/MMM/YYYY\"}\n                allowClear={false}\n                showToday={false}\n                minDate={dayjs()}\n                maxDate={dayjs(CompanyHoliday.Date, \"DD/MMM/YYYY\")}\n                disabled={CompanyHoliday.Date === \"\"}\n              />\n            </Form.Item>\n          </Col>\n          <Col md={8} sm={12} xs={24}>\n            <Form.Item\n              label={\"Fecha de finalización\"}\n              required\n              tooltip=\"Fecha en que termina de publicarse el aviso\"\n              htmlFor={\"EndDate\"}\n              name=\"EndDate\"\n              rules={[\n                {\n                  required: true,\n                  message: \"*Campo Requerido\",\n                },\n              ]}\n            >\n              <DatePicker\n                name=\"EndDate\"\n                placeholder={\"Finaliza\"}\n                onChange={(_date, strDate) =>\n                  handleInputDate(_date, strDate, \"EndDate\")\n                }\n                format={\"DD/MMM/YYYY\"}\n                allowClear={false}\n                showToday={false}\n                minDate={dayjs(CompanyHoliday.StartDate, \"DD/MMM/YYYY\")}\n                disabled={CompanyHoliday.StartDate === \"\"}\n              />\n            </Form.Item>\n          </Col>\n          {CompanyHoliday.IsVideo ? null : (\n            <Col md={12} sm={24} xs={24}>\n              <Form.Item\n                label={\"Link\"}\n                htmlFor={\"Iframe\"}\n                name=\"Iframe\"\n                rules={[\n                  {\n                    required: true,\n                    message: \"*Campo Requerido\",\n                  },\n                ]}\n                initialValue={CompanyHoliday.Iframe}\n              >\n                <Input\n                  name=\"Iframe\"\n                  addonBefore={\n                    <Select\n                      onChange={handleSelectBefore}\n                      name={\"SelectBefore\"}\n                      value={selectBeforeOption}\n                    >\n                      <Option value=\"https://\">https://</Option>\n                      <Option value=\"http://\">http://</Option>\n                    </Select>\n                  }\n                  onChange={handleValueIframe}\n                />\n              </Form.Item>\n            </Col>\n          )}\n          {selectedTypeId === 2 ? (\n            <>\n              <Col md={12} sm={24} xs={24} style={{ marginTop: \"1.5rem\" }}>\n                <Form.Item htmlFor={\"Tipo de aviso\"} name=\"IsVideo\">\n                  <Checkbox\n                    text={\"¿Es un video?\"}\n                    label={\"IsVideo\"}\n                    name={CompanyHoliday.IsVideo}\n                    handleValueCheck={onChangeIsVideo}\n                  />\n                </Form.Item>\n              </Col>\n            </>\n          ) : null}\n          <Col xs={24}>\n            <Form.Item label={\"Imagen miniatura\"}>\n              <InputFile\n                onFilesSelected={handleFiles}\n                width={dimensionsImage.width}\n                height={dimensionsImage.height}\n                edit={props.currentCompanyHoliday?.CompanyHolidayId !== 0}\n                valueFile={files}\n                nameFile={\"thumbNotice\"}\n                accept={[\"image\"]}\n                deleteImage={deleteImage}\n              />\n            </Form.Item>\n          </Col>\n          {CompanyHoliday.IsVideo ? (\n            <Col xs={24}>\n              <Tabs\n                defaultActiveKey={activeTab}\n                items={[\n                  {\n                    key: \"1\",\n                    label: \"Videos en mi PC\",\n                    children: (\n                      <>\n                        <Row gutter={[16, 0]}>\n                          <Col\n                            md={{\n                              span: urlVideo === \"\" ? 24 : 12,\n                            }}\n                            sm={{\n                              span: urlVideo === \"\" ? 24 : 12,\n                            }}\n                            xs={{\n                              span: 24,\n                            }}\n                          >\n                            <InputFile\n                              onFilesSelected={handleVideoUpload}\n                              edit={CompanyHoliday.CompanyHolidayId !== 0}\n                              valueFile={filesVideo}\n                              nameFile={\"thumbVideo\"}\n                              accept={[\"video\"]}\n                              deleteImage={(files) => handleVideoRemove(files)}\n                            />\n                          </Col>\n                          {urlVideo === \"\" ? null : (\n                            <Col\n                              md={{\n                                span: 12,\n                              }}\n                              sm={{\n                                span: 12,\n                              }}\n                              xs={{\n                                span: 24,\n                              }}\n                            >\n                              <ReactPlayer\n                                url={urlVideo}\n                                width=\"100%\"\n                                height=\"100%\"\n                                controls={true}\n                              />\n                            </Col>\n                          )}\n                        </Row>\n                      </>\n                    ),\n                  },\n                  {\n                    key: \"2\",\n                    label: \"Videos externos\",\n                    children: (\n                      <>\n                        <Row gutter={16}>\n                          <Col md={12} xs={24}>\n                            <Form.Item\n                              label={`Iframe para video (Youtube)`}\n                              htmlFor={\"Iframe\"}\n                              name=\"Iframe\"\n                              initialValue={CompanyHoliday.Iframe}\n                            >\n                              <Input.TextArea\n                                rows=\"4\"\n                                name=\"Iframe\"\n                                onChange={handleValueIframe}\n                              ></Input.TextArea>\n                            </Form.Item>\n                          </Col>\n                          <Col md={12} xs={24}>\n                            <div className={\"iframe-youtube-info\"}>\n                              <Tag\n                                icon={<FaInfoCircle />}\n                                color=\"#cd201f\"\n                                onClick={toggleMyModal}\n                                className={\"info-yt\"}\n                              >\n                                <p>\n                                  ¿Cómo crear un iframe en youtube?{\" \"}\n                                  <FaChevronRight />\n                                </p>\n                              </Tag>\n                              <img\n                                className=\"yt\"\n                                src={videoYT}\n                                alt=\"Video Youtube\"\n                              />\n                            </div>\n                          </Col>\n                          <Col md={12} xs={24}>\n                            <div\n                              dangerouslySetInnerHTML={{\n                                __html: CompanyHoliday.Iframe,\n                              }}\n                            />\n                          </Col>\n                        </Row>\n                      </>\n                    ),\n                  },\n                ]}\n                onChange={onChangeTabs}\n              />\n            </Col>\n          ) : null}\n          <Col xs={24}>\n            <div className=\"form-backoffice-footer\">\n              <Button htmlType={\"submit\"} type=\"primary\">\n                <p>Guardar</p>\n                <FaSave />\n              </Button>\n            </div>\n          </Col>\n        </Row>\n      </Form>\n      <Modal\n        open={myModal}\n        footer={(_, { OkBtn, CancelBtn }) => <></>}\n        onCancel={toggleMyModal}\n      >\n        <img\n          src={ImgInfog}\n          width=\"100%\"\n          style={{ width: \"100%\", borderRadius: \"1rem\", objectFit: \"contain\" }}\n          alt=\"Infografía Kuimby\"\n        />\n      </Modal>\n    </>\n  );\n};\n","import React, { useState } from \"react\";\nimport { ListNotice } from \"./listNotice\";\nimport { EditNotice } from \"./editNotice\";\nimport { TitleAdmin } from \"../../components/titleAdmin/titleAdmin\";\nimport { HeadingAdmin } from \"../../components/headingAdmin/headingAdmin\";\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { FaTimesCircle } from \"react-icons/fa\";\n\nexport function Notice() {\n  const [showEdit, setShowEdit] = useState(false);\n  const [selectedCompanyHoliday, setSelectedCompanyHoliday] = useState();\n  const [refresh, setRefresh] = useState(0);\n\n  const handleOnCompanyHolidaySelected = (CompanyHoliday) => {\n    setShowEdit(true);\n    setSelectedCompanyHoliday(CompanyHoliday);\n  };\n  const handleOnNewCompanyHoliday = () => {\n    setSelectedCompanyHoliday(null);\n    setShowEdit(true);\n  };\n  const handleOnCancelEdit = () => {\n    setSelectedCompanyHoliday(null);\n    setShowEdit(!showEdit);\n  };\n\n  const handleOnSaveEdit = (result) => {\n    setRefresh((prev) => prev + 1);\n    if (result) setShowEdit(false);\n  };\n\n  return (\n    <>\n      <TitleAdmin\n        title={\"Avisos\"}\n        subtitle={\"Listado y alta de avisos\"}\n        btnBack={false}\n      />\n      <HeadingAdmin\n        text={!showEdit ? \"Agregar aviso\" : \"Cancelar\"}\n        icon={!showEdit ? <PlusCircleOutlined /> : <FaTimesCircle />}\n        event={() =>\n          !showEdit ? handleOnNewCompanyHoliday() : handleOnCancelEdit()\n        }\n      />\n      {showEdit ? (\n        <EditNotice\n          currentCompanyHoliday={selectedCompanyHoliday}\n          onSave={handleOnSaveEdit}\n        />\n      ) : (\n        <ListNotice\n          onSelectCompanyHoliday={handleOnCompanyHolidaySelected}\n          refresh={refresh}\n        />\n      )}\n    </>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport { companyCustomizeService } from '../../../services/backoffice/companyCustomize.service';\nimport { FaSave } from \"react-icons/fa\";\nimport {Button, Col, Form, Input, Row, ColorPicker} from \"antd\";\nimport {Checkbox} from \"../../components/checkbox/checkbox\";\nimport {InputFile} from \"../../components/inputFile/inputFile\";\nimport {InputAdd} from \"../../components/inputAdd/inputAdd\";\nimport Swal from \"sweetalert2\";\n\nexport const CompanyCustomize = (props) => {\n\n\tconst [values, setValues] = useState({\n\t\tCompanyLogo: [],\n\t\tCompanyCustomizeId: 0,\n\t\tCompanyId: props.CompanyId,\n\t\tPrimaryColor: \"\",\n\t\tSecondaryColor: \"\",\n\t\tNoPost: 0,\n\t\tNoDaysGrace: 0,\n\t\tAmount: 0,\n\t\tAmountToVerify: 0,\n\t\tFreePost: false\n\t});\n\tconst [logoSaved, setLogoSaved] = useState(null);\n\tconst [customize, setCustomize] = useState({CustomizeValues: null,});\n\n\tconst onSave = () => {\n\n\t\tif(values.CompanyLogo.length === 0) {\n\t\t\tSwal.fire({\n\t\t\t\ticon: 'error',\n\t\t\t\ttitle: 'Ups...',\n\t\t\t\ttext: 'No hay un logotipo para el sitio',\n\t\t\t})\n\t\t\treturn;\n\t\t}\n\n\t\tcustomize.CompanyId = values.CompanyId;\n\t\tcustomize.CompanyCustomizeId = values.CompanyCustomizeId;\n\t\tcustomize.CustomizeValues = JSON.stringify({\n\t\t\t\"CompanyLogo\": logoSaved ? logoSaved : '',\n\t\t\t\"PrimaryColor\": values.PrimaryColor,\n\t\t\t\"SecondaryColor\": values.SecondaryColor,\n\t\t\t\"NoPost\": String(values.NoPost),\n\t\t\t\"NoDaysGrace\": String(values.NoDaysGrace),\n\t\t\t\"Amount\": String(values.Amount),\n\t\t\t\"AmountToVerify\": String(values.AmountToVerify),\n\t\t\t\"FreePost\": values.FreePost\n\t\t})\n\t\tif(logoSaved === null) customize.CompanyLogoFile = values.CompanyLogo[0];\n\n\t\tif (values.CompanyCustomizeId && values.CompanyCustomizeId > 0)\n\t\t\tcompanyCustomizeService.edit(customize)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (result) window.location.reload()\n\t\t\t\t});\n\t\telse\n\t\t\tcompanyCustomizeService.create(customize)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (result) window.location.reload()\n\t\t\t\t});\n\t};\n\n\tconst handleFreePost = (value) => setValues({...values, FreePost: value})\n\n\tconst handleSelectedImage = (file) =>  {\n\t\tsetValues({...values, CompanyLogo: file})\n\t\tsetLogoSaved(null);\n\t}\n\n\tconst handleDeleteImage = () => setValues({...values, CompanyLogo: []});\n\n\tconst handleQuantity = (value,name) => setValues({...values, [name]: value});\n\n\tuseEffect(() => {\n\t\tif (props.CompanyId !== 0) {\n\t\t\tcompanyCustomizeService.getByCompanyId(props.CompanyId).then((result) => {\n\t\t\t\tconst object = result && result.customizeValues !== \"\" ? JSON.parse(result.customizeValues) : null;\n\n\t\t\t\tconst logoFile = new File([object.CompanyLogo], `img_logo_${result.companyCustomizeId}.png`, {\n\t\t\t\t\ttype: 'image/png'\n\t\t\t\t})\n\n\n\t\t\t\tif(logoFile) setLogoSaved(object.CompanyLogo)\n\n\t\t\t\tif (object !== '')\n\t\t\t\t\tsetValues({\n\t\t\t\t\t\t...values,\n\t\t\t\t\t\tCompanyCustomizeId: result.companyCustomizeId,\n\t\t\t\t\t\tCompanyId: props.CompanyId,\n\t\t\t\t\t\tCompanyLogo: [logoFile],\n\t\t\t\t\t\tPrimaryColor: object.PrimaryColor,\n\t\t\t\t\t\tSecondaryColor: object.SecondaryColor,\n\t\t\t\t\t\tNoPost: parseInt(object.NoPost),\n\t\t\t\t\t\tNoDaysGrace: parseInt(object.NoDaysGrace),\n\t\t\t\t\t\tAmount: parseInt(object.Amount),\n\t\t\t\t\t\tAmountToVerify: parseInt(object.AmountToVerify),\n\t\t\t\t\t\tFreePost: (object.FreePost)\n\t\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}, [props.CompanyId]);\n\n\treturn (\n\t\t<>\n\t\t\t<Form\n\t\t\t\tonFinish={onSave}\n\t\t\t\tclassName=\"form-backoffice\"\n\t\t\t\tlayout={'vertical'}\n\t\t\t\tfields={[\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": ['PrimaryColor'],\n\t\t\t\t\t\t\"value\": values.PrimaryColor\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": ['SecondaryColor'],\n\t\t\t\t\t\t\"value\": values.SecondaryColor\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": ['NoPost'],\n\t\t\t\t\t\t\"value\": values.NoPost\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": ['NoDaysGrace'],\n\t\t\t\t\t\t\"value\": values.NoDaysGrace\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": ['FreePost'],\n\t\t\t\t\t\t\"value\":(values.FreePost)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": ['Amount'],\n\t\t\t\t\t\t\"value\": values.Amount\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": ['AmountToVerify'],\n\t\t\t\t\t\t\"value\": values.AmountToVerify\n\t\t\t\t\t},\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t<h3>Personalización</h3>\n\t\t\t\t<Row gutter={16}>\n\t\t\t\t\t<Col md={12} sm={24} xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Color Primario'}\n\t\t\t\t\t\t\thtmlFor={'PrimaryColor'}\n\t\t\t\t\t\t\tname=\"PrimaryColor\"\n\t\t\t\t\t\t\trules={[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\tmessage: '*Campo Requerido'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\t\tformat=\"hex\"\n\t\t\t\t\t\t\t\tvalue={values.PrimaryColor}\n\t\t\t\t\t\t\t\tonChange={(color, hex) => setValues({...values, PrimaryColor: hex})}\n\t\t\t\t\t\t\t\tshowText\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col md={12} sm={24} xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Color Secundario'}\n\t\t\t\t\t\t\thtmlFor={'SecondaryColor'}\n\t\t\t\t\t\t\tname=\"SecondaryColor\"\n\t\t\t\t\t\t\trules={[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\tmessage: '*Campo Requerido'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\t\tformat=\"hex\"\n\t\t\t\t\t\t\t\tvalue={values.SecondaryColor}\n\t\t\t\t\t\t\t\tonChange={(color,hex) => setValues({...values, SecondaryColor: hex})}\n\t\t\t\t\t\t\t\tshowText\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={props.TitleLabel}\n\t\t\t\t\t\t\thtmlFor={'CompanyLogo'}\n\t\t\t\t\t\t\tname=\"CompanyLogo\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<InputFile\n\t\t\t\t\t\t\t\tonFilesSelected={handleSelectedImage}\n\t\t\t\t\t\t\t\tedit={(values.CompanyId !== 0)}\n\t\t\t\t\t\t\t\tvalueFile={values.CompanyLogo}\n\t\t\t\t\t\t\t\twidth={300}\n\t\t\t\t\t\t\t\theight={150}\n\t\t\t\t\t\t\t\tnameFile={'companyLogo'}\n\t\t\t\t\t\t\t\taccept={['image']}\n\t\t\t\t\t\t\t\tdeleteImage={handleDeleteImage}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col md={12} sm={24} xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Número de publicaciones gratis'}\n\t\t\t\t\t\t\thtmlFor={'NoPost'}\n\t\t\t\t\t\t\tname=\"NoPost\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<InputAdd\n\t\t\t\t\t\t\t\tmaxLength={3}\n\t\t\t\t\t\t\t\tmaxQuantity={999}\n\t\t\t\t\t\t\t\tminQuantity={0}\n\t\t\t\t\t\t\t\tvalueInt={values.NoPost}\n\t\t\t\t\t\t\t\thandleCurrentNumber={(value) => handleQuantity(value,'NoPost')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col md={12} sm={24} xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Número de días de gracia'}\n\t\t\t\t\t\t\thtmlFor={'NoDaysGrace'}\n\t\t\t\t\t\t\tname=\"NoDaysGrace\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<InputAdd\n\t\t\t\t\t\t\t\tmaxLength={3}\n\t\t\t\t\t\t\t\tmaxQuantity={999}\n\t\t\t\t\t\t\t\tminQuantity={0}\n\t\t\t\t\t\t\t\tvalueInt={values.NoDaysGrace}\n\t\t\t\t\t\t\t\thandleCurrentNumber={(value) => handleQuantity(value,'NoDaysGrace')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col md={12} sm={24} xs={24}>\n  \t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Publicaciones'}\n\t\t\t\t\t\t\thtmlFor={'FreePost'}\n\t\t\t\t\t\t\tname=\"FreePost\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\ttext={'¿Publicaciones gratuitas?'}\n\t\t\t\t\t\t\t\tlabel={'FreePost'}\n\t\t\t\t\t\t\t\tname={(values.FreePost)}\n\t\t\t\t\t\t\t\thandleValueCheck={handleFreePost}\n\t\t\t\t\t\t\t/>\n  \t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col md={12} sm={24} xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Costo de publicación en Economía incluyente'}\n\t\t\t\t\t\t\thtmlFor={'Amount'}\n\t\t\t\t\t\t\tname=\"Amount\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<InputAdd\n\t\t\t\t\t\t\t\tmaxLength={4}\n\t\t\t\t\t\t\t\tmaxQuantity={9999}\n\t\t\t\t\t\t\t\tminQuantity={0}\n\t\t\t\t\t\t\t\tvalueInt={values.Amount}\n\t\t\t\t\t\t\t\thandleCurrentNumber={(value) => handleQuantity(value,'Amount')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col md={12} sm={24} xs={24}>\n\t\t\t\t\t\t<Form.Item\n\t\t\t\t\t\t\tlabel={'Costo para verificar tarjeta'}\n\t\t\t\t\t\t\thtmlFor={'AmountToVerify'}\n\t\t\t\t\t\t\tname=\"AmountToVerify\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<InputAdd\n\t\t\t\t\t\t\t\tmaxLength={4}\n\t\t\t\t\t\t\t\tmaxQuantity={9999}\n\t\t\t\t\t\t\t\tminQuantity={1}\n\t\t\t\t\t\t\t\tvalueInt={values.AmountToVerify}\n\t\t\t\t\t\t\t\thandleCurrentNumber={(value) => handleQuantity(value,'AmountToVerify')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Form.Item>\n\t\t\t\t\t</Col>\n\t\t\t\t\t<Col xs={24}>\n\t\t\t\t\t\t<div className=\"form-backoffice-footer\">\n\t\t\t\t\t\t\t<Button type=\"primary\" htmlType={'submit'}>\n\t\t\t\t\t\t\t\t<p>Guardar</p>\n\t\t\t\t\t\t\t\t<FaSave />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Col>\n\t\t\t\t</Row>\n\t\t\t</Form>\n\t\t</>\n\t);\n}   \n","import React, { useState } from 'react';\nimport { AdminDeparment } from './adminDeparment'\nimport { AdminCompanyEventType } from './adminCompanyEventType'\nimport { BranchOffice } from './branchOffice/branchOffice'\nimport { AdminJobRoles } from './jobRoles/adminJobRole'\nimport { Notice } from './notice/notice'\nimport { CompanyCustomize } from './companyCustomize/companyCustomize'\nimport { useSelector } from 'react-redux';\nimport './control.scss'\nimport '../admin/admin.scss';\nimport {Tabs} from \"antd\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {useHistory} from \"react-router-dom\";\n\nexport const Control = () => {\n\tconst [activeTab, setActiveTab] = useState('1');\n\tconst companyId = useSelector(state => state.userSettings.companyId)\n\tconst history = useHistory();\n\n\tconst onChange = (key) => setActiveTab(key)\n\n\tconst items = [\n\t\t{\n\t\t\tkey: '1',\n\t\t\tlabel: 'Grupos',\n\t\t\tchildren: <AdminDeparment />,\n\t\t},\n\t\t{\n\t\t\tkey: '2',\n\t\t\tlabel: 'Tipos de evento',\n\t\t\tchildren: <AdminCompanyEventType />,\n\t\t},\n\t\t{\n\t\t\tkey: '3',\n\t\t\tlabel: 'Sucursales',\n\t\t\tchildren: <BranchOffice />,\n\t\t},\n\t\t{\n\t\t\tkey: '4',\n\t\t\tlabel: 'Categorías',\n\t\t\tchildren: <AdminJobRoles />,\n\t\t},\n\t\t{\n\t\t\tkey: '5',\n\t\t\tlabel: 'Avisos',\n\t\t\tchildren: <Notice />,\n\t\t},\n\t\t{\n\t\t\tkey: '6',\n\t\t\tlabel: 'Personalización',\n\t\t\tchildren: <CompanyCustomize CompanyId={companyId}  />,\n\t\t},\n\t];\n\n\treturn (\n\t\t<section className=\"dashboard-admin-container\">\n\t\t\t<TitleAdmin\n\t\t\t\ttitle={'Control'}\n\t\t\t\tsubtitle={'Personalización de sitio'}\n\t\t\t\tevent={() => history.push(\"/admin\")}\n\t\t\t/>\n\t\t\t<Tabs defaultActiveKey={activeTab} items={items} onChange={onChange} />\n\t\t</section>\n\t)\n}\n","import { callApi, callApiFileStorage } from './service'\nimport swal from \"sweetalert\"\n\nexport const useAcknowledgmentLadder = {\n  createAcknowledgment,\n  updateAcknowledgment,\n  deleteAcknowledgment,\n  getAcknowledgments\n}\n\nasync function getAcknowledgments(id) {\n  return callApi('/backoffice/CompanyAcknowledgmentLadder/' + id, 'GET').then((result) => {\n    if (result.responseCode === '00')\n      return result.data\n    else {\n      swal({ text: result.responseMessage, icon: \"error\" })\n      return null\n    }\n  })\n}\n\nasync function createAcknowledgment(params, files) {\n  var data = new FormData();\n  if (files)\n    for (var i = 0; i < files.length; i++) {\n      var f = files[i];\n      data.append('files', f, f.name);\n    }\n  data.append(\"model\", JSON.stringify(params))\n\n  return callApiFileStorage('/backoffice/CompanyAcknowledgmentLadder', 'POST', data, false)\n    .then((result) => {\n      if (result.responseCode === '00') {\n        swal({ text: \"Creación exitosa\", icon: \"success\" })\n        return result.data\n      }\n      else {\n        swal({ text: result.responseMessage, icon: \"error\" })\n        return null\n      }\n    })\n}\n\nasync function updateAcknowledgment(params, files) {\n  var data = new FormData();\n  if (files)\n    for (var i = 0; i < files.length; i++) {\n      var f = files[i];\n      data.append('files', f, f.name);\n    }\n  data.append(\"model\", JSON.stringify(params))\n\n  return callApiFileStorage('/backoffice/CompanyAcknowledgmentLadder', 'PUT', data, false)\n    .then((result) => {\n      if (result.responseCode === '00') {\n        swal({ text: \"Actualizado correctamente\", icon: \"success\" })\n        return result.data\n      }\n      else {\n        swal({ text: result.responseMessage, icon: \"error\" })\n        return null\n      }\n    })\n}\n\nasync function deleteAcknowledgment(params) {\n  return callApi('/backoffice/CompanyAcknowledgmentLadder', 'DELETE', params).then((result) => {\n    if (result.responseCode === '00')\n      return result\n    else {\n      swal({ text: result.responseMessage, icon: \"error\" })\n      return result\n    }\n  })\n}","import React, { useEffect, useState } from 'react'\nimport useInputForm from '../../components/CustonHooks/FormHook'\nimport { GeneralUpload } from '../../components/Helpers/generalUpload'\nimport { useAcknowledgmentLadder } from '../../services/acknowledgmentLadder.service'\n\nexport function EditLevel(props) {\n\tlet { categoryId, setShowEditLevel, currentLevel, addLevel, updateLevel } = { ...props }\n\tconst [level, setLevel] = useState({ description: \"\", noAcknowledgment: \"\" });\n\tconst [localfiles, setLocalFiles] = useState([]);\n\tconst [preview, setPreview] = useState();\n\n\tconst onSave = () => {\n\t\tif (currentLevel) {\n\t\t\tinputs.noAcknowledgment = parseInt(inputs.noAcknowledgment)\n\t\t\tuseAcknowledgmentLadder.updateAcknowledgment(inputs, localfiles)\n\t\t\t\t.then(() => {\n\t\t\t\t\tinputs.urlLogo = preview\n\t\t\t\t\tupdateLevel(inputs)\n\t\t\t\t\tsetShowEditLevel(false)\n\t\t\t\t})\n\t\t}\n\t\telse {\n\t\t\tinputs.acknowledgmentTypeId = parseInt(categoryId)\n\t\t\tinputs.noAcknowledgment = parseInt(inputs.noAcknowledgment)\n\t\t\tuseAcknowledgmentLadder.createAcknowledgment(inputs, localfiles)\n\t\t\t\t.then((data) => {\n\t\t\t\t\tdata.urlLogo = preview\n\t\t\t\t\tsetShowEditLevel(false)\n\t\t\t\t\taddLevel(data)\n\t\t\t\t})\n\t\t}\n\t};\n\n\tconst handleOnCancel = () => setShowEditLevel(false)\n\tconst { handleSubmit, handleInputChange, inputs } = useInputForm(onSave, level)\n\n\tuseEffect(() => {\n\t\tif (currentLevel) {\n\t\t\tsetPreview(currentLevel.urlLogo)\n\t\t\tsetLevel(currentLevel)\n\t\t}\n\t}, [currentLevel])\n\n\tconst handleOnChangeFile = (files) => {\n\t\tif (files.length === 1) {\n\t\t\tif (files[0].type === 'image/svg+xml' || files[0].type === 'image/x-icon') {\n\t\t\t\tsetLocalFiles(files)\n\t\t\t\tsetPreview(URL.createObjectURL(files[0]))\n\t\t\t}\n\t\t\telse {\n\t\t\t\talert('Debe cargar un archivo .svg o .ico')\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\talert('Debe elegir una sola imagen')\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className=\"content_new_question\">\n\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t<div className=\"row\">\n\t\t\t\t\t<div className=\"col-md-6\">\n\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t<label for=\"description\">Titulo del Nivel</label>\n\t\t\t\t\t\t\t<input type=\"text\" className=\"form-control\" name=\"description\" onChange={handleInputChange} value={inputs.description} required />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-md-6\">\n\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t<label for=\"noAcknowledgment\">Puntos requeridos (mínimo)</label>\n\t\t\t\t\t\t\t<input type=\"number\" min=\"0\" className=\"form-control\" name=\"noAcknowledgment\" onChange={handleInputChange} value={inputs.noAcknowledgment} required />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col-12\">\n\t\t\t\t\t\t<GeneralUpload TitleLabel={\"Icono\"} handleOnChangeFiles={handleOnChangeFile} />\n\t\t\t\t\t\t<img src={preview} style={{ width: '40px', height: '40px', marginRight: '10px', borderRadius: '50%' }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-2 text-right\">\n\t\t\t\t\t<button className=\"btn secundary minimum ml-1 mr-1\" type=\"button\" onClick={handleOnCancel}>Cancelar</button>\n\t\t\t\t\t<button className=\"btn primary minimum ml-1 mr-1\" type=\"submit\">Guardar</button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t);\n}   \n","import React, { useEffect } from 'react'\n\nexport function SearchLevel(props) {\n\tconst { levels, setSelectLevel, setShowEditLevel, deleteLevel, refresh, setRefresh } = { ...props }\n\n\tuseEffect(() => {\n\t\tsetRefresh(false)\n\t}, [refresh, setRefresh])\n\n\treturn (\n\t\t<div className=\"table-responsive\">\n\t\t\t<table className=\"wrapper_table table table-hover table-sm\">\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Titulo del Nivel</th>\n\t\t\t\t\t\t<th>Puntos requeridos (mínimo)</th>\n\t\t\t\t\t\t<th>Icono</th>\n\t\t\t\t\t\t<th>Status</th>\n\t\t\t\t\t\t<th>Acciones</th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{levels.map((level, index) => (\n\t\t\t\t\t\t<tr key={index}>\n\t\t\t\t\t\t\t<td>{level.description}</td>\n\t\t\t\t\t\t\t<td>{level.noAcknowledgment}</td>\n\t\t\t\t\t\t\t<td><img src={level.urlLogo} style={{ width: '40px', height: '40px', marginRight: '10px', borderRadius: '50%' }} /></td>\n\t\t\t\t\t\t\t<td>{level.active ? 'Active' : 'Inactive'}</td>\n\t\t\t\t\t\t\t<td className=\"text-center\">\n\t\t\t\t\t\t\t\t<span className=\"icon_tables\" onClick={() => deleteLevel(level)}>\n\t\t\t\t\t\t\t\t\t<i className=\"icon-trash\"></i>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span className=\"icon_tables\" onClick={() => { setSelectLevel(level); setShowEditLevel(true) }}>\n\t\t\t\t\t\t\t\t\t<i className=\"icon-edit\"></i>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n}\n","import React, { useEffect, useState } from 'react'\nimport { Link, useParams } from 'react-router-dom'\nimport useInputForm from '../../components/CustonHooks/FormHook'\nimport { EditLevel } from './editLevel'\nimport { SearchLevel } from './searchLevel'\nimport { useAcknowledgment } from '../../services/acknowledgment.service'\nimport { useAcknowledgmentLadder } from '../../services/acknowledgmentLadder.service'\n\nexport function EditCategory(props) {\n\tlet { id } = useParams()\n\tconst [acknowledgmentTypeId, setAcknowledgmentTypeId] = useState(id)\n\tconst [isNew, setIsNew] = useState(id === undefined)\n\tconst [acknowledgment, setAcknowledgment] = useState({})\n\tconst [levels, setLevels] = useState([])\n\tconst [showEditLevel, setShowEditLevel] = useState(false)\n\tconst [refresh, setRefresh] = useState(false)\n\tconst [selectLevel, setSelectLevel] = useState()\n\n\tconst setAcknowledgmentFixed = (data) => {\n\t\tdata.validFrom = data.validFrom.split(\"T\")[0]\n\t\tdata.validTo = data.validTo.split(\"T\")[0]\n\t\tsetAcknowledgment(data)\n\t}\n\n\tconst addLevel = (level) => {\n\t\tlet aux = levels\n\t\taux.push(level)\n\t\tsetLevels(aux)\n\t\tsetRefresh(true)\n\t}\n\n\tconst updateLevel = (level) => {\n\t\tlet aux = levels\n\t\tlet index = aux.findIndex(x => x.companyAcknowledgmentLadderId === level.companyAcknowledgmentLadderId)\n\t\taux[index] = level\n\t\tsetLevels(aux)\n\t\tsetRefresh(true)\n\t}\n\n\tconst deleteLevel = (level) => {\n\t\tuseAcknowledgmentLadder.deleteAcknowledgment(level).then((result) => {\n\t\t\tif (result.responseCode === '00') {\n\t\t\t\tlet aux = levels\n\t\t\t\tlet index = aux.findIndex(x => x.companyAcknowledgmentLadderId === level.companyAcknowledgmentLadderId)\n\t\t\t\taux[index].active = false\n\t\t\t\tsetLevels(aux)\n\t\t\t\tsetRefresh(true)\n\t\t\t}\n\t\t})\n\t}\n\n\tconst onSave = () => {\n\t\tif (isNew) {\n\t\t\tuseAcknowledgment.createAcknowledgment(inputs)\n\t\t\t\t.then((data) => {\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tsetAcknowledgmentTypeId(data.acknowledgmentTypeId)\n\t\t\t\t\t\tsetIsNew(false)\n\t\t\t\t\t\tsetAcknowledgmentFixed(data)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t\telse {\n\t\t\tuseAcknowledgment.updateAcknowledgment(inputs)\n\t\t}\n\t};\n\n\tconst { handleSubmit, handleInputChange, inputs } = useInputForm(onSave, acknowledgment);\n\n\tuseEffect(() => {\n\t\tif (isNew) {\n\t\t\tsetAcknowledgment({})\n\t\t}\n\t\telse {\n\t\t\tuseAcknowledgment.getAcknowledgment(id)\n\t\t\t\t.then((data) => {\n\t\t\t\t\tsetAcknowledgmentFixed(data)\n\t\t\t\t\tuseAcknowledgmentLadder.getAcknowledgments(id)\n\t\t\t\t\t\t.then((data) => setLevels(data))\n\t\t\t\t})\n\t\t}\n\t}, [id]);\n\n\treturn (\n\t\t<div className=\"wrapper_form_survey card shadows p-4 \">\n\t\t\t<form onSubmit={handleSubmit} className=\"mb-5\">\n\t\t\t\t<fieldset >\n\t\t\t\t\t<legend className=\"text fnt_medium\">{isNew ? \"Nueva\" : \"Editar\"} categoría</legend>\n\t\t\t\t\t<div className=\"row\">\n\t\t\t\t\t\t<div className=\"col-md-6 col-lg-4\">\n\t\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t\t<label for=\"title\">Título</label>\n\t\t\t\t\t\t\t\t<input type=\"text\" name=\"title\" className=\"form-control\" onChange={handleInputChange} value={inputs.title} required />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"col-md-6 col-lg-4\">\n\t\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t\t<label for=\"descritption\">Descripción</label>\n\t\t\t\t\t\t\t\t<textarea type=\"text\" rows=\"3\" name=\"descritption\" className=\"form-control\" onChange={handleInputChange} value={inputs.descritption} required />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"col-md-6 col-lg-4\">\n\t\t\t\t\t\t\t<div className=\"form-group text-center\">\n\t\t\t\t\t\t\t\t<label for=\"active\">Activar</label>\n\t\t\t\t\t\t\t\t<input type=\"checkbox\" className=\"form-control cursor\" name=\"active\" onChange={handleInputChange} checked={inputs.active} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"col-md-6 col-lg-4\">\n\t\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t\t<label for=\"validFrom\">Vigencia desde</label>\n\t\t\t\t\t\t\t\t<input className=\"form-control\" type=\"date\" name=\"validFrom\" onChange={handleInputChange} value={inputs.validFrom} required />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"col-md-6 col-lg-4\">\n\t\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t\t<label for=\"validTo\">Vigencia hasta</label>\n\t\t\t\t\t\t\t\t<input className=\"form-control\" type=\"date\" name=\"validTo\" onChange={handleInputChange} value={inputs.validTo} required />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"mt-4\">\n\t\t\t\t\t\t<Link to=\"/AdminBoard\">\n\t\t\t\t\t\t\t<button className=\"btn secundary minimum ml-1 mr-1\" type=\"button\">{isNew ? 'Cancelar' : 'Regresar'}</button>\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t<button className=\"btn primary minimum\" type=\"submit\">Guardar</button>\n\t\t\t\t\t</div>\n\t\t\t\t</fieldset>\n\t\t\t</form>\n\n\t\t\t{!isNew &&\n\t\t\t\t<div className=\"row\">\n\t\t\t\t\t<div className=\"col-12\">\n\t\t\t\t\t\t<fieldset >\n\t\t\t\t\t\t\t<legend className=\"text fnt_medium\">Lista de niveles</legend>\n\t\t\t\t\t\t\t<div className=\"mb-3\">\n\t\t\t\t\t\t\t\t<span className=\"pl-2 link_action\" onClick={() => { setSelectLevel(null); setShowEditLevel(true); }}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-plus\"></i> Agregar nivel\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{showEditLevel &&\n\t\t\t\t\t\t\t\t<EditLevel\n\t\t\t\t\t\t\t\t\tcategoryId={acknowledgmentTypeId}\n\t\t\t\t\t\t\t\t\tcurrentLevel={selectLevel}\n\t\t\t\t\t\t\t\t\tsetShowEditLevel={setShowEditLevel}\n\t\t\t\t\t\t\t\t\taddLevel={addLevel}\n\t\t\t\t\t\t\t\t\tupdateLevel={updateLevel}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t{levels.length > 0 &&\n\t\t\t\t\t\t\t\t<SearchLevel\n\t\t\t\t\t\t\t\t\tlevels={levels}\n\t\t\t\t\t\t\t\t\tsetSelectLevel={setSelectLevel}\n\t\t\t\t\t\t\t\t\tsetShowEditLevel={setShowEditLevel}\n\t\t\t\t\t\t\t\t\tdeleteLevel={deleteLevel}\n\t\t\t\t\t\t\t\t\trefresh={refresh}\n\t\t\t\t\t\t\t\t\tsetRefresh={setRefresh}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t</fieldset>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t);\n}   \n","import React, { useState } from 'react'\nimport { useParams } from 'react-router-dom'\nimport { EditCategory } from './editCategory'\n\nexport function DetailsCategory() {\n  let { id } = useParams()\n  const [isNew] = useState(id === undefined)\n  return (\n    <div className=\"wrapper_details_survey padd\">\n      <div className=\"mb-4 divtop\">\n        <div className=\"box_ttl_opt mb-0\">\n          <h2 className=\"mb-0 text fnt_medium\">Reconocimiento</h2>\n        </div>\n        <div className=\"box_ttl_opt\">\n          <h5 className=\"mb-0 text-muted\">{isNew ? \"Nueva\" : \"Editar\"} categoría</h5>\n        </div>\n      </div>\n      <EditCategory />\n    </div>\n  );\n}   \n","import React, {useEffect, useState} from \"react\";\nimport { EditorState, convertToRaw, ContentState } from \"draft-js\";\nimport { Editor } from \"react-draft-wysiwyg\";\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport draftToHtml from \"draftjs-to-html\";\nimport htmlToDraft from \"html-to-draftjs\";\n\nexport const EditorPost = (props) => {\n\n    const [html] = useState(props.content);\n    const [editorState, setEditorState] = useState('');\n\n    const onEditorStateChange = (editorState) => {\n        props.handleInputChange({\n          target: {\n            name: props.name,\n            value: draftToHtml(convertToRaw(editorState.getCurrentContent())),\n          },\n        });\n        setEditorState(editorState);\n    };\n\n    const uploadImageCallBack = (file) => {\n        return new Promise((resolve, reject) => {\n            const reader = new FileReader(); // eslint-disable-line no-undef\n            reader.onload = e => resolve({ data: { link: e.target.result } });\n            reader.onerror = e => reject(e);\n            reader.readAsDataURL(file);\n        });\n    }\n\n    useEffect(() => {\n        const contentBlock = htmlToDraft(html);\n        if (contentBlock) {\n            const contentState = ContentState.createFromBlockArray(contentBlock.contentBlocks);\n            const editorState = EditorState.createWithContent(contentState);\n            setEditorState(editorState);\n        }\n    }, [html]);\n\n    return (\n      <div className=\"w-100\">\n        <Editor\n          editorState={editorState}\n          wrapperClassName=\"wrapper-class\"\n          editorClassName=\"editor-class\"\n          toolbarClassName=\"toolbar-class\"\n          onEditorStateChange={onEditorStateChange}\n          toolbar={{\n            options: [\n              \"inline\",\n              \"colorPicker\",\n              \"blockType\",\n              \"fontSize\",\n              \"fontFamily\",\n              \"list\",\n              \"textAlign\",\n              \"image\",\n              \"link\",\n              \"remove\",\n              \"history\",\n            ],\n            inline: {\n              options: [\"bold\", \"italic\", \"underline\", \"strikethrough\"],\n            },\n            image: {\n              urlEnabled: true,\n              uploadEnabled: true,\n              uploadCallback: uploadImageCallBack,\n              alignmentEnabled: true,\n              previewImage: true,\n              inputAccept: \"image/gif,image/jpeg,image/jpg,image/png,image/svg\",\n            },\n            list: { inDropdown: true },\n            textAlign: { inDropdown: true },\n            link: { inDropdown: true },\n            history: { inDropdown: true },\n          }}\n        />\n      </div>\n    );\n}\n","import React, {useEffect, useState, forwardRef, useImperativeHandle, useRef} from 'react';\nimport { companyPostService } from '../../services/companyPost.service';\nimport { backendService } from \"../../services/backend.service\";\nimport {Button, Input, Space, Table, Tag} from \"antd\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport moment from \"moment\";\nimport MySwal from \"sweetalert2\";\nimport dayjs from \"dayjs\";\n\nconst SearchCompanyPost = forwardRef((props, ref) => {\n    useImperativeHandle(ref, () => ({\n        refreshDataGrid: refreshDataGrid\n    }));\n    const [dataGrid, setDataGrid] = useState([]);\n    const [originValues, setOriginValues] = useState({\n        currentWriter: \"\"\n    });\n    const trigger = undefined;\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    const handleDelete = (e, data) =>  {\n        MySwal.fire({\n            title:\"¿Deseas desactivar esta publicación?\",\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed) companyPostService.deletet(data).then((result) => getAll());\n        })\n    }\n\n    async function getAll() {\n        companyPostService.getAll(0)\n            .then((result) => {\n                if (result) setDataGrid(result);\n            });\n    }\n\n    const refreshDataGrid = () => getAll();\n\n    const getProfileInfo = () => {\n        backendService.userProfile().then((data) => {\n            setOriginValues({\n                currentWriter: data.firstName+' '+data.middleName+' '+data.lastName ?? \"\"\n            });\n        });\n    };\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{marginBottom: 8, display: 'block',}}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{width: 90,}}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined style={{color: filtered ? '#1677ff' : undefined,}}/>\n        ),\n        onFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) setTimeout(() => searchInput.current?.select(), 100);\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{backgroundColor: '#ffc069', padding: 0,}}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (text),\n    });\n\n    const columnsCompany = [\n        {\n            title: 'Título del artículo',\n            dataIndex: 'title',\n            key: 'title',\n            ...getColumnSearchProps('title'),\n        },\n        {\n            title: 'Fecha de publicación',\n            dataIndex: 'date',\n            key: 'date',\n            sorter: (a, b) => moment(a.date).unix() - moment(b.date).unix(),\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Vistas',\n            dataIndex: 'views',\n            key: 'views',\n            sorter: (a, b) => {\n                if(a.views < b.views) {\n                    return -1;\n                }\n                if(a.views > b.views) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Autor',\n            dataIndex: 'author',\n            key: 'author',\n            ...getColumnSearchProps('author'),\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const dataCompany = dataGrid.map((item,i) => {\n        return {\n            key: i,\n            title: item.title,\n            date: dayjs(item.publishDate).format('DD/MMM/YYYY'),\n            views: item.totalViews,\n            author: item.writter,\n            options: <Space>\n                <Button\n                    type={'primary'}\n                    htmlType={'button'}\n                    className=\"edit\"\n                    onClick={(e) => props.handleRowSelect(item)}\n                >\n                    <FaEdit />\n                </Button>\n                {item.active ?\n                    <>\n                        <Button\n                            type={'primary'}\n                            htmlType={'button'}\n                            className=\"delete\"\n                            onClick={(e) => handleDelete(e, item)}\n                        >\n                            <FaTrash />\n                        </Button>\n                    </>\n                    : null\n                }\n            </Space>\n        };\n    })\n\n    useEffect(() => {\n        getProfileInfo();\n    }, [trigger]);\n\n    useEffect(() => {\n        getAll();\n    }, []);\n\n    return (\n        <Table\n            className=\"table-admin\"\n            dataSource={dataCompany}\n            columns={columnsCompany}\n            scroll={{ x: '992px', y: 800 }}\n            locale={{\n                triggerDesc: 'Ordenamiento descendente',\n                triggerAsc: 'Ordenamiento ascedente',\n                cancelSort: 'Cancelar ordenamiento',\n                emptyText: 'Sin registros',\n            }}\n        />\n    );\n\n});\n\nexport default SearchCompanyPost;\n","import React, {useRef, useState} from 'react';\nimport SearchGalleries from '../../../components/companyPost/searchGalleries';\nimport {storageService} from '../../../services/storage.service';\nimport {companyPostService} from '../../../services/companyPost.service';\nimport {SelectUsers} from \"../../../components/Helpers/selectUsers\";\nimport {AudienceUsers} from \"../../../components/Helpers/audienceUsers\";\nimport {FaSave, FaTimesCircle} from \"react-icons/fa\";\nimport {Button, Col, Form, Input, Row} from \"antd\";\nimport {PlusCircleOutlined} from \"@ant-design/icons\";\nimport {HeadingAdmin} from \"../../components/headingAdmin/headingAdmin\";\nimport Swal from \"sweetalert2\";\nimport './galleries.scss'\nimport {TitleAdmin} from \"../../components/titleAdmin/titleAdmin\";\nimport {InputFile} from \"../../components/inputFile/inputFile\";\n\nexport const AdminGallery = () => {\n\n    const [companyInit, setCompanyInit] = useState({\n        CompanyPostId: 0,\n        Title: '',\n        Subtitle: '',\n        Text: '',\n        DepartmentId: 0,\n        JobRoleId: 0\n    });\n    const [showEdit, setShowEdit] = useState(false);\n    const [userSelec, setUserSelec] = useState([]);\n    const [images, setImages] = useState([]);\n    const [postType, setPostType] = useState(1);\n    const gridRef = useRef();\n    const [imagesUpdated, setImagesUpdate] = useState(false);\n\n    const clearObjectCompany = () => setCompanyInit({\n        CompanyPostId: 0,\n        Title: '',\n        Subtitle: '',\n        Text: '',\n        DepartmentId: 0,\n        JobRoleId: 0\n    })\n\n    const onSave = () => {\n        if (userSelec.length > 0) {\n            companyInit.PostType = postType;\n            companyInit.ListUser = userSelec;\n\n            if (images.length === 0) Swal.fire({text: \"Debes elegir al menos una imagen\", icon: \"error\"});\n\n            if (parseInt(companyInit.CompanyPostId) === 0) {\n                companyPostService.create(companyInit, images).then((res) => gridRef.current.refreshDataGrid());\n                handleReset();\n            } else {\n                const imagesToSave = [];\n                if(imagesUpdated) {\n                    images.forEach(img => {\n                        if(!img.path) imagesToSave.push(img);\n                    })\n                }\n                companyPostService.update(companyInit,  imagesUpdated ? imagesToSave : []).then((res) => gridRef.current.refreshDataGrid());\n                handleReset();\n            }\n\n        } else Swal.fire({ text: \"Debes elegir al menos un usuario\", icon: \"error\" });\n    }\n\n    const handleSelectFiles = (newFiles) => {\n        if(companyInit.CompanyPostId > 0) {\n            setImagesUpdate(true);\n            setImages(newFiles);\n        } else setImages(newFiles)\n    }\n\n    const handleRemoveFiles = (files,file) => {\n       setImages(files);\n       if(companyInit.CompanyPostId > 0)\n           handleDeleteImageGallery(file.entityId, file.entityTypeId, file.sequence)\n    }\n\n    const handleReset = () => {\n        clearObjectCompany();\n        setShowEdit(false);\n        setUserSelec([]);\n        setPostType(1);\n        setImages([]);\n    }\n\n    const handleOnNewGallery = () => {\n        setCompanyInit(companyInit);\n        setShowEdit(true);\n        setUserSelec([]);\n        setImages([]);\n        setPostType(1);\n    };\n\n    const handleRowSelect = (gridItem) => {\n        setShowEdit(true);\n        setPostType(gridItem.postType);\n        setCompanyInit({\n            CompanyPostId: gridItem.companyPostId,\n            Title: gridItem.title,\n            Subtitle: gridItem.subtitle,\n            Text: gridItem.text,\n            PostType: gridItem.postType\n        });\n        companyPostService.getCompanyPostImagesPathById(gridItem.companyPostId).then((result) => {\n            if(result.files) {\n                result.files.map(async (img) => img.path = await fetch(img.path).then(r => r.blob())\n                        .then(blobFile => new File([blobFile], `img_${img.fileName}`, {type: \"image/png\",})));\n                setImages(result.files);\n            }\n        });\n    }\n\n    const handleDeleteImageGallery = (entityId, entityTypeId, sequence) => {\n        storageService.deleteStorage({\n            EntityId: entityId,\n            EntityTypeId: entityTypeId,\n            Sequence: sequence\n        }).then(res =>  setImages(images.filter((image) => image.sequence !== sequence)))\n    };\n\n    const handleInputChange = (e) => setCompanyInit({...companyInit, [e.target.name]: e.target.value})\n\n    return (\n        <div className=\"dashboard-admin-container\">\n            <TitleAdmin\n                title={'Lista de álbumes'}\n                subtitle={'Gestiona tus galerías'}\n                btnBack={false}\n            />\n            <HeadingAdmin\n                text={!(showEdit) ? 'Agregar álbum' : 'Cancelar'}\n                icon={(!showEdit) ? <PlusCircleOutlined /> : <FaTimesCircle />}\n                event={() => !(showEdit) ? handleOnNewGallery() : handleReset()}\n            />\n            {!(showEdit) ?\n                <SearchGalleries\n                    handleRowSelect={handleRowSelect}\n                    ref={gridRef}\n                />\n                :\n                <Form\n                    onFinish={onSave}\n                    className=\"form-backoffice\"\n                    layout={'vertical'}\n                >\n                    <Row gutter={16}>\n                        <Col lg={12} md={12} sm={24} xs={24}>\n                            <Form.Item\n                                label=\"Título de álbum\"\n                                htmlFor={'Title'}\n                                name=\"Title\"\n                                rules={[\n                                    {\n                                        required: true,\n                                        message: '*Campo Requerido'\n                                    }\n                                ]}\n                                initialValue={companyInit.Title}\n                            >\n                                <Input\n                                    type=\"text\"\n                                    name=\"Title\"\n                                    onChange={handleInputChange}\n                                />\n                            </Form.Item>\n                        </Col>\n                        <Col lg={12} md={12} sm={24} xs={24}>\n                            <Form.Item\n                                label=\"Archivos seleccionado(s)\"\n                            >\n                                <Col xs={24}>\n                                    <InputFile\n                                        onFilesSelected={handleSelectFiles}\n                                        width={1280}\n                                        height={1280}\n                                        edit={(companyInit.CompanyPostId > 0)}\n                                        valueFile={images}\n                                        nameFile={'images'}\n                                        accept={['image']}\n                                        oneFile={false}\n                                        maxFiles={50}\n                                        deleteImage={handleRemoveFiles}\n                                    />\n                                </Col>\n                            </Form.Item>\n                        </Col>\n                        {companyInit.CompanyPostId > 0 ?\n                            <AudienceUsers\n                                targetId={companyInit.CompanyPostId}\n                                eventType=\"Galeria\"\n                                selectUser={setUserSelec}\n                                showBtn={(showEdit)}\n                            />\n                            :\n                            <SelectUsers selectUser={setUserSelec} title={\"Entrada dirigida a:\"}/>\n                        }\n                        <Col xs={24}>\n                            <div className=\"form-backoffice-footer\">\n                                <Button type=\"primary\" htmlType={'submit'}>\n                                    <p>Guardar</p>\n                                    <FaSave />\n                                </Button>\n                            </div>\n                        </Col>\n                    </Row>\n                </Form>\n            }\n        </div>\n    )\n}\n","import React, { useRef, useState } from \"react\";\nimport { EditorPost } from \"./editor\";\nimport SearchCompanyPost from \"./searchCompanyPost\";\nimport { companyPostService } from \"../../services/companyPost.service\";\nimport { SelectUsers } from \"../../components/Helpers/selectUsers\";\nimport { AudienceUsers } from \"../../components/Helpers/audienceUsers\";\nimport { CompanyPostAttachment } from \"../../components/companyPost/companyPostAttachment\";\nimport { AdminGallery } from \"./galleries/adminGallery\";\nimport {FaSave, FaTimesCircle} from \"react-icons/fa\";\nimport {Button, Col, Form, Input, Row, Tabs} from \"antd\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {useHistory} from \"react-router-dom\";\nimport {PlusCircleOutlined} from \"@ant-design/icons\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\nimport Swal from \"sweetalert2\";\nimport {Checkbox} from \"../components/checkbox/checkbox\";\nimport {InputFile} from \"../components/inputFile/inputFile\";\n\nimport \"./ourCompanyAdmin.scss\";\nimport MySwal from \"sweetalert2\";\nimport {storageService} from \"../../services/storage.service\";\n\nexport const CompanyPost = () => {\n  const [activeTab, setActiveTab] = useState(\"1\");\n  const [companyInit, setCompanyInit] = useState({\n    CompanyPostId: 0,\n    CompanyPostCategoryId: 1,\n    Title: \"\",\n    Subtitle: \"\",\n    Text: \"\",\n    DepartmentId: 0,\n    JobRoleId: 0,\n  });\n  const [localfiles, setLocalFiles] = useState([]);\n  const [localAttachments, setLocalAttachments] = useState([]);\n  const [showEdit, setShowEdit] = useState(false);\n  const [userSelec, setUserSelec] = useState([]);\n  const gridRef = useRef();\n  const history = useHistory();\n  const [thumbUpdated, setThumbUpdated] = useState(false);\n  const [PDFUpdated, setPDFUpdated] = useState(false);\n\n  const onSave = () => {\n    companyInit.ListUser = userSelec;\n\n    if(localfiles.length === 0) return MySwal.fire({\n      title: \"No hay una imagen para la publicación\",\n      icon: \"error\",\n      confirmButtonText: \"Aceptar\"\n    });\n\n    if (userSelec.length > 0) {\n      if (companyInit.CompanyPostId === 0) {\n        companyPostService\n          .create(companyInit, localfiles, localAttachments)\n          .then((result) => {\n            gridRef.current.refreshDataGrid();\n            MySwal.fire({\n              title: \"¡Se creó correctamente!\",\n              icon: \"success\",\n              confirmButtonText: \"Confirmar\"\n            });\n          });\n      } else {\n        companyPostService\n          .update(companyInit, !(thumbUpdated) ? [] : localfiles, !(PDFUpdated) ? [] : localAttachments)\n          .then((result) => {\n            setThumbUpdated(false)\n            setPDFUpdated(false);\n            gridRef.current.refreshDataGrid();\n          });\n      }\n      setUserSelec([]);\n      clearCompanyInit();\n      setShowEdit(false);\n      setLocalFiles([]);\n      setLocalAttachments([]);\n    } else {\n      Swal.fire({\n        icon: 'error',\n        title: 'Ups...',\n        text: 'Debes elegir al menos un usuario',\n      })\n    }\n  };\n\n  const handleDeleteImage = (files,file,typeFile) => {\n    if((companyInit.CompanyPostId !== 0)) {\n      if(typeFile === 'image') {\n        storageService\n            .deleteStorage({\n              EntityId: file.entityId,\n              EntityTypeId: file.entityTypeId,\n              Sequence: file.sequence,\n            })\n            .then((result) => setLocalFiles([]));\n      }\n\n      if(typeFile === 'pdf'){\n        storageService\n            .deleteStorage({\n              EntityId: file.entityId,\n              EntityTypeId : file.entityTypeId,\n              Sequence: file.sequence,\n            })\n            .then((result) => setLocalAttachments([]));\n      }\n    } else {\n      if(typeFile === 'image') setLocalFiles(file);\n      if(typeFile === 'pdf') setLocalAttachments(file);\n    }\n  };\n\n  const handleOnCancel = () => {\n    clearCompanyInit();\n    setShowEdit(false);\n    setUserSelec([]);\n    setLocalFiles([]);\n    setLocalAttachments([]);\n  };\n\n  const clearCompanyInit = () => {\n    setCompanyInit({\n      CompanyPostId: 0,\n      CompanyPostCategoryId: 1,\n      Title: \"\",\n      Subtitle: \"\",\n      Text: \"\",\n      DepartmentId: 0,\n      JobRoleId: 0,\n    })\n  }\n\n  const handleOnNew = () => {\n    setCompanyInit(companyInit);\n    setShowEdit(true);\n    setUserSelec([]);\n    setLocalFiles([]);\n    setLocalAttachments([]);\n  };\n\n  const handleRowSelect = (gridItem) => {\n    console.log(gridItem,'fdasdf')\n    setShowEdit(true);\n    setCompanyInit({\n      CompanyPostId: gridItem.companyPostId,\n      Title: gridItem.title,\n      Subtitle: gridItem.subtitle,\n      Text: gridItem.text,\n      CompanyPostCategoryId: gridItem.companyPostCategoryId,\n    });\n\n    companyPostService.getCompanyPostImagesById(gridItem.companyPostId).then((result) => {\n        if (result.files) setLocalFiles(result.files);\n    });\n\n    companyPostService.getCompanyPostFilesById(gridItem.companyPostId).then((result) => {\n        if (result.files[0]) setLocalAttachments(result.files);\n    });\n  };\n\n  const handleCheckboxChange = (value) => {\n    const valueInt = (value) ? 2 : 1\n    setCompanyInit({...companyInit, CompanyPostCategoryId: valueInt})\n  }\n\n  const handleInputChange = (e) => setCompanyInit({...companyInit, [e.target.name]: e.target.value});\n\n  const onChangeTab = (key) => setActiveTab(key);\n\n  const handleLocalFiles = (files) => {\n    if(companyInit.CompanyPostId) setThumbUpdated(true);\n    setLocalFiles(files);\n  }\n\n  const handleLocalAttachment = (files) => {\n    if(companyInit.CompanyPostId)  setPDFUpdated(true);\n    setLocalAttachments(files);\n  }\n\n  const items = [\n    {\n      key: '1',\n      label: 'Artículos',\n      children: <>\n          <HeadingAdmin\n              text={!(showEdit) ? 'Agregar entrada' : 'Cancelar'}\n              icon={(!showEdit) ? <PlusCircleOutlined /> : <FaTimesCircle />}\n              event={() => !(showEdit) ? handleOnNew() : handleOnCancel()}\n          />\n          {!(showEdit )? (\n              <SearchCompanyPost handleRowSelect={handleRowSelect} ref={gridRef} />\n          ) :\n              <Form\n                  onFinish={onSave}\n                  className={'form-backoffice'}\n                  layout={'vertical'}\n                  fields={[\n                    {\n                      'name': ['JobRoleId'],\n                      'value': companyInit.JobRoleId\n                    },\n                  ]}\n              >\n                <Row gutter={16}>\n                  <Col md={12} sm={24} xs={24}>\n                    <Form.Item\n                        label={'Título de entrada'}\n                        htmlFor={'Title'}\n                        name={'Title'}\n                        rules={[\n                          {\n                            required: true,\n                            message: '*Campo Requerido'\n                          },\n                          {\n                            pattern: new RegExp(/^\\S/),\n                            message: \"No se aceptan espacios en blanco al inicio\",\n                          },\n                        ]}\n                        initialValue={companyInit.Title}\n                    >\n                      <Input\n                          name=\"Title\"\n                          onChange={handleInputChange}\n                      />\n                    </Form.Item>\n                  </Col>\n                  <Col md={12} sm={24} xs={24}>\n                    <Form.Item\n                        label={'¿Es historia de Orgullo?'}\n                    >\n                      <Checkbox\n                          text={''}\n                          name={(companyInit.CompanyPostCategoryId === 2)}\n                          handleValueCheck={handleCheckboxChange}\n                      />\n                    </Form.Item>\n                  </Col>\n                  <Col md={12} sm={24} xs={24}>\n                    <Form.Item\n                        label={'Imagen de artículo'}\n                    >\n                      <InputFile\n                          onFilesSelected={handleLocalFiles}\n                          edit={(companyInit.CompanyPostId !== 0)}\n                          valueFile={localfiles}\n                          width={800}\n                          height={800}\n                          nameFile={'localfiles'}\n                          accept={['image']}\n                          deleteImage={(files,file) => handleDeleteImage(files,file,'image')}\n                      />\n                    </Form.Item>\n                  </Col>\n                  <Col md={12} sm={24} xs={24}>\n                    <Form.Item\n                        label={'Archivo adjunto'}\n                    >\n                      <InputFile\n                          onFilesSelected={handleLocalAttachment}\n                          edit={(companyInit.CompanyPostId !== 0)}\n                          valueFile={localAttachments}\n                          nameFile={'localattachments'}\n                          accept={['image','pdf']}\n                          width={1200}\n                          height={800}\n                          deleteImage={(files,file) => handleDeleteImage(files,file,'pdf')}\n                      />\n                    </Form.Item>\n                  </Col>\n                  {\n                    (companyInit.CompanyPostId !== null && companyInit.CompanyPostId > 0) ? (\n                      <Col md={16} sm={24} xs={24}>\n                          <CompanyPostAttachment\n                              CompanyPostId={companyInit.CompanyPostId}\n                              IsDelete={true}\n                          />\n                      </Col>\n                    ) : null\n                  }\n                  <Col xs={24}>\n                    <EditorPost\n                        content={companyInit.Text}\n                        name=\"Text\"\n                        handleInputChange={handleInputChange}\n                    />\n                  </Col>\n                  <Col xs={24}>\n                    {\n                      (companyInit.CompanyPostId > 0) ?\n                          <AudienceUsers targetId={companyInit.CompanyPostId} eventType=\"Articulo\" selectUser={setUserSelec} />\n                          :\n                          <SelectUsers selectUser={setUserSelec} title={\"Entrada dirigida a:\"} />\n                    }\n                  </Col>\n                  <Col xs={24}>\n                    <div className=\"form-backoffice-footer\">\n                      <Button htmlType={'submit'} type=\"primary\">\n                        <p>Guardar</p>\n                        <FaSave />\n                      </Button>\n                    </div>\n                  </Col>\n                </Row>\n              </Form>\n          }\n      </>,\n    },\n    {\n      key: '2',\n      label: 'Galerías',\n      children: <AdminGallery />,\n    }\n  ];\n\n  return (\n    <section className=\"dashboard-admin-container\">\n      <TitleAdmin\n          title={'Mundo Pride'}\n          subtitle={'Gestión de artículos y galería'}\n          event={() => history.push(\"/admin\")}\n      />\n      <Tabs\n          defaultActiveKey={activeTab}\n          items={items}\n          onChange={onChangeTab}\n      />\n    </section>\n  );\n}\n","import { callApi } from '../service'\nimport swal from \"sweetalert\"\n\nexport const productFilterService = {\n    getAll,\n    getById,\n    create,\n    edit,\n    deleteProductFilter,\n    getCatalogs\n};\n\n\nasync function getAll() {\n    return callApi('/BackOffice/RewardProductFilter', 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return [];\n            }\n        });\n}\n\nasync function getById(id) {\n    return callApi('/BackOffice/RewardProductFilter/' + id, 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return {};\n            }\n        });\n}\nasync function create(param) {\n    return callApi('/BackOffice/RewardProductFilter', 'POST', param)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Registro guardado exitosamente\", icon: \"success\" })\n                    .then(() => window.location.href = \"/admin/product-filter\");\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n\nasync function edit(param) {\n    return callApi('/BackOffice/RewardProductFilter', 'PUT', param)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Registro guardado exitosamente\", icon: \"success\" })\n                    .then(() => window.location.href = \"/admin/product-filter\");\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n\n\nasync function getCatalogs() {\n    return callApi('/BackOffice/RewardProductFilter/Catalogs', 'GET')\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                return result.data;\n            } else {\n                return {};\n            }\n        });\n}\n\nasync function deleteProductFilter(params) {\n    return callApi('/BackOffice/RewardProductFilter?id=' + params, 'DELETE', null).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"El filtro desactivo correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar el filtro\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\n","import React, {useEffect, useRef, useState} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport { productFilterService } from '../../services/backoffice/rewardProductFilter.service';\nimport {Button, Input, Space, Table} from \"antd\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport MySwal from \"sweetalert2\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\n\nexport function SearchProductFilter(props) {\n    const [rewardProductFilterData, setRewardProductFilterData] = useState({ rewardProductFilter: [] });\n    const history = useHistory();\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: \"¿Estás seguro que deseas borrar esta recompensa?\",\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)  productFilterService.deleteProductFilter(data).then((result) => {  getRewardProductFilters(); });\n        })\n    };\n\n    async function getRewardProductFilters() {\n        productFilterService.getAll().then((result) => {\n            if (result) {\n                setRewardProductFilterData({ rewardProductFilter: result });\n            }\n        });\n    }\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{marginBottom: 8, display: 'block',}}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        htmlType={'button'}\n                        style={{width: 90,}}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        htmlType={'button'}\n                        style={{width: 90,}}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined style={{color: filtered ? '#1677ff' : undefined,}}/>\n        ),\n        onFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) setTimeout(() => searchInput.current?.select(), 100);\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{backgroundColor: '#ffc069', padding: 0,}}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (text),\n    });\n\n    const columns = [\n        {\n            title: 'ID',\n            dataIndex: 'id',\n            key: 'id',\n            fixed: 'left',\n            width: 80\n        },\n        {\n            title: 'Producto',\n            dataIndex: 'product',\n            key: 'product',\n            ...getColumnSearchProps('product'),\n            sorter: (a, b) => {\n                if(a.product.length < b.product.length) {\n                    return -1;\n                }\n                if(a.product.length > b.product.length) {\n                    return 1;\n                }\n                return 0;\n            },\n        },\n        {\n            title: 'Sucursal',\n            dataIndex: 'branchOffice',\n            key: 'branchOffice',\n            sorter: (a, b) => {\n                if(a.branchOffice.length < b.branchOffice.length) {\n                    return -1;\n                }\n                if(a.branchOffice.length > b.branchOffice.length) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Grupo',\n            dataIndex: 'group',\n            key: 'group',\n        },\n        {\n            title: 'Categoría',\n            dataIndex: 'category',\n            key: 'category',\n            sorter: (a, b) => {\n                if(a.category.length < b.category.length) {\n                    return -1;\n                }\n                if(a.category.length > b.category.length) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Stock',\n            dataIndex: 'stock',\n            key: 'stock',\n            sorter: (a, b) => {\n                if(a.stock.length < b.stock.length) {\n                    return -1;\n                }\n                if(a.stock.length > b.stock.length) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Puntos',\n            dataIndex: 'points',\n            key: 'points',\n            sorter: (a, b) => a.points - b.points,\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const dataSource = rewardProductFilterData.rewardProductFilter.map(pf => {\n        return {\n            key: pf.rewardProductFilterId,\n            id: pf.rewardProductFilterId,\n            product: pf.productDescription,\n            branchOffice: pf.branchOfficeName == null ? \"<Todas>\" : pf.branchOfficeName,\n            group: pf.departmentName == null ? \"<Todos>\" : pf.departmentName,\n            category: pf.roleName == null ? \"<Todos>\" : pf.roleName,\n            stock: pf.filterStock,\n            points: pf.points,\n            options: <><Space>\n                <Button type=\"primary\" htmlType={'button'} className=\"edit\" onClick={() => history.push('/admin/detail-product-filter/'+pf.rewardProductFilterId)}>\n                    <FaEdit />\n                </Button>\n                <Button type=\"primary\" htmlType={'button'} className=\"delete\" onClick={() => handleDelete(pf.rewardProductFilterId)}>\n                    <FaTrash />\n                </Button>\n            </Space></>\n        };\n    })\n\n    useEffect(() => {\n        getRewardProductFilters();\n    }, [props.refresh]);\n\n    return (\n        <div className='wpr_quest_search'>\n            <Table columns={columns} dataSource={dataSource} className=\"table-admin\" scroll={{ x: '992px', y: 800 }}\n                   locale={{\n                       triggerDesc: 'Ordenamiento descendente',\n                       triggerAsc: 'Ordenamiento ascedente',\n                       cancelSort: 'Cancelar ordenamiento',\n                       emptyText: 'Sin registros',\n                   }}\n            />\n        </div>\n    );\n}\n","import React, { useState } from \"react\";\nimport { SearchProductFilter } from \"./searchProductFilter\";\n\nimport \"./rewardProductFilter.scss\";\nimport { useHistory } from \"react-router-dom\";\nimport { TitleAdmin } from \"../components/titleAdmin/titleAdmin\";\nimport { HeadingAdmin } from \"../components/headingAdmin/headingAdmin\";\n\nexport function AdminProductFilter() {\n  const [refresh] = useState(0);\n  const history = useHistory();\n\n  return (\n    <section className=\"dashboard-admin-container\">\n      <TitleAdmin\n        title={\"Administración de Cupones\"}\n        subtitle={\"Listado de cupones\"}\n        event={() => history.push(\"/admin\")}\n      />\n      <HeadingAdmin\n        text={\"Agregar filtro\"}\n        event={() => history.push(\"/admin/detail-product-filter/0\")}\n      />\n      <SearchProductFilter refresh={refresh} />\n    </section>\n  );\n}\n","import React, {useEffect, useState} from 'react';\n\nimport { productFilterService } from '../../services/backoffice/rewardProductFilter.service';\nimport {Col, Form, Button, Row, Select} from \"antd\";\nimport {FaSave} from \"react-icons/fa\";\nimport {InputAdd} from \"../components/inputAdd/inputAdd\";\nimport {useParams} from \"react-router-dom\";\n\nexport function EditProductFilter(props) {\n    //const dispatch = useDispatch();\n    const {id} = useParams();\n    const [showEdit, setShowEdit] = useState(false);\n    const [minCouponCount, setMinCouponCount] = useState(-99999);\n\n    //const [stock, setStock] = useState(0);\n    const [catalogs, setCatalog] = useState({\n        branchOfficeCatalog: [],\n        departmentCatalog: [],\n        jobRoleCatalog: [],\n        productCatalog: []\n\n    });\n\n    const [productFilter, setProductFilter] = useState({\n        RewardProductFilterId: 0,\n        CompanyId: 0,\n        RewardProductId: 0,\n        BranchOfficeId: 0,\n        DepartmentId: 0,\n        JobRoleId: 0,\n        Points: 0,\n        Active: null,\n        RewardCount: 0,\n        FilterStock: 0,\n        ParentStock: 0\n    });\n\n    const onSave = () => {\n        productFilter.BranchOfficeId = parseInt(productFilter.BranchOfficeId);\n        if(productFilter.BranchOfficeId === 0) productFilter.branchOfficeName = 'Todos'\n\n        productFilter.DepartmentId = parseInt(productFilter.DepartmentId);\n        if(productFilter.DepartmentId === 0) productFilter.departmentName = 'Todos'\n\n        productFilter.JobRoleId = parseInt(productFilter.JobRoleId);\n        if(productFilter.JobRoleId === 0) productFilter.roleName = 'Todos'\n\n        productFilter.RewardProductId = parseInt(productFilter.RewardProductId);\n        productFilter.Points = parseInt(productFilter.Points)\n        productFilter.RewardCount = parseInt(productFilter.RewardCount)\n        productFilter.ParentStock = parseInt(productFilter.ParentStock)\n        if (productFilter.RewardProductFilterId && productFilter.RewardProductFilterId > 0)\n            productFilterService.edit(productFilter);\n        else\n            productFilterService.create(productFilter);\n    };\n\n    useEffect(() => {\n        productFilterService.getCatalogs().then((result) => {\n            setCatalog({\n                branchOfficeCatalog: result.branchOffice,\n                departmentCatalog: result.department,\n                jobRoleCatalog: result.jobRole,\n                productCatalog: result.rewardProduct\n            })\n        });\n    }, []);\n\n    useEffect(() => {\n        if (parseInt(id) !== 0) {\n            setShowEdit(true);\n            productFilterService.getById(props.rewardProductFilterId).then((result) => {\n                setMinCouponCount(result.filterStock * -1);\n                console.log(result)\n                setProductFilter({\n                    RewardProductFilterId : result.rewardProductFilterId,\n                    CompanyId: result.companyId,\n                    RewardProductId: String(result.rewardProductId),\n                    BranchOfficeId: String(result.branchOfficeId),\n                    DepartmentId: String(result.departmentId),\n                    JobRoleId: String(result.jobRoleId),\n                    Points: result.points,\n                    Active: result.active,\n                    RewardCount: result.rewardCount === null ? 0 : result.rewardCount,\n                    FilterStock: result.filterStock,\n                    ParentStock: result.parentStock,\n\n                });\n            });\n        } else  {\n            setMinCouponCount(1);\n            setShowEdit(false);\n        }\n    }, [id]);\n\n    const handleChangeBranchOffice = (value) => setProductFilter({...productFilter, BranchOfficeId: value})\n\n    const handleChangeDepartmentId = (value) => setProductFilter({...productFilter, DepartmentId: value})\n\n    const handleChangeJobRoleId = (value) => setProductFilter({...productFilter, JobRoleId: value})\n\n    const handleChangeRewardProductId = (value) => setProductFilter({...productFilter, RewardProductId: value.target.value})\n\n    const handleFilsterStock = (value) => setProductFilter({...productFilter, FilterStock: value})\n\n    const handleRewardCount = (value) => setProductFilter({...productFilter, RewardCount: value})\n\n    const handlePoints = (value) => setProductFilter({...productFilter, Points: value})\n\n    return (\n        <>\n            <Form\n                layout={'vertical'}\n                onFinish={onSave}\n                className=\"form-backoffice\"\n                  fields={[\n                      {\n                          \"name\": [\"RewardProductId\"],\n                          \"value\": productFilter.RewardProductId ? productFilter.RewardProductId : ''\n                      },\n                      {\n                          \"name\": [\"BranchOfficeId\"],\n                          \"value\": productFilter.BranchOfficeId ? productFilter.BranchOfficeId : '0'\n                      },\n                      {\n                          \"name\": [\"DepartmentId\"],\n                          \"value\": productFilter.DepartmentId ? productFilter.DepartmentId : '0'\n                      },\n                      {\n                          \"name\": [\"JobRoleId\"],\n                          \"value\": productFilter.JobRoleId ? productFilter.JobRoleId : '0'\n                      },\n                      {\n                          \"name\": [\"Points\"],\n                          \"value\": parseInt(productFilter.Points)\n                      },\n                      {\n                          \"name\": [\"RewardCount\"],\n                          \"value\": parseInt(productFilter.RewardCount)\n                      },\n                  ]}\n            >\n                <Row gutter={16}>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Sucursal'}\n                            htmlFor={'BranchOfficeId'}\n                            name={'BranchOfficeId'}\n                        >\n                            <Select\n                                name=\"BranchOfficeId\"\n                                onChange={handleChangeBranchOffice}\n                            >\n                                <Select.Option value={'0'}>Todos</Select.Option>\n                                {catalogs.branchOfficeCatalog.map((item,i) => {\n                                    return (\n                                        <Select.Option value={item.value} key={`${item.value},${i}`}>{item.label}</Select.Option>\n                                    )}\n                                )}\n                            </Select>\n                        </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Grupo'}\n                            htmlFor={'DepartmentId'}\n                            name={'DepartmentId'}\n                        >\n                            <Select\n                                name=\"DepartmentId\"\n                                onChange={handleChangeDepartmentId}\n                            >\n                                <Select.Option value={'0'}>Todos</Select.Option>\n                                {catalogs.departmentCatalog.map((item,i) => {\n                                    return (\n                                        <Select.Option value={item.value} key={`${item.value},${i}`}>{item.label}</Select.Option>\n                                    )}\n                                )}\n                            </Select>\n                        </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Categoría'}\n                            htmlFor={'JobRoleId'}\n                            name={'JobRoleId'}\n                        >\n                            <Select\n                                name=\"JobRoleId\"\n                                onChange={handleChangeJobRoleId}\n                            >\n                                <Select.Option value={'0'}>Todos</Select.Option>\n                                {catalogs.jobRoleCatalog.map((item,i) => {\n                                    return (\n                                        <Select.Option value={item.value} key={`${item.value},${i}`}>{item.label}</Select.Option>\n                                    )}\n                                )}\n                            </Select>\n                        </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Producto'}\n                            htmlFor={'RewardProductId'}\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                            name={'RewardProductId'}\n                        >\n                           <select className=\"form-control\" id=\"rewardProductId\" name=\"rewardProductId\" onChange={handleChangeRewardProductId} required>\n                                <option value=\"rewardProductId\">Seleccione </option>\n                                    {\n                                        catalogs.productCatalog.map(item => <option key={item.value} value={item.value} stock={item.stock} > {item.label + ' | Existencia en bolsa: ' + item.stock}</option>)\n                                    }\n                                </select>\n                        </Form.Item>\n                    </Col>\n                    {(showEdit) ?\n                        <Col md={12} sm={24} xs={24}>\n                            <Form.Item\n                                label={'Stock del filtro'}\n                                htmlFor={'FilterStock'}\n                                name={'FilterStock'}\n                                initialValue={productFilter.FilterStock}\n                            >\n                                <InputAdd\n                                    name={'FilterStock'}\n                                    maxLength={5}\n                                    maxQuantity={99999}\n                                    minQuantity={0}\n                                    valueInt={productFilter.FilterStock}\n                                    handleCurrentNumber={handleFilsterStock}\n                                    disabled={true}\n                                />\n                            </Form.Item>\n                        </Col>\n                        : null\n                    }\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Cant. Cupones'}\n                            htmlFor={'RewardCount'}\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                            name={'RewardCount'}\n                        >\n                            <InputAdd\n                                maxLength={5}\n                                name={'RewardCount'}\n                                maxQuantity={99999}\n                                minQuantity={-99999}\n                                valueInt={productFilter.RewardCount}\n                                handleCurrentNumber={handleRewardCount}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label={'Puntos'}\n                            htmlFor={'Points'}\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                        >\n                            <InputAdd\n                                maxLength={5}\n                                name={'Points'}\n                                maxQuantity={99999}\n                                minQuantity={0}\n                                valueInt={productFilter.Points}\n                                handleCurrentNumber={handlePoints}\n                            />\n                        </Form.Item>\n                    </Col>\n                </Row>\n                <div className=\"form-backoffice-footer\">\n                    <Button type={'primary'} htmlType=\"submit\">\n                        <p>Guardar</p>\n                        <FaSave />\n                    </Button>\n                </div>\n            </Form>\n        </>\n    );\n}\n","import React from 'react';\nimport { EditProductFilter } from './editProductFilter'\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\nimport {useHistory, useParams} from \"react-router-dom\";\n\nexport function DetailsProductFilter(props) {\n    const history = useHistory()\n    let { id } = useParams();\n    return (\n        <div className=\"dashboard-admin-container\">\n            <TitleAdmin\n                title={'Administración de Cupones'}\n                subtitle={parseInt(id) !== 0 ? \"Edición de Cupón\" : \"Nuevo Cupón\"}\n                event={() => history.push(parseInt(id) !== 0 || parseInt(id) === 0 ? \"/admin/product-filter\" : \"/admin\")}\n            />\n            {\n                (parseInt(id) !== 0) ?\n                    <HeadingAdmin\n                            text={\"Nuevo filtro\"}\n                            event={() => history.push(\"/admin/detail-product-filter/0\")}\n                    /> : null\n            }\n\n            <EditProductFilter rewardProductFilterId={parseInt(id)} />\n        </div>\n    );\n}\n","import { callApi, callApiFile, callApiFileStorage } from './service'\nimport swal from \"sweetalert\"\n\n\nexport const adminAudienceService = {\n    create,\n    getAll,\n    update,\n    deletet,\n    getAudiceImageById\n};\n\n\nasync function getAll() {\n    return callApi('/backoffice/Auditorium', 'GET').then((result) => {\n\n        if (result.responseCode == '00') {\n            return result.data;\n        } else {\n            swal({ text: result.responseMessage, icon: \"error\" })\n            return null;\n        }\n\n    });\n}\n\nasync function deletet(params) {\n    return callApi('/backoffice/Auditorium', 'DELETE', params);\n}\n\nasync function create(params, images, createEventCalendar) {\n\n    var data = new FormData();\n    if (images) {\n        for (var i = 0; i < images.length; i++) {\n            var f = images[i];\n            data.append('images', f, f.name);\n        }\n    }\n\n    data.append(\"model\", JSON.stringify(params));\n\n    return callApiFileStorage(`/backoffice/Auditorium?createEventCalendar=${createEventCalendar}`, 'POST', data, false).then((result) => {\n        return handleRsponse(result);\n    });\n}\n\nasync function update(params, images) {\n    const data = new FormData();\n    if (images) {\n        for (let i = 0; i < images.length; i++) {\n            const f = images[i];\n            data.append('images', f, f.name);\n        }\n    }\n    data.append(\"model\", JSON.stringify(params));\n\n    return callApiFileStorage('/backoffice/Auditorium', 'PUT', data, false).then((result) => {\n        return handleRsponse(result);\n    });\n}\n\nasync function getAudiceImageById(auditoriumId) {\n    return callApi('/backoffice/Auditorium/WithImages/' + auditoriumId, 'GET').then((result) => handleRsponse(result));\n}\n\nfunction handleRsponse(result) {\n    if (result.responseCode === '00')\n        return result.data;\n    else {\n        return null;\n    }\n}\n","import React, {useEffect, useState, forwardRef, useImperativeHandle, useRef} from 'react';\nimport { adminAudienceService } from '../../services/adminAudience.service';\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport {Button, Input, Space, Table, Tag, Tooltip} from \"antd\";\nimport MySwal from \"sweetalert2\";\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\nimport moment from \"moment/moment\";\nimport dayjs from \"dayjs\";\n\nconst SearchAdminAudience = forwardRef((props, ref) => {\n\n    const [dataGrid, setDataGrid] = useState([]);\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n\n    useImperativeHandle(ref, () => ({\n        refreshDataGrid: refreshDataGrid\n    }));\n\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                adminAudienceService.deletet(data).then((result) => {\n                    getAll();\n                    MySwal.fire({\n                        title: \"¡Se eliminó correctamente!\",\n                        icon: \"success\",\n                        confirmButtonText: \"Confirmar\"\n                    });\n                });\n        })\n    };\n\n    async function getAll() {\n        adminAudienceService.getAll()\n            .then((result) => {\n                if (result) setDataGrid(result);\n            });\n    }\n\n    const refreshDataGrid = () => getAll();\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div style={{padding: 8,}} onKeyDown={(e) => e.stopPropagation()}>\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{\n                        marginBottom: 8,\n                        display: 'block',\n                    }}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Limpiar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined\n                style={{\n                    color: filtered ? '#1677ff' : undefined,\n                }}\n            />\n        ),\n        onFilter: (value, record) =>\n            record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) {\n                setTimeout(() => searchInput.current?.select(), 100);\n            }\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{\n                        backgroundColor: '#ffc069',\n                        padding: 0,\n                    }}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (\n                text\n            ),\n    });\n\n    const columns = [\n        {\n            title: 'Título del evento',\n            key: 'title',\n            dataIndex: 'title',\n            ...getColumnSearchProps('title')\n        },\n        {\n            title: 'Fecha de evento',\n            key: 'date',\n            dataIndex: 'date',\n            defaultSortOrder: 'descend',\n            sorter: (a, b) => moment(a.date).unix() - moment(b.date).unix()\n        },\n        {\n            title: 'Recompensa',\n            key: 'reward',\n            dataIndex: 'reward',\n            sorter: (a, b) => {\n                if(a.reward < b.reward) {\n                    return -1;\n                }\n                if(a.reward > b.reward) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'URL',\n            key: 'url',\n            dataIndex: 'url'\n        },\n        {\n            title: 'Opciones',\n            key: 'options',\n            dataIndex: 'options',\n        },\n    ];\n\n    const data = dataGrid.map((item,i) => {\n        return (\n            {\n                key: i,\n                title: item.title,\n                date: dayjs(item.conferenceDate).format('DD/MMM/YYYY'),\n                reward: item.reward,\n                url: <Tooltip title={item.conferenceUrl}>\n                   <a target={'_blank'} href={item.conferenceUrl}>{(item.conferenceUrl.length > 40) ? item.conferenceUrl.substring(0, 40)+'...' : item.conferenceUrl}</a>\n                </Tooltip>,\n                status: <Tag color={item.active ? 'green' : 'red'}>{item.active ? 'Activo' : 'Inactivo'}</Tag>,\n                options: <Space wrap>\n                    <Button type=\"primary\" htmlType={'button'} className=\"edit\" onClick={() => props.handleRowSelect(item)}>\n                        <FaEdit />\n                    </Button>\n                    <Button type=\"primary\" htmlType={'button'} className=\"delete\" onClick={() => handleDelete(item)}>\n                        <FaTrash />\n                    </Button>\n                </Space>\n            }\n        );\n    });\n\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    useEffect(() => {\n        getAll();\n    }, []);\n\n    return (\n        <Table\n            className=\"table-admin\"\n            dataSource={data}\n            columns={columns}\n            locale={{\n                triggerDesc: 'Ordenamiento descendente',\n                triggerAsc: 'Ordenamiento ascedente',\n                cancelSort: 'Cancelar ordenamiento',\n                emptyText: 'Sin registros',\n            }}\n            scroll={{ x: '992px', y: 800 }}\n        />\n    );\n\n});\n\nexport default SearchAdminAudience;\n","import React, { useRef, useState } from \"react\";\nimport { SelectUsers } from \"../../components/Helpers/selectUsers\";\nimport { AudienceUsers } from \"../../components/Helpers/audienceUsers\";\nimport { adminAudienceService } from \"../../services/adminAudience.service\";\nimport SearchAdminAudience from \"./searchAdminAudience\";\nimport { companyEventTypeService } from \"../../services/companyEventType.service\";\nimport { useEffect } from \"react\";\nimport { EventTypes } from \"../../enums/eventTypes\";\nimport {FaSave, FaTimesCircle} from \"react-icons/fa\";\nimport {useHistory} from \"react-router-dom\";\nimport {TitleAdmin} from \"../components/titleAdmin/titleAdmin\";\nimport Swal from \"sweetalert2\";\nimport {PlusCircleOutlined} from \"@ant-design/icons\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\nimport {Col, DatePicker, Form, Input, Row, Select, TimePicker, Button} from \"antd\";\nimport {Checkbox} from \"../components/checkbox/checkbox\";\nimport {InputFile} from \"../components/inputFile/inputFile\";\nimport dayjs from \"dayjs\";\nimport {base64ToBlob} from \"../../utils/ConvertBase64ToBlob\";\nimport {InputAdd} from \"../components/inputAdd/inputAdd\";\n\nexport const AdminAudience = () => {\n  const [templateShow, setTemplateShow] = useState(\"1\");\n  const [show, setShow] = useState(false);\n  const [localfiles, setLocalFiles] = useState([]);\n  const [userSelec, setUserSelec] = useState([]);\n  const [isAudienceAddressed, setIsAudienceAddressed] = useState(false);\n  const [createEventCalendar, setCreateEventCalendar] = useState(false);\n  const gridRef = useRef();\n  const horas = [1, 2, 3, 4, 5, 6];\n  const history = useHistory();\n  const [audience, setAudience] = useState({\n    AudienceId: 0,\n    Title: \"\",\n    Reward: 0,\n    ConferenceUrl: \"\",\n    StartDate: \"\",\n    StartTime: \"\",\n    Duracion: 0,\n    PubDate: \"\",\n    JobRoleId: 0,\n    ListUser: []\n  });\n  const [fileUpdated, setFileUpdated] = useState(false);\n  const [fileSaved, setFileSaved] = useState('');\n  const [form] = Form.useForm();\n\n  const toggleTemplate = (val) => setTemplateShow(val);\n\n  const onSave = () => {\n    if (isAudienceAddressed && userSelec.length <= 0) {\n      return Swal.fire({\n        text: \"Debes elegir al menos un usuario\",\n        icon: \"error\"\n      });\n    }\n\n    if (localfiles.length === 0) {\n      return Swal.fire({\n        text: \"Debes subir una imagen para el evento\",\n        icon: \"error\"\n      });\n    }\n\n    const conferenceDate =  dayjs(audience.PubDate).format('YYYY-MM-DD')+'T'+audience.StartTime;\n    const StartDate = dayjs(audience.StartDate).format('YYYY-MM-DDTHH:mm');\n    const convertedCD = dayjs(conferenceDate).format('YYYY-MM-DDTHH:mm')\n    const EndDate = dayjs(convertedCD).add(audience.Duracion, 'hour');\n\n    audience.AuditoriumId = audience.AudienceId;\n    audience.StartDate = StartDate;\n    audience.EndDate = dayjs(EndDate).format(\"YYYY-MM-DDTHH:mm\");\n    audience.ConferenceDate = conferenceDate;\n    audience.ListUser = userSelec;\n    audience.JobRoleId = 0;\n    delete audience.StartTime;\n    delete audience.PubDate;\n\n    if (audience.AudienceId === 0) adminAudienceService.create(audience, localfiles, createEventCalendar)\n        .then((result) => {\n          toggleTemplate(\"1\");\n          gridRef.current.refreshDataGrid();\n          setUserSelec([]);\n          setLocalFiles([]);\n          Swal.fire({\n            text: \"Se creó exitosamente el evento\",\n            title:'¡Guardado!',\n            icon: \"success\"\n          });\n        }).catch(err => Swal.fire({\n          text: \"Ocurrió un error\",\n          title:'¡Ups!',\n          icon: \"error\"\n        }));\n    else {\n      audience.EndDate = dayjs(EndDate).format(\"YYYY-MM-DDTHH:mm\");\n      audience.ConferenceDate = dayjs(audience.ConferenceDate).format(\"YYYY-MM-DDTHH:mm\")\n      adminAudienceService.update(audience, fileUpdated ? localfiles : fileSaved)\n        .then((result) => {\n          toggleTemplate(\"1\");\n          gridRef.current.refreshDataGrid();\n          setUserSelec([]);\n          setLocalFiles([]);\n          Swal.fire({\n            text: \"Se actualizó exitosamente el evento\",\n            title:'¡Guardado!',\n            icon: \"success\"\n          });\n        }\n      );\n    }\n  }\n\n  const handleRowSelect = (gridItem) => {\n    toggleTemplate(\"2\");\n    setShow(true)\n    const minutePubDate = dayjs(gridItem.conferenceDate).minute();\n    const hourPubDate = dayjs(gridItem.conferenceDate).hour();\n    const date1 = dayjs(gridItem.endDate).hour();\n    const hours = (date1 - hourPubDate);\n\n    setAudience({\n      AudienceId: gridItem.auditoriumId,\n      Title: gridItem.title,\n      Reward: parseInt(gridItem.reward),\n      ConferenceUrl: gridItem.conferenceUrl,\n      StartDate: dayjs(gridItem.startDate),\n      StartTime: `${hourPubDate}:${minutePubDate}`,\n      Duracion: hours,\n      PubDate: dayjs(gridItem.conferenceDate),\n    });\n\n    adminAudienceService.getAudiceImageById(gridItem.auditoriumId).then((result) => {\n      if (result.files.length > 0) {\n        setLocalFiles(result.files);\n        const file = base64ToBlob(result.files[0].file, 'application/png', result.files[0].fileName);\n        setFileSaved([file]);\n        setFileUpdated(false);\n      }\n    });\n  };\n\n  const getCompanyEventType = () => {\n    companyEventTypeService.getByCompanyAndEventType(process.env.REACT_APP_COMPANY, EventTypes.TALK)\n        .then((result) => {\n          if (result) setIsAudienceAddressed(result.isAudienceAddressed);\n        });\n  };\n\n  const clearObjAudience = () => setAudience({\n    AudienceId: 0,\n    Title: \"\",\n    Reward: 0,\n    ConferenceUrl: \"\",\n    StartDate: \"\",\n    StartTime: \"\",\n    Duracion: 0,\n    PubDate: \"\",\n  })\n\n  const handleOpenForm = () => toggleTemplate('2')\n\n  const handleCloseForm = () => {\n    form.resetFields();\n    clearObjAudience();\n    setUserSelec([]);\n    setLocalFiles([]);\n    toggleTemplate('1');\n  }\n\n  const handleInputChange = (e) => setAudience({...audience, [e.target.name]: e.target.value})\n\n  const handleChangeDuration = (value) => setAudience({...audience, Duracion: value})\n\n  const handleDateEvent = (date, name) =>   setAudience({...audience, [name]: dayjs(date)})\n\n  const onChangeTime = (_, timeStr) => setAudience({...audience, StartTime: timeStr})\n\n  const handleReward = (value) => setAudience({...audience, Reward: value})\n\n  const handleImageUpdated = (files) =>  {\n    setLocalFiles(files);\n    if(audience.AudienceId) setFileUpdated(true);\n    else setFileUpdated(false);\n  }\n\n  const handleDeleteImage = () => setLocalFiles([]);\n\n  const onFailedSave = (errorFields) => {\n    const errorField = errorFields.errorFields.map(item => item.name[0])\n    if(errorField.length > 0) form.scrollToField(errorField[0])\n  }\n\n  useEffect(() => {\n    getCompanyEventType();\n  }, []);\n\n  useEffect(() => {\n    if(templateShow === '2') {\n      if(dayjs(audience.StartDate) > dayjs(audience.PubDate)) {\n        setAudience({...audience, PubDate: ''})\n        form.setFieldValue('PubDate', '')\n      }\n    }\n  }, [audience.StartDate]);\n\n  return (\n      <section className=\"dashboard-admin-container\">\n        <TitleAdmin\n            title={'Pride Talks'}\n            subtitle={'Lista de publicaciones'}\n            event={() => history.push('/admin')}\n        />\n        <HeadingAdmin\n            text={(templateShow === '1') ? 'Agregar publicación' : 'Cancelar'}\n            icon={(templateShow === '1') ? <PlusCircleOutlined /> : <FaTimesCircle />}\n            event={() => (templateShow === '1') ? handleOpenForm() : handleCloseForm()}\n        />\n        {\n          {\n            1: (<SearchAdminAudience handleRowSelect={handleRowSelect} ref={gridRef} />),\n            2: (<Form\n                    className=\"form-backoffice\"\n                    onFinish={onSave}\n                    onFinishFailed={onFailedSave}\n                    layout={'vertical'}\n                    form={form}\n                    fields={[\n                      {\n                        name: ['Title'],\n                        value: audience.Title ? audience.Title : ''\n                      },\n                      {\n                        name: ['ConferenceUrl'],\n                        value: audience.ConferenceUrl ? audience.ConferenceUrl : ''\n                      },\n                      {\n                        name: ['StartDate'],\n                        value: audience.StartDate !== '' ? dayjs(audience.StartDate) : ''\n                      },\n                      {\n                        name: ['PubDate'],\n                        value: audience.PubDate !== '' ? dayjs(audience.PubDate) : ''\n                      },\n                      {\n                        name: ['StartTime'],\n                        value: audience.StartTime !== '' ? dayjs(audience.StartTime,'HH:mm') : ''\n                      },\n                      {\n                        name: ['Duracion'],\n                        value: audience.Duracion === 0 ? '' : audience.Duracion\n                      },\n                      {\n                        name: ['CreateEventCalendar'],\n                        value: (createEventCalendar)\n                      },\n                    ]}\n                >\n                  <Row gutter={16}>\n                    <Col md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'Título de evento'}\n                          htmlFor={'Title'}\n                          name=\"Title\"\n                          rules={[\n                            {\n                              required: true,\n                              message: '*Campo Requerido'\n                            },\n                            {\n                              pattern: new RegExp(/^\\S/),\n                              message: \"No se aceptan espacios en blanco al inicio\",\n                            },\n                          ]}\n                      >\n                        <Input\n                            name=\"Title\"\n                            onChange={handleInputChange}\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'URL del evento'}\n                          htmlFor={'ConferenceUrl'}\n                          name=\"ConferenceUrl\"\n                          rules={[\n                            {\n                              required: true,\n                              message: '*Campo Requerido'\n                            },\n                            {\n                              pattern: new RegExp(/^\\S/),\n                              message: \"No se aceptan espacios en blanco al inicio\",\n                            },\n                          ]}\n                      >\n                        <Input\n                            type=\"text\"\n                            name=\"ConferenceUrl\"\n                            onChange={handleInputChange}\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                      <Form.Item label={'Imagen del evento'}>\n                        <InputFile\n                            onFilesSelected={handleImageUpdated}\n                            edit={(audience.AudienceId !== 0)}\n                            valueFile={localfiles}\n                            width={800}\n                            height={600}\n                            nameFile={'localfiles'}\n                            accept={['image']}\n                            deleteImage={handleDeleteImage}\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col lg={8} md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'Inicio de Publicación'}\n                          htmlFor={'StartDate'}\n                          name=\"StartDate\"\n                          rules={[\n                            {\n                              required: true,\n                              message: '*Campo Requerido'\n                            }\n                          ]}\n                      >\n                        <DatePicker\n                            format=\"DD/MMM/YYYY\"\n                            allowEmpty={false}\n                            allowClear={false}\n                            placeholder={'Seleccionar fecha'}\n                            onChange={(_,date) => handleDateEvent(date,'StartDate')}\n                            name=\"StartDate\"\n                            showToday={false}\n                            disabledDate={(current) => current && current < dayjs().startOf('day') }\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col lg={8} md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'Fecha de Evento'}\n                          htmlFor={'PubDate'}\n                          name=\"PubDate\"\n                          rules={[\n                            {\n                              required: true,\n                              message: '*Campo Requerido'\n                            }\n                          ]}\n                      >\n                        <DatePicker\n                            name=\"PubDate\"\n                            format=\"DD/MMM/YYYY\"\n                            allowEmpty={false}\n                            allowClear={false}\n                            placeholder={'Seleccionar fecha'}\n                            onChange={(_,date) => handleDateEvent(date,'PubDate')}\n                            showToday={false}\n                            disabled={(audience.StartDate === '')}\n                            disabledDate={(current) => current && current < dayjs(audience.StartDate)}\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col lg={8} md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'Horario'}\n                          htmlFor={'StartTime'}\n                          name=\"StartTime\"\n                          rules={[\n                            {\n                              required: true,\n                              message: '*Campo Requerido'\n                            }\n                          ]}\n                          initialValue={audience.StartTime ? dayjs(audience.StartTime,'HH:mm') : ''}\n                      >\n                        <TimePicker\n                            placeholder={'Seleccionar hora'}\n                            name=\"StartTime\"\n                            format=\"HH:mm\"\n                            allowClear={false}\n                            needConfirm={false}\n                            showNow={false}\n                            onChange={onChangeTime}\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col lg={8} md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'Duracion'}\n                          htmlFor={'Duracion'}\n                          name=\"Duracion\"\n                          rules={[\n                            {\n                              required: true,\n                              message: '*Campo Requerido'\n                            }\n                          ]}\n                      >\n                        <Select\n                            name=\"Duracion\"\n                            onChange={handleChangeDuration}\n                        >\n                          {horas.map((item,i) => <Select.Option key={i} value={item}>{item}</Select.Option>)}\n                        </Select>\n                      </Form.Item>\n                    </Col>\n                    <Col lg={8} md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'Reward'}\n                          htmlFor={'Reward'}\n                          name=\"Reward\"\n                      >\n                        <InputAdd\n                            maxLength={3}\n                            maxQuantity={999}\n                            minQuantity={0}\n                            valueInt={audience.Reward}\n                            handleCurrentNumber={handleReward}\n                        />\n                      </Form.Item>\n                    </Col>\n                    {/* {parseInt(audience.AudienceId) === 0 && <Col lg={8} md={12} sm={24} xs={24}>\n                      <Form.Item\n                          label={'Crear evento de calendario'}\n                          htmlFor={'CreateEventCalendar'}\n                          name=\"CreateEventCalendar\"\n                      >\n                        <Checkbox\n                            text={''}\n                            label={'CreateCalendarEvent'}\n                            name={createEventCalendar}\n                            handleValueCheck={(val) => setCreateEventCalendar(val)}\n                        />\n                      </Form.Item>\n                    </Col>} */}\n                    <Col xs={24}>\n                      {\n                          isAudienceAddressed &&\n                          (audience.AudienceId > 0 ?\n                              <AudienceUsers\n                                  targetId={audience.AudienceId}\n                                  eventType=\"Auditorio\"\n                                  selectUser={setUserSelec}\n                                  showBtn={show}\n                              />\n                              :\n                              <SelectUsers\n                                  selectUser={setUserSelec}\n                                  title={\"Evento dirigido a:\"}\n                              />\n                          )\n                      }\n                    </Col>\n                    <Col xs={24}>\n                      <div className=\"form-backoffice-footer\">\n                        <Button htmlType={'submit'} type=\"primary\">\n                          <p>Guardar</p>\n                          <FaSave />\n                        </Button>\n                      </div>\n                    </Col>\n                  </Row>\n                </Form>\n            ),\n          }[templateShow]\n        }\n      </section>\n  );\n}\n","import React, {useEffect, useState, forwardRef, useImperativeHandle} from 'react';\nimport { useGenericSection } from '../../services/genericSection.service';\nimport {Button, Pagination, Space, Table} from \"antd\";\nimport {FaEdit, FaTrash} from \"react-icons/fa\";\nimport Swal from \"sweetalert2\";\nimport dayjs from \"dayjs\";\nimport {HeadingAdmin} from \"../components/headingAdmin/headingAdmin\";\n\nconst SearchAdminGenericSection = forwardRef((props, ref) => {\n    useImperativeHandle(ref, () => ({ refreshDataGrid }));\n    const [dataGrid, setDataGrid] = useState([]);\n    const [tableConfig, setTableConfig] = useState({\n        totalPages: 1,\n        activePage: 1,\n        section: {\n            sectionName: \"\",\n            sectionId: 0\n        }\n    });\n    const [pageSize, setPageSize] = useState(10);\n\n    const handleDelete = (event, data) => {\n        Swal.fire({\n            title: 'Estas a punto de eliminar la publicación',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                useGenericSection.deleteItem(data.genericSectionItemId).then((result) => {\n                    Swal.fire({\n                        text: \"Publicación eliminada con éxito\",\n                        icon: \"success\"\n                    });\n                    getAll();\n                });\n        })\n    };\n\n    async function getAll() {\n        useGenericSection.getGenericItemByCompany(1, pageSize)\n            .then(res => {\n                if (res) {\n                    setDataGrid(res.list);\n                    setTableConfig({\n                        section: {\n                            sectionName: \"\",\n                            sectionId: 0\n                        },\n                        totalPages: res.totalPages,\n                        activePage: 1\n                    });\n                }\n            })\n    }\n\n    const handleSelectPage = (page, pageS) => {\n        useGenericSection.getGenericItemByCompany(page, pageSize, tableConfig.section.sectionId)\n            .then(res => {\n                if (res) {\n                    setDataGrid(res.list);\n                    setTableConfig({\n                        ...tableConfig,\n                        totalPages: res.totalPages,\n                        activePage: page\n                    });\n                }\n            });\n    };\n\n    const refreshDataGrid = () => getAll();\n\n    const filterItems = (section) => {\n        useGenericSection.getGenericItemByCompany(1, pageSize, section.genericSectionTypeId)\n            .then(res => {\n                if (res) {\n                    setDataGrid(res.list);\n                    setTableConfig({\n                        activePage: 1,\n                        totalPages: res.totalPages,\n                        section: {\n                            sectionId: section.genericSectionTypeId,\n                            sectionName: section.sectionName\n                        }\n                    });\n                }\n            });\n    }\n\n    const handleMenuClick = (e) => console.log('');\n\n    const items = props.sections.map((section, index) => {\n        return {\n            label: <Button onClick={() => {\n                props.handleGenericItems(section.genericSectionTypeId, section.sectionName);\n                filterItems(section)\n            }}>\n                {section.sectionName}\n            </Button>,\n            key: index+index,\n        }\n    });\n\n    const menuProps = {\n        items,\n        onClick: handleMenuClick,\n    };\n\n    const columns = [\n        {\n            title: 'Sección',\n            dataIndex: 'section',\n            key: 'section',\n        },\n        {\n            title: 'Título del evento',\n            dataIndex: 'title',\n            key: 'title',\n        },\n        {\n            title: 'Subtítulo del evento',\n            dataIndex: 'subtitle',\n            key: 'subtitle',\n        },\n        {\n            title: 'Fecha de Creación',\n            dataIndex: 'date',\n            key: 'date',\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const data = dataGrid.map((item, i) => {\n        return {\n            key: i+'-'+i,\n            section: item.genericSectionName,\n            title: item.title,\n            subtitle: item.subtitle,\n            date: dayjs(item.createDate).format('DD/MMM/YYYY'),\n            options: <Space>\n                {item.active ?\n                    <>\n                        <Button\n                            type=\"primary\"\n                            htmlType={'button'}\n                            className=\"edit\"\n                            onClick={() =>  props.handleRowSelect(item)}\n                        >\n                            <FaEdit />\n                        </Button>\n                        <Button\n                            type=\"primary\"\n                            htmlType={'button'}\n                            className=\"delete\"\n                            onClick={(e) => handleDelete(e, item)}\n                        >\n                            <FaTrash />\n                        </Button>\n                    </>\n                 : null }\n            </Space>\n        };\n    })\n\n    useEffect(() => {\n        getAll();\n    }, []);\n\n    return (\n        <>\n            <HeadingAdmin\n                btnAdd={false}\n                isDropdown={true}\n                menuDropdown={menuProps}\n                btnDropdownName={`${tableConfig.section.sectionName.length > 0 ? tableConfig.section.sectionName : 'Seleccionar sección'}`}\n            />\n            <Table\n                className={'table-admin'}\n                columns={columns}\n                dataSource={data}\n                pagination={false}\n                locale={{\n                    triggerDesc: 'Ordenamiento descendente',\n                    triggerAsc: 'Ordenamiento ascedente',\n                    cancelSort: 'Cancelar ordenamiento',\n                    emptyText: 'Sin registros',\n                }}\n                scroll={{ x: '992px', y: 800 }}\n            />\n            <div className=\"table-admin-footer\">\n                <Pagination\n                    current={tableConfig.activePage}\n                    pageSize={1}\n                    total={tableConfig.totalPages}\n                    onChange={handleSelectPage}\n                    simple={true}\n                />\n            </div>\n        </>\n    );\n\n});\n\nexport default SearchAdminGenericSection;\n","import React, {forwardRef} from 'react';\nimport {FaEdit, FaTimes, FaTrash} from \"react-icons/fa\";\nimport {Button, Space, Table, Tag} from \"antd\";\n\nconst SearchAdminContactInfos = forwardRef((props, ref) => {\n\n    const columns = [\n        {\n            title: 'Tipo de contacto',\n            dataIndex: 'typeContact',\n            key: 'typeContact',\n            sorter: (a, b) => {\n                if(a.typeContact.length < b.typeContact.length) {\n                    return -1;\n                }\n                if(a.typeContact.length > b.typeContact.length) {\n                    return 1;\n                }\n                return 0;\n            },\n            sortDirections: ['descend','ascend'],\n        },\n        {\n            title: 'URL',\n            dataIndex: 'url',\n            key: 'url',\n            width: 250,\n        },\n        {\n            title: 'Es contacto principal',\n            dataIndex: 'isContact',\n            key: 'isContact',\n        },\n        {\n            title: 'Mostrar sólo valor',\n            dataIndex: 'isValue',\n            key: 'isValue',\n        },\n        {\n            title: 'Acciones',\n            dataIndex: 'options',\n            key: 'options',\n        },\n    ];\n\n    const data = props.contactInfos.map(item => {\n        return {\n            typeContact: item.contactTypeName,\n            url: (item.contactValue.length > 50) ? item.contactValue.substring(0,50) : item.contactValue,\n            isContact: <Tag color={item.mainContact ? 'green' : 'red'}>{item.mainContact ? 'Sí' : 'No'}</Tag>,\n            isValue: <Tag color={item.showValue ? 'green' : 'red'}>{item.showValue ? 'Sí' : 'No'}</Tag>,\n            options: <Space>\n                {\n                    (props.addSocialMedia && props.currentItemSocialMedia === item.genericContactInfoId) && (\n                        <Button\n                            type=\"primary\"\n                            htmlType={'button'}\n                            className=\"edit\"\n                            onClick={() => props.toggleSocialMedia()}\n                        >\n                            <FaTimes />\n                        </Button>\n                    )\n                }\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"edit\"\n                    disabled={((props.addSocialMedia && (props.currentItemSocialMedia !== item.genericContactInfoId)) || (props.addSocialMedia && (props.currentItemSocialMedia === item.genericContactInfoId)))}\n                    onClick={() => props.prepareUpdateContactInfo(item)}\n                >\n                    <FaEdit />\n                </Button>\n                <Button\n                    type=\"primary\"\n                    htmlType={'button'}\n                    className=\"delete\"\n                    disabled={(props.addSocialMedia && (props.currentItemSocialMedia !== item.genericContactInfoId)) || (props.addSocialMedia && (props.currentItemSocialMedia === item.genericContactInfoId))}\n                    onClick={() =>  props.handleContactInfoDelete(item)}\n                >\n                    <FaTrash />\n                </Button>\n            </Space>\n        };\n    })\n\n    return (\n        <Table\n            className={'table-admin'}\n            dataSource={data}\n            columns={columns}\n            locale={{\n                triggerDesc: 'Ordenamiento descendente',\n                triggerAsc: 'Ordenamiento ascedente',\n                cancelSort: 'Cancelar ordenamiento',\n                emptyText: 'Sin registros',\n            }}\n            scroll={{ x: '992px', y: 800 }}\n            hideOnSinglePage={true}\n            responsive={true}\n        />\n    );\n\n});\n\nexport default SearchAdminContactInfos;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport SearchAdminGenericSection from \"./searchAdminGenericSection\";\nimport \"./adminGenericSection.scss\";\nimport SearchAdminContactInfos from \"./searchAdminContactInfos\";\nimport { useGenericSection } from \"../../services/genericSection.service\";\nimport {FaChevronRight, FaPlus, FaSave, FaTimes, FaTimesCircle} from \"react-icons/fa\";\nimport { TitleAdmin } from \"../components/titleAdmin/titleAdmin\";\nimport { useHistory } from \"react-router-dom\";\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { HeadingAdmin } from \"../components/headingAdmin/headingAdmin\";\nimport {Button, Col, Divider, Flex, Form, Input, Row, Select} from \"antd\";\nimport { Checkbox } from \"../components/checkbox/checkbox\";\nimport Swal from \"sweetalert2\";\nimport { InputFile } from \"../components/inputFile/inputFile\";\nimport {MdCleaningServices} from \"react-icons/md\";\nimport {TbReload} from \"react-icons/tb\";\nimport {IoReloadOutline} from \"react-icons/io5\";\nimport {RiLoopLeftFill} from \"react-icons/ri\";\n\nexport const AdminGenericSection = () => {\n  const [templateShow, setTemplateShow] = useState(\"1\");\n  const [localfiles, setLocalFiles] = useState([]);\n  const [sections, setSections] = useState([]);\n  const [contactTypes, setContactTypes] = useState([]);\n  const [addSocialMedia, setAddSocialMedia] = useState(false);\n  const [socialMedia, setSocialMedia] = useState([]);\n  const gridRef = useRef();\n  const [genericItem, setGenericItem] = useState({\n    genericSectionItemId: 0,\n    title: \"\",\n    subtitle: \"\",\n    companyId: 0,\n    genericSectionTypeId: 0,\n    genericSectionName: \"\",\n  });\n  const [socialInfo, setSocialInfo] = useState({\n    genericSectionItemId: 0,\n    contactTypeId: 0,\n    contactTypeName: \"\",\n    contactValue: \"\",\n    mainContact: false,\n    showValue: false,\n  });\n  const history = useHistory();\n  const [localFilesUpdated, setLocalFilesUpdated] = useState(false);\n  const [filesSaved, setFilesSaved] = useState(\"\");\n  const [formSocialMedia] = Form.useForm();\n  const [formItem] = Form.useForm();\n  const [currentItemSocialMedia, setCurrentItemSocialMedia] = useState(0);\n  const [btnMainContact, setBtnMainContact] = useState(false);\n\n  const toggleTemplate = (sec) => setTemplateShow(sec);\n\n  const clearObjSocialInfo = () =>\n    setSocialInfo({\n      genericContactInfoId: 0,\n      genericSectionItemId: 0,\n      contactTypeId: 0,\n      contactTypeName: \"\",\n      contactValue: \"\",\n      mainContact: false,\n      showValue: false,\n    });\n\n  const clearObjGenericItem = () =>\n    setGenericItem({\n      title: \"\",\n      subtitle: \"\",\n      companyId: 0,\n      genericSectionTypeId: 0,\n      genericSectionName: \"\",\n      genericSectionItemId: 0,\n    });\n\n  async function saveGenericItem(item) {\n    useGenericSection.createGenericSectionItem(item, localfiles).then((res) => {\n      setGenericItem(res);\n      useGenericSection\n        .getGenericItemImageById(res.genericSectionItemId)\n        .then((result) => {\n          if (result.files.length > 0) {\n            const file = result.files[0].file;\n            setLocalFiles([file]);\n          }\n        });\n    });\n  }\n\n  async function saveSocialInfo(items) {\n    useGenericSection.createContactInfos(items).then((res) => {\n      toggleTemplate(\"1\");\n      gridRef.current.refreshDataGrid();\n      clearObjSocialInfo();\n      clearObjGenericItem();\n      setSocialMedia([]);\n      setLocalFiles([]);\n    });\n  }\n\n  async function updateGenericItem(item) {\n    if (localfiles.length === 0) {\n      return Swal.fire({\n        text: \"La imagen de la publicación es requerida\",\n        icon: \"error\",\n      });\n    }\n\n    if (!localFilesUpdated) {\n      const file = new File(\n        [filesSaved],\n        `img_${item.title + item.genericSectionItemId}.png`,\n        {\n          type: \"image/png\",\n        }\n      );\n      setLocalFiles([file]);\n    }\n\n    useGenericSection\n      .updateGenericSectionItem(item, localfiles)\n      .then((result) => {\n        if (result.genericSectionItemId) {\n          toggleTemplate(\"1\");\n          gridRef.current.refreshDataGrid();\n          setLocalFiles([]);\n          return Swal.fire({\n            text: \"Publicación actualizada con éxito\",\n            icon: \"success\",\n          });\n        } else {\n          return Swal.fire({\n            text: \"Algo sucedió, los cambios no fueron guardados\",\n            icon: \"error\",\n          });\n        }\n      });\n  }\n\n  const handleSubmitSocialMedia = async () => {\n\n    if (socialMedia.length <= 0 && genericItem.genericSectionItemId > 0) {\n      return Swal.fire({\n        title: \"¡Upss!\",\n        text: \"La publicación no tiene opciones de contacto\",\n        icon: \"error\",\n      });\n    }\n\n    if (socialMedia.length > 0) {\n      const thereIsMain = socialMedia.filter((c) => c.mainContact);\n      if (thereIsMain.length === 0) {\n        return Swal.fire({\n          title: \"Ups...\",\n          text: \"Es necesario un contacto principal en la lista de redes sociales y enlaces.\",\n          icon: \"error\",\n        });\n      }\n    }\n\n    if (socialMedia.length > 0) {\n      const itemsToSave = socialMedia.map((c) => ({\n        ...c,\n        genericSectionItemId: genericItem.genericSectionItemId,\n      }));\n      await saveSocialInfo(itemsToSave).then((res) => Swal.fire({\n        text: \"Tu lista de contactos se actualizó exitosamente\",\n        icon: \"success\",\n      }));\n      cleanFormSocialMedia()\n    }\n  }\n\n  const handleSubmit = async () => {\n    if (localfiles.length === 0) {\n      return Swal.fire({\n        text: \"La imagen de la publicación es requerida\",\n        icon: \"error\",\n      });\n    }\n\n    const itemSave = {\n      genericSectionItemId: genericItem.genericSectionItemId,\n      companyId: genericItem.companyId,\n      genericSectionTypeId: genericItem.genericSectionTypeId,\n      genericSectionName: genericItem.genericSectionName,\n      title: genericItem.title,\n      subtitle: genericItem.subtitle,\n    };\n\n    if (genericItem.genericSectionItemId === 0) await saveGenericItem(itemSave);\n    else await updateGenericItem(itemSave);\n\n    cleanFormSocialMedia();\n  };\n\n  const handleContactInfoDelete = (item) => {\n    Swal.fire({\n      title: \"Estas a punto de eliminar el enlace\",\n      text: \"No podrás revertir esta acción\",\n      icon: \"warning\",\n      showCancelButton: true,\n      confirmButtonText: \"Eliminar\",\n      cancelButtonText: \"Cancelar\",\n    }).then((result) => {\n      if (result.isConfirmed) {\n        const newContactInfos = socialMedia.filter((c) => c !== item);\n        setSocialMedia(newContactInfos);\n        if (item.genericContactInfoId > 0) {\n          useGenericSection\n            .deleteContactInfo(item.genericContactInfoId)\n            .then((res) => {\n              return Swal.fire({\n                text: \"Información de contacto eliminada con éxito\",\n                icon: \"success\",\n              });\n            });\n        }\n      }\n    });\n  };\n\n  const prepareUpdateContactInfo = (item) => {\n    toggleSocialMedia()\n    setSocialInfo(item);\n    setCurrentItemSocialMedia(item.genericContactInfoId);\n  }\n\n  const handleRowSelect = async (gridItem) => {\n    toggleTemplate(\"2\");\n\n    setGenericItem({\n      genericSectionItemId: gridItem.genericSectionItemId,\n      genericSectionTypeId: gridItem.genericSectionTypeId,\n      genericSectionName: gridItem.genericSectionName,\n      title: gridItem.title,\n      subtitle: gridItem.subtitle,\n      genericContactInfo: gridItem.genericContactInfo,\n    });\n\n    setSocialMedia(gridItem.genericContactInfo);\n\n    if (gridItem.imageUrl) {\n      const fileConverted = await fetch(gridItem.imageUrl)\n        .then((r) => r.blob())\n        .then(\n          (blobFile) =>\n            new File([blobFile], `img_${gridItem.genericSectionItemId}`, {\n              type: \"image/png\",\n            })\n        );\n      setLocalFiles([fileConverted]);\n      setFilesSaved(gridItem.imageUrl);\n    } else setLocalFiles([]);\n  };\n\n  const getGenericItemSections = () =>\n    useGenericSection\n      .getGenericItemSectionsByCompany()\n      .then((sections) => setSections(sections));\n\n  const getGenericItemContactTypes = () =>\n    useGenericSection\n      .getGenericItemContactTypes()\n      .then((contactTypes) => setContactTypes(contactTypes));\n\n  const handleOnNew = () => {\n    toggleTemplate(\"2\");\n    clearObjGenericItem();\n    setSocialMedia([]);\n    setLocalFiles([]);\n  };\n\n  const handleOnCancel = () => {\n    toggleTemplate(\"1\");\n    setSocialMedia([]);\n    setLocalFiles([]);\n    setBtnMainContact(false)\n    setAddSocialMedia(false)\n  };\n\n  const handleAddContactInfo = () => {\n    if (!socialInfo.contactValue) {\n      return Swal.fire({\n        text: \"El valor del contacto es requerido\",\n        icon: \"error\",\n      });\n    }\n    if (!socialInfo.contactTypeId) {\n      return Swal.fire({\n        text: \"El tipo de contacto es requerido\",\n        icon: \"error\",\n      });\n    }\n\n    if (!socialInfo.mainContact === socialMedia.length === 0) {\n      return Swal.fire({\n        text: \"El primer contacto debe ser asignado como principal\",\n        icon: \"error\",\n      });\n    }\n\n    if (socialInfo.mainContact) {\n      if (socialInfo.genericContactInfoId > 0) {\n        for (const c of socialMedia) {\n          if (\n            c.mainContact &&\n            parseInt(c.genericContactInfoId) !==\n              parseInt(socialInfo.genericContactInfoId)\n          ) {\n            return Swal.fire({\n              text: \"Sólo puedes seleccionar un contacto como principal\",\n              icon: \"error\",\n            });\n          }\n        }\n      } else {\n        for (const c of socialMedia) {\n          if (c.mainContact) {\n            return Swal.fire({\n              text: \"Sólo puedes seleccionar un contacto como principal\",\n              icon: \"error\",\n            });\n          }\n        }\n      }\n    }\n\n    if (socialInfo.genericContactInfoId > 0) {\n      for (const c of socialMedia) {\n        if (\n          socialInfo.contactValue == c.contactValue &&\n          socialInfo.genericContactInfoId !== c.genericContactInfoId\n        ) {\n          return Swal.fire({\n            text: \"Este contacto ya existe en la lista\",\n            icon: \"error\",\n          });\n        }\n      }\n    } else {\n      for (const c of socialMedia) {\n        if (socialInfo.contactValue == c.contactValue) {\n          return Swal.fire({\n            text: \"Este contacto ya existe en la lista\",\n            icon: \"error\",\n          });\n        }\n      }\n    }\n\n    if (socialInfo.genericContactInfoId > 0) {\n      const index = socialMedia.findIndex(\n        (c) =>\n          parseInt(c.genericContactInfoId) ===\n          parseInt(socialInfo.genericContactInfoId)\n      );\n      socialMedia[index] = socialInfo;\n      setSocialMedia(socialMedia);\n    } else setSocialMedia([...socialMedia, socialInfo]);\n\n    toggleSocialMedia()\n    setBtnMainContact(false)\n    cleanFormSocialMedia()\n  };\n\n  const handleGenericItems = (genericSectionTypeId, genericSectionName) => {\n    setSocialInfo({\n      genericSectionTypeId: genericSectionTypeId,\n      genericSectionName: genericSectionName,\n    });\n  };\n\n  const handleCheckMain = (value) =>\n    setSocialInfo({ ...socialInfo, mainContact: value });\n\n  const handleCheckValue = (value) =>\n    setSocialInfo({ ...socialInfo, showValue: value });\n\n  const handleInputValue = (e) =>\n    setSocialInfo({ ...socialInfo, [e.target.name]: e.target.value });\n\n  const handleInputGeneric = (e) =>\n    setGenericItem({ ...genericItem, [e.target.name]: e.target.value });\n\n  const handleSelectTypeName = (value) => {\n    const filtered = contactTypes.filter(\n      (contactType) => contactType.contactTypeId === value\n    );\n    setSocialInfo({\n      ...socialInfo,\n      contactTypeName: filtered[0].name,\n      contactTypeId: filtered[0].contactTypeId,\n    });\n  };\n\n  const handleSelectSectionType = (value) => {\n    const filtered = sections.filter(\n      (item) => item.genericSectionTypeId === value\n    );\n    setGenericItem({\n      ...genericItem,\n      genericSectionTypeId: filtered[0].genericSectionTypeId,\n      genericSectionName: filtered[0].sectionName,\n    });\n  };\n\n  const handleSelectFile = (file) => {\n    if (genericItem.genericSectionItemId !== 0) setLocalFilesUpdated(true);\n    setLocalFiles(file);\n  };\n\n  const handleDeleteImage = () => setLocalFiles([]);\n\n  const toggleSocialMedia = () => {\n    if(addSocialMedia) {\n      setAddSocialMedia(false);\n      cleanFormSocialMedia();\n    }\n    else {\n      setAddSocialMedia(true);\n      setCurrentItemSocialMedia(0)\n      if(socialMedia.length === 0) {\n        setSocialInfo({...socialInfo, mainContact: true})\n        setBtnMainContact(true)\n      }\n    }\n  }\n\n  const cleanFormSocialMedia = () => {\n    clearObjSocialInfo();\n    formSocialMedia.resetFields();\n    setCurrentItemSocialMedia(0)\n  }\n\n  useEffect(() => {\n    getGenericItemSections();\n    getGenericItemContactTypes();\n  }, []);\n\n  console.log(socialInfo)\n  return (\n    <>\n      <section className=\"dashboard-admin-container\">\n        <TitleAdmin\n          title={\"Publicaciones Genéricas\"}\n          subtitle={\n            templateShow === \"1\"\n              ? \"Listado de publicaciones\"\n              : templateShow === \"2\"\n              ? \"Edición de publicación\"\n              : \"Crear de publicación\"\n          }\n          event={() =>\n            templateShow === \"1\" ? history.push(\"/admin\") : setTemplateShow(\"1\")\n          }\n        />\n        <HeadingAdmin\n          text={templateShow === \"1\" ? \"Agregar publicación\" : \"Cancelar\"}\n          icon={\n            templateShow === \"1\" ? <PlusCircleOutlined /> : <FaTimesCircle />\n          }\n          event={() =>\n            templateShow === \"1\" ? handleOnNew() : handleOnCancel()\n          }\n        />\n        {\n          {\n            1: (\n              <SearchAdminGenericSection\n                sections={sections}\n                handleRowSelect={handleRowSelect}\n                ref={gridRef}\n                handleGenericItems={handleGenericItems}\n              />\n            ),\n            2: (\n              <>\n                <Form\n                  className=\"form-backoffice\"\n                  onFinish={handleSubmit}\n                  layout={\"vertical\"}\n                  fields={[\n                    {\n                      name: [\"title\"],\n                      value: genericItem.title,\n                    },\n                    {\n                      name: [\"subtitle\"],\n                      value: genericItem.subtitle,\n                    },\n                    {\n                      name: [\"contactValue\"],\n                      value: socialInfo.contactValue,\n                    },\n                    {\n                      name: [\"contactTypeId\"],\n                      value:\n                        socialInfo.contactTypeId === 0\n                          ? \"\"\n                          : socialInfo.contactTypeId,\n                    },\n                    {\n                      name: [\"showValue\"],\n                      value: socialInfo.showValue,\n                    },\n                    {\n                      name: [\"genericSectionTypeId\"],\n                      value:\n                        genericItem.genericSectionTypeId === 0\n                          ? \"\"\n                          : genericItem.genericSectionTypeId,\n                    },\n                  ]}\n                >\n                  <Row gutter={16}>\n                    <Col md={12} sm={24} xs={24}>\n                      <Form.Item\n                        label={\"Tipo de seccción\"}\n                        htmlFor={\"genericSectionTypeId\"}\n                        name=\"genericSectionTypeId\"\n                        rules={[\n                          {\n                            required: true,\n                            message: \"*Campo Requerido\",\n                          },\n                        ]}\n                      >\n                        <Select\n                          name={\"genericSectionTypeId\"}\n                          onChange={handleSelectSectionType}\n                        >\n                          {sections.map((item) => {\n                            return (\n                              <Select.Option\n                                key={item.genericSectionTypeId}\n                                value={item.genericSectionTypeId}\n                              >\n                                {item.sectionName}\n                              </Select.Option>\n                            );\n                          })}\n                        </Select>\n                      </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                      <Form.Item\n                        label={\"Título de artículo\"}\n                        htmlFor={\"title\"}\n                        name=\"title\"\n                        rules={[\n                          {\n                            required: true,\n                            message: \"*Campo Requerido\",\n                          },\n                          {\n                            pattern: new RegExp(/^\\S/),\n                            message:\n                              \"No se aceptan espacios en blanco al inicio\",\n                          },\n                        ]}\n                      >\n                        <Input\n                          type=\"text\"\n                          name=\"title\"\n                          onChange={handleInputGeneric}\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                      <Form.Item\n                        label={\"Subtítulo de artículo\"}\n                        htmlFor={\"subtitle\"}\n                        name={\"subtitle\"}\n                      >\n                        <Input\n                          type=\"text\"\n                          name=\"subtitle\"\n                          onChange={handleInputGeneric}\n                        />\n                      </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                      <InputFile\n                        onFilesSelected={handleSelectFile}\n                        width={720}\n                        height={480}\n                        edit={genericItem.genericSectionItemId > 0}\n                        valueFile={localfiles}\n                        nameFile={\"localfiles\"}\n                        accept={[\"image\"]}\n                        deleteImage={handleDeleteImage}\n                      />\n                    </Col>\n                    <Col xs={24}>\n                      <div className=\"form-backoffice-footer\">\n                        <Button htmlType={\"submit\"} type=\"primary\">\n                          <p>Guardar</p>\n                          <FaSave />\n                        </Button>\n                      </div>\n                    </Col>\n                  </Row>\n                </Form>\n                {\n                  (genericItem.genericSectionItemId > 0) && (\n                        <>\n                          <Row>\n                            <Col xs={24}>\n                              <Divider orientation={\"left\"}>\n                                <h4>Redes sociales y enlaces</h4>\n                              </Divider>\n                            </Col>\n                          </Row>\n                          <Form\n                              className=\"form-backoffice\"\n                              onFinish={handleSubmitSocialMedia}\n                              form={formSocialMedia}\n                              layout={\"vertical\"}\n                              fields={[\n                                {\n                                  name: [\"contactValue\"],\n                                  value: socialInfo.contactValue,\n                                },\n                                {\n                                  name: [\"contactTypeId\"],\n                                  value:\n                                      socialInfo.contactTypeId === 0\n                                          ? \"\"\n                                          : socialInfo.contactTypeId,\n                                },\n                                {\n                                  name: [\"showValue\"],\n                                  value: socialInfo.showValue,\n                                },\n                                {\n                                  name: [\"genericSectionTypeId\"],\n                                  value:\n                                      genericItem.genericSectionTypeId === 0\n                                          ? \"\"\n                                          : genericItem.genericSectionTypeId,\n                                },\n                              ]}\n                          >\n                            <Row gutter={[16,0]}>\n                              <Col xs={24}>\n                                <div className={'form-backoffice-footer'}>\n                                  {\n                                    (socialInfo.contactValue || socialInfo.contactTypeId) ? (\n                                          <Button type={'primary'} htmlType={'button'} onClick={cleanFormSocialMedia}>\n                                            <p>Resetear</p>\n                                            <RiLoopLeftFill />\n                                          </Button>\n                                      ) : null\n                                  }\n                                  <Button type={'primary'} htmlType={'button'} onClick={toggleSocialMedia}>\n                                    <p>{\n                                      (addSocialMedia) ? 'Cancelar' : 'Agregar red social'\n                                    }</p>\n                                    {\n                                      (addSocialMedia) ? <FaTimes /> : <PlusCircleOutlined />\n                                    }\n                                  </Button>\n                                </div>\n                              </Col>\n                              {(addSocialMedia) && (\n                                  <>\n                                    <Col md={12} sm={24} xs={24}>\n                                      <Form.Item\n                                          label={\"Valor\"}\n                                          htmlFor={\"contactValue\"}\n                                          name=\"contactValue\"\n                                      >\n                                        <Input\n                                            type=\"text\"\n                                            name=\"contactValue\"\n                                            onChange={handleInputValue}\n                                        />\n                                      </Form.Item>\n                                    </Col>\n                                    <Col md={12} sm={24} xs={24}>\n                                      <Form.Item\n                                          label={\n                                              genericItem.contactTypeName || \"Seleccionar tipo\"\n                                          }\n                                          htmlFor={\"contactTypeId\"}\n                                          name={\"contactTypeId\"}\n                                      >\n                                        <Select\n                                            name={\"contactTypeId\"}\n                                            onChange={handleSelectTypeName}\n                                        >\n                                          {contactTypes.map((contactType, index) => (\n                                              <Select.Option\n                                                  value={contactType.contactTypeId}\n                                                  key={index}\n                                              >\n                                                {contactType.name}\n                                              </Select.Option>\n                                          ))}\n                                        </Select>\n                                      </Form.Item>\n                                    </Col>\n                                    <Col lg={8} md={12} sm={24} xs={24}>\n                                      <Form.Item\n                                          label={\"Es contacto principal\"}\n                                          htmlFor={\"mainContact\"}\n                                          name={\"mainContact\"}\n                                      >\n                                        <Checkbox\n                                            text={\"Es contacto principal\"}\n                                            label={\"mainContact\"}\n                                            disabled={btnMainContact}\n                                            name={socialInfo.mainContact}\n                                            handleValueCheck={handleCheckMain}\n                                        />\n                                      </Form.Item>\n                                    </Col>\n                                    <Col lg={8} md={12} sm={24} xs={24}>\n                                      <Form.Item\n                                          label={\"Mostrar sólo valor\"}\n                                          htmlFor={\"showValue\"}\n                                          name={\"showValue\"}\n                                      >\n                                        <Checkbox\n                                            text={\"Mostrar sólo valor\"}\n                                            label={\"showValue\"}\n                                            name={socialInfo.showValue}\n                                            handleValueCheck={handleCheckValue}\n                                        />\n                                      </Form.Item>\n                                    </Col>\n                                    <Col xs={24}>\n                                      <div className={'form-backoffice-footer'} style={{justifyContent: 'flex-start'}}>\n                                        <Button\n                                            type={\"primary\"}\n                                            htmlType={\"button\"}\n                                            onClick={handleAddContactInfo}\n                                        >\n                                          <p>\n                                            {socialInfo.genericContactInfoId > 0\n                                                ? \"Actualizar\"\n                                                : \"Agregar\"}{\" \"}\n                                            contacto\n                                          </p>\n                                          {socialInfo.genericContactInfoId > 0\n                                              ? <FaChevronRight />\n                                              : <PlusCircleOutlined />\n                                          }\n                                        </Button>\n                                      </div>\n                                    </Col>\n                                  </>\n                              )}\n                            </Row>\n                            <Row style={{marginTop: '1rem'}}>\n                              <Col xs={24}>\n                                <Divider orientation={'left'}>Lista de contactos</Divider>\n                              </Col>\n                              <Col xs={24}>\n                                <SearchAdminContactInfos\n                                    prepareUpdateContactInfo={\n                                      prepareUpdateContactInfo\n                                    }\n                                    addSocialMedia={addSocialMedia}\n                                    contactInfos={socialMedia}\n                                    currentItemSocialMedia={currentItemSocialMedia}\n                                    handleContactInfoDelete={handleContactInfoDelete}\n                                    toggleSocialMedia={toggleSocialMedia}\n                                />\n                              </Col>\n                              <Col xs={24}>\n                                <div className={'form-backoffice-footer'}>\n                                  <Button\n                                      type={\"primary\"}\n                                      htmlType={\"submit\"}\n                                  >\n                                    <p>\n                                      Guardar\n                                    </p>\n                                    <FaSave />\n                                  </Button>\n                                </div>\n                              </Col>\n                            </Row>\n                          </Form>\n                        </>\n                    )\n                }\n              </>\n            ),\n          }[templateShow]\n        }\n      </section>\n    </>\n  );\n};\n","import React from 'react';\n\nimport { Link } from 'react-router-dom';\nimport {FaChevronLeft} from \"react-icons/fa\";\n\nexport function Header({title, description, buttons, btnBack}) {\n\n    return (\n        <header className=\"header\">\n            <div className=\"header-title\">\n                <h2>{title}</h2>\n                {\n                    (btnBack && btnBack.length !== 0) ?\n                        <Link to={btnBack[0].link} className=\"link-back\">\n                            <FaChevronLeft />\n                            <p>{btnBack[0].nameButton}</p>\n                        </Link>\n                        : null\n                }\n            </div>\n            <div className=\"header-content\"><p>{description}</p></div>\n            {\n                (buttons) ?\n                    <div className=\"header-footer\">\n                        {\n                            (buttons && buttons.map((item,i) => {\n                                return (\n                                    <Link key={i} className=\"btn-dark\" to={item.link}>\n                                        <p>{item.nameButton}</p>\n                                        <div className=\"circle\">\n                                            <i className=\"icon-add\"></i>\n                                        </div>\n                                    </Link>\n                                );\n                            }))\n                        }\n                    </div>\n                    : null\n            }\n        </header>\n    );\n}\n","import React from \"react\";\nimport {Header} from \"./header\";\n\nexport const Operator = () => {\n    return (\n        <section className=\"dashboard-operator-body\">\n            <Header\n                title=\"Mi tablero\"\n                description=\"\"\n                buttons={[]}\n            />\n        </section>\n    );\n}\n","import { callApi, callApiFileStorage } from '../service'\nimport swal from \"sweetalert\"\n\nexport const rewardProductService = {\n    create,\n    get,\n    getById,\n    edit,\n    deleteRewardProduct,\n    getCatalogs,\n    getTestCoupon\n};\n\nasync function create(data) {\n    const formData = new FormData();\n    formData.append(\"rewardProductId\", data.rewardProductId);\n    formData.append(\"title\", data.title);\n    formData.append(\"titleAdmin\", data.titleAdmin);\n    formData.append(\"description\", data.description);\n    formData.append(\"points\", data.points);\n    formData.append(\"lowStock\", data.lowStock);\n    formData.append(\"popUpText\", data.popUpText);\n    formData.append(\"urlImage\", data.urlImage);\n    formData.append(\"urlPdf\", data.urlPdf);\n    formData.append(\"isBarCode\", data.isBarCode);\n    formData.append(\"isVisible\", data.isVisible);\n    formData.append(\"posX\", data.posX);\n    formData.append(\"posY\", data.posY);\n    formData.append(\"fontSize\", data.fontSize);\n    formData.append(\"restriction\", data.restriction);\n    formData.append(\"twoValidation\", data.twoValidation);\n    formData.append(\"rewardProviderId\", data.rewardProviderId);\n    formData.append(\"rewardCategoryId\", data.rewardCategoryId);\n    formData.append(\"filePDF\", data.filePDF);\n    formData.append(\"fileImage\", data.fileImage);\n    formData.append(\"active\", data.active);\n\n    return callApiFileStorage('/BackOffice/RewardProduct', 'POST', formData, false)\n        .then((result) => {\n            if (result.responseCode === '00') {\n                swal({ text: \"Se guardó exitosamente\", icon: \"success\" })\n                    .then(() => {\n                        if (!result.data.isValidSize)\n                            swal({ text: \"La imagen del producto no cumple con las medidas necesarias \"+ result.data.restriction, icon: \"warning\" }).then(() => window.location.href = \"/operator/controlreward/1\")\n                        else\n                            window.location.href = \"/operator/controlreward/1\"\n                    })\n            } else {\n                console.log(result.responseMessage);\n                swal({ text: \"Error al guardar, revise los campos y archivos.\", icon: \"error\" });\n            }\n        });\n}\n\nasync function get() {\n    return await callApi('/BackOffice/RewardProduct', 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\nasync function getById(id) {\n    return callApi('/BackOffice/RewardProduct/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function edit(data) {\n    const formData = new FormData();\n    formData.append(\"rewardProductId\", data.rewardProductId);\n    formData.append(\"title\", data.title);\n    formData.append(\"titleAdmin\", data.titleAdmin);\n    formData.append(\"description\", data.description);\n    formData.append(\"points\", data.points);\n    formData.append(\"lowStock\", data.lowStock);\n    formData.append(\"popUpText\", data.popUpText);\n    formData.append(\"urlImage\", data.urlImage);\n    formData.append(\"urlPdf\", data.urlPdf);\n    formData.append(\"isBarCode\", data.isBarCode);\n    formData.append(\"isVisible\", data.isVisible);\n    formData.append(\"posX\", data.posX);\n    formData.append(\"posY\", data.posY);\n    formData.append(\"fontSize\", data.fontSize);\n    formData.append(\"restriction\", data.restriction);\n    formData.append(\"twoValidation\", data.twoValidation);\n    formData.append(\"rewardProviderId\", data.rewardProviderId);\n    formData.append(\"rewardCategoryId\", data.rewardCategoryId);\n    formData.append(\"filePDF\", data.filePDF);\n    formData.append(\"fileImage\", data.fileImage);\n    formData.append(\"active\", data.active);\n    return callApiFileStorage('/BackOffice/RewardProduct', 'PUT', formData, false)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Se guardó exitosamente\", icon: \"success\" })\n                    .then(() => {\n                        if (!result.data.isValidSize)\n                            swal({ text: \"La imagen del producto no cumple con las medidas necesarias \"+ result.data.restriction, icon: \"warning\" }).then(() => window.location.href = \"/operator/controlreward/1\")\n                        else\n                            window.location.href = \"/operator/controlreward/1\"\n                    })\n                return true;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return false;\n            }\n        });\n}\n\nasync function deleteRewardProduct(params) {\n    return callApi('/BackOffice/RewardProduct?id=' + params, 'DELETE', null).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"La recompensa se desactivó correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar la recompensa\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\nasync function getCatalogs() {\n    return await callApi('/BackOffice/RewardProduct/Catalogs', 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\n\n\nasync function getTestCoupon(id) {\n    return await callApi('/BackOffice/TestCoupon?id=' + id, 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\") {\n                window.open(result.data, \"_blank\")\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" })\n            }\n        });\n}\n","import React, {useEffect, useRef, useState} from 'react';\n\nimport {Row, Col, Button, Table, Tooltip, Switch, Input, Space, Pagination} from \"antd\";\nimport {FaDownload, FaPen, FaTrash, FaUpload} from \"react-icons/fa\";\nimport {rewardProductService} from \"../../services/control/rewardProduct.service\";\nimport {Header} from \"../header\";\nimport {CheckOutlined, CloseOutlined, SearchOutlined} from \"@ant-design/icons\";\nimport Swal from 'sweetalert2';\nimport withReactContent from 'sweetalert2-react-content';\nimport Highlighter from \"react-highlight-words\";\nconst MySwal = withReactContent(Swal);\n\nexport function AdminReward() {\n    const [rewardsData, setRewardsData] = useState({ rewards: [] });\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed) {\n                rewardProductService.deleteRewardProduct(data).then((result) => getRewardProducts());\n            }\n        })\n    };\n\n    useEffect(() => {\n        getRewardProducts();\n    }, []);\n    async function getRewardProducts() {\n        rewardProductService.get().then((result) => {\n            if (result) setRewardsData({\n                rewards: result.sort((a,b) => {\n                    return b.rewardProductId - a.rewardProductId\n                })\n            });\n        });\n    }\n\n    const getPreview = async (id) => {\n        await rewardProductService.getTestCoupon(id);\n    }\n\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div\n                style={{\n                    padding: 8,\n                }}\n                onKeyDown={(e) => e.stopPropagation()}\n            >\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{\n                        marginBottom: 8,\n                        display: 'block',\n                    }}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Limpiar\n                    </Button>\n                    <Button\n                        type=\"link\"\n                        size=\"small\"\n                        onClick={() => {\n                            close();\n                        }}\n                    >\n                        Cerrar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined\n                style={{\n                    color: filtered ? '#1677ff' : undefined,\n                }}\n            />\n        ),\n        onFilter: (value, record) =>\n            record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) {\n                setTimeout(() => searchInput.current?.select(), 100);\n            }\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{\n                        backgroundColor: '#ffc069',\n                        padding: 0,\n                    }}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (\n                text\n            ),\n    });\n\n    const columns = [\n        {\n            title: 'ID',\n            dataIndex: 'id',\n            key: 'id',\n            defaultSortOrder: 'descend',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => a.id - b.id,\n            width: 100,\n            fixed: 'left'\n        },\n        {\n            title: 'Producto',\n            dataIndex: 'product',\n            key: 'product',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => {\n                if(a.product < b.product) {\n                    return -1;\n                }\n                if(a.product > b.product) {\n                    return 1;\n                }\n                return 0;\n            },\n            ...getColumnSearchProps('product')\n        },\n        {\n            title: 'Mostrar folio',\n            dataIndex: 'showFolio',\n            key: 'showFolio',\n            width: 150,\n        },\n        {\n            title: 'Código de barras',\n            dataIndex: 'barcode',\n            key: 'barcode',\n            width: 150,\n        },\n        {\n            title: 'Puntos',\n            dataIndex: 'points',\n            key: 'points',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => a.points - b.points,\n            width: 200,\n        },\n        {\n            title: 'Folios disponibles',\n            dataIndex: 'availableFolio',\n            key: 'availableFolio',\n            width: 120,\n        },\n        {\n            title: 'Opciones',\n            dataIndex: 'options',\n            key: 'options',\n            width: 150,\n        },\n    ];\n\n    const data = rewardsData.rewards.map(reward => {\n        return {\n            key: reward.rewardProductId,\n            id: reward.rewardProductId,\n            product: reward.title,\n            showFolio:  <>\n                <Switch\n                    checkedChildren={<CheckOutlined />}\n                    unCheckedChildren={<CloseOutlined />}\n                    defaultChecked={!!(reward.isVisible)}\n                    disabled={true}\n                />\n                <p>{reward.isVisible}</p>\n            </>,\n            barcode: <>\n                <Switch\n                    checkedChildren={<CheckOutlined />}\n                    unCheckedChildren={<CloseOutlined />}\n                    defaultChecked={!!(reward.isBarCode)}\n                    disabled={true}\n                />\n                <p>{reward.isBarCode}</p>\n            </>,\n            points: reward.points,\n            availableFolio: <Tooltip placement=\"top\" title={`${(reward.isVisible) ? 'Cargar folios': 'No Disponible'}`}>\n                <Button\n                    type=\"primary\"\n                    className=\"dark\"\n                    htmlType=\"button\"\n                    onClick={() => window.location.href = \"/operator/load-coupons/\" + reward.rewardProductId}\n                    icon={<FaUpload />}\n                />\n            </Tooltip>,\n            options: <>\n                <Button\n                    type=\"primary\"\n                    className=\"dark\"\n                    htmlType=\"button\"\n                    onClick={() => window.location.href=`/operator/details-reward/${reward.rewardProductId}`}\n                    style={{marginRight: '.5rem'}}\n                    icon={<FaPen />}\n                >\n                </Button>\n                <Tooltip placement=\"top\" title={`${(reward.urlPdf) ? 'Descargar Cupón': 'No Disponible'}`}>\n                    <Button\n                        type=\"primary\"\n                        className=\"dark\"\n                        htmlType=\"button\"\n                        onClick={() => getPreview(reward.rewardProductId)}\n                        icon={<FaDownload />}\n                        style={{marginRight: '.5rem'}}\n                        disabled={!(reward.urlPdf)}\n                    >\n                    </Button>\n                </Tooltip>\n                <Tooltip placement=\"top\" title=\"Eliminar\">\n                    <Button\n                        type=\"primary\"\n                        className=\"red\"\n                        htmlType=\"button\"\n                        onClick={() => handleDelete(reward.rewardProductId)}\n                        icon={<FaTrash />}\n                    >\n                    </Button>\n                </Tooltip>\n            </>\n        }\n    });\n\n    const buttons = [\n        {\n            \"id\": 1,\n            \"nameButton\": \"Agregar recompensa\",\n            \"link\": \"/operator/details-reward/0\"\n        }\n    ];\n\n    const [currentPage, setCurrentPage] = useState(1)\n    const [sizesPages, setSizesPages] = useState(10)\n\n    const onChangePage = (page,pageSize) => {\n        setCurrentPage(page) ;\n        setSizesPages(pageSize);\n    }\n\n    return (\n        <section className=\"dashboard-operator-body\">\n            <Header\n                title=\"Control de Recompensas\"\n                description=\"\"\n                buttons={buttons}\n                btnBack={[]}\n            />\n            <Row>\n                <Col sm={24}>\n                    <Table columns={columns}\n                           dataSource={data.slice((currentPage - 1) * sizesPages, currentPage * sizesPages)}\n                           scroll={{ x: '992px', y: 800 }}\n                           pagination={false}\n                           locale={{\n                               triggerDesc: 'Ordenamiento descendente',\n                               triggerAsc: 'Ordenamiento ascedente',\n                               cancelSort: 'Cancelar ordenamiento',\n                               emptyText: 'Sin registros',\n                           }}\n                    />\n                    <Pagination\n                        total={data.length}\n                        defaultPageSize={sizesPages}\n                        responsive={true}\n                        defaultCurrent={1}\n                        current={currentPage}\n                        hideOnSinglePage={true}\n                        onChange={onChangePage}\n                        simple={true}\n                    />\n                </Col>\n            </Row>\n        </section>\n    );\n}\n","import React, {useEffect, useRef, useState} from 'react';\nimport { rewardProductService } from '../../services/control/rewardProduct.service';\nimport {Form, Col, Row, Input, Button, Switch, InputNumber, Select, Image, Modal} from \"antd\";\nimport imgPdf from '../../assets/imgs/pdf.png';\nimport {useParams} from \"react-router-dom\";\nimport {FaDownload, FaUpload, FaUser} from \"react-icons/fa\";\nimport {URL as _URL} from \"url\";\n\nexport function EditReward(props) {\n\n    const { Option } = Select;\n    const {id} = useParams();\n    const fileImage = useRef();\n\n    const onSave = (data) => {\n        if (reward.rewardProductId && reward.rewardProductId > 0)\n            rewardProductService.edit(reward);\n        else\n            rewardProductService.create(reward);\n    };\n\n    const [reward, setReward] = useState({});\n    const [catalogs, setCatalogs] = useState({ rewardProvider: [], rewardCategory: [] });\n\n    useEffect(() => {\n        setReward({\n            rewardProductId: id,\n            title: \"\",\n            titleAdmin: \"\",\n            description: \"\",\n            points: 0,\n            lowStock: 0,\n            popUpText: \"\",\n            urlImage: \"\",\n            urlPdf: \"\",\n            isBarCode: false,\n            isVisible: false,\n            posX: 0,\n            posY: 0,\n            fontSize: 0,\n            restriction: \"\",\n            twoValidation: false,\n            rewardProviderId: null,\n            rewardCategoryId: null,\n            active: true,\n            couponUrl: \"\",\n            filePDF: null,\n            fileImage: null\n        })\n\n        rewardProductService.getCatalogs().then((result) => setCatalogs(result));\n    }, [id])\n\n    useEffect(() => {\n        if (parseInt(id) !== 0) {\n            rewardProductService.getById(parseInt(id)).then((result) => {\n                setReward({\n                    rewardProductId: result.rewardProductId,\n                    title: result.title,\n                    titleAdmin: result.titleAdmin,\n                    description: result.description,\n                    points: result.points,\n                    lowStock: result.lowStock,\n                    popUpText: result.popUpText,\n                    urlImage: result.urlImage,\n                    urlPdf: result.urlPdf,\n                    isBarCode: result.isBarCode,\n                    isVisible: result.isVisible,\n                    posX: result.posX,\n                    posY: result.posY,\n                    fontSize: result.fontSize,\n                    restriction: result.restriction,\n                    twoValidation: result.twoValidation,\n                    rewardProviderId: result.rewardProviderId,\n                    rewardCategoryId: result.rewardCategoryId,\n                    active: result.active,\n                    couponUrl: result.couponUrl,\n                    fileImage: null,\n                    filePDF: null\n                });\n            });\n        }\n    }, [catalogs])\n\n    const handleBarcode = () => setReward( {...reward, isBarCode: (!reward.isBarCode)})\n    const handleVisible = () => setReward( {...reward, isVisible: (!reward.isVisible)})\n    const handleSelectProvider = (value) => setReward( {...reward, rewardProviderId: value})\n    const handleSelectCategory = (value) => setReward( {...reward, rewardCategoryId: value})\n    const handleInputValue = (e) => setReward( {...reward, [e.target.name]: e.target.value})\n\n    const handleInputFileImage = (e) => {\n\n        var ev = e.target.files;\n        if (ev) {\n            if (ev.length === 0) return setReward({...reward, fileImage: null, urlImage: null});\n            let img: HTMLImageElement, dimensions = {};\n            img = document.createElement(\"img\");\n\n            img.onload = function () {\n                dimensions = {\n                    width: img.width,\n                    height: img.height\n                };\n                if(dimensions.width != 600 || dimensions.height != 600) {\n                    Modal.error({\n                        title: 'Hay un problema',\n                        content: 'La imagen debe tener las medidas de 600 x 600.',\n                    });\n                    img = null;\n                    ev = null;\n                } else {\n                    const objectUrl = URL.createObjectURL(ev[0])\n                    setReward( {...reward, fileImage: ev[0], urlImage: objectUrl})\n                }\n            };\n            img.src = URL.createObjectURL(ev[0]);\n            return;\n        }\n\n        if(e.target.files[0].size > 2048){\n            alert('El peso del archivo excede los 2MB')\n        }\n    }\n\n    const handleInputFile = (e) => {\n\n        if(e.target.files.length === 0) return setReward({...reward, filePDF: null, urlPdf: null})\n\n        if(e.target.files[0].size > 2000000) return alert('El peso del archivo excede los 2MB')\n\n        setReward( {...reward, filePDF: e.target.files[0], urlPdf: imgPdf})\n    }\n\n    const handleInputPosX = (value) => setReward({...reward, posX: value})\n    const handleInputPosY = (value) => setReward({...reward, posY: value})\n    const handleInputLowStock = (value) => setReward({...reward, lowStock: value})\n    const handleInputFontSize = (value) => setReward({...reward, fontSize: value})\n\n    return (\n        <div className=\"dashboard-operator-body\">\n            <Form\n                onFinish={onSave}\n                className=\"form-pride\"\n                layout=\"vertical\"\n                autoComplete=\"off\"\n                fields={[\n                    {\n                        \"name\": [\"rewardCategoryId\"],\n                        \"value\": reward.rewardCategoryId,\n                    },\n                    {\n                        \"name\": [\"rewardProviderId\"],\n                        \"value\": reward.rewardProviderId,\n                    },\n                    {\n                        \"name\": [\"title\"],\n                        \"value\": reward.title,\n                    },\n                    {\n                        \"name\": [\"urlImage\"],\n                        \"value\": reward.urlImage,\n                    },\n                    {\n                        \"name\": [\"titleAdmin\"],\n                        \"value\": reward.titleAdmin,\n                    },\n                    {\n                        \"name\": [\"urlPdf\"],\n                        \"value\": reward.urlPdf,\n                    },\n                    {\n                        \"name\": [\"description\"],\n                        \"value\": reward.description,\n                    },\n                    {\n                        \"name\": [\"isBarCode\"],\n                        \"value\": reward.isBarCode,\n                    },\n                    {\n                        \"name\": [\"isVisible\"],\n                        \"value\": reward.isVisible,\n                    },\n                    {\n                        \"name\": [\"popUpText\"],\n                        \"value\": reward.popUpText,\n                    },\n                    {\n                        \"name\": [\"posX\"],\n                        \"value\": reward.posX,\n                    },\n                    {\n                        \"name\": [\"posY\"],\n                        \"value\": reward.posY,\n                    },\n                    {\n                        \"name\": [\"lowStock\"],\n                        \"value\": reward.lowStock,\n                    },\n                    {\n                        \"name\": [\"fontSize\"],\n                        \"value\": reward.fontSize,\n                    },\n                ]}\n            >\n                <Row gutter={16}>\n                    <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label=\"Categorías\"\n                            name=\"rewardCategoryId\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Archivo requerido',\n                                }\n                            ]}\n                        >\n                            <Select\n                                name=\"rewardCategoryId\"\n                                placeholder=\"Selecciona una categoría\"\n                                size=\"large\"\n                                onChange={handleSelectCategory}\n                            >\n                                {catalogs.rewardCategory.map((item,i) => (\n                                    <Option key={i+i} value={parseInt(item.value)}>{item.label}</Option>\n                                ))}\n                            </Select>\n                        </Form.Item>\n                    </Col>\n                    <Col xl={8} lg={8} md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label=\"Proveedor\"\n                            name=\"rewardProviderId\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Archivo requerido'\n                                }\n                            ]}\n                        >\n                            <Select\n                                name=\"rewardProviderId\"\n                                placeholder=\"Selecciona un proveedor\"\n                                size=\"large\"\n                                onChange={handleSelectProvider}\n                            >\n                                {catalogs.rewardProvider.map((item,i) => (\n                                    <Option key={i} value={parseInt(item.value)}>{item.label}</Option>\n                                ))}\n                            </Select>\n                        </Form.Item>\n                    </Col>\n                </Row>\n                <Row gutter={16}>\n                    <Col xl={8} lg={12} md={12} sm={24} xs={24}>\n                        <Row>\n                            <Col sm={24}>\n                                <Form.Item\n                                    label=\"Nombre\"\n                                    rules={[\n                                        {\n                                            required: true,\n                                            message: '*Campo requerido'\n                                        }\n                                    ]}\n                                    name=\"title\"\n                                >\n                                    <Input prefix={<i className=\"site-form-item-icon icon-gif\"></i>}\n                                           type=\"text\" name=\"title\"\n                                           size=\"large\"\n                                           onChange={handleInputValue}\n                                    />\n                                </Form.Item>\n                            </Col>\n                            <Col sm={24} xs={24}>\n                                <Form.Item\n                                    label=\"Descripcion\"\n                                    rules={[\n                                        {\n                                            required: true,\n                                            message: '*Campo requerido'\n                                        }\n                                    ]}\n                                    name=\"description\"\n                                >\n                                    <Input.TextArea\n                                        prefix={<i className=\"site-form-item-icon icon-gif\"></i>}\n                                        name=\"description\"\n                                        rows={5}\n                                        onChange={handleInputValue}\n                                    />\n                                </Form.Item>\n                            </Col>\n                        </Row>\n                    </Col>\n                    <Col xl={8} lg={12} md={12} sm={24} xs={24}>\n                        <Row gutter={16}>\n                            <Col sm={24} xs={24}>\n                                <Form.Item\n                                    label=\"Titulo Administrador\"\n                                    rules={[\n                                        {\n                                            required: true,\n                                            message: '*Campo requerido'\n                                        }\n                                    ]}\n                                    name=\"titleAdmin\"\n                                >\n                                    <Input\n                                        prefix={<FaUser className=\"site-form-item-icon icon-gif\"/>}\n                                        type=\"text\"\n                                        name=\"titleAdmin\"\n                                        size=\"large\"\n                                        onChange={handleInputValue}\n                                    />\n                                </Form.Item>\n                            </Col>\n                            <Col sm={24} xs={24}>\n                                <Form.Item\n                                    label=\"Imagen de sitio (Dimensiones obligadas: 600x600)\"\n                                    rules={[\n                                        {\n                                            required: (!reward.urlImage),\n                                            message: '*Archivo requerido'\n                                        }\n                                    ]}\n                                    name=\"fileImage\"\n                                >\n                                    <div className=\"container-file\">\n                                        <label htmlFor=\"uploadFileimage\">Subir imagen <FaUpload /></label>\n                                        <Input id=\"uploadFileimage\" ref={fileImage} type=\"File\" name=\"fileImage\" accept='image/*' onChange={handleInputFileImage} />\n                                        {\n                                            (reward.urlImage && reward.urlImage) ?\n                                                <Image\n                                                    width={200}\n                                                    src={reward.urlImage}\n                                                /> : ''\n                                        }\n                                    </div>\n                                </Form.Item>\n                            </Col>\n                            <Col sm={24} xs={24}>\n                                <Form.Item\n                                    label=\"Cupón PDF\"\n                                    rules={[\n                                        {\n                                            required: (!reward.urlPdf),\n                                            message: '*Archivo requerido'\n                                        }\n                                    ]}\n                                    name=\"filePDF\"\n                                >\n                                    <div className=\"container-file\">\n                                        <label htmlFor=\"uploadFilePdf\">Subir PDF <FaUpload /></label>\n                                        <Input id=\"uploadFilePdf\" type=\"File\" name=\"filePDF\" accept='.PDF' onChange={handleInputFile} />\n                                        {\n                                            (reward.urlPdf && reward.urlPdf) ?\n                                                <div className=\"container-file-overlay\">\n                                                    <a href={reward.urlPdf} download className=\"download\">\n                                                        <img className=\"pdf\" src={imgPdf} alt={reward.title} />\n                                                    </a>\n                                                    <div className=\"overlay\">\n                                                        <div className=\"text\">\n                                                            <FaDownload />\n                                                            <span>Descargar</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                : ''\n                                        }\n                                    </div>\n                                </Form.Item>\n                            </Col>\n                        </Row>\n                    </Col>\n                    <Col xl={8} lg={24} md={24} sm={24} xs={24}>\n                        <Row gutter={16}>\n                            <Col xl={24} lg={16} md={12} sm={24} xs={24}>\n                                <Form.Item\n                                    label=\"Texto del aviso\"\n                                    rules={[\n                                        {\n                                            required: true,\n                                            message: '*Campo requerido'\n                                        }\n                                    ]}\n                                    name=\"popUpText\"\n                                >\n                                    <Input\n                                        prefix={<i className=\"site-form-item-icon icon-gif\"></i>}\n                                        type=\"text\"\n                                        name=\"popUpText\"\n                                        size=\"large\"\n                                        onChange={handleInputValue}\n                                    />\n                                </Form.Item>\n                            </Col>\n                            <Col xl={24} lg={8} md={12} sm={24} xs={24}>\n                                <Row gutter={16}>\n                                    <Col md={24} sm={12} xs={12}>\n                                        <Form.Item label=\"Código de barras\">\n                                            <Switch checked={reward.isBarCode} onChange={handleBarcode} checkedChildren=\"Sí\" unCheckedChildren=\"No\" />\n                                        </Form.Item>\n                                    </Col>\n                                    <Col md={24} sm={12} xs={12}>\n                                        <Form.Item label=\"Mostrar folio\">\n                                            <Switch checked={reward.isVisible} onChange={handleVisible} checkedChildren=\"Sí\" unCheckedChildren=\"No\" />\n                                        </Form.Item>\n                                    </Col>\n                                    <Col xs={24}>\n                                        <Form.Item\n                                            label=\"Posición X\"\n                                            rules={[\n                                                {\n                                                    required: true,\n                                                    message: '*Campo requerido'\n                                                }\n                                            ]}\n                                            name=\"posX\"\n                                            maxLength={5}\n                                            minLength={1}\n                                        >\n                                            <InputNumber name=\"posX\" size=\"large\" onChange={handleInputPosX} />\n                                        </Form.Item>\n                                    </Col>\n                                    <Col xs={24}>\n                                        <Form.Item\n                                            label=\"Posición Y\"\n                                            rules={[\n                                                {\n                                                    required: true,\n                                                    message: '*Campo requerido'\n                                                }\n                                            ]}\n                                            name=\"posY\"\n                                            maxLength={5}\n                                            minLength={1}\n                                        >\n                                            <InputNumber name=\"posY\" size=\"large\" onChange={handleInputPosY} />\n                                        </Form.Item>\n                                    </Col>\n                                    <Col xs={24}>\n                                        <Form.Item\n                                            label=\"Mínimo de unidades\"\n                                            rules={[\n                                                {\n                                                    required: true,\n                                                    message: '*Campo requerido'\n                                                }\n                                            ]}\n                                            name=\"lowStock\"\n                                            maxLength={5}\n                                            minLength={1}\n                                        >\n                                            <InputNumber name=\"lowStock\" size=\"large\" onChange={handleInputLowStock} />\n                                        </Form.Item>\n                                    </Col>\n                                    <Col xs={24}>\n                                        <Form.Item\n                                            label=\"Tamaño de la fuente\"\n                                            rules={[\n                                                {\n                                                    required: true,\n                                                    message: '*Campo requerido'\n                                                }\n                                            ]}\n                                            name=\"fontSize\"\n                                            maxLength={5}\n                                            minLength={1}\n                                        >\n                                            <InputNumber name=\"fontSize\" size=\"large\" onChange={handleInputFontSize} />\n                                        </Form.Item>\n                                    </Col>\n                                </Row>\n                            </Col>\n                        </Row>\n                    </Col>\n                    <Col xs={24}>\n                        <div className=\"flex-end\">\n                            <Button type=\"primary\" htmlType=\"submit\">\n                                Guardar\n                                <i className=\"icon-save\"></i>\n                            </Button>\n                        </div>\n                    </Col>\n                </Row>\n            </Form>\n        </div>\n    );\n}   \n","import React from 'react';\nimport { EditReward } from './editReward'\nimport {Header} from \"../header\";\n\nexport function DetailsReward(props) {\n\n    return (\n        <section className=\"dashboard-operator-body\">\n            <Header\n                title={props.match.params.id !== 0 ? \"Editar recompensa\" : \"Nueva recompensa\"}\n                description=\"\"\n                buttons={[\n                    {\n                        \"id\": 1,\n                        \"nameButton\": \"Agregar recompensa\",\n                        \"link\": \"/operator/details-reward/0\"\n                    }\n                ]}\n                btnBack={[\n                    {\n                        \"id\": 2,\n                        \"nameButton\": \"Regresar\",\n                        \"link\": \"/operator/controlreward/1\"\n                    }\n                ]}\n            />\n            <EditReward rewardProductId={props.match.params.id} />\n        </section>\n    );\n}   \n","import { callApi, callApiFileStorage } from '../service'\nimport swal from \"sweetalert\"\n\nexport const rewardCouponService = {\n    create,\n    getCatalogs\n};\n\nasync function create(data) {\n    const formData = new FormData();\n    formData.append(\"rewardProductId\", data.rewardProductId);\n    formData.append(\"companyId\", data.companyId);\n    formData.append(\"startDate\", data.startDate);\n    formData.append(\"endDate\", data.endDate);\n    formData.append(\"couponData\", data.couponData);\n    return callApiFileStorage('/BackOffice/RewardCoupon', 'POST', formData, false)\n        .then((result) => {\n            if (result.responseCode === '00') {\n                swal({ text: \"Se guardó exitosamente\", icon: \"success\" }).then(() => window.location.href = \"/operator/controlreward/1\")\n            } else {\n                console.log(result.responseMessage);\n                swal({ text: result.responseMessage, icon: \"error\" });\n            }\n        });\n}\n\n\nasync function getCatalogs() {\n    return await callApi('/BackOffice/RewardCoupon/Catalogs', 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\n\n","import React, { useEffect, useState } from 'react';\nimport { rewardCouponService } from '../../services/control/rewardCoupon.service';\nimport moment from 'moment';\nimport {Form, Col, Row, Input, Button,Select,DatePicker} from \"antd\";\nimport {Header} from \"../header\";\nimport locale from 'antd/es/date-picker/locale/es_ES';\nimport {useParams} from \"react-router-dom\";\nimport imgPdf from \"../../assets/imgs/pdf.png\";\nimport {FaDownload} from \"react-icons/fa\";\n\nexport function BulkLoadReward() {\n\n    const {id} = useParams();\n    const {RangePicker} = DatePicker;\n    const [catalogs, setCatalogs] = useState({\n        rewardProduct: [],\n        company: []\n    });\n    const [reward, setReward] = useState({\n        rewardProductId: parseInt(id),\n        companyId: \"\",\n        startDate: \"\",\n        endDate: \"\",\n        couponData: null,\n    });\n\n    const onSave = () => rewardCouponService.create(reward);\n\n    useEffect(() => () => {\n        rewardCouponService.getCatalogs().then((result) => setCatalogs(result));\n    }, [reward]);\n\n    const handleInputFileChange = (e) => setReward({...reward, [e.target.name]: e.target.files[0]})\n\n    const handleInputDate = (date,dateStrings) => {\n        const convertedDateInitial= moment(dateStrings[0], \"DD/MMM/YYYY\").format('YYYY-MM-DD');\n        const convertedDateFinal= moment(dateStrings[1], \"DD/MMM/YYYY\").format('YYYY-MM-DD');\n        setReward({\n            ...reward,\n            startDate: convertedDateInitial,\n            endDate: convertedDateFinal,\n        })\n    }\n\n    const handleSelectCompany = (id) => setReward({...reward, companyId: id})\n\n    return (\n        <section className=\"dashboard-operator-body\">\n                <Header\n                    title=\"Carga de folios\"\n                    description=\"Desde aquí carga tus folios, revisa tus fechas de vigencia y que tu archivo sea .txt\"\n                    buttons={[\n                        {\n                            \"id\": 1,\n                            \"nameButton\": \"Agregar recompensa\",\n                            \"link\": \"/operator/details-reward/0\"\n                        }\n                    ]}\n                    btnBack={[\n                        {\n                            \"id\": 2,\n                            \"nameButton\": \"Regresar\",\n                            \"link\": \"/operator/controlreward/1\"\n                        }\n                    ]}\n                />\n                <Form\n                    onFinish={onSave}\n                    className=\"form-pride\"\n                    layout=\"vertical\"\n                    autoComplete=\"off\"\n                    fields={[\n                        {\n                            \"name\": [\"rewardProductId\"],\n                            \"value\": (reward.startDate) ? String(reward.rewardProductId) : ''\n                        },\n                    ]}\n                >\n                    <Row gutter={16}>\n                        <Col lg={12} md={12} sm={24}>\n                            <Form.Item\n                                label=\"Seleccionar archivo\"\n                                name=\"couponData\"\n                                rules={[\n                                    {\n                                        required: true,\n                                        message: '*Campo requerido'\n                                    }\n                                ]}\n                            >\n                                <div className=\"container-file-overlay\">\n                                    <Input\n                                        type=\"File\"\n                                        name=\"couponData\"\n                                        accept='.txt,.csv,text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'\n                                        size=\"large\"\n                                        onChange={handleInputFileChange}\n                                    />\n                                    {\n                                        (reward.couponData && reward.couponData) ?\n                                            <div className=\"container-file-overlay\">\n                                                <a href={reward.couponData} download className=\"download\">\n                                                    <img className=\"pdf\" src={imgPdf} alt={reward.rewardProductId} />\n                                                </a>\n                                                <div className=\"overlay\">\n                                                    <div className=\"text\">\n                                                        <FaDownload />\n                                                        <span>Descargar</span>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                            : ''\n                                    }\n                                </div>\n                            </Form.Item>\n                        </Col>\n                        <Col lg={6} md={12} sm={24}>\n                            <Form.Item\n                                label=\"Beneficio\"\n                                name=\"rewardProductId\"\n                            >\n                                <Select\n                                    disabled={true}\n                                    name=\"rewardProductId\"\n                                    size=\"large\"\n                                    options={catalogs.rewardProduct.map(item => {\n                                        return {\n                                            value: item.value,\n                                            label: item.label\n                                        }\n                                    })}\n                                />\n                            </Form.Item>\n                        </Col>\n                    </Row>\n                    <Row gutter={16}>\n                            <Col lg={8} md={12} sm={24} xs={24}>\n                                <Form.Item\n                                    label=\"Vigencia\"\n                                    name=\"date\"\n                                    rules={[\n                                        {\n                                            required: true,\n                                            message: '*Campo requerido'\n                                        }\n                                    ]}\n                                >\n                                    <RangePicker\n                                        onChange={handleInputDate}\n                                        name=\"endDate\"\n                                        format=\"DD/MMM/YYYY\"\n                                        size=\"large\"\n                                        locale={locale}\n                                    />\n                                </Form.Item>\n                            </Col>\n                            <Col lg={6} md={12} sm={24}>\n                                <Form.Item\n                                    label=\"Empresa\"\n                                    rules={[\n                                        {\n                                            required: true,\n                                            message: '*Campo requerido'\n                                        }\n                                    ]}\n                                    name=\"companyId\"\n                                >\n                                    <Select\n                                        disabled={!reward.startDate}\n                                        name=\"companyId\"\n                                        placeholder=\"Selecciona una opción\"\n                                        onChange={handleSelectCompany}\n                                        size=\"large\"\n                                        showSearch={true}\n                                        options={catalogs.company.map(item => {\n                                            return {\n                                                value: item.value,\n                                                label: item.label\n                                            }\n                                        })}\n                                        optionFilterProp=\"children\"\n                                        filterOption={(input, option) => (option?.label ?? '').includes(input)}\n                                        filterSort={(optionA, optionB) =>\n                                            (optionA?.label ?? '').toLowerCase().localeCompare((optionB?.label ?? '').toLowerCase())\n                                        }\n                                    />\n                                </Form.Item>\n                            </Col>\n                            <Col xs={24}>\n                                <div className=\"flex-end\">\n                                    <Button htmlType=\"submit\" type=\"primary\">Guardar<i className=\"icon-save\"></i></Button>\n                                </div>\n                            </Col>\n                        </Row>\n                </Form>\n            </section>\n    );\n}   \n","import { callApi } from '../service'\nimport swal from \"sweetalert\"\n\nexport const rewardCategoryService = {\n    create,\n    get,\n    getById,\n    edit,\n    deleteCategory\n};\n\nasync function create(data) {\n    return callApi('/BackOffice/RewardCategory', 'POST', data)\n        .then((result) => {\n            if (result.responseCode === '00') {\n                swal({ text: \"Se guardó exitosamente\", icon: \"success\" }).then(() => window.location.href = \"/operator/categories/1\")\n            } else {\n                console.log(result.responseMessage);\n                swal({ text: \"Error al guardar\", icon: \"error\" });\n            }\n        });\n}\n\nasync function get() {\n    return await callApi('/BackOffice/RewardCategory', 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\nasync function getById(id) {\n    return callApi('/BackOffice/RewardCategory/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function edit(data) {\n    return callApi('/BackOffice/RewardCategory', 'PUT', data)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Se actualizó correctamente\", icon: \"success\" }).then(() => window.location.href = \"/operator/categories/1\")\n                return true;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return false;\n            }\n        });\n}\n\nasync function deleteCategory(id) {\n    return callApi('/BackOffice/RewardCategory?id='+id, 'DELETE', null).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Se desactivó correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar la categoría\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\n\n","import React, {useEffect, useRef, useState} from 'react';\n\nimport {Button, Col, Input, Pagination, Row, Space, Table, Tooltip} from \"antd\";\nimport {Header} from \"../header\";\nimport {FaPen, FaTrash} from \"react-icons/fa\";\nimport {rewardCategoryService} from \"../../services/control/rewardCategory.service\";\nimport Swal from 'sweetalert2'\nimport withReactContent from 'sweetalert2-react-content'\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\n\nconst MySwal = withReactContent(Swal)\n\nexport function AdminRewardCategory() {\n    const [rewardsData, setRewardsData] = useState({ rewards: [] });\n    const handleDelete = (id) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed) {\n                rewardCategoryService.deleteCategory(id).then((result) =>  getRewardcategories())\n            }\n        })\n    };\n\n    useEffect(() => {\n        getRewardcategories();\n    }, []);\n\n    async function getRewardcategories() {\n        rewardCategoryService.get().then((result) => {\n            if (result) {\n                setRewardsData({\n                    rewards: result.sort((a,b) => {\n                        return b.rewardCategoryId - a.rewardCategoryId\n                    })\n                });\n            }\n        });\n    }\n\n    const buttons = [\n        {\n            \"id\": 1,\n            \"nameButton\": \"Agregar categoría\",\n            \"link\": \"/operator/details-rewardCategory/0\"\n        }\n    ];\n\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div\n                style={{\n                    padding: 8,\n                }}\n                onKeyDown={(e) => e.stopPropagation()}\n            >\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{\n                        marginBottom: 8,\n                        display: 'block',\n                    }}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Limpiar\n                    </Button>\n                    <Button\n                        type=\"link\"\n                        size=\"small\"\n                        onClick={() => {\n                            close();\n                        }}\n                    >\n                        Cerrar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined\n                style={{\n                    color: filtered ? '#1677ff' : undefined,\n                }}\n            />\n        ),\n        onFilter: (value, record) =>\n            record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) {\n                setTimeout(() => searchInput.current?.select(), 100);\n            }\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{\n                        backgroundColor: '#ffc069',\n                        padding: 0,\n                    }}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (\n                text\n            ),\n    });\n\n    const columns = [\n        {\n            title: 'ID',\n            dataIndex: 'id',\n            key: 'id',\n            showSorterTooltip: false,\n            defaultSortOrder: 'descend',\n            sortDirections: ['descend','ascend'],\n            sorter: (a, b) => a.id - b.id,\n            width: 100,\n            fixed: 'left',\n        },\n        {\n            title: 'Descripción',\n            dataIndex: 'description',\n            key: 'description',\n            showSorterTooltip: false,\n            sortDirections: ['descend','ascend'],\n            sorter: (a, b) => {\n                if(a.description < b.description) {\n                    return -1;\n                }\n                if(a.description > b.description) {\n                    return 1;\n                }\n                return 0;\n            },\n            ...getColumnSearchProps('description')\n        },\n        {\n            title: 'Ícono',\n            dataIndex: 'icon',\n            key: 'icon',\n            showSorterTooltip: false,\n            sortDirections: ['descend','ascend'],\n            sorter: (a, b) => {\n                if(a.icon < b.icon) {\n                    return -1;\n                }\n                if(a.icon > b.icon) {\n                    return 1;\n                }\n                return 0;\n            },\n        },\n        {\n            title: 'Opciones',\n            showSorterTooltip: false,\n            dataIndex: 'options',\n            key: 'options',\n            width: 150,\n        }\n    ];\n\n    const data = rewardsData.rewards.map(reward => {\n        return {\n            key: reward.rewardCategoryId,\n            id: reward.rewardCategoryId,\n            description: reward.description,\n            icon: reward.urlIcon,\n            options:\n                <>\n                    <Button\n                        type=\"primary\"\n                        className=\"dark\"\n                        htmlType=\"button\"\n                        onClick={() => window.location.href=`/operator/details-rewardCategory/${reward.rewardCategoryId}`}\n                        style={{marginRight: '.5rem'}}\n                        icon={<FaPen />}\n                    >\n                    </Button>\n                    <Tooltip placement=\"top\" title=\"Eliminar\">\n                        <Button\n                            type=\"primary\"\n                            className=\"red\"\n                            htmlType=\"button\"\n                            onClick={() => handleDelete(reward.rewardCategoryId)}\n                            icon={<FaTrash />}\n                        >\n                        </Button>\n                    </Tooltip>\n                </>\n        }\n    });\n\n    const [currentPage, setCurrentPage] = useState(1)\n    const [sizesPages, setSizesPages] = useState(10)\n\n    const onChangePage = (page,pageSize) => {\n        setCurrentPage(page) ;\n        setSizesPages(pageSize);\n    }\n\n    return (\n        <section className=\"dashboard-operator-body\">\n            <Header\n                title=\"Control de Categorías\"\n                description=\"\"\n                buttons={buttons}\n                btnBack={[]}\n            />\n            <Row>\n                <Col xs={24}>\n                    <Table columns={columns}\n                           dataSource={data.slice((currentPage - 1) * sizesPages, currentPage * sizesPages)}\n                           scroll={{ x: '992px', y: 800 }}\n                           pagination={false}\n                           locale={{\n                               triggerDesc: 'Ordenamiento descendente',\n                               triggerAsc: 'Ordenamiento ascedente',\n                               cancelSort: 'Cancelar ordenamiento',\n                               emptyText: 'Sin registros',\n                           }}\n                    />\n                    <Pagination\n                        total={data.length}\n                        defaultPageSize={sizesPages}\n                        responsive={true}\n                        defaultCurrent={1}\n                        current={currentPage}\n                        hideOnSinglePage={true}\n                        onChange={onChangePage}\n                        simple={true}\n                    />\n                </Col>\n            </Row>\n        </section>\n    );\n}\n","import React, { useEffect, useState } from 'react';\nimport { rewardCategoryService } from '../../services/control/rewardCategory.service';\nimport {useParams} from 'react-router-dom';\nimport {Form, Input,Col, Row,Button} from \"antd\";\nimport { FaQuestion} from \"react-icons/fa\";\nimport { IoBusiness} from \"react-icons/io5\";\nimport {AiFillDatabase} from \"react-icons/ai\";\n\nexport function EditRewardCategory() {\n\n    const {id} = useParams();\n    const onSave = (data) => {\n        if(reward.rewardCategoryId != 0) rewardCategoryService.edit(reward);\n        if(reward.rewardCategoryId == 0) rewardCategoryService.create(reward);\n    };\n\n    const [reward, setReward] = useState({});\n\n    useEffect(() => {\n        setReward({\n            rewardCategoryId: 0,\n            description: \"\",\n            urlIcon: \"\",\n            active: true\n        })\n    }, [id])\n\n    useEffect(() => {\n        if (id != 0) {\n            rewardCategoryService.getById(id).then((result) => {\n                setReward({\n                    rewardCategoryId: result.rewardCategoryId,\n                    description: result.description,\n                    urlIcon: result.urlIcon,\n                    active: result.active\n                });\n            });\n        }\n    }, []);\n\n    const handleInputChange = (e) => {\n        setReward({\n            ...reward,\n            [e.target.name]: e.target.value\n        })\n    }\n\n    return (\n        <>\n            <Form onFinish={onSave}\n                  className=\"form-pride\"\n                  layout=\"vertical\"\n                  autoComplete=\"off\"\n                  fields={[\n                      {\n                          \"name\": [\"description\"],\n                          \"value\": reward.description\n                      },\n                      {\n                          \"name\": [\"urlIcon\"],\n                          \"value\": reward.urlIcon\n                      },\n                  ]}\n            >\n                <Row gutter={16}>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                            label=\"Descripción\"\n                            name=\"description\"\n                        >\n                            <Input\n                                prefix={<AiFillDatabase className=\"site-form-item-icon icon-gif\" />}\n                                size=\"large\"\n                                name=\"description\"\n                                onChange={handleInputChange}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col md={12} sm={24} xs={24}>\n                        <Form.Item\n                           label=\"Ícono\"\n                           name=\"urlIcon\"\n                        >\n                            <Input\n                                prefix={<FaQuestion className=\"site-form-item-icon icon-gif\" />}\n                                size=\"large\"\n                                name=\"urlIcon\"\n                                onChange={handleInputChange}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                        <div className=\"flex-end\">\n                            <Button type=\"primary\" htmlType=\"submit\">\n                                Guardar\n                                <i className=\"icon-save\"></i>\n                            </Button>\n                        </div>\n                    </Col>\n                </Row>\n            </Form>\n        </>\n    );\n}   \n","import React  from 'react';\nimport { EditRewardCategory } from './editRewardCategory'\nimport {Header} from \"../header\";\n\nexport function DetailsRewardCategory({rewardCategoryId}) {\n\n    const buttons = [\n        {\n            \"id\": 1,\n            \"nameButton\": \"Agregar proveedor\",\n            \"link\": \"/operator/details-rewardProvider/0\"\n        }\n    ];\n\n    return (\n        <div className=\"dashboard-operator-body\">\n            <Header\n                title={(parseInt(rewardCategoryId) !== 0) ? \"Editar categoría\" : \"Nueva categoría\"}\n                description=\"\"\n                buttons={buttons}\n                btnBack={[\n                    {\n                        \"id\": 2,\n                        \"nameButton\": \"Regresar\",\n                        \"link\": \"/operator/categories/1\"\n                    }\n                ]}\n            />\n            <EditRewardCategory />\n        </div>\n    );\n}   \n","import { callApi, callApiFileStorage } from '../service'\nimport swal from \"sweetalert\"\n\nexport const rewardProviderService = {\n    create,\n    get,\n    getById,\n    edit,\n    deleteProvider\n};\n\nasync function create(data) {\n    const formData = new FormData();\n    formData.append(\"rewardProviderId\", data.rewardProviderId);\n    formData.append(\"businessName\", data.businessName);\n    formData.append(\"urlLogo\", data.urlLogo);\n    formData.append(\"active\", data.active);\n    formData.append(\"logoImage\", data.logoImage);\n    return callApiFileStorage('/BackOffice/RewardProvider', 'POST', formData, null)\n        .then((result) => {\n            if (result.responseCode === '00') {\n                swal({ text: \"Se guardó exitosamente\", icon: \"success\" }).then(() => window.location.href = \"/operator/providers/1\")\n            } else {\n                console.log(result.responseMessage);\n                swal({ text: \"Error al guardar\", icon: \"error\" });\n            }\n        });\n}\n\nasync function get() {\n    return await callApi('/BackOffice/RewardProvider', 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\nasync function getById(id) {\n    return callApi('/BackOffice/RewardProvider/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function edit(data) {\n    const formData = new FormData();\n    formData.append(\"rewardProviderId\", data.rewardProviderId);\n    formData.append(\"businessName\", data.businessName);\n    formData.append(\"urlLogo\", data.urlLogo);\n    formData.append(\"active\", data.active);\n    formData.append(\"logoImage\", data.logoImage);\n    return callApiFileStorage('/BackOffice/RewardProvider', 'PUT', formData, null)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                swal({ text: \"Se actualizó correctamente\", icon: \"success\" }).then(() => window.location.href = \"/operator/providers/1\")\n                return true;\n            } else {\n                swal({ text: result.responseMessage, icon: \"error\" });\n                return false;\n            }\n        });\n}\n\nasync function deleteProvider(id) {\n    return callApi('/BackOffice/RewardProvider?id=' + id, 'DELETE', null).then((result) => {\n        if (result.responseCode === '00') {\n            swal({ text: \"Se desactivó correctamente\", icon: \"success\" })\n            return result.data;\n        } else {\n            console.log(result.responseMessage);\n            swal({ text: \"Error al desactivar la categoría\", icon: \"error\" });\n            return null;\n        }\n    });\n}\n\n\n","import React, {useEffect, useRef, useState} from 'react';\nimport {Header} from \"../header\";\nimport {Button, Table, Tooltip, Col, Row, Input, Space, Pagination} from \"antd\";\nimport {FaCopy, FaPaste, FaPen, FaTrash} from \"react-icons/fa\";\nimport {rewardProviderService} from \"../../services/control/rewardProvider.service\";\nimport Swal from 'sweetalert2';\nimport withReactContent from 'sweetalert2-react-content';\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from \"react-highlight-words\";\n\nconst MySwal = withReactContent(Swal)\nexport function AdminRewardProvider() {\n\n    const [rewardsData, setRewardsData] = useState({ rewards: [] });\n    const handleDelete = (id) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed) {\n                rewardProviderService.deleteProvider(id).then((result) => getRewardProviders());\n            }\n        })\n    };\n\n    useEffect(() => {\n        getRewardProviders();\n    }, []);\n\n    async function getRewardProviders() {\n        rewardProviderService.get().then((result) => {\n            if (result) setRewardsData({\n                rewards: result.sort((a,b) => {\n                    return b.rewardProviderId - a.rewardProviderId\n                })\n            });\n        });\n    }\n\n    const [rewardsUrlLogo, setRewardsUrlLogo] = useState({});\n\n    useEffect(() => {\n        setRewardsUrlLogo(rewardsData.rewards.map(reward => {\n            return {\n                id: reward.rewardProviderId,\n                urlLogo: reward.urlLogo\n            }\n        }));\n    },[rewardsData])\n\n    const [urlCopied, setUrlCopied] = useState('');\n    async function copyNumberCard(idProvider) {\n        const currentUrlSelected = rewardsUrlLogo.filter(data => data.id === idProvider);\n        try {\n            await navigator.clipboard.writeText(currentUrlSelected.map(item => item.urlLogo));\n            setUrlCopied(idProvider);\n        } catch (e) {\n            setUrlCopied('');\n            throw e;\n        } finally {\n            setTimeout(() => {\n                setUrlCopied('');\n            }, 2000);\n        }\n    }\n\n    const buttons = [\n        {\n            \"id\": 1,\n            \"nameButton\": \"Agregar proveedor\",\n            \"link\": \"/operator/details-rewardProvider/0\"\n        }\n    ];\n\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div\n                style={{\n                    padding: 8,\n                }}\n                onKeyDown={(e) => e.stopPropagation()}\n            >\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{\n                        marginBottom: 8,\n                        display: 'block',\n                    }}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Limpiar\n                    </Button>\n                    <Button\n                        type=\"link\"\n                        size=\"small\"\n                        onClick={() => {\n                            close();\n                        }}\n                    >\n                        Cerrar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined\n                style={{\n                    color: filtered ? '#1677ff' : undefined,\n                }}\n            />\n        ),\n        onFilter: (value, record) =>\n            record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) {\n                setTimeout(() => searchInput.current?.select(), 100);\n            }\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{\n                        backgroundColor: '#ffc069',\n                        padding: 0,\n                    }}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (\n                text\n            ),\n    });\n\n    const columns = [\n        {\n            title: 'ID',\n            dataIndex: 'id',\n            key: 'id',\n            width: 100,\n            defaultSortOrder: 'descend',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => a.id - b.id,\n            fixed: 'left',\n        },\n        {\n            title: 'Nombre',\n            dataIndex: 'name',\n            key: 'name',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => {\n                if(a.name < b.name) {\n                    return -1;\n                }\n                if(a.name > b.name) {\n                    return 1;\n                }\n                return 0;\n            },\n            ...getColumnSearchProps('name')\n        },\n        {\n            title: 'Url logotipo',\n            dataIndex: 'logo',\n            key: 'logo',\n        },\n        {\n            title: 'Opciones',\n            dataIndex: 'options',\n            key: 'options',\n            width: 150,\n        }\n    ];\n\n    const data = rewardsData.rewards.map(reward => {\n        return {\n            key: reward.rewardProviderId,\n            id: reward.rewardProviderId,\n            name: reward.businessName,\n            logo: <div className=\"logo\">\n                <Input type=\"text\" value={reward.urlLogo} readOnly />\n                <Button type=\"primary\" htmlType=\"button\"\n                        onClick={() => copyNumberCard(reward.rewardProviderId)}\n                >\n                    {(urlCopied === reward.rewardProviderId) ? <FaPaste /> : <FaCopy />}\n                </Button>\n            </div>,\n            options:\n                <>\n                    <Button\n                        type=\"primary\"\n                        className=\"dark\"\n                        htmlType=\"button\"\n                        onClick={() => window.location.href=`/operator/details-rewardProvider/${reward.rewardProviderId}`}\n                        style={{marginRight: '.5rem'}}\n                        icon={<FaPen />}\n                    ></Button>\n                    <Tooltip placement=\"top\" title='Eliminar'>\n                        <Button\n                            type=\"primary\"\n                            className=\"red\"\n                            htmlType=\"button\"\n                            onClick={() => handleDelete(reward.rewardProviderId)}\n                            icon={<FaTrash />}\n                        ></Button>\n                    </Tooltip>\n                </>\n        }\n    })\n\n    const [currentPage, setCurrentPage] = useState(1)\n    const [sizesPages, setSizesPages] = useState(10)\n\n    const onChangePage = (page,pageSize) => {\n        setCurrentPage(page) ;\n        setSizesPages(pageSize);\n    }\n\n    return (\n        <section className=\"dashboard-operator-body\">\n            <Header\n                title=\"Control de Proveedores\"\n                description=\"\"\n                buttons={buttons}\n                btnBack={[]}\n            />\n            <Row>\n                <Col xs={24}>\n                    <Table columns={columns}\n                           dataSource={data.slice((currentPage - 1) * sizesPages, currentPage * sizesPages)}\n                           scroll={{ x: '992px', y: 800 }}\n                           pagination={false}\n                           locale={{\n                               triggerDesc: 'Ordenamiento descendente',\n                               triggerAsc: 'Ordenamiento ascedente',\n                               cancelSort: 'Cancelar ordenamiento',\n                               emptyText: 'Sin registros',\n                           }}\n                    />\n                    <Pagination\n                        total={data.length}\n                        defaultPageSize={sizesPages}\n                        responsive={true}\n                        defaultCurrent={1}\n                        current={currentPage}\n                        hideOnSinglePage={true}\n                        onChange={onChangePage}\n                        size={true}\n                    />\n                </Col>\n            </Row>\n        </section>\n    );\n}\n","import React, { useEffect, useState } from 'react';\nimport { rewardProviderService } from '../../services/control/rewardProvider.service';\n\nimport {useParams} from 'react-router-dom';\nimport {Form, Input, Button, Row, Col, Image} from \"antd\";\nimport {FaInfoCircle, FaUpload} from \"react-icons/fa\";\nimport { IoBusiness} from \"react-icons/io5\";\n\nexport function EditRewardProvider(props) {\n\n    const {id} = useParams();\n\n    const onSave = () => {\n        if (id > 0) rewardProviderService.edit(reward);\n        if (id == 0) rewardProviderService.create(reward);\n    };\n\n    const [reward, setReward] = useState({});\n\n    useEffect(() => {\n        setReward({\n            rewardProviderId: 0,\n            businessName: \"\",\n            urlLogo: \"\",\n            active: true,\n            logoImage: null\n        })\n    }, [id])\n\n    useEffect(() => {\n        if (id != 0) {\n            rewardProviderService.getById(id).then((result) => {\n                setReward({\n                    rewardProviderId: result.rewardProviderId,\n                    businessName: result.businessName,\n                    urlLogo: result.urlLogo,\n                    active: result.active,\n                    logoImage: null\n                });\n            });\n        }\n    }, []);\n\n    const handleInputChange = (e) => setReward({...reward, [e.target.name]: e.target.value})\n\n    const handleInputFileChange = (e) => {\n        const ev = e.target.files;\n        if (ev) {\n            if (ev.length === 0) return setReward({...reward, logoImage: null, urlLogo: null});\n            let img: HTMLImageElement, dimensions = {};\n            img = document.createElement(\"img\");\n\n            img.onload = function () {\n                dimensions = {\n                    width: img.width,\n                    height: img.height\n                };\n                if(dimensions.width > 500 || dimensions.height > 500) {\n                    alert('La imagen excede las dimensiones permitidas.')\n                } else {\n                    const objectUrl = URL.createObjectURL(ev[0])\n                    setReward( {...reward, logoImage: ev[0], urlLogo: objectUrl})\n                }\n            };\n            img.src = URL.createObjectURL(ev[0]);\n            return;\n        }\n\n        if(e.target.files[0].size > 2048) alert('El peso del archivo excede los 2MB')\n    }\n\n    return (\n        <section className=\"dashboard-operator-body\">\n            <Form\n                onFinish={onSave}\n                className=\"form-pride\"\n                layout=\"vertical\"\n                autoComplete=\"off\"\n                fields={[\n                    {\n                        \"name\": [\"businessName\"],\n                        \"value\": reward.businessName\n                    },\n                    {\n                        \"name\": [\"urlLogo\"],\n                        \"value\": reward.urlLogo\n                    },\n                ]}\n            >\n                <Row gutter={16}>\n                    <Col lg={12} md={24} sm={24}>\n                        <Form.Item\n                            label=\"Nombre\"\n                            name=\"businessName\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: \"*Campo requerido\"\n                                }\n                            ]}\n                        >\n                            <Input\n                                prefix={<IoBusiness className=\"site-form-item-icon icon-gif\" />}\n                                size=\"large\"\n                                name=\"businessName\"\n                                onChange={handleInputChange}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col lg={12} md={24} sm={24} xs={24}>\n                        <Form.Item\n                            label=\"Logotipo (Dimensiones máx: 500x500)\"\n                            name=\"logoImage\"\n                            rules={[\n                                {\n                                    required: (!reward.urlLogo),\n                                    message: \"*Campo requerido\"\n                                }\n                            ]}\n                        >\n                            <div className=\"container-file\">\n                                <label htmlFor=\"uploadImage\">Subir imagen <FaUpload /></label>\n                                <Input id=\"uploadImage\" size=\"large\" type=\"File\" name=\"logoImage\" accept='image/*' onChange={handleInputFileChange}/>\n                                {\n                                    (reward.urlLogo && reward.urlLogo) ?\n                                        <Image\n                                            width={200}\n                                            src={reward.urlLogo}\n                                        /> : ''\n                                }\n                            </div>\n                        </Form.Item>\n                    </Col>\n                    <Col xs={24}>\n                        <div className=\"flex-end\">\n                            <Button type=\"primary\" htmlType=\"submit\">Guardar<i className=\"icon-save\"></i></Button>\n                        </div>\n                    </Col>\n                </Row>\n            </Form>\n        </section>\n    );\n}   \n","import React from 'react';\nimport { EditRewardProvider } from './editRewardProvider'\nimport {Header} from \"../header\";\n\nexport function DetailsRewardProvider(props) {\n\n    const buttons = [\n        {\n            \"id\": 1,\n            \"nameButton\": \"Agregar proveedor\",\n            \"link\": \"/operator/details-rewardProvider/0\"\n        }\n    ];\n\n    return (\n        <div className=\"dashboard-operator-body\">\n            <Header\n                title={props.match.params.id != 0 ? \"Editar proveedor\" : \"Nuevo proveedor\"}\n                description=\"\"\n                buttons={buttons}\n                btnBack={[\n                    {\n                        \"id\": 2,\n                        \"nameButton\": \"Regresar\",\n                        \"link\": \"/operator/providers/1\"\n                    }\n                ]}\n            />\n            <EditRewardProvider />\n        </div>\n    );\n}   \n","import { callApi } from '../service'\nimport Swal from \"sweetalert2\";\n\nexport const companyService = {\n    create,\n    get,\n    getById,\n    getByDomain,\n    edit,\n    deleteCompany,\n    getRVOL\n};\n\nasync function create(data) {\n    return callApi('/BackOffice/Company', 'POST', data)\n        .then((result) => {\n            if (result.responseCode === '00') {\n                Swal.fire({\n                    position: 'center',\n                    icon: 'success',\n                    title: 'Se guardó correctamente',\n                    showConfirmButton: true,\n                    confirmButtonColor: '#00AD42',\n                    timer: 3000\n                }).then(() => window.location.href = \"/operator/AdminCompany\")\n            } else {\n                console.log(result.responseMessage);\n                Swal.fire({\n                    icon: 'error',\n                    title: 'Ups...',\n                    text: result.responseMessage,\n                    showConfirmButton: true,\n                    confirmButtonColor: '#FF002A',\n                })\n            }\n        });\n}\n\nasync function get(status) {\n    return await callApi('/BackOffice/Company?status=' + status, 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\nasync function getById(id) {\n    return callApi('/BackOffice/Company/' + id, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function getByDomain(domain) {\n    return callApi('/BackOffice/Company/GetByDomain/' + domain, 'GET').then((result) => {\n        if (result.responseCode === '00')\n            return result.data;\n        else {\n            alert(result.responseMessage);\n            return null;\n        }\n    });\n}\n\nasync function edit(data) {\n    return callApi('/BackOffice/Company', 'PUT', data)\n        .then((result) => {\n            if (result.responseCode === \"00\") {\n                Swal.fire({\n                    position: 'center',\n                    icon: 'success',\n                    title: 'Se actualizó correctamente',\n                    showConfirmButton: true,\n                    confirmButtonColor: '#00AD42',\n                    timer: 3000\n                }).then(() => window.location.href = \"/operator/AdminCompany\")\n                return true;\n            } else {\n                Swal.fire({\n                    icon: 'error',\n                    title: 'Ups...',\n                    text: result.responseMessage,\n                    showConfirmButton: true,\n                    confirmButtonColor: '#FF002A',\n                })\n                return false;\n            }\n        });\n}\n\nasync function deleteCompany(id) {\n    return callApi('/BackOffice/Company/' + id, 'DELETE', null).then((result) => {\n        if (result.responseCode === '00') {\n            Swal.fire({\n                position: 'center',\n                icon: 'success',\n                title: 'Se desactivó correctamente',\n                showConfirmButton: true,\n                confirmButtonColor: '#00AD42',\n                timer: 3000\n            })\n            return result.data;\n        } else {\n            Swal.fire({\n                icon: 'error',\n                title: 'Ups...',\n                text: \"Error al desactivar la compañía\",\n                showConfirmButton: true,\n                confirmButtonColor: '#FF002A',\n            })\n            return null;\n        }\n    });\n}\n\nasync function getRVOL() {\n    return await callApi('/Ecommerce/Company', 'GET')\n        .then(result => {\n            if (result.responseCode == \"00\")\n                return result.data;\n            else\n                return [];\n        })\n        .catch(error => {\n            console.log('error', error);\n            return []\n        });\n}\n\n\n","import React, {useEffect, useRef, useState} from 'react';\nimport { companyService } from '../../services/control/company.service';\nimport {Button, Input, Space, Table, Tag,Pagination} from \"antd\";\nimport {FaPen, FaTrash,} from \"react-icons/fa\";\nimport Swal from 'sweetalert2';\nimport withReactContent from 'sweetalert2-react-content';\nimport {SearchOutlined} from \"@ant-design/icons\";\nimport Highlighter from 'react-highlight-words';\nconst MySwal = withReactContent(Swal);\n\nexport function SearchCompany({statusValue}) {\n    const [companiesData, setCompaniesData] = useState({ companies: [] });\n    const handleDelete = (data) => {\n        MySwal.fire({\n            title: '¿Estás seguro?',\n            text: \"No podrás revertir esta acción\",\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#FF002A',\n            confirmButtonText: 'Eliminar',\n            cancelButtonText: 'Cancelar'\n        }).then((result) => {\n            if(result.isConfirmed)\n                companyService.deleteCompany(data).then((result) => getCompanies(statusValue));\n        })\n    };\n\n    useEffect(() => {\n        getCompanies(statusValue);\n    }, [statusValue]);\n\n    async function getCompanies(stat) {\n        companyService.get(stat).then((result) => {\n            if (result) {\n                setCompaniesData({\n                    companies: result.sort((a,b) => {\n                        return b.companyId - a.companyId;\n                    })\n                })\n            }\n        });\n    }\n\n    const [searchText, setSearchText] = useState('');\n    const [searchedColumn, setSearchedColumn] = useState('');\n    const searchInput = useRef(null);\n    const handleSearch = (selectedKeys, confirm, dataIndex) => {\n        confirm();\n        setSearchText(selectedKeys[0]);\n        setSearchedColumn(dataIndex);\n    };\n    const handleReset = (clearFilters) => {\n        clearFilters();\n        setSearchText('');\n    };\n\n    const getColumnSearchProps = (dataIndex) => ({\n        filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters, close }) => (\n            <div\n                style={{\n                    padding: 8,\n                }}\n                onKeyDown={(e) => e.stopPropagation()}\n            >\n                <Input\n                    ref={searchInput}\n                    placeholder={`Buscar`}\n                    value={selectedKeys[0]}\n                    onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}\n                    onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                    style={{\n                        marginBottom: 8,\n                        display: 'block',\n                    }}\n                />\n                <Space>\n                    <Button\n                        type=\"primary\"\n                        onClick={() => handleSearch(selectedKeys, confirm, dataIndex)}\n                        icon={<SearchOutlined />}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Buscar\n                    </Button>\n                    <Button\n                        onClick={() => clearFilters && handleReset(clearFilters)}\n                        size=\"small\"\n                        style={{\n                            width: 90,\n                        }}\n                    >\n                        Limpiar\n                    </Button>\n                    <Button\n                        type=\"link\"\n                        size=\"small\"\n                        onClick={() => {\n                            close();\n                        }}\n                    >\n                        Cerrar\n                    </Button>\n                </Space>\n            </div>\n        ),\n        filterIcon: (filtered) => (\n            <SearchOutlined\n                style={{\n                    color: filtered ? '#1677ff' : undefined,\n                }}\n            />\n        ),\n        onFilter: (value, record) =>\n            record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),\n        onFilterDropdownOpenChange: (visible) => {\n            if (visible) {\n                setTimeout(() => searchInput.current?.select(), 100);\n            }\n        },\n        render: (text) =>\n            searchedColumn === dataIndex ? (\n                <Highlighter\n                    highlightStyle={{\n                        backgroundColor: '#ffc069',\n                        padding: 0,\n                    }}\n                    searchWords={[searchText]}\n                    autoEscape\n                    textToHighlight={text ? text.toString() : ''}\n                />\n            ) : (\n                text\n            ),\n    });\n\n    const columns = [\n        {\n            title: 'ID',\n            dataIndex: 'id',\n            key: 'id',\n            defaultSortOrder: 'descend',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => a.id - b.id,\n            width: 100,\n            fixed: 'left'\n        },\n        {\n            title: 'Nombre',\n            dataIndex: 'name',\n            key: 'name',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => {\n                if(a.name < b.name) {\n                    return -1;\n                }\n                if(a.name > b.name) {\n                    return 1;\n                }\n                return 0;\n            },\n            ...getColumnSearchProps('name')\n        },\n        {\n            title: 'Dominio',\n            dataIndex: 'domain',\n            key: 'domain',\n            sortDirections: ['descend','ascend'],\n            showSorterTooltip: false,\n            sorter: (a, b) => {\n                if(a.domain < b.domain) {\n                    return -1;\n                }\n                if(a.domain > b.domain) {\n                    return 1;\n                }\n                return 0;\n            },\n        },\n        {\n            title: 'Activo',\n            dataIndex: 'active',\n            key: 'active',\n            width: 100,\n        },\n        {\n            title: 'Opciones',\n            dataIndex: 'options',\n            key: 'options',\n            width: 150,\n        },\n    ];\n\n    const data = companiesData.companies.map(company => {\n        return {\n            key: company.companyId,\n            id: company.companyId,\n            name: company.companyName,\n            domain: company.primeDomain,\n            active: company.active ? <Tag color=\"green\" key={company.companyId}>Activo</Tag> :\n                                     <Tag color=\"red\" key={company.companyId}>Inactivo</Tag>,\n            options: <>\n                    <Button\n                        type=\"primary\"\n                        className=\"dark\"\n                        htmlType=\"button\"\n                        onClick={() => window.location.href=`/operator/details-company/${company.companyId}`}\n                        style={{marginRight: '.5rem'}}\n                        icon={<FaPen />}\n                        disabled={!company.active}\n                    >\n                    </Button>\n                    <Button\n                        type=\"primary\"\n                        className=\"red\"\n                        htmlType=\"button\"\n                        onClick={() => handleDelete(company.companyId)}\n                        icon={<FaTrash />}\n                        disabled={!company.active}\n                    >\n                    </Button>\n                </>\n        }\n    });\n\n    const [currentPage, setCurrentPage] = useState(1)\n    const [sizesPages, setSizesPages] = useState(10)\n\n    const onChangePage = (page,pageSize) => {\n        setCurrentPage(page)\n        setSizesPages(pageSize)\n    }\n\n    return (\n        <>\n            <Table columns={columns}\n                   dataSource={data.slice((currentPage - 1) * sizesPages, currentPage * sizesPages)}\n                   scroll={{ x: '992px', y: 800 }}\n                   pagination={false}\n                   locale={{\n                       triggerDesc: 'Ordenamiento descendente',\n                       triggerAsc: 'Ordenamiento ascedente',\n                       cancelSort: 'Cancelar ordenamiento',\n                       emptyText: 'Sin registros',\n                   }}\n           />\n            <Pagination\n                total={data.length}\n                defaultPageSize={sizesPages}\n                responsive={true}\n                defaultCurrent={1}\n                current={currentPage}\n                hideOnSinglePage={true}\n                onChange={onChangePage}\n                simple={true}\n            />\n        </>\n\n    );\n}\n","import React, { useState } from 'react';\nimport { SearchCompany } from './searchCompany';\nimport {Select, Row, Col, Form} from \"antd\";\nimport {Header} from \"../header\";\n\nexport function AdminCompany() {\n    \n    const [statusSelected, setStatus] = useState(true)\n    const handleSelectChange = (value) => setStatus(value);\n\n    return (\n        <section className=\"dashboard-operator-body\">\n            <Header\n                title=\"Empresas\"\n                description=\"\"\n                buttons={[\n                    {\n                        \"id\": 1,\n                        \"nameButton\": \"Agregar empresa\",\n                        \"link\": \"/operator/details-company/0\"\n                    }\n                ]}\n                btnBack={[]}\n            />\n            <Row>\n                <Col xs={24}>\n                    <Form layout=\"vertical\" className=\"form-pride\" style={{padding: '0'}}>\n                        <Form.Item label=\"Estatus de Empresas\">\n                            <Select\n                                defaultValue={true}\n                                size=\"large\"\n                                style={{width: '200px'}}\n                                onChange={handleSelectChange}\n                                options={[\n                                    { value: true, label: 'Activo' },\n                                    { value: false, label: 'Inactivo' },\n                                ]}\n                            />\n                        </Form.Item>\n                    </Form>\n                </Col>\n                <Col xs={24}>\n                    <SearchCompany statusValue={statusSelected} />\n                </Col>\n            </Row>\n        </section>\n    );\n}\n","import React, { useEffect, useState } from 'react';\nimport { companyService } from '../../services/control/company.service';\nimport {Col, Row, Form, Button, Switch, Select, Input, Tooltip} from \"antd\";\nimport {InfoCircleOutlined, KeyOutlined, LinkOutlined, MailOutlined, PhoneOutlined} from \"@ant-design/icons\";\nimport {FaKey} from \"react-icons/fa\";\nimport { IoBusiness} from \"react-icons/io5\";\n\nexport function EditCompany({companyId}) {\n\n    const {Option} = Select;\n    const onSave = (data) => {\n        if (companyId !== 0) companyService.edit(company);\n        if (companyId === 0)companyService.create(company);\n    };\n    \n    const [isRvol, setIsRvol] = useState(false);\n    const [companyRVOL, setCompanyRVOL] = useState({CompanyId : 0});\n    const [company, setCompany] = useState({});\n\n    useEffect(() => {\n        setCompany({\n            companyId: companyId,\n            companyName: \"\",\n            businessName: \"\",\n            primeDomain: \"\",\n            telephone1: \"\",\n            telephone2: \"\",\n            username: \"\",\n            password: \"\",\n            active: true\n        })\n    }, [companyId])\n\n    useEffect(() => {\n        if (companyId !== 0) {\n            companyService.getById(companyId).then((result) => {\n                setCompany({\n                    companyId: result.companyId,\n                    companyName: result.companyName,\n                    businessName: result.businessName,\n                    primeDomain: result.primeDomain,\n                    telephone1: result.telephone1,\n                    telephone2: result.telephone2,\n                    username: result.userName,\n                    password: result.password,\n                    active: result.active\n                });\n            });\n        }\n        if (companyId === 0)\n            companyService.getRVOL().then((result) => setCatalogs({ rvolCompany: result }));\n    }, [companyId]);\n\n    const handleCheckChange = () => {\n        if(isRvol) {\n            setIsRvol(false);\n            setCompanyRVOL({CompanyId : 0, CompanyName : \"\"})\n            setCompany({...company, companyId: companyId})\n        }\n        if(!isRvol) setIsRvol(true);\n    }\n\n    const handleSelectChange = (idSelect) => {\n        const companyName = catalogs.rvolCompany.filter(data => data.companyId === idSelect);\n        setCompanyRVOL({ CompanyId: idSelect })\n        setCompany({\n            ...company,\n            companyName: companyName[0].businessName\n        })\n    }\n\n    const [catalogs, setCatalogs] = useState({ rvolCompany: [] });\n\n    const handleInputChange = (e) => setCompany({...company, [e.target.name]: e.target.value})\n\n    console.log(company,'company')\n\n    return (\n        <>\n            <Form\n                onFinish={onSave}\n                className=\"form-pride\"\n                layout=\"vertical\"\n                autoComplete=\"off\"\n                fields={[\n                    {\n                        \"name\": [\"companyName\"],\n                        \"value\": company.companyName,\n                    },\n                    {\n                        \"name\": [\"businessName\"],\n                        \"value\": company.businessName,\n                    },\n                    {\n                        \"name\": [\"primeDomain\"],\n                        \"value\": company.primeDomain,\n                    },\n                    {\n                        \"name\": [\"telephone1\"],\n                        \"value\": company.telephone1,\n                    },\n                    {\n                        \"name\": [\"telephone2\"],\n                        \"value\": company.telephone2,\n                    },\n                    {\n                        \"name\": [\"username\"],\n                        \"value\": company.username,\n                    },\n                    {\n                        \"name\": [\"password\"],\n                        \"value\": company.password,\n                    },\n                ]}\n            >\n                <Row gutter={16}>\n                    {companyId === 0 &&\n                        <>\n                            <Col md={(isRvol) ? 8 : 24} sm={24} xs={24}>\n                                <Form.Item\n                                    label=\"¿Existe en Red Voucher Online?\"\n                                    name=\"isRVOL\"\n                                >\n                                    <Switch checkedChildren=\"Sí\"\n                                            unCheckedChildren=\"No\"\n                                            onChange={handleCheckChange}\n                                            checked={isRvol}\n                                            name=\"isRVOL\"\n                                    />\n                                </Form.Item>\n                            </Col>\n                            {isRvol &&\n                                <Col md={12} sm={24} xs={24}>\n                                    <Form.Item\n                                        label=\"Compañía de Red Voucher\"\n                                        name=\"rvolCompany\"\n                                        rules={[\n                                            {\n                                                required: (isRvol),\n                                                message: \"*Campo requerido\"\n                                            }\n                                        ]}\n                                    >\n                                        <Select\n                                            showSearch={true}\n                                            name=\"rvolCompany\"\n                                            onSelect={handleSelectChange}\n                                            value={companyRVOL.CompanyId}\n                                            size=\"large\"\n                                            placeholder=\"Selecciona una compañía\"\n                                            optionFilterProp=\"children\"\n                                            filterOption={(input, option) => (option?.label ?? '').includes(input)}\n                                            filterSort={(optionA, optionB) =>\n                                                (optionA?.label ?? '').toLowerCase().localeCompare((optionB?.label ?? '').toLowerCase())\n                                            }\n                                            options={catalogs.rvolCompany.map(item => {\n                                                return {\n                                                    value: item.companyId,\n                                                    label: item.companyName\n                                                }\n                                            })}\n                                        />\n                                    </Form.Item>\n                                </Col>\n                            }\n                        </>\n                    }\n                    <Col xl={8} lg={12} md={12} sm={12} xs={24}>\n                        <input type=\"hidden\" name=\"companyId\" onChange={handleInputChange} />\n                        <Form.Item\n                            label=\"Nombre\"\n                            name=\"companyName\"\n                            onChange={handleInputChange}\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                        >\n                            <Input size=\"large\"\n                                   name=\"companyName\"\n                                   onKeyPress={(e) => {\n                                       const regex = new RegExp(\"^[a-zA-Z ]+$\");\n                                       const key = String.fromCharCode(!e.charCode ? e.which : e.charCode);\n                                       if (!regex.test(key)) {\n                                           e.preventDefault();\n                                           return false;\n                                       }\n                                   }}\n                                   prefix={<IoBusiness className=\"site-form-item-icon\" />}\n                                   placeholder=\"Identificador de la empresa\"\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xl={8} lg={12} md={12} sm={12} xs={24}>\n                        <Form.Item\n                            label=\"Nombre de la Empresa\"\n                            name=\"businessName\"\n                            onChange={handleInputChange}\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                }\n                            ]}\n                        >\n                            <Input size=\"large\" type=\"text\"\n                                   name=\"businessName\"\n                                   onKeyPress={(e) => {\n                                       const regex = new RegExp(\"^[a-zA-Z ]+$\");\n                                       const key = String.fromCharCode(!e.charCode ? e.which : e.charCode);\n                                       if (!regex.test(key)) {\n                                           e.preventDefault();\n                                           return false;\n                                       }\n                                   }}\n                                   placeholder=\"Nombre o razón social de la empresa\"\n                                   prefix={<IoBusiness className=\"site-form-item-icon\" />}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xl={8} lg={12} md={12} sm={24} xs={24}>\n                        <Form.Item\n                           label=\"Dominio\"\n                           name=\"primeDomain\"\n                           onChange={handleInputChange}\n                           rules={[\n                               {\n                                   required: true,\n                                   message: '*Campo requerido'\n                               }\n                           ]}\n                        >\n                            <Input\n                                placeholder=\"Dominio corporativo\"\n                                size=\"large\"\n                                name=\"primeDomain\"\n                                prefix={<LinkOutlined className=\"site-form-item-icon\" />}\n                                suffix={\n                                    <Tooltip title=\"Nombre completo de tu dominio\">\n                                        <InfoCircleOutlined style={{color: 'rgba(0,0,0,.45)',}}/>\n                                    </Tooltip>\n                                }\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xl={8} lg={12} md={12} sm={12} xs={24}>\n                        <Form.Item\n                            label=\"Teléfono oficina\"\n                            name=\"telephone1\"\n                            rules={[\n                                {\n                                    required: true,\n                                    message: '*Campo requerido'\n                                },\n                                {\n                                    min: 10,\n                                    message: 'Mínimo 10 dígitos'\n                                }\n                            ]}\n                        >\n                            <Input size=\"large\"\n                                   type=\"text\"\n                                   prefix={<PhoneOutlined className=\"site-form-item-icon\" />}\n                                   placeholder=\"Teléfono principal\"\n                                   name=\"telephone1\"\n                                   maxLength={10}\n                                   onKeyPress={(e) => {\n                                       // Solo se admiten números\n                                       e = e || window.e;\n                                       const charCode = e.keyCode || e.which;\n                                       const charStr = String.fromCharCode(charCode);\n                                       if(isNaN(charStr)) e.preventDefault();\n                                   }}\n                                   onChange={handleInputChange}\n                            />\n                        </Form.Item>\n                    </Col>\n                    <Col xl={8} lg={12} md={12} sm={12} xs={24}>\n                        <Form.Item\n                            label=\"Teléfono alterno\"\n                            name=\"telephone2\"\n                        >\n                            <Input size=\"large\" type=\"text\" name=\"telephone2\" placeholder=\"Teléfono alterno\"\n                                   onKeyPress={(e) => {\n                                       e = e || window.e;\n                                       const charCode = e.keyCode || e.which;\n                                       const charStr = String.fromCharCode(charCode);\n                                       if (isNaN(charStr)) e.preventDefault();\n                                   }}\n                                   maxLength={10}\n                                   prefix={<PhoneOutlined className=\"site-form-item-icon\" />}\n                                   onChange={handleInputChange}\n                            />\n                        </Form.Item>\n                    </Col>\n                    {companyId === 0 ?\n                        <>\n                        <Col xl={8} lg={12} md={12} sm={12} xs={24}>\n                            <Form.Item\n                                label=\"Usuario de R.H inicial\"\n                                name=\"username\"\n                                onChange={handleInputChange}\n                                rules={[\n                                    {\n                                        required: true,\n                                        message: '*Campo requerido'\n                                    },\n                                    {\n                                        pattern: new RegExp(/^[-\\w.%+]{1,64}@(?:[A-Z0-9-]{1,63}\\.){1,125}[A-Z]{2,63}$/g),\n                                        type: 'email',\n                                        message: 'Formato de correo electrónico erróneo'\n                                    },\n                                ]}\n                            >\n                                <Input name=\"username\" size=\"large\"\n                                       type=\"email\"\n                                       placeholder=\"Correo corporativo\"\n                                       prefix={<MailOutlined className=\"site-form-item-icon\" />}\n                                />\n                            </Form.Item>\n                        </Col>\n                        <Col xl={8} lg={12} md={12} sm={12} xs={24}>\n                            <Form.Item\n                                label=\"Contraseña\"\n                                name=\"password\"\n                                onChange={handleInputChange}\n                                rules={[\n                                    {\n                                        required: true,\n                                        message: '*Campo requerido'\n                                    },\n                                    {\n                                        pattern: new RegExp(/^(?=.{8,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\\W).*$/g),\n                                        message: <small>La contraseña debe tener:\n                                            <ul style={{marginLeft: '1.5rem'}}>\n                                                <li>1 letra mayúscula</li>\n                                                <li>1 letra minúscula</li>\n                                                <li>1 número</li>\n                                                <li>1 símbolo</li>\n                                            </ul>\n                                        </small>\n                                    },\n                                    {\n                                        min: 8,\n                                        message: <small>*Mínimo 8 carácteres</small>\n                                    }\n                                ]}\n                            >\n                                <Input.Password size=\"large\"\n                                                type=\"password\"\n                                                placeholder=\"Contraseña\"\n                                                name=\"password\"\n                                                minLength={8}\n                                                prefix={<FaKey className=\"site-form-item-icon\" />}\n                                />\n                            </Form.Item>\n                        </Col>\n                    </>\n                    : null}\n                    <Col xs={24} className=\"flex-end\">\n                        <Button htmlType=\"submit\" type=\"primary\">\n                            Guardar\n                            <i className=\"icon-save\"></i>\n                        </Button>\n                    </Col>\n                </Row>\n            </Form>\n        </>\n    );\n}   \n","import React from 'react';\nimport { EditCompany } from './editCompany'\nimport {Header} from \"../header\";\nimport {useParams} from \"react-router-dom\";\n\nexport function DetailsCompany(props) {\n\n    const {id} = useParams();\n\n    return (\n        <div className=\"dashboard-operator-body\">\n            <Header\n                title={parseInt(id) !== 0 ? \"Editar empresa\" : \"Nueva empresa\"}\n                description=\"\"\n                buttons={[\n                    {\n                        \"id\": 1,\n                        \"nameButton\": \"Agregar empresa\",\n                        \"link\": \"/operator/details-company/0\"\n                    }\n                ]}\n                btnBack={[\n                    {\n                        \"id\": 2,\n                        \"nameButton\": \"Regresar\",\n                        \"link\": \"/operator/AdminCompany\"\n                    }\n                ]}\n            />\n            <EditCompany companyId={parseInt(id)} />\n        </div>\n    );\n}   \n","import React, { useState } from 'react';\nimport { AdminReward } from './adminReward'\nimport { AdminRewardCategory } from './adminRewardCategory'\nimport { AdminRewardProvider } from './adminRewardProvider'\nimport {Header} from \"../header\";\nimport {Tabs} from \"antd\";\n\nexport function ControlReward(props) {\n\tconst [activeTab, setActiveTab] = useState(props.match.params.tap);\n\n\tconst buttons = [\n\t\t{\n\t\t\t\"id\": 1,\n\t\t\t\"nameButton\": \"Agregar recompensa\",\n\t\t\t\"link\": \"/operator/details-reward/0\"\n\t\t}\n\t];\n\n\tconst onChange = (key) => {\n\t\tconsole.log(key);\n\t};\n\n\tconst items = [\n\t\t{\n\t\t\tkey: '1',\n\t\t\tlabel: `Productos`,\n\t\t\tchildren: <AdminReward />,\n\t\t},\n\t\t{\n\t\t\tkey: '2',\n\t\t\tlabel: `Proveedores`,\n\t\t\tchildren: <AdminRewardProvider />,\n\t\t},\n\t\t{\n\t\t\tkey: '3',\n\t\t\tlabel: `Categorías`,\n\t\t\tchildren: <AdminRewardCategory />,\n\t\t},\n\t];\n\n\treturn (\n\t\t<section className=\"dashboard-operator-body\">\n\t\t\t<Header\n\t\t\t\ttitle=\"Control Recompensas\"\n\t\t\t\tdescription=\"\"\n\t\t\t\tbuttons={buttons}\n\t\t\t/>\n\t\t\t<Tabs defaultActiveKey=\"1\" items={items} onChange={onChange} />\n\t\t</section>\n\t)\n}\n","import React from \"react\";\nimport { Route, Switch, Redirect } from \"react-router-dom\";\nimport {\n  LayoutBackoffice,\n  LayoutFull,\n  LayoutLess,\n  LayoutOperator,\n} from \"./components/layouts\";\n\nimport ProtectedRoute from \"./components/protectedRoute\";\n\n\n\nimport * as Pages from \"./pages\";\nimport * as Admin from \"./backoffice\";\nimport * as Control from \"./control\";\nimport { Operator } from \"./control\";\nconst withLayout = (Component, Layout) => (props) => (\n  <Layout>\n    <Component {...props} />\n  </Layout>\n);\nexport function App() {\n  //const [loadApp, setLoadApp] = useState(false);\n\n  // useEffect(() => {\n  //   //Google Analytics()\n  //   ReactGA.initialize(process.env.REACT_APP_TRACKING_ID_GA);\n  //   ReactGA.plugin.require(\"displayfeatures\");\n  //   ReactGA.pageview(location.pathname);\n  //   setLoadApp(true);\n  // }, []);\n\n  // useEffect(() => {\n  //   ReactGA.pageview(location.pathname);\n  // }, [location.pathname]);\n\n  return (\n    <Switch>\n      <Route\n        exact\n        path=\"/login\"\n        render={(x) => <LayoutLess children={<Pages.Login {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/register/:referralToken?\"\n        render={(x) => <LayoutLess children={<Pages.Register {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/successfull-register\"\n        render={(x) => <LayoutLess children={<Pages.SuccessfulReg {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/verify-account\"\n        render={(x) => <LayoutLess children={<Pages.VerifyAccount {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/membership\"\n        render={(x) => <LayoutLess children={<Pages.Membership {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/paid-membership\"\n        render={(x) => (\n          <LayoutLess children={<Pages.MembershipPayment {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/error-membership\"\n        render={(x) => (\n          <LayoutLess children={<Pages.MembershipPayment {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/reset-password\"\n        render={(x) => <LayoutLess children={<Pages.ResetPassword {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/home\"\n        render={(x) => <LayoutFull children={<Pages.Home />} />}\n      />\n      <Route\n        exact\n        path=\"/surveys\"\n        render={(x) => <LayoutFull children={<Pages.Surveys />} />}\n      />\n      <Route\n        exact\n        path=\"/board\"\n        render={(x) => <LayoutFull children={<Pages.Board />} />}\n      />\n      {/* <Route\n        exact\n        path=\"/messages\"\n        render={(x) => <LayoutFull children={<Pages.Messages />} />}\n      /> */}\n      {/* <Route\n        exact\n        path=\"/messages/:id\"\n        render={(x) => <LayoutFull children={<Pages.Messages />} />}\n      /> */}\n      <Route\n        exact\n        path=\"/discount\"\n        render={(x) => <LayoutFull children={<Pages.Discount />} />}\n      />{\" \"}\n      <Route\n        exact\n        path=\"/directory\"\n        render={(x) => <LayoutFull children={<Pages.Directory />} />}\n      />\n      <Route\n        exact\n        path=\"/ambassador\"\n        render={(x) => <LayoutFull children={<Pages.Ambassador />} />}\n      />\n      <Route\n        exact\n        path=\"/pride-music\"\n        render={(x) => <LayoutFull children={<Pages.PrideMusic />} />}\n      />\n      <Route\n        exact\n        path=\"/interest-group\"\n        render={(x) => <LayoutFull children={<Pages.InterestGroup />} />}\n      />\n      <Route\n        exact\n        path=\"/details-directory/:DirectoryId\"\n        render={(x) => <LayoutFull children={<Pages.DetailsDirectory />} />}\n      />\n      <Route\n        exact\n        path=\"/register-services\"\n        render={(x) => <LayoutFull children={<Pages.RegisterServices />} />}\n      />\n      <Route\n        exact\n        path=\"/register-services/:id\"\n        render={(x) => <LayoutFull children={<Pages.RegisterServices />} />}\n      />\n      <Route\n        exact\n        path=\"/register-services/card-tokenization-result/:isSuccess\"\n        render={(x) => (\n          <LayoutFull children={<Pages.CardTokenizationResult />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/provider/:id\"\n        render={(x) => <LayoutFull children={<Pages.Provider {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/pending-payment\"\n        render={(x) => <LayoutFull children={<Pages.CashPayment />} />}\n      />\n      <Route\n        exact\n        path=\"/shopping-history\"\n        render={(x) => <LayoutFull children={<Pages.ShoppingHistory />} />}\n      />\n      <Route\n        exact\n        path=\"/rewards\"\n        render={(x) => <LayoutFull children={<Pages.Rewards />} />}\n      />\n      <Route\n        exact\n        path=\"/redemption-history\"\n        render={(x) => <LayoutFull children={<Pages.RedemptionHistory />} />}\n      />\n      <Route\n        exact\n        path=\"/account-status\"\n        render={(x) => <LayoutFull children={<Pages.AccountStatus />} />}\n      />\n      <Route\n        exact\n        path=\"/profile\"\n        render={(x) => <LayoutFull children={<Pages.Profile />} />}\n      />\n      <Route\n        exact\n        path=\"/blog-company\"\n        render={(x) => (\n          <LayoutFull\n            children={\n              <Pages.BlogCompanyPrimary titleComponent=\"Mundo Pride\" {...x} />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/our-company/:id\"\n        render={(x) => (\n          <LayoutFull\n            children={\n              <Pages.CompanyPostPrimary titleComponent=\"Mundo Pride\" {...x} />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/our-company/:id/report/:reportId\"\n        render={(x, y, z) => (\n          <LayoutFull\n            children={\n              <Pages.CompanyPostPrimary\n                titleComponent=\"Mundo Pride\"\n                {...x}\n                {...y}\n              />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/our-company/:id/:postId\"\n        render={(x, y) => (\n          <LayoutFull\n            children={\n              <Pages.CompanyPostPrimary\n                titleComponent=\"Mundo Pride\"\n                {...x}\n                {...y}\n              />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/blog-company/gallery/:id?\"\n        render={(x) => (\n          <LayoutFull\n            children={\n              <Pages.BlogGallery titleComponent=\"Galería Pride\" {...x} />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/stories-pride\"\n        render={(x) => (\n          <LayoutFull\n            children={\n              <Pages.BlogCompanySecondary\n                titleComponent=\"Orgullo LGBTQ+\"\n                {...x}\n              />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/stories-pride/:id\"\n        render={(x) => (\n          <LayoutFull\n            children={\n              <Pages.CompanyPostSecondary\n                titleComponent=\"Orgullo LGBTQ+\"\n                {...x}\n              />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/stories-pride/:id/report/:reportId\"\n        render={(x, y) => (\n          <LayoutFull\n            children={\n              <Pages.CompanyPostSecondary\n                titleComponent=\"Orgullo LGBTQ+\"\n                {...x}\n                {...y}\n              />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/stories-pride/:id/:postId\"\n        render={(x, y) => (\n          <LayoutFull\n            children={\n              <Pages.CompanyPostSecondary\n                titleComponent=\"Orgullo LGBTQ+\"\n                {...x}\n                {...y}\n              />\n            }\n          />\n        )}\n      />\n      <Route\n        exact\n        path=\"/help\"\n        render={(x) => <LayoutFull children={<Pages.Help />} />}\n      />\n      <Route\n        exact\n        path=\"/audience/:idAudience?\"\n        render={(x) => <LayoutFull children={<Pages.Audience />} />}\n      />\n      <Route\n        exact\n        path=\"/ecommerce\"\n        render={(x) => <LayoutFull children={<Pages.Ecommerce />} />}\n      />\n      <Route\n        exact\n        path=\"/caring-community\"\n        render={(x) => <LayoutFull children={<Pages.CaringCommunity />} />}\n      />\n      <Route\n        exact\n        path=\"/caring-community/:id\"\n        render={(x) => <LayoutFull children={<Pages.Provider {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/job-bank\"\n        render={(x) => <LayoutFull children={<Pages.JobBank />} />}\n      />\n      <Route\n        exact\n        path=\"/applicant-sent\"\n        render={(x) => <LayoutFull children={<Pages.ApplicantSent />} />}\n      />\n      <Route\n        exact\n        path=\"/list-new-jobs\"\n        render={(x) => <LayoutFull children={<Pages.ListNewJobs />} />}\n      />\n      <Route\n        exact\n        path=\"/details-job\"\n        render={(x) => <LayoutFull children={<Pages.DetailsJobs />} />}\n      />\n      <Route\n        exact\n        path=\"/details-job/:id\"\n        render={(x) => <LayoutFull children={<Pages.DetailsJobs />} />}\n      />\n      <Route\n        exact\n        path=\"/register-job\"\n        render={(x) => <LayoutFull children={<Pages.RegisterJobs />} />}\n      />\n      <Route\n        exact\n        path=\"/edit-job/:id\"\n        render={(x) => <LayoutFull children={<Pages.EditJob />} />}\n      />\n      <Route\n        exact\n        path=\"/jobs-published\"\n        render={(x) => <LayoutFull children={<Pages.JobsPublished />} />}\n      />\n      <Route\n        exact\n        path=\"/candidates/:id\"\n        render={(x) => <LayoutFull children={<Pages.CandidatesNominated />} />}\n      />\n      <Route\n        exact\n        path=\"/order-details/:id\"\n        render={(x) => <LayoutFull children={<Pages.OrderDetail {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/canceled\"\n        render={(x) => (\n          <LayoutFull children={<Pages.PaymentCanceled {...x} />} />\n        )}\n      />\n      {/* == BACKOFFICE == */}\n      <ProtectedRoute\n        exact\n        path=\"/admin\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.Admin, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/users\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.Users, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/users-details/:id\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.UserDetails, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/admin-audience\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminAudience, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/generic-section\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminGenericSection, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/bulk-load\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.BulkLoad, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/AdminSurvey\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminSurvey, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/AdminSurveyScale/:surveyId\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminSurveyScale, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/AdminAnswerTypes\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminAnswerTypes, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/details-survey-scale/:surveyId/:id\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.DetailsSurveyScale, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/details-survey/:id\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.DetailsSurvey, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/survey-results/:id\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.SurveyResults, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/AdminBoard\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminBoard, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/details-category\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.DetailsCategory, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/details-category/:id\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.DetailsCategory, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/control\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.Control, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/company-event-type\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Pages.AdminCompanyEventType, LayoutFull)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/company-post\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.CompanyPost, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/AdminGallery\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Pages.AdminGallery, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/CompanyGallery\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Pages.CompanyGallery, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/Notice\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.Notice, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/product-filter\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminProductFilter, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/detail-product-filter/:id\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.DetailsProductFilter, LayoutBackoffice)}\n      />\n      <ProtectedRoute\n        exact\n        path=\"/admin/course\"\n        allowedRoles={[\"Recursos Humanos\"]}\n        component={withLayout(Admin.AdminCourse, LayoutBackoffice)}\n      />\n      {/* == OPERACIONES == */}\n      <Route\n        exact\n        path=\"/operator\"\n        render={(x) => <LayoutOperator children={<Operator {...x} />} />}\n      />\n      <Route\n        exact\n        path=\"/operator/homeOps/:tap\"\n        render={(x) => (\n          <LayoutOperator children={<Control.ControlReward {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/controlreward/:tap\"\n        render={(x) => (\n          <LayoutOperator children={<Control.AdminReward {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/providers/:tap\"\n        render={(x) => (\n          <LayoutOperator children={<Control.AdminRewardProvider {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/categories/:tap\"\n        render={(x) => (\n          <LayoutOperator children={<Control.AdminRewardCategory {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/details-reward/:id\"\n        render={(x) => (\n          <LayoutOperator children={<Control.DetailsReward {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/load-coupons/:id\"\n        render={(x) => (\n          <LayoutOperator children={<Control.BulkLoadReward {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/details-rewardCategory/:id\"\n        render={(x) => (\n          <LayoutOperator children={<Control.DetailsRewardCategory {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/details-rewardProvider/:id\"\n        render={(x) => (\n          <LayoutOperator children={<Control.DetailsRewardProvider {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/AdminCompany\"\n        render={(x) => (\n          <LayoutOperator children={<Control.AdminCompany {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/operator/details-company/:id\"\n        render={(x) => (\n          <LayoutOperator children={<Control.DetailsCompany {...x} />} />\n        )}\n      />\n      <Route\n        exact\n        path=\"/admin/course\"\n        render={(x) => <LayoutBackoffice children={<Admin.AdminCourse />} />}\n      />\n        <Route\n            exact\n            path=\"/course-view\"\n            render={(x) => <LayoutFull children={<Pages.CourseView />} />}\n        />\n      <Route\n        exact\n        path=\"/course-view/course/:courseId\"\n        render={(x) => <LayoutFull children={<Pages.CourseView />} />}\n      />\n      <Route\n        exact\n        path=\"/course-view/new-event\"\n        render={(x) => <LayoutFull children={<Pages.EventForm />} />}\n      />\n      <Route\n        exact\n        path=\"/course-view/approve-event\"\n        render={(x) => <LayoutFull children={<Pages.EventApprove />} />}\n      />\n      <Route\n        exact\n        path=\"/course-view/my-events\"\n        render={(x) => <LayoutFull children={<Pages.EventApprove />} />}\n      />\n      <Redirect from=\"/\" to=\"/home\" />\n    </Switch>\n  );\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n    window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n        /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport function register(config) {\n    if ('serviceWorker' in navigator) {\n        // The URL constructor is available in all browsers that support SW.\n        const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n        if (publicUrl.origin !== window.location.origin) {\n            // Our service worker won't work if PUBLIC_URL is on a different origin\n            // from what our page is served on. This might happen if a CDN is used to\n            // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n            return;\n        }\n\n        window.addEventListener('load', () => {\n            const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n            if (isLocalhost) {\n                // This is running on localhost. Let's check if a service worker still exists or not.\n                checkValidServiceWorker(swUrl, config);\n\n                // Add some additional logging to localhost, pointing developers to the\n                // service worker/PWA documentation.\n                navigator.serviceWorker.ready.then(() => {\n                    console.log(\n                        'This web app is being served cache-first by a service ' +\n                        'worker. To learn more, visit https://bit.ly/CRA-PWA'\n                    );\n                });\n            } else {\n                // Is not localhost. Just register service worker\n                registerValidSW(swUrl, config);\n            }\n        });\n    }\n}\n\nfunction registerValidSW(swUrl, config) {\n    navigator.serviceWorker\n        .register(swUrl)\n        .then(registration => {\n            registration.onupdatefound = () => {\n                const installingWorker = registration.installing;\n                if (installingWorker == null) {\n                    return;\n                }\n                installingWorker.onstatechange = () => {\n                    if (installingWorker.state === 'installed') {\n                        if (navigator.serviceWorker.controller) {\n                            // At this point, the updated precached content has been fetched,\n                            // but the previous service worker will still serve the older\n                            // content until all client tabs are closed.\n                            console.log(\n                                'New content is available and will be used when all ' +\n                                'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n                            );\n\n                            // Execute callback\n                            if (config && config.onUpdate) {\n                                config.onUpdate(registration);\n                            }\n                        } else {\n                            // At this point, everything has been precached.\n                            // It's the perfect time to display a\n                            // \"Content is cached for offline use.\" message.\n                            console.log('Content is cached for offline use.');\n\n                            // Execute callback\n                            if (config && config.onSuccess) {\n                                config.onSuccess(registration);\n                            }\n                        }\n                    }\n                };\n            };\n        })\n        .catch(error => {\n            console.error('Error during service worker registration:', error);\n        });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n    // Check if the service worker can be found. If it can't reload the page.\n    fetch(swUrl)\n        .then(response => {\n            // Ensure service worker exists, and that we really are getting a JS file.\n            const contentType = response.headers.get('content-type');\n            if (\n                response.status === 404 ||\n                (contentType !== null && contentType.indexOf('javascript') === -1)\n            ) {\n                // No service worker found. Probably a different app. Reload the page.\n                navigator.serviceWorker.ready.then(registration => {\n                    registration.unregister().then(() => {\n                        window.location.reload();\n                    });\n                });\n            } else {\n                // Service worker found. Proceed as normal.\n                registerValidSW(swUrl, config);\n            }\n        })\n        .catch(() => {\n            console.log(\n                'No internet connection found. App is running in offline mode.'\n            );\n        });\n}\n\nexport function unregister() {\n    if ('serviceWorker' in navigator) {\n        navigator.serviceWorker.ready.then(registration => {\n            registration.unregister();\n        });\n    }\n}","import React, { useEffect } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport { App } from \"./App\";\nimport * as registerServiceWorker from \"./registerServiceWorker\";\nimport swal from \"sweetalert\"\n\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"./assets/theme/main.scss\";\nimport { Provider } from \"react-redux\";\nimport store from \"./store/configureStore\";\nimport \"./extensions/string.extension\";\n\nconst GTM_ID = process.env.REACT_APP_GTM;\n\nconst loadGTM = () => {\n  if (!window.gtmLoaded && GTM_ID) {\n    const script = document.createElement(\"script\");\n    script.async = true;\n    script.src = `https://www.googletagmanager.com/gtm.js?id=${GTM_ID}`;\n    document.head.appendChild(script);\n    window.gtmLoaded = true;\n    console.log(\"Google Tag Manager cargado dinámicamente\");\n  }\n};\n\nconst RootComponent = () => {\n  useEffect(() => {\n    loadGTM();\n  }, []);\n\n  return (\n    <Provider store={store}>\n      <Router>\n        <App />\n      </Router>\n    </Provider>\n  );\n};\n\nReactDOM.render(<RootComponent />, document.getElementById(\"root\"));\n\nregisterServiceWorker.register({\n  onUpdate: (registration) => {\n    swal({ text: \"Actualización disponible\", icon: \"info\" })\n    .then(() => {\n      if (registration && registration.waiting) {\n        registration.waiting.postMessage({ type: \"SKIP_WAITING\" });\n      }\n  \n      if (\"caches\" in window) {\n        caches.keys().then((names) => {\n          // Delete all the cache files\n          names.forEach((name) => {\n            caches.delete(name);\n          });\n        });\n      }\n  \n      window.location.reload(true);\n    })\n  },\n});\n","module.exports = __webpack_public_path__ + \"static/media/R_C.b0541133.png\";","module.exports = __webpack_public_path__ + \"static/media/pdf.ef815cb7.png\";","module.exports = __webpack_public_path__ + \"static/media/red-pay-logo.d781f20b.png\";","module.exports = __webpack_public_path__ + \"static/media/ico_recompensas.91f6f5c4.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/imgInfografia.67898899.jpg\";","module.exports = __webpack_public_path__ + \"static/media/video-yt.b3d5e982.jpg\";","module.exports = __webpack_public_path__ + \"static/media/ico_ticket.be4a5354.svg\";","module.exports = __webpack_public_path__ + \"static/media/contact_us.8fdb9220.jpg\";","module.exports = __webpack_public_path__ + \"static/media/banner-bolsatrabajo.33877d36.png\";","module.exports = __webpack_public_path__ + \"static/media/red-pay.d6193784.png\";","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/chrome.fc7f0dfe.png\";","module.exports = __webpack_public_path__ + \"static/media/bglogin.1ad23c02.svg\";","module.exports = __webpack_public_path__ + \"static/media/scr.d29c27e6.gif\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/pmusic01.1eac8179.png\";","module.exports = __webpack_public_path__ + \"static/media/pmusic01.e302affe.gif\";","module.exports = __webpack_public_path__ + \"static/media/pmusic02.be8e6a2d.png\";","module.exports = __webpack_public_path__ + \"static/media/pmusic02.c161f123.gif\";","module.exports = __webpack_public_path__ + \"static/media/pmusic03.d78949bb.png\";","module.exports = __webpack_public_path__ + \"static/media/pmusic03.3cf3979d.gif\";","module.exports = __webpack_public_path__ + \"static/media/rewards-01.7aff946d.png\";","module.exports = __webpack_public_path__ + \"static/media/rewards-02.74667c73.png\";","module.exports = __webpack_public_path__ + \"static/media/rewards-03.5c5a971a.png\";","module.exports = __webpack_public_path__ + \"static/media/rewards-04.c24bb9d5.png\";","module.exports = __webpack_public_path__ + \"static/media/EMPRENDEDOR01.289bb209.png\";","module.exports = __webpack_public_path__ + \"static/media/EMPRENDEDOR02.a8ae2960.png\";","module.exports = __webpack_public_path__ + \"static/media/EMPRENDEDOR03.cb86f200.png\";","module.exports = __webpack_public_path__ + \"static/media/imgBg_register.d1642d78.png\";","module.exports = __webpack_public_path__ + \"static/media/bg-section.c6907105.jpg\";","module.exports = __webpack_public_path__ + \"static/media/banner-beneficios.7c28d43e.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/banner-music.f76b8aee.jpg\";","module.exports = __webpack_public_path__ + \"static/media/banner-grupos.b2a92175.png\";","module.exports = __webpack_public_path__ + \"static/media/banner-rewards.6cf7436a.png\";","module.exports = __webpack_public_path__ + \"static/media/excel.1771a05f.png\";","module.exports = __webpack_public_path__ + \"static/media/word.581e353b.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/palomitas.daede4ea.png\";","module.exports = __webpack_public_path__ + \"static/media/banner_help.d03bb80c.png\";","module.exports = __webpack_public_path__ + \"static/media/bg_pridetalks.f7dec56b.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/cheque.c7f51c71.png\";","module.exports = __webpack_public_path__ + \"static/media/bg_package.ee731831.png\";","module.exports = __webpack_public_path__ + \"static/media/bg_package_lt.d6bdbcca.png\";"],"sourceRoot":""}