{"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 "Agregar al Inicio"\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\">×</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\">• {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}§ionId=${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\">«</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\">»</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\">«</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\">»</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\">«</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\">»</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\">«</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\">»</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,iVBORw0KGgoAAAANSUhEUgAAAKIAAAB1CAYAAADNyTqMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5gcGFQk6lqHSkwAAFxtJREFUeJztnXmQHUd9xz89M+/Ye6WVJeuWLFmWZQtjG2xQbGOMwQjK3BDAdjgqoXJUKKooKkmRP0mRqiQVIFVQQOEcJpACAhiIsTnscNj4wLFBNj4ko1s+JK20Wu3xjpnOH98ez9vVSlpJ+960YL5VU2/37ez0b6a//evfNd3GWkuBAnkjyFuAAgWgIGIBT1AQsYAXKIhYwAsURCzgBQoiFvACBRELeIGCiAW8QEHEAl6gIGIBL1AQsYAXKIhYwAsURCzgBaJON3jALGvXpY07IqAPWAwsAVYC64ALgOXAOUAFsMAw8DywHXgC2ArsBZ4FDgA1IHHnHr/hLoiutZSvMZhFs5IzAErAPCfnUuA8J+M6YBkw4O6lDhx2cj0DPAVsA/YBzwEHgYaTsW2lVNUP7GnXpYEciDjHMKhDq8AgcCnwZuBlQC+6vxJQdkcJCN3/4f5nOXAJ8AbU6U1EwG3AncDPgD3ABDAJxKchZ9Aiw0JgE/AW4GInU3qUW34OnJwWWIAG1MudjA0n5zjwJPB14D5E2Jo7JzkNOXPD2UrEAJFvAHXqq5A2WeKOAUS4kyFEnT4dFmmpC4F3A7uBh4F7EEHHEBFOpoEiJ+dS4Con62r3+2KkuWeL8gzfJe5aG5AW3w78L3A/0piTTk7vcbYRMQC60NR1KXAl0hJr0TRXItN2ZwID9CDSrAA2Ape5tu5FpHwaTYvTNWSreZBqsU1I665w30dzJGcA9LtjrWvjpcCjwC+AXwI7gFE8J+TZQkSDCLgIkeLtSAOuAoZo732EiDy9SItdjLTiA8C3kOYZRYQMyAh4FdLU693vfbTXOQzRYBxAz+VS4HFkWvwc2IU0uZdT9tlAxFS7bABuRPbfHyCHYy60ymxhEBkvBM5HhFxJ1tEvODkvB24gMxcqHZQRRPZ5yP49Hz23i4EfAA8hBy11bryB70QsIZvvSuRMvBFpwE4ScCZESOvcAlyCYSnYLWCWAZvRQMlbztS8eCnyyM9DGv2nwE5kP3pDRp+JWELT2hvccQmyhfImYQoDVDFcHnY1h6JSc7ex4RBJtJrA9OCXnAPAdWhQLwa+i7zt8RzlmgJfiWjQlPJHwJuQ9vFPVgNhfzOsrBpfU+6pr2EkIql2kfSXsYEvPHwRVbLBvAj4JjIpJvMUKoV/nSuZLgLej0i4HB/lNJZoXkz1/DFKyycIyzEcbGCSBBJLMlDBht6R0aBB/XakJZsoCtDIUSbAvw4uIZvmfcDrUYxspjhfrjCBJRxo0rVhjNKSSYKqi+A0EoLD9SzFMVjxUTMGKEB+LSJgHTkxuZLRJyKWUCzs3cg7Xoxf8gFgjCXojqmuG6O8fAJTSqZag42YYKQOQBwYbH8Z/CTjIuB6FHZKEBlPJ2s0J/CloyM0Bd+IHJMl+CPbizDGEvTGVFZOUlk5iSnPEJKzYOoxweEaRAE2DLC9ERjvyBgC5yIvP0a59R3kFPj2ofomQIUI1yHbZQ0ekhADpjuhsnySyroxTPUEysOCaSSEw5OEBycxkzH4ubRLiHLfNwLvQPHHXDjhAxG7kV34FuTVeWcTApjIUlpQp7xqgrCnefLgjAVqMeHwBOFIHRN7mdCAjIzvQ+nI7jyEyJuIIbJVXkOWLfESYX+T8tIa4WBj9k/NgjnaIBiuYcZjSLzUiqA7Wgv8JcoGdXxGypuIPWgUvgKFE7yECS3RvDrROTVMdIpksmAOTxIcmMTUvdWKIPJtAl6HbMeOIk8iRmj0vRO4An8yEVNgjKW8fJLqugnC/vi0pDSNhOBIjWC0DrG3WhGUS78Z5ctnKjtrG/IkYi8qDEiLQ72EqShmGPQ2ITh9EgXpFO23VgxQxGITCnx3tOE8ECKbZBOqLfQTBqKhOtHCuuKFZ4LYYsYbmKPea8VuZC6dRwf5kRcRS8DVKJ/clZMMJ4WpJEQLGoQDTUx45uQxE03CQzVMI7e48WwQISXxEuRNdwR5EbEHFW4uwlPbECDsjYkGGwSVZE6kNE0rL/pow6MCrGMQAPOBV6Lay9m8cjEnjXYaBmVRViE70U+EEA7WCfobZ2QbToG1mFqMGW34HMoBVeqkBbU9nWgwDyKGKIuynA6NttNBUI0pDTUIexPMXBERMLHFjDd9J2KICiPWI+el7ciDiN0ov+nvtGwgHGwQzmvCHNiGU5BYqCdQ99pOBNnu65HT0nbkQcTzUD7ZXyclhKgvJuxtzqk2BMBagkZM6Cp0PEYFmU9rUTFtW5EHES8np3zmrGDABAlBJT62xGuumqjHhIcmfZ+eA5TtWoEUR9sb6zQ20uGo/SkjsJiSnXttmCKxmImmqrn9RoRCOBe0u6E8iHgRHhc3YBAJy7Z9T8eiCsCG9TmMA3JazkGvpbYVeRBxHR5rRGMgqFpMtT3T8ouwYJpnhUb8nSXiIjwO24DFVGNMpd1erQX/iRiiF/VXtruhPIhYxtewDWhqjhKCUy33OlVYPF+NBsiWUDn5YntniDxK8v0lYYoQKNm2S2r89pohW3Oo7fDv3ZC8YcAEHXjXyeKqcCwej810/cm22xB5V2j7CWN1FOgYCiJOhwWbGGzS7nkZCNPVlr2FRS/gT7S7oTyI6L+qaQJN03ZJPVwFYjosWhvnSLsbyoOIE3i6WCQgjdgIsI0OaET/LfQYOIoWvG8r8iDi8+S4tMXJYbC1kKTW7lCngch7yyhGC3vuaHdDeTyJZ/Bg9anjwVpIJg12Mmjv1GzAnh1EPIj6rK3I40n8Bm3B4Ccs2KbB1k37DAiDi1Uaz32VF9fE2druhvIg4v/hMxEBGxvZie3ynAOD7Y6wgfcasYm2zfhNuxvK40n8Ck9WKZ0RFkgCknqAbbRneralkHiw6uNyda2wyFHZi3ZRaCvyIOJOpOq9Wb95OmwM8WhIfDSae61oDEk5IOn3tgApRQ05Kb9FhGwr8iDiKPAdtI+cnzFFC83DJeJDEXaO44k2MNhyiK14XICkOx5D+7Q83YkG8yBijLbp2ovHYZxkIqRxsEQyEWDt3GlFGxpsV3g2TMuHyTbJbDvyyqzsQ2q/7Sr/tBFDPFImGSnBXE3PxkA1xPaVfE+uTqLdWh+nQyZUXo9jHHnPL+TU/qwQHwlpDpdIanPjtNhSQNJbJukr+7iUcYp0++B7gS10aNbKi4gNtK3rVjwO5dh6QHO4RHwkxMZzQJxqiB0sQ8lr+7CJHMrH6KCiyIuIMSLhL5AN4q/TcrBM84WyQjlngtDFDntKrurGW4wBj6AtdztWE5CnpTIK3IVu2tuieTtpiIedrXgGWjHpKxEPVUmqXmvDBO1i+iM6EDtsRZ5EbKLQwHcRGb3UitYa6nsrTP62Snz09GxFGxmS3jK218s9V1oxjrZGe5QOm0x5+25jyFb8OQoXeAkbG5qHSjT2VxRXPBUEYOdVSIYqJOW8H/cJkW6HdieqkCqhF91+Z5ela0WMQjl3on2PvXVc4pES9d1dNA+WT8lysj1lkqGqbEN/PeUEzU6fdp/L0S4Pr6YDy41A/kQEFcpuAb6PYlde2ou2aWgeKFHf1UUyEZ18ijZAOSCeVyHur6jky08eJqjU66vAL5Ht3kAacR4dWh/RhxrhBJUa/RitydeFVgyL8KnrLNiJgPq+KqacUF03RtB1nF0GjAobkvlV4gVVbDX0VRs2UYjmTuDryDyK3Xd1RMKRTgjiAxFBD2QHMpT70VZoy/BsaRJrDcloQG17F6acUFkzTlCetjSJ04TJYIX43G6fp+QYlXh9B/gy8pLT4PU4HS5K8WFqTtFA9slXUVjnOTys5LaJITkaMrm1m/reql4paJ2mI1XWJOd2u1SelyRMp+OfAf+KpuRc8/4+ERGkGR9DD+e7wG48JWM8ElF7opfG7irJhHMsSwHJQJl4UQ9JX8nXt/QSYD9wD3Abss9zt8t9mZpb0UB56DqyWd6EltD1a1Mga2gcLGGf7CWeDKmsq8O5IcmiLpK+so+710PmHd+JBvp96DnnDh+JCJomHkce9TDaJu0lyJHxp4ctNA9FSWK799ll5T3hYDhEf7SCwMv1H9MEwn8B30I2oTeV8r4SEfTgfose2n60ofh1yLP2waSwwDiWLbYW3tVsBo8FxiwzAdejnZt8kTMBDgEPA/8D3I3eyvOGhOA3EUFk3A3cQVa2/nIUaM1T9tTjvB24F8uDYF5A+8Y8DbzWHRvIT4NblCB4EtmD96BU6n6OMx0frcGn7w75+ObO+y2+ExFExmHk2e0C7kexrfUoA9BH5zTPJCLgVuBBFPZ4HhX4NlHK8udOzp3A9WiF3KV0zqywyKTZg8ybH7tjj/t+Rpb98W0RzRge22fYfsBw4WLLR6/vHCGNtZ2tNThgzmgPyAB16Dq0x/PL0O5Iy9HKphXmlpQWOU9jKOj+FCLgA2T1ek3TBdGroXwNmIUvvrU8Dy35uwltA3wBsBjFSduxWGkdZUX2tsh5v/t5mBOEZ265NeKR3VPF6anAqqGMG7fft2OOxZ2KjhPxuqWrZvz+1eOWPzs86xEYoW26hlAnvwKRc6U75mJfkFT77XTHr5CXuQ1pwDougjiNiCnS1W260RYRV6CBsxrtX7KKM1/UPh0oO5yM29EgeRCZNONIUx+3k2/6UsSv9xpORoNtO7afoagnRseJuHbV6hm/r1joTuDm0YSbRmZNyHQhyQqaoq8AbgIuQyQotRwRx6YN0/X9m+6ou88GmspuR8H1fWhaqzODZjkOEVsRIC1YRhsuXgN8CGnIVL5yi4yhkzOVNWmRs+GOJrIBDwCfIatgqrm/n7Q046YvRWzZa2a13cvvDRFThGS7jn3iQMw146dUJByiqXsB2kNuJdJGK4BzkQZt3WwoXWToALLrtiNN8hwi34g754QPaRZEnHK6k7OKbMdzUTrzPCfnIkTWKiJlgjTbMDIFdiENmMq5F2nodPnZWeHmWyN+tefkmjDF7x0RZ8IXnmuyvp7JWT65yAHq8GDaz9NXxkyvlLQcNv2MDXYm3dy6vHbdwO6S4abFEVestnzuvU3CYNYLfZ2KnOkxk6wzIk6O3bjgY/8dcveTp25GF0ScAd/fo6xfYGGgTW9VTBj49LyQb/cd22lf3ddgMBEJ37z02ITPGzYm/PUNUyncW4FyBCMT+jlsg58fJ7p+iju2BPz9XXNT11oQ8QRY0rR89vmYwdjyQiQF0pdYAgsjoWEotvScgKgxsLek/6smsDDWsxgN4AuDIV+fgYSni49vjtm0xvKRr4V87HUJSwctK+bbFwtzGjHsO6xfusuWc/pmvs7zRwyTDVgyaCmFsGs4m173HjZ86MunTbzULp3RFCmIeBKsbljeMZrwD/PVAa8bS+i28O3egA+OJFx9AhtzNIQPL1QodUPd8rGD0mI/7An4Sn8AM0/jc4bbPtik7Hjz7IjhI1/TL1esTvjo9TPL/Yk7QrbsNXzqXTGLByy33BrNxY67AQovlZD9Ocq0+y2ImC960Q6d6TrS3lUCzRGqwN8hJ+mfUYx0ykhoNxF9yIWeCma7DP+pLNd/onM3oHDQtYiQcxWEPt51DKcm+2zbOlF7IO/8apSWHJrj9mcFH1J8aSwwQvaJQSPUoJhYDU0TZRR6CZGGGufYmF6IYopV93u6cHzozk2D0GmwuUpWBd5w1222yLQBeAvKUDxBFqNLZQIN5oo7WmWOW/5eYmqnl51cR9xn4GTpcn9vuPurk2mm0P1fazt1912aV7aurdD9nGai0kXZ0+dbdu0F7hq5v2ztAxGryD5Zg/K2XaiwoYKKNh9ED+sipJkqyI75Hsp8NMge7mLgSrQndFrXeAjF5va7a9Vcm+chDbAIddouVKHylJNho7vWQkTIze4a+8jeOAyRBnkFSjWWUZFBmtlooNTjRSjgXncyno9ilJ9Hg2WBu7cNyBwYRgUKD7k2S07Oy1w7ESqueBiVx9VRUUPdyb0MpSXnufN3o3zzPifPRnetfnff95Lz7OgDEXuBq1DN4WFEkivJiPhTpB2uBF6FOnsPSpF9GREnBF4KvBER5mIyIh5GW73ei4oAIkTANwM3oI4BBYbvAr6COvQPgdcjkswH1iLS3I8KMJqIOG8jq7SpICLegV5G+jUi0I3AJa6dNNC+BbjV/f1mJ88FaBAcQunEGPgBcGGLvBvJiPiQu+4+d69HUancDWhwDbprfs+d24sKMW5A6cY+d98/IuddY30gYqpV0j2BH0EEG0KEuhlNYTuBLyLtcDXwXqQ5jqIH/i7UWQ3gh4g0K1DRQRfKmoRIC7wPaaDvu+8D1Enp1huHnBxLEcFfQKQ6hIgfuzb/HNVJPgn8h5N/HSJw4OSuouzJZe76vyQra2sCH3D3eBDVXh5Eg63urnEh8H5UqQ7StkfQ4HobIlOaJgzc92vR4H0U+AkaPJPuGrc42X/j7qvPfT+PDr2xNxN8ICJk8aun0fsqD6Ep7P3AW1EK7laUTy0jAn4ATUsPIi1xLeq821FHTyASvRO4nMxGK6GpK0JT209QuKKMptvnUKd9A2mVcxAJ/x1NY6ltegnSdKFr7x53/iuB9yAt+SginHHXfAj4nLtOgDTj25Ht+0VUuLofkbcbDbLXIGInaOD80D2PlWjgvY1jnYsJ91y+hIo0xpAGvMrd591IS+529/dWNLBzW/bFFyKCNNlTqLPS/OlORJKdaFTvQzI/hLzZfjRtbkBT3r2osx5AHbcHPehVZA+5hipp1qNpagnSBCNIsw0jjXMAaae0vOpZslVuB5CGm486fSPSqAZNcQNoIK10/2PcdbchDXwQaaLXIq27zcn+JJkmDN05y9w17wG+jTT1BBq0R5C5Mp1ANffMnkbEtqhUbjWqpfwmGtRjiPSHEOFze8XBJyKm6zan3l3dHTX3XavXN+p+DtA99LjP/YgwaaJrP5mGSzvrCHpvI90Uew0idD/qpAgZ9qnH3Zrjjcm88AEyL30ZmaceogGwm6lbh9Xd/aWVMQYROXLfHyHzfNNcMu76kbuPdGCmz+cZ97/TEZN51el1utzxPKp0P0JWcfSE+33BDNfqCHwiIkytIJme6LfTzks/a0jDjCM7Z4isamUQeb2t1dF15Cj8E3rwQ8im2oy89WeQ4d+6I2fojrQgoYnIlpZl3Yc0VYMszFJDGn5w2r2kqCPtOIm04jKy3RbSawSIaHV3H0uQXTeONPBy9znTEtDTteQhdwwim3Wnu3YF2dLzyNFz9o2Ip4OjaKreiBye16NObCLH4SqmPuQu5Ow0EIH3unMvQYSokHmPdXfeUlTruAh13lbkdGwjI0MTaZVeZN89i0yJ42SNmXTX+LWTfbNrO7URI0SWJxCh1yN7cAEi1BI0tc9ndps2bnXX2uiu04/Mj0Gyl9JG3blp/WQaZ2x7RskXIqYFqqdSS5NqyqMoLLMIeYQfQo5M+tJ4GrhtuP+ZD3wYxRGH3TGAOmIfmTcJmV14HfK+x5F9+RfuvC8Af4rs1c2IXH2urf8kW+wyndZbtVSCCPQZ4G+Bd7ij6c7dDfwL8qQHgT9BTtB7yILlrcWyM5W0teJxFJ5agYL0byVbbGly2nXKyGTpQ9P4s7QZPqT4EjQNjrjP2XpuNbLsw3PIq/0k0h6LkZPyMDLMH0GdnmYzbkPa4HykMdehafKzqOPT5fEeQ523C2nVZe5zIeq8fwP+Ck31y4FL3d8fRvHP1A4bO879NZD3+jfIw66iAVVFBNjuZPkG8I/uPnrQYNqBzIsHyMwE657JESdfKxlr7t4+iSIFaQJgAvgU2nIkfdd5EA28NLbZdnS86KFAgZngg0YsUKAgYgE/UBCxgBcoiFjACxRELOAFCiIW8AIFEQt4gYKIBbxAQcQCXqAgYgEvUBCxgBcoiFjACxRELOAFCiIW8AIFEQt4gYKIBbxAQcQCXuD/AcEYDFNwXqtEAAAAAElFTkSuQmCC\"","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":""}