If you are interested in learning more about the Living Wage please contact The Living Wage Foundation or visit www.livingwage.org.uk
The Living Wage Foundation
Citizens UK
112 Cavell Street
London E1 2JA
+44 (0) 20 7043 9882
info@livingwage.org.uk


{"version":3,"sources":["scripts/app.js"],"names":["angular","module","PopupMessageController","$uibModalInstance","close","vm","this","$inject","controller","ClientCancelledMessageController","CommonService","ClientPortalService","$rootScope","notification","active","Date","contactedDate","isOver24","feeCancel","isLessThan24","isLessThan12","getBooking","bookingId","then","data","timeCancell","result","checkDate","startDate","endDate","ClientCancelledPopupBeforePaymentMessageController","CandidateCancelledMessageController","AmendRefusedPopupMessageController","SignUpStaffRequirementsController","$state","$localStorage","SignupClientService","CONFIG","dataList","activate","getTypeOfWork","getEmploymentStatuses","getKeySkills","getWorkExperiences","employmentStatuses","items","getWorkTypes","typeOfWorks","keySkills","getKeyExperiences","workExperiences","updateClient","loading","userClient","id","userProfile","companyProfile","go","routes","client","signup","candidates","error","emailMessage","exceptionMessage","copy","SignUpHomeController","getVoucher","voucher","console","log","findMeStaff","jobSearchHomeForm","$valid","searchFilter","timePickerDefault","date","moment","toDate","dateTimeFilters","set","startTime","endTime","SignUpFinishController","$uibModal","ngToast","accessPortal","isEmailConfirmed","portal","welcomeBack","sendClientConfirmEmailViaPhoneNumber","open","templateUrl","$scope","login","size","receivedEmail","sendClientConfirmEmail","success","content","dismissButton","dismissButtonHtml","noSendEmail","warning","home","hasBooking","params","type","SignUpFindMeStaffController","equals","userFindCandidate","goHome","staffList","merge","pageSize","pageNo","findStaffs","length","candidatesNoItems","bookStaff","clientProfile","SignUpClientConfirmEmailController","$stateParams","Auth","confirmEmail","code","res","confirmSuccess","confirmResponse","redirectLink","logout","isHasLogin","SignUpClientProfileController","UserRoleService","getNatureOfBusiness","getClientRole","getRoleByName","userRoles","clientRole","onCreateOrUpdateClient","clientProfileForm","roleId","isActive","updateClientUserProfile","staffRequirements","createClient","user","userNameOrEmailAddress","emailAddress","password","isSignup","loginWithoutConfirm","getBusinessTypes","natureOfBusiness","isAcceptedGDPR","SignUpCandidateController","finishRegistration","bookCandidateId","book","clientId","candidateIds","additionalCandidateIds","listAdditionalCandidateId","createBookings","finish","errorMessage","onCandidateChanged","cadidates","listCandidate","arr","forEach","candidate","push","getlistAdditionalCandidateId","listselectedCandidate","item","isMainCandidate","check","completeWithoutCreateBooking","ReportIssueMessageModalController","booking","ok","cancel","dismiss","openTermCondition","openTermConditionModal","ReportIssueModalController","otherIssue","ReasonRefuseController","getReasons","reasons","name","isChecked","match","i","sync","bool","splice","ProfileModalController","profile","getProfileUser","getCandidateUserById","isPlay","link","rest","baseURILink","getDateOfWeek","d","formatDate","play","e","videoType","elem","element","currentTarget","parent","find","paused","muted","fadeOut","on","pause","fadeIn","FutureBookingClientController","checkTime","goToAmendBooking","amendBooking","EmploymentStatusController","CancelBookingConfirmController","cancelledBooking","bookingsInformation","feeAdmin","$window","openConfirmCancellationModal","openTermConditionUrl","href","common","termsConditions","acceptCancel","bookingDate","year","month","hour","minute","status","invoice","hadPayment","paidAmount","lbFee","isUnder24","candAmount","isUnder12","BookingHistoryClientController","goToReBooking","invoiceNo","reBooking","reload","HomePageClientController","goFindTheStaff","findTheStaff","goCompanyProfile","goBookingsInformation","goReportIssue","reportIssue","ReportIssueController","getClientRequestBookings","bookings","noReportIssue","goBackHomePage","openReportIssuePopup","openReportIssueModal","reportOtherIssueBooking","openReportIssueMessagePopup","openReportIssueMessageModal","ReBookingController","$filter","getBookingCandidate","checkCompareDate","amountBooking","amount","potentialCandidates","candidateId","candidateUser","err","message","reBookingDate","newDate","goToConfirmedBooking","format","timeFormat","dateFormat","goToHireCandidate","permanentRole","calculatorAmount","$watchGroup","newValues","oldValues","RatingStarClientController","ratingStar","getCandidateRateByClient","ratingStarList","ratingStarListOrigin","submitRatingStar","resultCompare","rateCandidate","PermanentRoleController","openCalendarPopup","calendarPopup","startDateOpened","permanentRoleSubmit","dateOptions","bootstrapDateFormat","permanentRoleForm","MakePaymentController","makePayment","getVATBooking","feeVAT","paidLBFee","voucherId","value","totalAmount","paidBooking","paymentForm","expirationYear","get","accept","stripeCustomer","errorPayment","ClientHowCommunicateController","updateClientUserContact","profileHowCommunicateForm","userClientTemp","communicate","isEmailAddress","isSecondEmailAddress","isTelephoneNumber","isMobileNumber","FindMeStaffController","findStaff","jobSearchPortalForm","contactStaff","JSON","parse","localStorage","getItem","ContactStaffController","contactCandidates","address","workTypeIds","keySkillIds","employmentStatusIds","keyExperienceIds","candidateType","Main","ContactCandidatesController","ConfirmedBookingController","confirmedBooking","goToMakePayment","onRedeemVoucher","redeemVoucherCode","CompanyProfileController","saveData","updateClientUserFull","showNewPolicySticky","requestDeleteAccount","goToHowCommunicate","howCommunicate","updateReceivingEmailStatus","dataReq","receivingEmailStatus","receivingEmail","BookingsInformationController","getClientPreviousBookings","PageNo","pagePreviousNo","PageSize","pagePreviousSize","dataPreviousBookings","previousBookings","totalPreviousBookingsCount","totalCount","noPreviousBookings","loadMorePreviousBookingCount","getClientUpcomingBookings","pageUpcomingNo","pageUpcomingSize","dataUpcomingBookings","upcomingBookings","totalUpcomingBookingsCount","noUpcomingBookings","loadMoreUpComingBookingCount","goToConfirmBooking","openProfilePopup","openProfileModal","loadMorePreviousBookings","concat","loadMoreUpComingBookings","openFutureBookingPopup","openFutureBookingModal","openBookingHistoryPopup","openBookingHistoryModal","bookingStatus","AmendBookingController","originAmendBooking","doerId","amendBookingDate","isSame","amentBooking","openCancelToolTipModal","openCancelBookingConfirmModal","SignUpUploadDeliveryDriverDocumentController","SignupCandidateService","$timeout","Upload","updateProofOfAddress","userCandidate","copyProofOfAddress","upload","url","baseURI","uploadFile","file","response","deliveryDriver","proofOfAddressUrl","updateDeliveryDriver","errorMsg","updateVehicle","copyOfVehicle","vehicleUrl","selectProofOfAddressImage","$files","imgSrc","URL","createObjectURL","isHasProofOfAddressImage","fileProofOfAddressUrl","selectVehicleImage","isHasVehicleImage","fileVehicleUrl","removeProofOfAddressFiles","removeProofOfAddress","removeVehicleFiles","removeVehicle","goUploadDBSCertificatePage","uploadDBSCertificate","SignUpUploadDBSCertificateController","updateDBSCertificate","copyDBSCertificate","dbsCertificateUrl","selectDBSCertificateImage","isHasDBSCertificateImage","fileDBSCertificateUrl","removeDBSCertificateFiles","removeDBSCertificate","userCandidateTemp","insuranceCode","SignUpStep9Controller","CandidatePortalService","goToPortal","sendCandidateConfirmEmailViaPhoneNumber","sendCandidateConfirmEmail","step1","SignUpStep8Controller","onCreateUserBillingInfo","step9","onSupportForSelfEmployed","supportForSelfEmployed","isMemberOfCommunity","isDeliveryDriver","modeOfTransport","back","step7","profileForm8","isSupportedFromCommunity","SignUpStep7Controller","checkOriginalContactUser","originalProfile","updateUserPassport","copyOfPassport","passportUrl","documentFile","split","pop","toLowerCase","documentPhotoFile","updateUserContact","step8","backProfileCandidate","step6","selectImageLast","pdfFileName","photoFile","showImgFile","showPdfFile","isHasLastImage","filePhotoUrl","selectImage","isHasImage","fileUrl","removePassportFiles","removeUserPassport","email2Message","alternativeDocumentation","profileForm7","croppedPassportDataUrl","pdfFileCurrent","SignUpStep6Controller","backUpdateProfile","step5","goUpdatePassort","goProfileInformation","profileInformation","goProfileAvailability","availability","goProfileUpload","uploadPhoto","SignUpStep5Controller","$sce","checkHasPhotoOrVideo","photoUrl","videoUrl","isImage","isHasVideo","isHasPhoto","documentVideoFile","uploadFiles","cropImageApi","resultImage","crop","files","isVideo","dataUrltoBlob","typeFile","checkTypeFile","onUpdateVideoOrPhoto","fileType","url_Thumbnail","selectFile","fileOnlyUpload","getApiFunction","api","filename","ext","updateUserPhoto","updateUserVideo","goNextStep","removeFiles","removeUserPhotoAndVideo","openVideoToolTipModal","index","resolve","backUpdateCandidateProfile","step4","text","trustAsHtml","myButtonLabels","buttonLabels","SignUpStep4Controller","User","backUpdateCandidate","step3","onUpdateCandidate","profileForm4","updateCandidate","$promise","resp","minHourlyRate","considerPermanentRoleOptions","considerPermanentRole","SignUpStep3Controller","getCandidateRole","onCreateOrUpdateCandidate","profileForm3","checkBODOverLimit","candidateRole","updateCandidateUserProfile","removeItem","createCandidate","opened","clearError","backRatingPage","step2","checkBODDate","BODDate","checkBOD","getTime","maxDate","resetCheckBOD","dateOfBirth","undefined","getFullYear","getMonth","getDate","SignUpStep2Controller","getNearClient","filterClient","clientLength","goCreateCandidate","SignUpStep1Controller","availableDayTimes","userDate","dayOfWeek","isoWeekday","isSelected","getDayWeek","selectDayOfWeek","num","day","diff","current","availableTemp","arrayObjectIndexOf","myArray","searchTerm","len","onChangeTimeTo","available","onChangeTimeFrom","findWorkYouWant","profileForm1","setItem","stringify","timePickerOptions","SignUpModeOfTransportController","getTransportationModes","transportationModes","uploadDeliveryDriverDocument","SignUpInsuranceCodeController","updateInsuranceCode","copyInsuranceCode","selectInsuranceCodeImage","isHasInsuranceCodeImage","fileInsuranceCodeUrl","removeInsuranceCodeFiles","removeInsuranceCode","goStep9","DocumentController","checkOriginalLink","documentUrl","fileDocumentUrl","originalLink","noDocumentation","noDocument","goUploadDocument","goAlternativeDocument","removeDocumentFiles","removeUserDocument","updateUserDocument","SignUpCandidateConfirmEmailController","SignUpCommunityInformationController","communityOrOtherUnionInfo","communityConfirmation","SignUpCommunityConfirmationController","isUnderstandCommunityRules","communityInformation","UnsuitableForCareCandidatelController","backToPortal","otherRefusedReason","refusedReasonIds","getListReasons","FutureBookingCandidatelController","confirmCancel","openConfirmCancelModal","ConfirmCancelController","CareQualificationsUploadCandidatelController","BookingHistoryCandidatelController","BookingDetailController","YunoQuizCandidateController","careCandidatesFactory","startYunoQuiz","suitableForCare","careCandidate","getCurrent","WorkfaceProfileController","goPaymentDetails","paymentDetails","uploadDocuments","goToDeliveryDriver","goToEmploymentRecord","employmentRecord","EmploymentRecords","Identifier","WheelBookingController","backHomePage","showTextMainCan","showTextAddCan","bookingRequests","HomePageCandidateController","goWorkfaceProfile","workfaceProfile","goCurrentStarRating","currentStarRating","goBookingsHistory","bookingsHistory","goCommunityTuPage","goEmploymentSupport","employmentSupport","goCarePathway","UploadPhotoController","documentImgFile","UploadPassportDocumentController","selectPhotoImageLast","photoFilePassport","showImgFilePassport","showPdfFilePassport","isHasLastPhotoImage","selectDocumentImageLast","photoFileDocument","showImgFileDocument","showPdfFileDocument","isHasLastDocumentImage","backToProfile","onUpdateAlternavtiveDoc","pdfFileCurrentPassport","pdfFileCurrentDocument","UploadDeliveryDriverDocumentController","UploadDBSCertificateController","SuitableForCareCandidateController","notForMe","whatsTheProcess","becomeEligible","becomeEligibleForCare","labourXchangeWebsite","LabourXchange","Website","Site","RatingStarCandidateController","getClientRateByCandidate","rateClient","ProfileInformationController","getValuesMostSearchByClient","valuesMostSearch","updateCandidates","profileForm","updateCandidateUserFull","PaymentDetailsController","onBackToProfile","onEarningToDate","createUserBillingInfo","paymentDetailForm","ModeOfTransportController","InsuranceCodeController","goAlreadyToGoAndEarnExtra","alreadyToGoAndEarnExtra","CandidateHowCommunicateController","updateCandidateUserContact","HelpUsToHelpYouCandidateController","GoodEmployer","BanksImproveMost","MostImportantQualities","WorseOrderingTakeaway","MostImportantQualitiesWork","BestEmployee","FriendsFamilyDescribeYou","ChooseFilmPreferance","WorstPartNewJob","OftenBored","WorstPartCookDinner","MachinesBetterHumans","personalInteractionScore","repetitiveTasksScore","saveCareCandidate","allQuestionsCompleted","proceedToCarePathway","checkAccessToCarePathway","findOutMore","backToHomepage","enums","Enums","Id","EmploymentSupportController","getListNewsPage","goEmploymentSupportNews","employmentSupportNews","calculateCommunityMembershipExpiry","communityMembershipExpiry","today","communityMembershipExpiryDate","expiresIn","duration","asDays","communityMembershipExpires","parseInt","getListPagesByPageType","filter","landingPages","listLandingResponse","contentColumns","pageType","newsPage","contentPageRows","typeName","pageTypes","routeConfig","EmploymentSupportNewsController","clickDisplayTitleNews","title","displayTitleNews","totalLanding","loadMoreLanding","loadMoreLandings","EmploymentRecordDocumentController","employmentRecordsFactory","documentsFactory","signaturePadFactory","uploadDBSCheckDocument","uploadDocument","document","DBSCheckDocument","saveEmploymentRecord","uploadedSignedContract","SignedContractDocument","clearSignature","initialise","clear","DigitalSignature","getEmploymentRecord","CurrentStarRatingController","getCurrentRating","getCandidateCurrentRating","currentRating","CancelBookingController","getBookingCancel","cancelBooking","cancelBookingByCandidate","BookingsHistoryController","getListBookings","loadMoreEarningsBookings","loadMoreEarningsBookingCount","pageEarningsNo","getCandidatePreviousBookings","pageEarningsSize","dataEarningsBookings","earningsHistories","totalEarningsBookingsCount","getCandidateUpcomingBookings","comingBookings","earningsTotalAmount","noEarningsHistory","noUpcomingHistory","cancelOneBooking","openBookingDetail","BookingRequestController","acceptBooking","acceptRequestBooking","wheelBooking","getListRequestBookings","listBookings","checkAmendBooking","can","isAmend","hasAmend","titleRequestBooking","noListBookings","refuseBooking","openReasonModal","removeByAttr","refuseRequestBookingWithReason","attr","hasOwnProperty","arguments","BecomeEligibleForCareCandidateController","step","changeButtonLabels","next","backButtonLabel","nextButtonLabel","openUnsuitableForCarePopup","openUnsuitableForCareModal","openCareQualificationsUploadPopup","openCareQualificationsUploadModal","eligibleForCareAnswers","ableToAssistMobility","travelToHomes","carryOutVarietyOfDuties","anyReasonUnsuitable","qualificationsInCare","highDependencyCareExperience","mediumDependencyCareExperience","AvailabilityController","checkDateSelected","getDayTimeMostSearchByClient","dayTimeMost","updateAvailability","AlreadyToGoAndEarnExtraController","goPortal","JobsController","JobService","getPublishedJobs","jobs","job","JobController","goToApplyHere","getJob","getJobByUrl","activeTab","validateFile","require","scope","attrs","ngModel","validImage","$setValidity","validFormats","bind","$apply","$render","$setViewValue","val","$parsers","lastIndexOf","substring","indexOf","directive","videoCustom","detectUtils","model","src","media","sources","poster","options","isMobile","$on","vid","bigPlayButton","hide","controlBar","show","restrict","template","postcodeAutocomplete","listenPlaceChange","geocoder","google","maps","Geocoder","autocomplete","places","Autocomplete","event","addListener","place","getPlace","lat","lng","latlng","LatLng","geocode","latLng","results","address_components","types","townName","long_name","town","countyName","county","country","postCode","getPostCode","shortAddressLine","getShortAddressLine","words","replace","x","postCodeSplit","short_name","abbrevName","addressLine","join","splitWords","str1","split_names","trim","charAt","j","k","componentRestrictions","$invalid","$watch","$modelValue","newValue","oldValue","blur","focus","frm","postcodeAutocompleteCustom","street","route","limitHtml","limit","changedString","String","suffix","substr","toggleSelectClickInput","$select","ToastMessageService","$http","openPopupMessageModal","modalInstance","controllerAs","openAmendRefusedPopupMessageModal","openCandidateCancelledPopupMessageModal","openClientCancelledPopupMessageModal","openClientCancelledPopupBeforePaymentMessageModal","closedNotification","req","method","closedNotifications","ids","factory","lxToastMessage","$interval","getNotifications","state","main","roleName","notifications","showNotifications","stop","selectedNotification","isClose","selectedAmendRefuseNotification","selectedCandidateCancelledNotification","selectedClientCancelledNotification","selectedClientCloseNotification","isShow","openNoResponsePopup","openAmendRefusedPopup","openCandidateCancelledPopup","openClientCancelledPopupBeforePayment","openClientCancelledPopup","closeNotification","bookingIds","promise","start","candidateNote","clientNote","clearInterval","toState","toParams","fromState","fromParams","$compile","$eval","compile","html","contents","signaturePad","formContainer","errorClass","disabled","attributes","resizeCanvas","ratio","Math","max","window","devicePixelRatio","width","canvas","offsetWidth","height","offsetHeight","getContext","scale","_signaturePad","ctx","image","Image","onload","drawImage","wrapper","getElementById","querySelector","watcher","SignaturePad","addEventListener","toDataURL","hasError","$submitted","disable","service","role","getByName","post","userService","$resource","action","dataListFactory","$q","$cacheFactory","httpCache","deferred","defer","getSkills","cache","newStartDate","newEndDate","newStartTime","newEndTime","getHours","getMinutes","confirm","resetPassword","resetPasswordWithToken","sendContact","landingPage","authService","signinWithoutConfirm","token","expireInSeconds","currentUser","reject","signin","self","getLocationFromUserAddress","getCurrentUser","setCurrentUser","userData","isAuthenticated","isAuthenticatedAsync","cb","isAuthorized","authorizedRoles","isArray","authInterceptor","$location","request","config","headers","Authorization","responseError","path","lxScrollTop","whtml","scroll","scrollTop","click","animate","input","min","profileController","buttonPlay","profileStarTooltip","bindToController","lxPdfViewer","pdfSrc","loadPdf","PDFJS","pdfjsLib","pdfJsViewer","pdfjsViewer","externalLinkTarget","LinkTarget","BLANK","disableStream","pdfLinkService","PDFLinkService","container","el","pdfViewer","PDFViewer","linkService","enhanceTextSelection","theViewer","docInitParams","pdfLoadingTask","getDocument","doc","setDocument","lxNav","checkAcceptedPolicy","isAdmin","isCandidate","isClient","isNavCollapsed","checked","hhtml","tabConfig","loginPage","goCandidatePage","goClientPage","homePage","goAdminPage","admin","goFAQPage","faq","goAboutPage","aboutUs","goToFacilitiesManagment","corporate","facilitiesManagement","goToHospitality","hospitality","goToFinalMileDelivery","finalMileDelivery","gotToWarehouse","warehouse","goToManufacturing","manufacturing","goToCare","care","goToCantBePigeonholed","cantBePigeonholed","toggleButton","activeMenu","onclick","stopPropagation","$","target","closest","isEmpty","obj","key","onClickYesStickyBtn","onClickNoStickyBtn","lxLoading","lxFooter","goContacUs","newHash","offset","top","dateFrom","dateTo","timeFrom","timeTo","confirmBooking","$element","changeMinAndMaxDates","getDefaultDate","fromDateOpened","toDateOpened","valueOf","dateToOptions","minDate","changeTimeFrom","minutes","timepicker","changeTimeTo","dateFromOptions","formatYear","startingDay","timePickerFromOptions","showOn","disableTimeRanges","minTime","maxTime","timePickerToOptions","ProfileCandidateController","pos","positionTemp1","positionTemp2","positionTemp3","page","candidatesDataLastFind","calculatePostion","position1","position2","position3","pre","noCandidateAll","candidatesDataFirstFind","extend","redAffix","$document","checkPosition","position","prop","positionTop","offsetTop","pinnedOffset","child","addClass","css","removeClass","resizeChild","c","children","ready","RecruitmentController","clickGoForIndividualsPage","recruitment","clickGoForBusinessPage","getListRecruitmentPage","recruitmentGuide","business","thumbnail","NewsController","news","HowItWorksController","$anchorScroll","clickGoForHowItToWorkForCandidatePage","hash","clickGoForHowItToWorkForClientPage","howItWorkCandidateVideo","howItWorkCandidatePhoto","howItWorkClientVideo","howItWorkClientPhoto","CorporateCotroller","goFindOutMore","create","update","routerConfig","$stateProvider","SignUpController","openEmploymentStatusModal","openReasonRefuseModal","cancelBookingByClient","getAcceptedBooking","refuseRequestBooking","getClientNotifications","ClientPortalController","ShowPhotoOrVideoController","AdminService","ShowPassportController","selectPassportImageLast","passportFile","isHasLastPassportImage","filePassportUrl","pdfFile","ShowInsuranceCodeController","ShowDocumentController","TestSenderController","sender","currentSender","copyOfEmailTemplate","onTestSender","testSenderSchedule","EditVoucherController","currentVoucher","resetCheckExpiry","checkExpiry","checkExpiryDate","expiryDate","checkExpiryOverLimit","checkIsExistedVoucher","form","resetErrorExistedVoucher","vouchers","expiry","onEditVoucher","updateVoucherByAdmin","EditSenderController","loadSendToVariables","loadSendFromVariables","loadSendFirstVariables","loadSendFrequencyVariables","getSendToVariables","sendToVariables","getSendFromVariables","sendFromVariables","getSendFirstVariables","sendFirstVariables","getSendFrequencyVariables","sendFrequencyVariables","emailTemplateUrl","onEditSender","updateSettingSenderSchedule","ShowEditLandingPageController","getPageTypes","getDefaultUrl","getLandingPageDefaultUrl","onSubmitLandingPage","createOrUpdateLandingPage","goToManageLandingPage","onDeleteLandingPage","deleteLandingPage","currentLandingPage","checkUrlExists","checkLandingPageUrlExists","resetErrorUrlExists","manageLandingPage","baseUrl","DeleteUserModal","deleteUser","DeleteSenderModal","deleteSender","DeleteJobModalController","deleteJob","deleteJobByAdmin","SMSSenderController","loadSMSSenders","getSMSSenders","smsSenders","onCreateSMSSender","smsSender","senderType","createSettingSenderSchedule","registerSMSSenderForm","$setUntouched","$setPristine","sortBy","propertyName","reverse","propertyNameExtend","backToAdminPage","openModalEditSender","v","toJson","showEditSenderModal","openModalDeleteSender","showDeleteSenderModal","isDeleted","candidatePageNo","candidatePageSize","clientPageNo","clientPageSize","distance","RegisterVoucherController","getVouchersByAdmin","totalUserCount","listVoucherResponse","loadMoreVoucherCount","loadMoreVoucher","onCreateVoucher","createVoucherByAdmin","registerVoucherForm","openModalEditVoucher","showEditVoucherModal","map","ReceivingEmailPageController","getAllUsersWantToStopReceivingEmail","listUsers","listUsersResponse","loadMoreUserCount","loadMoreUser","onSearchUser","search","receivingEmailStatusFilter","changeStatus","isAllowUserStopReceivingEmail","listReceivingEmailStatus","deleteUserPage","IsAccepted","IsRequested","IsAllowed","ManageBookingController","FileSaver","$log","getBookingsByAdmin","listBookingOrigin","listBooking","totalBookingCount","listBookingResponse","loadMoreBookingCount","loadMoreBooking","onSearchBooking","exportBookings","exportBookingsByAdmin","fileName","blob","Blob","saveAs","toggleFilterButton","isCollapsedFilter","isShowLoginLogOut","isShowStatus","LandingPagesController","getListLandings","getListPagesByAdmin","landingPageNo","landingPageSize","onCreateOrUpdateLandingPage","landingPageTemp","onCreateLandingPage","createLandingPage","onEditLandingPage","editLandingPage","openModalEditLandingPage","showEditLandingPageModal","imageUrl","removeLandingPageImage","copyImage","toolbarOptions","JobManagementController","getListjobs","getJobsByAdmin","jobNo","jobManagementize","totalJob","listJobResponse","loadMoreJob","loadMoreJobs","onCreateJob","createJob","onEditJob","editJob","openModalDeleteJob","showDeleteJobModal","ExportController","loadCandidates","loadClients","getCandidatesByAdmin","totalCandidate","listCandidateResponse","loadMoreCandidate","getClientsByAdmin","listClient","totalClient","listClientResponse","loadMoreClient","loadMoreCandidates","loadMoreClients","exportClients","exportClientsByAdmin","exportCandidates","exportCandidatesByAdmin","EmailSenderController","loadEmailSenders","getEmailSenders","emailSenders","selectFileLast","fileSrc","isHasTemplate","fileTemplateUrl","onCreateEmailSender","emailSender","registerEmailSenderForm","removeTemplateFiles","openModalTestEmailSender","showTestSenderModal","EditLandingPageController","getLandingPage","getLandingPageById","backToLandingPage","EditJobController","getJobById","validThrough","jobTemp","backToJobManagement","jobManagement","checkValidThroughDate","validThroughDate","checkValidThrough","checkValidThroughOverLimit","resetCheckValidThrough","goToJobManagement","updateJobByAdmin","checkJobUrlExists","generateUrl","DeleteUserPagesController","getAllUsersByAdmin","openModalDeleteUser","showDeleteUserModal","CreateLandingPageController","CreateJobController","createJobByAdmin","getJobDefaultUrl","AdminController","getUsersByAdmin","listPassport","listPassportResponse","candidateFilter","mergeUnique","arr1","arr2","userStatus","dateOpened","openTimePicker","viewPhotoOrVideo","$index","showPhotoOrVideoModal","viewPassport","showPassportModal","viewDocument","showDocumentModal","viewInsuranceCode","showInsuranceModal","updateCandidateUserStatus","onGetZegoUserStatus","getZegoUserStatus","zego","onLoginZego","loginZego","onLogoutZego","logoutZego","resendEmail","resendSMS","verifyEmail","updateCandidateVerifiedByAdmin","goToExportPage","goToRegisterVoucherPage","registerVoucher","goToSMSSenderPage","goToEmailSenderPage","goToManageBookingPage","manageBooking","goToDeleteUserPage","goToStopReceivingEmailPage","stopReceivingEmail","goToJobManagementPage","photo","isExist","isNotExist","passport","insurance","isPending","isIllegal","isLegal","isIncorrectIDFile","emailConfirmedStatus","isConfirmed","isNotConfirmed","timeStamp","listPassportOrigin","listUserStatus","getCandidateNotifications","getRefusedBooking","userId","getClientUserById","yunoQuiz","helpUsToHelpYou","CandidatePortalController","openPhotoToolTipModal","tempstaff","TempStaffController","goLookForWork","goLookForStaff","contact","sendEmail","ResetPasswordController","sendEmailResponse","confirmEmailResponse","resetSendEmail","resetConfirmEmail","LoginController","removeErrorText","loginUser","$broadcast","candidateLogin","clientLogin","adminLogin","loggedIn","root","abstract","HomeController","costEffectiveTempStaff","CostEffectiveTempStaffController","usersFactory","username","Api","v2","btoa","getAuth","$localStorageuser","Username","Password","signOut","Token","identifier","Result","uri","put","Content-Type","Filename","transformRequest","identity","careEmployer","searchCareCandidates","searchFilters","CorporateController","openStarRatingContent","privacyPolicy","livingWage","howItWorks","CommonController","delUser","delSender","responseType","LandingPageService","getLandingPageByUrl","LandingPageController","includes","runBlock","checkUserLogin","from","to","hasLogin","isAcceptedGoToPortal","checkAcceptedGoToPortal","isAcceptedGoToSignUp","checkAcceptedGoToSignUp","isAcceptedGoToAdmin","checkAcceptedGoToAdmin","preventDefault","noLogin","checkExpireInSeconds","checkUserLoginWithoutConfirm","wisepops","constant","run","_","getUserProfile","policy","rotateLeft","rotateRight","zoomIn","zoomOut","fit","acceptedReceivingEmail","requestedStopReceivingEmail","allowedUserStopReceivingEmail","disableTextInput","second","Additional","BestMatch","ownPage","label","export","$urlRouterProvider","$httpProvider","$locationProvider","$logProvider","ngIntlTelInputProvider","ngToastProvider","otherwise","interceptors","initialCountry","debugEnabled","configure","animation","horizontalPosition","verticalPosition","hashPrefix","html5Mode","$templateCache"],"mappings":"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","file":"scripts/app-a3ba82b4d2.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client', []);\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('PopupMessageController', PopupMessageController);\r\n\r\n /** @ngInject */\r\n function PopupMessageController($uibModalInstance) {\r\n var vm = this;\r\n vm.close = close;\r\n function close() {\r\n $uibModalInstance.close(true);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ClientCancelledMessageController', ClientCancelledMessageController);\r\n\r\n /** @ngInject */\r\n function ClientCancelledMessageController($uibModalInstance,CommonService,ClientPortalService, $rootScope, notification) {\r\n var vm = this;\r\n vm.close = close;\r\n vm.notification = notification;\r\n vm.checkDate = checkDate;\r\n vm.isOver24 = false;\r\n vm.isLessThan24 = false ;\r\n vm.isLessThan12 = false;\r\n active();\r\n function close() {\r\n $uibModalInstance.close(true);\r\n }\r\n\r\n function active() {\r\n if (new Date() - new Date(vm.notification.contactedDate) > ( 1000 * 60 * 60 * 24 )) {\r\n vm.isOver24 = true;\r\n vm.feeCancel = 10;\r\n } else {\r\n if (new Date() - new Date(vm.notification.contactedDate) > ( 1000 * 60 * 60 * 12 ) && new Date() - new Date(vm.notification.contactedDate) <= ( 1000 * 60 * 60 * 24 )) {\r\n vm.isLessThan24 = true;\r\n } else {\r\n vm.isLessThan12 = true;\r\n }\r\n }\r\n ClientPortalService.getBooking(vm.notification.bookingId).then(function(data){\r\n vm.timeCancell = data.data.result;\r\n })\r\n }\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ClientCancelledPopupBeforePaymentMessageController', ClientCancelledPopupBeforePaymentMessageController);\r\n\r\n /** @ngInject */\r\n function ClientCancelledPopupBeforePaymentMessageController($uibModalInstance,notification) {\r\n var vm = this;\r\n vm.close = close;\r\n vm.notification = notification;\r\n function close() {\r\n $uibModalInstance.close(true);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('CandidateCancelledMessageController', CandidateCancelledMessageController);\r\n\r\n /** @ngInject */\r\n function CandidateCancelledMessageController($uibModalInstance) {\r\n var vm = this;\r\n vm.close = close;\r\n function close() {\r\n $uibModalInstance.close(true);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('AmendRefusedPopupMessageController', AmendRefusedPopupMessageController);\r\n\r\n /** @ngInject */\r\n function AmendRefusedPopupMessageController($uibModalInstance) {\r\n var vm = this;\r\n vm.close = close;\r\n function close() {\r\n $uibModalInstance.close(true);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('SignUpStaffRequirementsController', SignUpStaffRequirementsController);\r\n\r\n /** @ngInject */\r\n function SignUpStaffRequirementsController($state, $localStorage, SignupClientService, CONFIG,$rootScope, dataList) {\r\n var vm = this;\r\n vm.userClient = $localStorage.userProfile ? angular.copy($localStorage.userProfile) : {};\r\n vm.updateClient = updateClient;\r\n activate();\r\n function activate() {\r\n getTypeOfWork();\r\n getEmploymentStatuses();\r\n getKeySkills();\r\n getWorkExperiences();\r\n }\r\n\r\n function getEmploymentStatuses() {\r\n dataList.getEmploymentStatuses().then(function (data) {\r\n vm.employmentStatuses = data.data.result.items;\r\n })\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n\r\n function getKeySkills() {\r\n dataList.getKeySkills().then(function (data) {\r\n vm.keySkills = data.data.result.items;\r\n })\r\n }\r\n\r\n function getWorkExperiences() {\r\n dataList.getKeyExperiences().then(function (data) {\r\n vm.workExperiences = data.data.result.items;\r\n })\r\n }\r\n\r\n function updateClient() {\r\n $rootScope.loading = true;\r\n vm.userClient.id = $localStorage.userProfile.id || vm.userClient.companyProfile.id;\r\n SignupClientService.updateClient(vm.userClient).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n $state.go(CONFIG.routes.client.signup.candidates);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n })\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('SignUpHomeController', SignUpHomeController);\r\n\r\n /** @ngInject */\r\n function SignUpHomeController($state, $localStorage, dataList, CONFIG, SignupClientService) {\r\n\r\n var vm = this;\r\n vm.jobSearchHomeForm = {};\r\n vm.userClient = $localStorage.searchFilter ? angular.copy($localStorage.searchFilter) : {};\r\n vm.timePickerDefault = CONFIG.timePickerDefault;\r\n var date = moment().toDate();\r\n vm.userClient.dateTimeFilters = [\r\n {\r\n startDate: date,\r\n endDate: moment(date).set('date', moment(date).date() + 7).toDate(),\r\n startTime: moment(vm.timePickerDefault.startTime),\r\n endTime: moment(vm.timePickerDefault.endTime)\r\n }\r\n ];\r\n\r\n vm.findMeStaff = findMeStaff;\r\n activate();\r\n getVoucher();\r\n function activate() {\r\n getTypeOfWork();\r\n }\r\n\r\n function getVoucher() {\r\n SignupClientService.getVoucher().then(function (data) {\r\n vm.voucher = data.data.result;\r\n }, function (error) {\r\n console.log(error)\r\n });\r\n }\r\n\r\n function findMeStaff() {\r\n if (vm.jobSearchHomeForm.$valid) {\r\n $localStorage.searchFilter = vm.userClient;\r\n $state.go(CONFIG.routes.client.signup.findMeStaff);\r\n }\r\n\r\n }\r\n\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('SignUpFinishController', SignUpFinishController);\r\n\r\n /** @ngInject */\r\n function SignUpFinishController($state,$uibModal, $localStorage,$rootScope,ClientPortalService,CONFIG, ngToast) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.client.signup.home);\r\n return;\r\n }\r\n var vm = this;\r\n vm.hasBooking = $state.params.type == 1 ? true : false;\r\n vm.accessPortal = accessPortal;\r\n vm.userClient = $localStorage.userProfile ? angular.copy($localStorage.userProfile) : {}\r\n vm.sendClientConfirmEmailViaPhoneNumber = sendClientConfirmEmailViaPhoneNumber;\r\n vm.receivedEmail = receivedEmail;\r\n function accessPortal() {\r\n if (vm.userClient.isEmailConfirmed) {\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n }\r\n function sendClientConfirmEmailViaPhoneNumber(){\r\n $rootScope.loading = true;\r\n ClientPortalService.sendClientConfirmEmailViaPhoneNumber(vm.userClient.id).then(function(){\r\n $rootScope.loading = false;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/common/confirmEmail.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n $state.go(CONFIG.routes.login)\r\n }\r\n },\r\n size :'md'\r\n });\r\n },function(error){\r\n $rootScope.loading = false;\r\n })\r\n }\r\n function receivedEmail(){\r\n $rootScope.loading = true;\r\n ClientPortalService.sendClientConfirmEmail(vm.userClient.id).then(function(){\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: '
Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/common/receivedEmail.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n $state.go(CONFIG.routes.login)\r\n }\r\n $scope.noSendEmail=function(){\r\n $rootScope.loading = true;\r\n ClientPortalService.sendClientConfirmEmail(vm.userClient.id).then(function(){\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n };\r\n },\r\n size :'md'\r\n });\r\n });\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('SignUpFindMeStaffController', SignUpFindMeStaffController);\r\n\r\n /** @ngInject */\r\n function SignUpFindMeStaffController($state, $rootScope, $localStorage,SignupClientService,CONFIG) {\r\n var vm = this;\r\n vm.userFindCandidate = $localStorage.searchFilter ? angular.copy($localStorage.searchFilter) : {};\r\n vm.goHome = goHome;\r\n vm.bookStaff = bookStaff;\r\n active();\r\n function active() {\r\n if (angular.equals({}, vm.userFindCandidate)) {\r\n goHome();\r\n } else {\r\n $rootScope.loading = true;\r\n vm.staffList = angular.copy(angular.merge(vm.userFindCandidate, {pageSize: 3, pageNo: 1}));\r\n SignupClientService.findStaffs(vm.staffList).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.candidates = data.data.result.items\r\n if(vm.candidates.length == 0){\r\n vm.candidatesNoItems = 'No candidate have matched your criterea, however new candidates are registering all the time'\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n console.log(error)\r\n });\r\n }\r\n\r\n }\r\n\r\n function goHome() {\r\n $state.go(CONFIG.routes.client.signup.home);\r\n }\r\n\r\n function bookStaff() {\r\n $state.go(CONFIG.routes.client.signup.clientProfile);\r\n }\r\n\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('SignUpClientConfirmEmailController', SignUpClientConfirmEmailController);\r\n\r\n /** @ngInject */\r\n function SignUpClientConfirmEmailController($stateParams, Auth, $rootScope, $state, CommonService, $localStorage, CONFIG) {\r\n var vm = this;\r\n vm.confirmResponse = null;\r\n vm.redirectLink = redirectLink;\r\n vm.goHome = goHome;\r\n active();\r\n\r\n function active() {\r\n $rootScope.loading = true;\r\n if ($localStorage.userProfile && $stateParams.id != $localStorage.userProfile.id) {\r\n delete $localStorage.userProfile;\r\n }\r\n CommonService.confirmEmail($stateParams.id, $stateParams.code).then(function (res) {\r\n $rootScope.loading = false;\r\n vm.confirmSuccess = 1;\r\n vm.confirmResponse = res.data;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.confirmSuccess = 2;\r\n });\r\n }\r\n\r\n function redirectLink() {\r\n if ($localStorage.userProfile) {\r\n $localStorage.userProfile.isEmailConfirmed = true;\r\n $state.go(CONFIG.routes.client.portal.welcomeBack)\r\n } else {\r\n Auth.logout();\r\n $rootScope.isHasLogin = true;\r\n $state.go(CONFIG.routes.login)\r\n }\r\n\r\n }\r\n\r\n function goHome() {\r\n $state.go(CONFIG.routes.home)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('SignUpClientProfileController', SignUpClientProfileController);\r\n\r\n /** @ngInject */\r\n function SignUpClientProfileController($state, CONFIG, $rootScope, $localStorage, dataList, UserRoleService, Auth, SignupClientService) {\r\n var vm = this;\r\n vm.clientProfileForm = [];\r\n vm.userClient = $localStorage.searchFilter ? angular.copy($localStorage.searchFilter) : {} ;\r\n\r\n if (!vm.userClient) {\r\n $state.go(CONFIG.routes.client.signup.home);\r\n }\r\n vm.clientRole = {};\r\n vm.onCreateOrUpdateClient = onCreateOrUpdateClient;\r\n vm.userClient.isAcceptedGDPR = true;\r\n active();\r\n function active() {\r\n getNatureOfBusiness();\r\n getClientRole();\r\n }\r\n\r\n function getClientRole() {\r\n UserRoleService.getRoleByName(CONFIG.userRoles.client).then(function (data) {\r\n vm.clientRole = data.data.result;\r\n })\r\n }\r\n\r\n function onCreateOrUpdateClient() {\r\n if (vm.clientProfileForm.$valid) {\r\n vm.userClient.roleId = vm.clientRole.id;\r\n vm.userClient.isActive = true;\r\n vm.userClient.id = vm.userClient.id || '';\r\n $rootScope.loading = true;\r\n if (!vm.userClient.id) {\r\n SignupClientService.createClient(vm.userClient).then(function (data) {\r\n var user = {\r\n userNameOrEmailAddress: vm.userClient.emailAddress,\r\n password: vm.userClient.password\r\n };\r\n $localStorage.userProfile = data.data;\r\n $localStorage.isSignup = true;\r\n Auth.loginWithoutConfirm(user).then(function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.signup.staffRequirements);\r\n }, function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.login)\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n })\r\n } else {\r\n SignupClientService.updateClientUserProfile(vm.userClient).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n $state.go(CONFIG.routes.client.signup.staffRequirements);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n })\r\n }\r\n }\r\n }\r\n\r\n function getNatureOfBusiness() {\r\n dataList.getBusinessTypes().then(function (data) {\r\n vm.natureOfBusiness = data.data.result.items;\r\n });\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('SignUpCandidateController', SignUpCandidateController);\r\n\r\n /** @ngInject */\r\n function SignUpCandidateController($state, $rootScope,CONFIG, $localStorage, SignupClientService) {\r\n if (!$localStorage.userProfile) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.signup.home);\r\n return;\r\n }\r\n var vm = this;\r\n vm.bookCandidateId = [];\r\n vm.listAdditionalCandidateId = [];\r\n vm.userClient = angular.copy($localStorage.userProfile);\r\n vm.finishRegistration = finishRegistration;\r\n vm.onCandidateChanged = onCandidateChanged;\r\n vm.completeWithoutCreateBooking = completeWithoutCreateBooking;\r\n function finishRegistration() {\r\n if (vm.bookCandidateId.length > 0) {\r\n $rootScope.loading = true;\r\n vm.book = {\r\n clientId: vm.userClient.id,\r\n candidateIds: vm.bookCandidateId,\r\n additionalCandidateIds: vm.listAdditionalCandidateId,\r\n dateTimeFilters: [{\r\n startDate : vm.userClient.dateTimeFilters[0].startDate,\r\n endDate : vm.userClient.dateTimeFilters[0].endDate,\r\n startTime : new Date(vm.userClient.dateTimeFilters[0].startTime),\r\n endTime : new Date(vm.userClient.dateTimeFilters[0].endTime),\r\n }]\r\n };\r\n SignupClientService.createBookings(vm.book).then(function (data) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.signup.finish,{type : 1});\r\n },function (error) {\r\n $rootScope.loading = false;\r\n vm.errorMessage = error.data.exceptionMessage;\r\n });\r\n } else {\r\n $state.go(CONFIG.routes.client.signup.finish,{type : 2});\r\n }\r\n }\r\n\r\n function onCandidateChanged(cadidates, listCandidate) {\r\n var arr = [];\r\n if (cadidates.length > 0) {\r\n angular.forEach(cadidates, function (data) {\r\n if (data.candidate)\r\n arr.push(data.candidate.id)\r\n });\r\n vm.bookCandidateId = arr;\r\n vm.listAdditionalCandidateId = getlistAdditionalCandidateId(listCandidate, arr);\r\n }\r\n }\r\n function getlistAdditionalCandidateId(listCandidate, listselectedCandidate) {\r\n var listAdditionalCandidateId = [];\r\n angular.forEach(listCandidate, function (item) {\r\n if (isMainCandidate(item, listselectedCandidate) == false) {\r\n if (listAdditionalCandidateId.length < 7) {\r\n listAdditionalCandidateId.push(item.id);\r\n } else {\r\n return listAdditionalCandidateId;\r\n }\r\n }\r\n })\r\n return listAdditionalCandidateId;\r\n }\r\n function isMainCandidate(candidate, candidates) {\r\n var check = false;\r\n angular.forEach(candidates, function (item) {\r\n if (item == candidate.id) {\r\n return check = true;\r\n }\r\n })\r\n return check;\r\n }\r\n function completeWithoutCreateBooking() {\r\n $state.go(CONFIG.routes.client.signup.finish,{type : 2});\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ReportIssueMessageModalController', ReportIssueMessageModalController);\r\n\r\n /** @ngInject */\r\n function ReportIssueMessageModalController($uibModalInstance, booking, ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.booking= booking;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n vm.openTermCondition = openTermCondition;\r\n function ok() {\r\n $uibModalInstance.close(true);\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n function openTermCondition() {\r\n ClientPortalService.openTermConditionModal();\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ReportIssueModalController', ReportIssueModalController);\r\n\r\n /** @ngInject */\r\n function ReportIssueModalController($uibModalInstance, booking) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.otherIssue = null;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n function ok() {\r\n if(vm.otherIssue)\r\n $uibModalInstance.close({otherIssue: vm.otherIssue});\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ReasonRefuseController', ReasonRefuseController);\r\n\r\n /** @ngInject */\r\n function ReasonRefuseController( $uibModalInstance) {\r\n\r\n var vm = this;\r\n vm.data=[];\r\n vm.getReasons=getReasons;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n\r\n vm.isChecked = isChecked;\r\n vm.sync = sync;\r\n active();\r\n function active() {\r\n getReasons();\r\n }\r\n\r\n function ok() {\r\n $uibModalInstance.close(true);\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n function getReasons() {\r\n var reasons =[\r\n {id: 1, name: 'Unavailable'},\r\n {id: 2, name: 'Wrong type of work'},\r\n {id: 3, name: 'To far to travel'}\r\n ];\r\n vm.reasons = reasons;\r\n }\r\n function isChecked(id){\r\n var match = false;\r\n for(var i=0 ; i < vm.data.length; i++) {\r\n if(vm.data[i].id == id){\r\n match = true;\r\n }\r\n }\r\n return match;\r\n };\r\n function sync (bool, item){\r\n if(bool){\r\n vm.data.push(item);\r\n } else {\r\n for(var i=0 ; i < vm.data.length; i++) {\r\n if(vm.data[i].id == item.id){\r\n vm.data.splice(i,1);\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ProfileModalController', ProfileModalController);\r\n\r\n /** @ngInject */\r\n function ProfileModalController($uibModalInstance,$rootScope,CommonService, profile, ClientPortalService,$scope, CONFIG,$state) {\r\n var vm = this;\r\n vm.cancel = cancel;\r\n vm.isPlay = true;\r\n vm.link = CONFIG.rest.baseURILink;\r\n getProfileUser()\r\n function getProfileUser(){\r\n $rootScope.loading = true;\r\n ClientPortalService.getCandidateUserById(profile).then(function(data){\r\n $rootScope.loading = false;\r\n vm.profile = data.data.result;\r\n },function(){\r\n $rootScope.loading = false;\r\n })\r\n }\r\n function getDayofWeek(d, num) {\r\n d = moment(d);\r\n var day = moment(d).day(),\r\n diff = moment(d).date() - day + num,\r\n current = moment(d).date();\r\n if (diff < current) {\r\n return moment(d).set('date' , diff + 7);\r\n } else {\r\n return moment(d).set('date' , diff);\r\n }\r\n\r\n }\r\n vm.getDateOfWeek = function (d) {\r\n return CommonService.getDateOfWeek(d)\r\n };\r\n vm.formatDate = function (d) {\r\n return CommonService.formatDate(d);\r\n };\r\n vm.play = function play(e) {\r\n if(!vm.profile.profile.videoType) return;\r\n var elem = angular.element(e.currentTarget).parent().find('video');\r\n if (elem[0].paused) {\r\n elem[0].play();\r\n elem.muted = \"muted\";\r\n angular.element(e.currentTarget).parent().find('.play-video').fadeOut()\r\n elem.on('ended', function () {\r\n if (elem[0].paused) {\r\n elem[0].play();\r\n }\r\n })\r\n } else {\r\n elem[0].pause();\r\n angular.element(e.currentTarget).parent().find('.play-video').fadeIn()\r\n }\r\n\r\n };\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('FutureBookingClientController', FutureBookingClientController);\r\n\r\n /** @ngInject */\r\n function FutureBookingClientController(booking,CommonService ,CONFIG,ClientPortalService,$uibModalInstance, $state) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.cancel = cancel;\r\n vm.checkDate = checkDate;\r\n vm.checkTime = checkTime;\r\n vm.goToAmendBooking = goToAmendBooking;\r\n vm.formatDate = formatDate\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n\r\n function goToAmendBooking(id) {\r\n $uibModalInstance.dismiss('cancel');\r\n $state.go(CONFIG.routes.client.portal.amendBooking, {'id': id});\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('EmploymentStatusController', EmploymentStatusController);\r\n\r\n /** @ngInject */\r\n function EmploymentStatusController($uibModalInstance) {\r\n\r\n var vm = this;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n active();\r\n\r\n function ok() {\r\n $uibModalInstance.close(true);\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function active() {\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ConfirmCancellationController', CancelBookingConfirmController);\r\n\r\n /** @ngInject */\r\n function CancelBookingConfirmController(booking, $rootScope, ClientPortalService,CONFIG, $uibModalInstance, $state) {\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.isOver24 = false;\r\n vm.feeCancel = 120;\r\n vm.feeAdmin = 5;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n active();\r\n\r\n function ok() {\r\n $rootScope.loading = true;\r\n ClientPortalService.cancelledBooking(vm.booking.id).then(function () {\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n },function(){\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n });\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function active() {\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('CancelBookingConfirmController', CancelBookingConfirmController);\r\n\r\n /** @ngInject */\r\n function CancelBookingConfirmController(booking,$rootScope,$window, $uibModalInstance,CONFIG, ClientPortalService, $state) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.isOver24 = false;\r\n vm.isUnder24 = false;\r\n vm.isUnder12 = false;\r\n vm.feeAdmin = 5;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n vm.close = close;\r\n vm.acceptCancel = acceptCancel;\r\n vm.openTermCondition = openTermCondition;\r\n active();\r\n\r\n function ok() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function close() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function cancel() {\r\n ClientPortalService.openConfirmCancellationModal(vm.booking).then(function () {\r\n $uibModalInstance.dismiss('cancel');\r\n });\r\n }\r\n\r\n function openTermCondition() {\r\n var openTermConditionUrl = $state.href(CONFIG.routes.common.termsConditions);\r\n $window.open(openTermConditionUrl,'_blank');\r\n }\r\n function acceptCancel() {\r\n $rootScope.loading = true;\r\n ClientPortalService.cancelledBooking(vm.booking.id).then(function () {\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n },function(){\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n });\r\n }\r\n function active() {\r\n var bookingDate = new Date(moment(vm.booking.startDate).year(),moment(vm.booking.startDate).month(), moment(vm.booking.startDate).date(),moment(vm.booking.startTime).hour(),moment(vm.booking.startTime).minute())\r\n vm.status = vm.booking.status;\r\n vm.feeCancel = 0;\r\n if(!vm.booking.invoice) return;\r\n vm.hadPayment = vm.booking.invoice.paidAmount > 0 ? true : false;\r\n if (bookingDate - new Date() > ( 1000 * 60 * 60 * 24 )) {\r\n vm.feeCancel = vm.booking.invoice.lbFee;\r\n vm.isOver24 = true;\r\n }else if(bookingDate - new Date() < ( 1000 * 60 * 60 * 24 ) &&\r\n bookingDate - new Date() > ( 1000 * 60 * 60 * 12 )) {\r\n vm.isUnder24 = true;\r\n vm.feeCancel = vm.booking.invoice.candAmount/2;\r\n }else{\r\n vm.isUnder12 = true;\r\n vm.feeCancel = vm.booking.invoice.candAmount;\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('BookingHistoryClientController', BookingHistoryClientController);\r\n\r\n /** @ngInject */\r\n function BookingHistoryClientController(booking,CommonService,CONFIG, ClientPortalService,$uibModalInstance, $state) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.goToReBooking = goToReBooking;\r\n vm.cancel = cancel;\r\n vm.checkTime = checkTime;\r\n vm.checkDate = checkDate;\r\n vm.formatDate = formatDate;\r\n function goToReBooking(invoiceNo) {\r\n $uibModalInstance.dismiss('cancel');\r\n $state.go(CONFIG.routes.client.portal.reBooking, {'id': invoiceNo}, {reload: true});\r\n\r\n }\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n function formatDate(d) {\r\n return CommonService.formatDate(d)\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('HomePageClientController', HomePageClientController);\r\n\r\n /** @ngInject */\r\n function HomePageClientController($state,CONFIG,$localStorage) {\r\n\r\n var vm = this;\r\n vm.user = angular.copy($localStorage.userProfile);\r\n vm.goFindTheStaff = goFindTheStaff;\r\n vm.goCompanyProfile = goCompanyProfile;\r\n vm.goBookingsInformation = goBookingsInformation;\r\n vm.goReportIssue = goReportIssue;\r\n function goFindTheStaff(){\r\n $state.go(CONFIG.routes.client.portal.findTheStaff);\r\n }\r\n function goCompanyProfile(){\r\n $state.go(CONFIG.routes.client.portal.companyProfile);\r\n }\r\n function goBookingsInformation(){\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n }\r\n function goReportIssue(){\r\n $state.go(CONFIG.routes.client.portal.reportIssue);\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ReportIssueController', ReportIssueController);\r\n\r\n /** @ngInject */\r\n function ReportIssueController($rootScope, ClientPortalService, CONFIG,$state) {\r\n\r\n var vm = this;\r\n vm.bookings =[];\r\n vm.openReportIssuePopup = openReportIssuePopup;\r\n vm.openReportIssueMessagePopup = openReportIssueMessagePopup;\r\n vm.goBackHomePage = goBackHomePage;\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getClientRequestBookings().then(function (data) {\r\n $rootScope.loading = false;\r\n vm.bookings = data.data.result;\r\n if(vm.bookings.length == 0){\r\n vm.noReportIssue = \"No bookings registered\";\r\n }\r\n return vm.bookings;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.noReportIssue = \"No bookings registered\";\r\n })\r\n }\r\n function goBackHomePage(){\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n function openReportIssuePopup(booking) {\r\n ClientPortalService.openReportIssueModal(booking).then(function (data) {\r\n $rootScope.loading = true;\r\n ClientPortalService.reportOtherIssueBooking(booking.id, data).then(function (data) {\r\n $rootScope.loading = false;\r\n booking = data.data.result;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n });\r\n }\r\n\r\n function openReportIssueMessagePopup(booking) {\r\n ClientPortalService.openReportIssueMessageModal(booking).then(function (data) {\r\n });\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ReBookingController', ReBookingController);\r\n\r\n /** @ngInject */\r\n function ReBookingController($state,$filter,$scope, $rootScope,CONFIG, ClientPortalService, ngToast) {\r\n\r\n var vm = this;\r\n vm.reBooking = {};\r\n vm.goToConfirmedBooking = goToConfirmedBooking;\r\n vm.goToHireCandidate = goToHireCandidate;\r\n vm.calculatorAmount = calculatorAmount;\r\n vm.goBackHomePage = goBackHomePage;\r\n var newDate = moment();\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.reBooking = data.data.result;\r\n vm.reBooking.startTime = angular.copy(moment(vm.reBooking.startTime));\r\n vm.reBooking.endTime = angular.copy(moment(vm.reBooking.endTime));\r\n vm.reBooking.startDate =checkCompareDate(moment(vm.reBooking.startDate));\r\n vm.reBooking.endDate =checkCompareDate(moment(vm.reBooking.endDate));\r\n if(vm.reBooking.invoice){\r\n vm.amountBooking = vm.reBooking.invoice.amount\r\n }\r\n if(vm.reBooking.potentialCandidates.length == 1){\r\n ClientPortalService.getCandidateUserById(vm.reBooking.potentialCandidates[0].candidateId).then(function(data){\r\n $rootScope.loading = false;\r\n vm.candidateUser = data.data.result;\r\n },function(err){\r\n $rootScope.loading = false;\r\n var message='Cannot find candidate';\r\n if(err.data && err.data.exceptionMessage){\r\n message= err.data.exceptionMessage;\r\n }\r\n ngToast.warning(message);\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }else{\r\n $rootScope.loading = false;\r\n }\r\n return vm.reBooking;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n });\r\n }\r\n function checkCompareDate(reBookingDate){\r\n if(reBookingDate.year() < newDate.year()) return moment(newDate).toDate();\r\n if(reBookingDate.year() == newDate.year() &&\r\n reBookingDate.month() < newDate.month()) return moment(newDate).toDate();\r\n if(reBookingDate.year() == newDate.year() &&\r\n reBookingDate.month() == newDate.month() &&\r\n reBookingDate.date() < newDate.date()) return moment(newDate).toDate();\r\n return moment(reBookingDate).toDate() ;\r\n }\r\n function goToConfirmedBooking(id) {\r\n var data = {\r\n clientId: vm.reBooking.clientId,\r\n startTime: moment(vm.reBooking.startTime).format(CONFIG.timeFormat),\r\n endTime: moment(vm.reBooking.endTime).format(CONFIG.timeFormat),\r\n startDate: moment(vm.reBooking.startDate).format(CONFIG.dateFormat),\r\n endDate: moment(vm.reBooking.endDate).format(CONFIG.dateFormat)\r\n };\r\n $rootScope.loading = true;\r\n ClientPortalService.reBooking(id, data).then(function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n });\r\n }\r\n function goBackHomePage(){\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n function goToHireCandidate(id) {\r\n $state.go(CONFIG.routes.client.portal.permanentRole, {'id': vm.reBooking.id});\r\n }\r\n function calculatorAmount(){\r\n var data = {\r\n startTime: moment(vm.reBooking.startTime).format(CONFIG.timeFormat),\r\n endTime: moment(vm.reBooking.endTime).format(CONFIG.timeFormat),\r\n startDate: moment(vm.reBooking.startDate).format(CONFIG.dateFormat),\r\n endDate: moment(vm.reBooking.endDate).format(CONFIG.dateFormat)\r\n };\r\n $rootScope.loading = true;\r\n ClientPortalService.calculatorAmount($state.params.id,data).then(function(data){\r\n vm.amountBooking = data.data.result;\r\n $rootScope.loading = false;\r\n },function(){\r\n $rootScope.loading = false;\r\n })\r\n }\r\n $scope.$watchGroup(['vm.reBooking.startTime', 'vm.reBooking.endTime','vm.reBooking.startDate','vm.reBooking.endDate'],\r\n function(newValues, oldValues){\r\n if(oldValues[0] && oldValues[1] && oldValues[2] && oldValues[3] && vm.candidateUser)\r\n calculatorAmount();\r\n }\r\n )\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('RatingStarClientController', RatingStarClientController);\r\n\r\n /** @ngInject */\r\n function RatingStarClientController($state, $rootScope, CONFIG,ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.submitRatingStar = submitRatingStar;\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.ratingStar = data.data.result;\r\n ClientPortalService.getCandidateRateByClient(vm.ratingStar.potentialCandidates[0].id).then(function (data) {\r\n vm.ratingStarList = data.data.result || {};\r\n vm.ratingStarListOrigin = angular.copy(vm.ratingStarList)\r\n ClientPortalService.getCandidateUserById(vm.ratingStar.potentialCandidates[0].candidateId).then(function(data){\r\n vm.candidateUser = data.data.result;\r\n $rootScope.loading = false;\r\n },function(){\r\n $rootScope.loading = false;\r\n })\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function submitRatingStar() {\r\n var resultCompare = angular.equals(vm.ratingStarList, vm.ratingStarListOrigin);\r\n if(!resultCompare){\r\n $rootScope.loading = true;\r\n ClientPortalService.rateCandidate(vm.ratingStar.potentialCandidates[0].id, vm.ratingStarList).then(function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.welcomeBack)\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }else{\r\n $state.go(CONFIG.routes.client.portal.welcomeBack)\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('PermanentRoleController', PermanentRoleController);\r\n\r\n /** @ngInject */\r\n function PermanentRoleController($state, $rootScope,$uibModal,CONFIG, ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.permanentRoleSubmit = permanentRoleSubmit;\r\n vm.dateOptions = CONFIG.dateOptions;\r\n vm.dateFormat = CONFIG.bootstrapDateFormat;\r\n vm.openCalendarPopup = openCalendarPopup;\r\n vm.permanentRoleForm = {};\r\n vm.calendarPopup = {\r\n startDateOpened: false\r\n };\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getBooking($state.params.id).then(function (data) {\r\n vm.permanentRole = data.data.result;\r\n vm.permanentRole.startTime = moment(vm.permanentRole.startTime);\r\n vm.permanentRole.endTime = moment(vm.permanentRole.endTime);\r\n vm.permanentRole.startDate = moment(vm.permanentRole.startDate).toDate();\r\n vm.permanentRole.endDate = moment(vm.permanentRole.endDate).toDate();\r\n if(vm.permanentRole.potentialCandidates.length == 1){\r\n ClientPortalService.getCandidateUserById(vm.permanentRole.potentialCandidates[0].candidateId).then(function(data){\r\n vm.candidateUser = data.data.result;\r\n $rootScope.loading = false;\r\n },function(){\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }else{\r\n $rootScope.loading = false;\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }\r\n function openCalendarPopup() {\r\n vm.calendarPopup.startDateOpened = true;\r\n }\r\n function permanentRoleSubmit(){\r\n $rootScope.loading = true;\r\n vm.candidate = angular.merge(vm.candidate,{candidateId : vm.candidateUser .id});\r\n ClientPortalService.permanentRole(vm.candidate).then(function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('MakePaymentController', MakePaymentController);\r\n\r\n /** @ngInject */\r\n function MakePaymentController($state, $rootScope,CONFIG,$uibModal, ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.paidBooking = paidBooking;\r\n vm.goBackHomePage = goBackHomePage;\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.makePayment = data.data.result;\r\n if(vm.makePayment.status != 1) { $state.go(CONFIG.routes.client.portal.bookingsInformation); }\r\n vm.makePayment.startTime = moment(vm.makePayment.startTime);\r\n vm.makePayment.endTime = moment(vm.makePayment.endTime);\r\n vm.makePayment.startDate = new Date(vm.makePayment.startDate);\r\n vm.makePayment.endDate = new Date(vm.makePayment.endDate);\r\n ClientPortalService.getVATBooking().then(function (data) {\r\n vm.feeVAT = data.data.result * (vm.makePayment.invoice.lbFee - vm.makePayment.invoice.paidLBFee);\r\n if(vm.makePayment.invoice.paidAmount > 0){\r\n vm.amountBooking = vm.makePayment.invoice.amount - vm.makePayment.invoice.paidAmount;\r\n }else{\r\n vm.amountBooking = vm.makePayment.invoice.amount\r\n }\r\n if (vm.makePayment.invoice.voucherId > 0) {\r\n vm.amountBooking = vm.amountBooking - vm.makePayment.invoice.voucher.value\r\n }\r\n vm.totalAmount = vm.feeVAT + vm.amountBooking;\r\n $rootScope.loading = false;\r\n },function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }\r\n\r\n function paidBooking(id) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/client/portal/modal/payment.html',\r\n controller: function ($scope,$rootScope, $uibModalInstance) {\r\n $scope.paymentForm = [];\r\n $scope.expirationYear = moment().get('year');\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n };\r\n $scope.accept = function(){\r\n if($scope.paymentForm.$valid){\r\n $rootScope.loading = true;\r\n ClientPortalService.paidBooking(id, $scope.stripeCustomer).then(function () {\r\n $rootScope.loading = false;\r\n $uibModalInstance.close();\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n }, function (error) {\r\n $rootScope.errorPayment = error.data.exceptionMessage;\r\n $rootScope.loading = false;\r\n });\r\n }\r\n }\r\n },\r\n size :'md'\r\n });\r\n }\r\n function goBackHomePage(){\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ClientHowCommunicateController', ClientHowCommunicateController);\r\n\r\n /** @ngInject */\r\n function ClientHowCommunicateController($state, $rootScope, $localStorage,CONFIG, ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.profileHowCommunicateForm = [];\r\n vm.userClient = angular.copy($localStorage.userProfile);\r\n vm.updateClientUserContact = updateClientUserContact;\r\n if (!vm.userClient.communicate) {\r\n vm.userClient.communicate = {\r\n isEmailAddress: true,\r\n isSecondEmailAddress: false,\r\n isTelephoneNumber: false,\r\n isMobileNumber: false\r\n }\r\n }\r\n vm.userClientTemp = angular.copy(vm.userClient);\r\n function updateClientUserContact() {\r\n if (vm.profileHowCommunicateForm.$valid) {\r\n var resultCompare = angular.equals(vm.userClient, vm.userClientTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n ClientPortalService.updateClientUserContact(vm.userClient).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n } else {\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('FindMeStaffController', FindMeStaffController);\r\n\r\n /** @ngInject */\r\n function FindMeStaffController($state, $localStorage, $rootScope, dataList, CONFIG,SignupClientService) {\r\n\r\n var vm = this;\r\n vm.goBackHomePage = goBackHomePage;\r\n vm.jobSearchPortalForm = {};\r\n vm.searchFilter = $localStorage.searchFilter ? angular.copy($localStorage.searchFilter) : JSON.parse(localStorage.getItem(\"Client\"));\r\n vm.timePickerDefault = CONFIG.timePickerDefault;\r\n var date = moment().toDate()\r\n vm.searchFilter.dateTimeFilters = [\r\n {\r\n startDate:date,\r\n endDate: moment(date).set('date', moment(date).date() + 7).toDate(),\r\n startTime: moment(vm.timePickerDefault.startTime),\r\n endTime: moment(vm.timePickerDefault.endTime)\r\n }\r\n ];\r\n\r\n vm.findStaff = findStaff;\r\n activate();\r\n\r\n function activate() {\r\n getTypeOfWork();\r\n getEmploymentStatuses();\r\n getKeySkills();\r\n getWorkExperiences();\r\n }\r\n\r\n function getEmploymentStatuses() {\r\n dataList.getEmploymentStatuses().then(function (data) {\r\n vm.employmentStatuses = data.data.result.items;\r\n })\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n\r\n function getKeySkills() {\r\n dataList.getKeySkills().then(function (data) {\r\n vm.keySkills = data.data.result.items;\r\n })\r\n }\r\n\r\n function getWorkExperiences() {\r\n dataList.getKeyExperiences().then(function (data) {\r\n vm.workExperiences = data.data.result.items;\r\n })\r\n }\r\n\r\n function findStaff() {\r\n if(vm.jobSearchPortalForm.$valid){\r\n $localStorage.searchFilter = vm.searchFilter;\r\n $state.go(CONFIG.routes.client.portal.contactStaff);\r\n }\r\n\r\n }\r\n function goBackHomePage(){\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ContactStaffController', ContactStaffController);\r\n\r\n /** @ngInject */\r\n function ContactStaffController($state, $rootScope, $localStorage, SignupClientService, CONFIG) {\r\n var vm = this;\r\n vm.bookCandidateId = [];\r\n vm.listAdditionalCandidateId = [];\r\n vm.userClient = angular.copy($localStorage.searchFilter) || {};\r\n vm.contactCandidates = contactCandidates;\r\n vm.onCandidateChanged = onCandidateChanged;\r\n vm.goFindTheStaff = goFindTheStaff;\r\n vm.candidateType = CONFIG.candidateType.Main;\r\n function contactCandidates() {\r\n if (vm.bookCandidateId.length > 0) {\r\n $rootScope.loading = true;\r\n vm.book = {\r\n clientId: vm.userClient.id,\r\n candidateIds: vm.bookCandidateId,\r\n additionalCandidateIds: vm.listAdditionalCandidateId,\r\n dateTimeFilters: vm.userClient.dateTimeFilters,\r\n address: vm.userClient.companyProfile.address,\r\n workTypeIds: vm.userClient.workTypeIds,\r\n keySkillIds: vm.userClient.keySkillIds,\r\n employmentStatusIds: vm.userClient.employmentStatusIds,\r\n keyExperienceIds: vm.userClient.keyExperienceIds\r\n };\r\n SignupClientService.createBookings(vm.book).then(function (data) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.contactCandidates);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.errorMessage = error.data.exceptionMessage;\r\n });\r\n } else {\r\n $state.go(CONFIG.routes.client.portal.contactCandidates);\r\n }\r\n\r\n }\r\n\r\n function onCandidateChanged(cadidates, listCandidate) {\r\n var arr = [];\r\n if (cadidates.length > 0) {\r\n angular.forEach(cadidates, function (data) {\r\n if (data.candidate)\r\n arr.push(data.candidate.id)\r\n });\r\n vm.bookCandidateId = arr;\r\n vm.listAdditionalCandidateId = getlistAdditionalCandidateId(listCandidate, arr);\r\n }\r\n }\r\n\r\n function goFindTheStaff() {\r\n $state.go(CONFIG.routes.client.portal.findTheStaff)\r\n }\r\n\r\n function getlistAdditionalCandidateId(listCandidate, listselectedCandidate) {\r\n var listAdditionalCandidateId = [];\r\n angular.forEach(listCandidate, function (item) {\r\n if (isMainCandidate(item, listselectedCandidate) == false) {\r\n if (listAdditionalCandidateId.length < 7) {\r\n listAdditionalCandidateId.push(item.id);\r\n } else {\r\n return listAdditionalCandidateId;\r\n }\r\n }\r\n })\r\n return listAdditionalCandidateId;\r\n }\r\n function isMainCandidate(candidate, candidates) {\r\n var check = false;\r\n angular.forEach(candidates, function (item) {\r\n if (item == candidate.id) {\r\n return check = true;\r\n }\r\n })\r\n return check;\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ContactCandidatesController', ContactCandidatesController);\r\n\r\n /** @ngInject */\r\n function ContactCandidatesController($state,CONFIG) {\r\n\r\n var vm = this;\r\n vm.accessPortal = accessPortal;\r\n function accessPortal() {\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('ConfirmedBookingController', ConfirmedBookingController);\r\n\r\n /** @ngInject */\r\n function ConfirmedBookingController($state, $filter, $rootScope, CONFIG, $uibModal, ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.goToMakePayment = goToMakePayment;\r\n vm.goBackHomePage = goBackHomePage;\r\n vm.onRedeemVoucher = onRedeemVoucher;\r\n var newDate = moment();\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.confirmedBooking = data.data.result;\r\n vm.confirmedBooking.startTime = moment(vm.confirmedBooking.startTime);\r\n vm.confirmedBooking.endTime = moment(vm.confirmedBooking.endTime);\r\n vm.confirmedBooking.startDate = checkCompareDate(moment(vm.confirmedBooking.startDate));\r\n vm.confirmedBooking.endDate = checkCompareDate(moment(vm.confirmedBooking.endDate));\r\n if (vm.confirmedBooking.invoice) {\r\n if (vm.confirmedBooking.invoice.paidAmount > 0) {\r\n vm.amountBooking = vm.confirmedBooking.invoice.amount - vm.confirmedBooking.invoice.paidAmount;\r\n } else {\r\n vm.amountBooking = vm.confirmedBooking.invoice.amount;\r\n }\r\n if (vm.confirmedBooking.invoice.voucherId > 0) {\r\n vm.amountBooking = vm.amountBooking - vm.confirmedBooking.invoice.voucher.value\r\n }\r\n }\r\n if (vm.confirmedBooking.potentialCandidates.length == 1) {\r\n ClientPortalService.getCandidateUserById(vm.confirmedBooking.potentialCandidates[0].candidateId).then(function (data) {\r\n vm.candidateUser = data.data.result;\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n } else {\r\n $rootScope.loading = false;\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }\r\n\r\n function checkCompareDate(confirmedBooking) {\r\n if (confirmedBooking.year() < newDate.year()) return moment(newDate).toDate();\r\n if (confirmedBooking.year() == newDate.year() &&\r\n confirmedBooking.month() < newDate.month()) return moment(newDate).toDate();\r\n if (confirmedBooking.year() == newDate.year() &&\r\n confirmedBooking.month() == newDate.month() &&\r\n confirmedBooking.date() < newDate.date()) return moment(newDate).toDate();\r\n return moment(confirmedBooking).toDate();\r\n }\r\n\r\n function goToMakePayment(id) {\r\n if (vm.amountBooking < 0) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/client/portal/modal/refund.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n $scope.accept = function () {\r\n $rootScope.loading = true;\r\n ClientPortalService.paidBooking(id, {}).then(function () {\r\n $rootScope.loading = false;\r\n $uibModalInstance.close();\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n });\r\n }\r\n\r\n },\r\n size: 'md'\r\n });\r\n } else {\r\n $state.go(CONFIG.routes.client.portal.makePayment, {id: id})\r\n }\r\n\r\n }\r\n\r\n function goBackHomePage() {\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n\r\n function onRedeemVoucher() {\r\n ClientPortalService.redeemVoucherCode($state.params.id, vm.voucher).then(function (data) {\r\n vm.confirmedBooking = data.data.result;\r\n vm.confirmedBooking.startTime = moment(vm.confirmedBooking.startTime);\r\n vm.confirmedBooking.endTime = moment(vm.confirmedBooking.endTime);\r\n vm.confirmedBooking.startDate = checkCompareDate(moment(vm.confirmedBooking.startDate));\r\n vm.confirmedBooking.endDate = checkCompareDate(moment(vm.confirmedBooking.endDate));\r\n if (vm.confirmedBooking.invoice) {\r\n if (vm.confirmedBooking.invoice.paidAmount > 0) {\r\n vm.amountBooking = vm.confirmedBooking.invoice.amount - vm.confirmedBooking.invoice.paidAmount;\r\n } else {\r\n vm.amountBooking = vm.confirmedBooking.invoice.amount;\r\n }\r\n if (vm.confirmedBooking.invoice.voucherId > 0) {\r\n vm.amountBooking = vm.amountBooking - vm.confirmedBooking.invoice.voucher.value\r\n }\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.errorMessage = error.data.exceptionMessage;\r\n })\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('CompanyProfileController', CompanyProfileController);\r\n\r\n /** @ngInject */\r\n function CompanyProfileController($state, $localStorage, $rootScope, CONFIG, dataList, SignupClientService, ClientPortalService, ngToast) {\r\n\r\n var vm = this;\r\n vm.userClient = angular.copy($localStorage.userProfile);\r\n vm.receivingEmailStatus = CONFIG.receivingEmailStatus;\r\n vm.userClientTemp = angular.copy(vm.userClient);\r\n vm.saveData = saveData;\r\n vm.goToHowCommunicate = goToHowCommunicate;\r\n vm.requestDeleteAccount = requestDeleteAccount;\r\n vm.updateReceivingEmailStatus = updateReceivingEmailStatus;\r\n activate();\r\n\r\n function activate() {\r\n getTypeOfWork();\r\n getEmploymentStatuses();\r\n getKeySkills();\r\n getWorkExperiences();\r\n getNatureOfBusiness();\r\n }\r\n\r\n function getNatureOfBusiness() {\r\n dataList.getBusinessTypes().then(function (data) {\r\n vm.natureOfBusiness = data.data.result.items;\r\n });\r\n }\r\n\r\n function getEmploymentStatuses() {\r\n dataList.getEmploymentStatuses().then(function (data) {\r\n vm.employmentStatuses = data.data.result.items;\r\n })\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n\r\n function getKeySkills() {\r\n dataList.getKeySkills().then(function (data) {\r\n vm.keySkills = data.data.result.items;\r\n })\r\n }\r\n\r\n function getWorkExperiences() {\r\n dataList.getKeyExperiences().then(function (data) {\r\n vm.workExperiences = data.data.result.items;\r\n })\r\n }\r\n\r\n function saveData() {\r\n var resultCompare = angular.equals(vm.userClient, vm.userClientTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n vm.userClient.id = vm.userClient.id || vm.userClient.companyProfile.id;\r\n $localStorage.address = vm.userClient.companyProfile.address;\r\n SignupClientService.updateClientUserFull(vm.userClient).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $localStorage.searchFilter = data.data.result;\r\n $rootScope.loading = false;\r\n $rootScope.showNewPolicySticky = vm.userClient.isAcceptedGDPR ? false : true;\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n })\r\n } else {\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n\r\n }\r\n\r\n function requestDeleteAccount() {\r\n $rootScope.loading = true;\r\n ClientPortalService.requestDeleteAccount().then(function () {\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n })\r\n }\r\n\r\n function goToHowCommunicate() {\r\n $state.go(CONFIG.routes.client.portal.howCommunicate);\r\n }\r\n\r\n function updateReceivingEmailStatus(status) {\r\n $rootScope.loading = true;\r\n var dataReq = {\r\n receivingEmailStatus: status,\r\n id: vm.userClient.id\r\n };\r\n ClientPortalService.receivingEmail(dataReq).then(function (res) {\r\n vm.userClient.receivingEmailStatus = res.data.result.receivingEmailStatus;\r\n $localStorage.userProfile.receivingEmailStatus = res.data.result.receivingEmailStatus;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n\r\n }, function () {\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('BookingsInformationController', BookingsInformationController);\r\n\r\n /** @ngInject */\r\n function BookingsInformationController($state, $rootScope,$filter,CONFIG, CommonService,ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.loadMorePreviousBookingCount = false;\r\n vm.pagePreviousNo = 1;\r\n vm.pagePreviousSize = 10;\r\n vm.pageUpcomingNo = 1;\r\n vm.pageUpcomingSize = 10;\r\n vm.goToAmendBooking = goToAmendBooking;\r\n vm.goToReBooking = goToReBooking;\r\n vm.openProfilePopup = openProfilePopup;\r\n vm.goToConfirmBooking = goToConfirmBooking;\r\n vm.loadMorePreviousBookings = loadMorePreviousBookings;\r\n vm.loadMoreUpComingBookings = loadMoreUpComingBookings;\r\n vm.openFutureBookingPopup = openFutureBookingPopup;\r\n vm.openBookingHistoryPopup = openBookingHistoryPopup;\r\n vm.bookingStatus = bookingStatus;\r\n vm.checkDate = checkDate;\r\n vm.goBackHomePage = goBackHomePage;\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getClientPreviousBookings({\r\n PageNo: vm.pagePreviousNo,\r\n PageSize: vm.pagePreviousSize\r\n }).then(function (dataPreviousBookings) {\r\n vm.previousBookings = dataPreviousBookings.data.result.items;\r\n vm.totalPreviousBookingsCount = dataPreviousBookings.data.result.totalCount;\r\n if (vm.previousBookings.length == 0) {\r\n vm.noPreviousBookings = 'No bookings';\r\n } else if (vm.previousBookings.length < vm.totalPreviousBookingsCount) {\r\n vm.loadMorePreviousBookingCount = true;\r\n }\r\n ClientPortalService.getClientUpcomingBookings({\r\n PageNo: vm.pageUpcomingNo,\r\n PageSize: vm.pageUpcomingSize\r\n }).then(function (dataUpcomingBookings) {\r\n $rootScope.loading = false;\r\n vm.upcomingBookings = dataUpcomingBookings.data.result.items;\r\n vm.totalUpcomingBookingsCount = dataUpcomingBookings.data.result.totalCount;\r\n if (vm.upcomingBookings.length == 0) {\r\n vm.noUpcomingBookings = 'No bookings';\r\n } else if (vm.upcomingBookings.length < vm.totalUpcomingBookingsCount) {\r\n vm.loadMoreUpComingBookingCount = true;\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.noUpcomingBookings = 'No bookings';\r\n })\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.noPreviousBookings = 'No bookings';\r\n })\r\n }\r\n\r\n function goToAmendBooking(id) {\r\n $state.go(CONFIG.routes.client.portal.amendBooking, {'id': id});\r\n\r\n }\r\n\r\n function goToReBooking(id) {\r\n $state.go(CONFIG.routes.client.portal.reBooking, {'id': id});\r\n\r\n }\r\n function goBackHomePage(){\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n function goToConfirmBooking(id) {\r\n $state.go(CONFIG.routes.client.portal.confirmedBooking, {'id': id});\r\n\r\n }\r\n\r\n function openProfilePopup(profile) {\r\n ClientPortalService.openProfileModal(profile).then(function () {\r\n\r\n });\r\n }\r\n\r\n function loadMorePreviousBookings() {\r\n if (vm.loadMorePreviousBookingCount) {\r\n vm.pagePreviousNo++;\r\n $rootScope.loading = true;\r\n ClientPortalService.getClientPreviousBookings({\r\n PageNo: vm.pagePreviousNo,\r\n PageSize: vm.pagePreviousSize\r\n }).then(function (dataPreviousBookings) {\r\n $rootScope.loading = false;\r\n vm.previousBookings = vm.previousBookings.concat(dataPreviousBookings.data.result.items);\r\n vm.totalPreviousBookingsCount = dataPreviousBookings.data.result.totalCount;\r\n if (vm.previousBookings.length >= vm.totalPreviousBookingsCount) {\r\n vm.loadMorePreviousBookingCount = false;\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.loadMorePreviousBookingCount = false;\r\n })\r\n }\r\n }\r\n\r\n function loadMoreUpComingBookings() {\r\n if (vm.loadMoreUpComingBookingCount) {\r\n vm.pageUpcomingNo++;\r\n $rootScope.loading = true;\r\n ClientPortalService.getClientUpcomingBookings({\r\n PageNo: vm.pageUpcomingNo,\r\n PageSize: vm.pageUpcomingSize\r\n }).then(function (dataUpcomingBookings) {\r\n $rootScope.loading = false;\r\n vm.upcomingBookings = vm.upcomingBookings.concat(dataUpcomingBookings.data.result.items);\r\n vm.totalUpcomingBookingsCount = dataUpcomingBookings.data.result.totalCount;\r\n if (vm.upcomingBookings.length >= vm.totalUpcomingBookingsCount) {\r\n vm.loadMoreUpComingBookingCount = false;\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.loadMoreUpComingBookingCount = false;\r\n })\r\n }\r\n }\r\n\r\n function openFutureBookingPopup(booking) {\r\n ClientPortalService.openFutureBookingModal(booking).then(function () {\r\n\r\n });\r\n }\r\n\r\n function openBookingHistoryPopup(booking) {\r\n ClientPortalService.openBookingHistoryModal(booking).then(function () {\r\n\r\n });\r\n }\r\n\r\n function bookingStatus(status){\r\n var item = $filter('filter')(CONFIG.bookingStatus, status);\r\n return item[0].status;\r\n }\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .controller('AmendBookingController', AmendBookingController);\r\n\r\n /** @ngInject */\r\n function AmendBookingController($state, $rootScope, $scope, $filter, $uibModal, CONFIG, ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.amendBooking = {};\r\n vm.goToConfirmedBooking = goToConfirmedBooking;\r\n vm.openCancelToolTipModal = openCancelToolTipModal;\r\n vm.calculatorAmount = calculatorAmount;\r\n vm.goBackHomePage = goBackHomePage;\r\n var newDate = moment();\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n ClientPortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.originAmendBooking = angular.copy(data.data.result);\r\n vm.amendBooking = data.data.result;\r\n vm.amendBooking.startTime = angular.copy(moment(vm.amendBooking.startTime));\r\n vm.amendBooking.endTime = angular.copy(moment(vm.amendBooking.endTime));\r\n vm.amendBooking.startDate = checkCompareDate(moment(vm.amendBooking.startDate));\r\n vm.amendBooking.endDate = checkCompareDate(moment(vm.amendBooking.endDate));\r\n if (vm.amendBooking.invoice) {\r\n if (vm.amendBooking.invoice.paidAmount > 0) {\r\n vm.amountBooking = vm.amendBooking.invoice.amount - vm.amendBooking.invoice.paidAmount\r\n } else {\r\n vm.amountBooking = vm.amendBooking.invoice.amount\r\n }\r\n if (vm.amendBooking.invoice.voucherId > 0) {\r\n vm.amountBooking = vm.amountBooking - vm.amendBooking.invoice.voucher.value\r\n }\r\n }\r\n if (vm.amendBooking.doerId != null) {\r\n ClientPortalService.getCandidateUserById(vm.amendBooking.doerId).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.candidateUser = data.data.result;\r\n }, function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n } else {\r\n $rootScope.loading = false;\r\n }\r\n return vm.amendBooking;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n })\r\n }\r\n function checkCompareDate(amendBookingDate) {\r\n if (amendBookingDate.year() < newDate.year()) return moment(newDate).toDate();\r\n if (amendBookingDate.year() == newDate.year() &&\r\n amendBookingDate.month() < newDate.month()) return moment(newDate).toDate();\r\n if (amendBookingDate.year() == newDate.year() &&\r\n amendBookingDate.month() == newDate.month() &&\r\n amendBookingDate.date() < newDate.date()) return moment(newDate).toDate();\r\n return moment(amendBookingDate).toDate();\r\n }\r\n function goToConfirmedBooking(id) {\r\n var data = {\r\n clientId: vm.amendBooking.clientId,\r\n startTime: moment(vm.amendBooking.startTime).format(CONFIG.timeFormat),\r\n endTime: moment(vm.amendBooking.endTime).format(CONFIG.timeFormat),\r\n startDate: moment(vm.amendBooking.startDate).format(CONFIG.dateFormat),\r\n endDate: moment(vm.amendBooking.endDate).format(CONFIG.dateFormat)\r\n };\r\n if (!moment(data.startDate).isSame(vm.originAmendBooking.startDate) ||\r\n !moment(data.endDate).isSame(vm.originAmendBooking.endDate) ||\r\n !moment(data.startTime).isSame(vm.originAmendBooking.startTime) ||\r\n !moment(data.endTime).isSame(vm.originAmendBooking.endTime)) {\r\n $rootScope.loading = true;\r\n ClientPortalService.amentBooking(id, data).then(function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n });\r\n } else {\r\n $state.go(CONFIG.routes.client.portal.bookingsInformation);\r\n }\r\n }\r\n\r\n function openCancelToolTipModal(booking) {\r\n ClientPortalService.openCancelBookingConfirmModal(booking)\r\n }\r\n\r\n function calculatorAmount() {\r\n var data = {\r\n startTime: moment(vm.amendBooking.startTime).format(CONFIG.timeFormat),\r\n endTime: moment(vm.amendBooking.endTime).format(CONFIG.timeFormat),\r\n startDate: moment(vm.amendBooking.startDate).format(CONFIG.dateFormat),\r\n endDate: moment(vm.amendBooking.endDate).format(CONFIG.dateFormat)\r\n };\r\n $rootScope.loading = true;\r\n ClientPortalService.calculatorAmount($state.params.id, data).then(function (data) {\r\n if (vm.amendBooking.invoice) {\r\n vm.amendBooking.invoice.amount = data.data.result\r\n if (vm.amendBooking.invoice.paidAmount > 0) {\r\n vm.amountBooking = vm.amendBooking.invoice.amount - vm.amendBooking.invoice.paidAmount;\r\n }\r\n if (vm.amendBooking.invoice.voucherId > 0) {\r\n vm.amountBooking = vm.amountBooking - vm.amendBooking.invoice.voucher.value\r\n }\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n function goBackHomePage() {\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n $scope.$watchGroup(['vm.amendBooking.startTime', 'vm.amendBooking.endTime', 'vm.amendBooking.startDate', 'vm.amendBooking.endDate'],\r\n function (newValues, oldValues) {\r\n if (oldValues[0] && oldValues[1] && oldValues[2] && oldValues[3] && vm.candidateUser)\r\n calculatorAmount();\r\n }\r\n )\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate', []);\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpUploadDeliveryDriverDocumentController', SignUpUploadDeliveryDriverDocumentController);\r\n\r\n /** @ngInject */\r\n function SignUpUploadDeliveryDriverDocumentController(SignupCandidateService, $state, $localStorage, $timeout, $rootScope, Upload, CONFIG, ngToast) {\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n if ($localStorage.userProfile) {\r\n vm.userCandidate.profile = angular.copy($localStorage.userProfile.profile) || {};\r\n }\r\n vm.updateProofOfAddress = updateProofOfAddress;\r\n vm.updateVehicle = updateVehicle;\r\n vm.selectProofOfAddressImage = selectProofOfAddressImage;\r\n vm.selectVehicleImage = selectVehicleImage;\r\n vm.removeProofOfAddressFiles = removeProofOfAddressFiles;\r\n vm.removeVehicleFiles = removeVehicleFiles;\r\n vm.goUploadDBSCertificatePage = goUploadDBSCertificatePage;\r\n active();\r\n function active() {\r\n }\r\n\r\n\r\n function updateProofOfAddress() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyProofOfAddress) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyProofOfAddress\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.proofOfAddressUrl = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function updateVehicle() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyOfVehicle) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyOfVehicle\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.vehicleUrl = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function selectProofOfAddressImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasProofOfAddressImage = true;\r\n vm.fileProofOfAddressUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function selectVehicleImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasVehicleImage = true;\r\n vm.fileVehicleUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeProofOfAddressFiles() {\r\n if (vm.userCandidate.deliveryDriver.proofOfAddressUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeProofOfAddress(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.proofOfAddressUrl = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileProofOfAddressUrl) {\r\n vm.fileProofOfAddressUrl = null;\r\n }\r\n if (vm.isHasProofOfAddressImage) {\r\n vm.isHasProofOfAddressImage = false\r\n }\r\n }\r\n\r\n function removeVehicleFiles() {\r\n if (vm.userCandidate.deliveryDriver.vehicleUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeVehicle(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.vehicleUrl = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileVehicleUrl) {\r\n vm.fileVehicleUrl = null;\r\n }\r\n if (vm.isHasVehicleImage) {\r\n vm.isHasVehicleImage = false\r\n }\r\n }\r\n\r\n vm.goUploadDBSCertificatePage = goUploadDBSCertificatePage;\r\n function goUploadDBSCertificatePage() {\r\n $state.go(CONFIG.routes.candidate.signup.uploadDBSCertificate);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpUploadDBSCertificateController', SignUpUploadDBSCertificateController);\r\n\r\n /** @ngInject */\r\n function SignUpUploadDBSCertificateController(SignupCandidateService, Upload, ngToast, $state, $timeout, CONFIG, $localStorage, $scope, $rootScope) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n if ($localStorage.userProfile) {\r\n vm.userCandidate.profile = angular.copy($localStorage.userProfile.profile) || {};\r\n }\r\n vm.updateDBSCertificate = updateDBSCertificate;\r\n vm.selectDBSCertificateImage = selectDBSCertificateImage;\r\n vm.removeDBSCertificateFiles = removeDBSCertificateFiles;\r\n vm.updateDeliveryDriver = updateDeliveryDriver;\r\n active();\r\n function active() {\r\n }\r\n\r\n\r\n function updateDBSCertificate() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyDBSCertificate) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyDBSCertificate\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.dbsCertificateUrl = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function selectDBSCertificateImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasDBSCertificateImage = true;\r\n vm.fileDBSCertificateUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeDBSCertificateFiles() {\r\n if (vm.userCandidate.deliveryDriver.dbsCertificateUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeDBSCertificate(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.dbsCertificateUrl = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileDBSCertificateUrl) {\r\n vm.fileDBSCertificateUrl = null;\r\n }\r\n if (vm.isHasDBSCertificateImage) {\r\n vm.isHasDBSCertificateImage = false\r\n }\r\n }\r\n\r\n function updateDeliveryDriver() {\r\n var resultCompare = angular.equals(vm.userCandidate, vm.userCandidateTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n $state.go(CONFIG.routes.candidate.signup.insuranceCode);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n else {\r\n $state.go(CONFIG.routes.candidate.signup.insuranceCode);\r\n }\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep9Controller', SignUpStep9Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep9Controller($state,$uibModal,CONFIG, $rootScope,$localStorage,CandidatePortalService, ngToast) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n return;\r\n }\r\n var vm = this;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.goToPortal = goToPortal;\r\n vm.sendCandidateConfirmEmailViaPhoneNumber = sendCandidateConfirmEmailViaPhoneNumber;\r\n vm.receivedEmail = receivedEmail;\r\n function goToPortal() {\r\n if (vm.userCandidate.isEmailConfirmed){\r\n $localStorage.isSignup = false;\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\r\n }\r\n function sendCandidateConfirmEmailViaPhoneNumber(){\r\n $rootScope.loading = true;\r\n CandidatePortalService.sendCandidateConfirmEmailViaPhoneNumber(vm.userCandidate.id).then(function(){\r\n $rootScope.loading = false;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/common/confirmEmail.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n $state.go(CONFIG.routes.login);\r\n }\r\n },\r\n size :'md'\r\n });\r\n },function(error){\r\n $rootScope.loading = false;\r\n })\r\n }\r\n function receivedEmail(){\r\n $rootScope.loading = true;\r\n CandidatePortalService.sendCandidateConfirmEmail(vm.userCandidate.id).then(function(){\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $uibModal.open({\r\n templateUrl: 'app/components/common/receivedEmail.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n $state.go(CONFIG.routes.login);\r\n };\r\n $scope.noSendEmail=function(){\r\n $rootScope.loading = true;\r\n CandidatePortalService.sendCandidateConfirmEmail(vm.userCandidate.id).then(function(){\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n };\r\n },\r\n size :'md'\r\n });\r\n },function(){\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep8Controller', SignUpStep8Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep8Controller($state, $rootScope,CONFIG, $localStorage, SignupCandidateService) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n return;\r\n }\r\n var vm = this;\r\n vm.profileForm8 = [];\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidate.profile.isSupportedFromCommunity = true;\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.back = back;\r\n vm.onCreateUserBillingInfo = onCreateUserBillingInfo;\r\n vm.onSupportForSelfEmployed = onSupportForSelfEmployed;\r\n function onCreateUserBillingInfo() {\r\n $state.go(CONFIG.routes.candidate.signup.step9)\r\n }\r\n function onSupportForSelfEmployed() {\r\n $rootScope.loading = true;\r\n SignupCandidateService.supportForSelfEmployed(vm.userCandidate.id, vm.userCandidate).then(function(res){\r\n $localStorage.userProfile.profile.isMemberOfCommunity = res.data.result.profile.isMemberOfCommunity;\r\n $rootScope.loading = false;\r\n if(res.data.result.isDeliveryDriver){\r\n $state.go(CONFIG.routes.candidate.signup.modeOfTransport);\r\n }else{\r\n $state.go(CONFIG.routes.candidate.signup.step9);\r\n }\r\n },function(){\r\n $rootScope.loading = false;\r\n });\r\n }\r\n\r\n function back() {\r\n $state.go(CONFIG.routes.candidate.signup.step7)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep7Controller', SignUpStep7Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep7Controller($state, $scope, $rootScope, $localStorage,\r\n CONFIG, SignupCandidateService, Upload, ngToast, $timeout) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n return;\r\n }\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.profileForm7 = [];\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n if ($localStorage.userProfile) {\r\n vm.userCandidate.profile = angular.copy($localStorage.userProfile.profile) || {};\r\n }\r\n vm.croppedPassportDataUrl = null;\r\n vm.updateUserContact = updateUserContact;\r\n vm.updateUserPassport = updateUserPassport;\r\n vm.backProfileCandidate = backProfileCandidate;\r\n vm.selectImageLast = selectImageLast;\r\n vm.selectImage = selectImage;\r\n vm.alternativeDocumentation = alternativeDocumentation;\r\n vm.removePassportFiles = removePassportFiles;\r\n vm.showImgFile = true;\r\n vm.showPdfFile = false;\r\n if (vm.userCandidate.profile.passportUrl !== null) {\r\n vm.pdfFileCurrent = vm.userCandidate.profile.passportUrl;\r\n vm.pdfFileCurrent = vm.pdfFileCurrent.split(\".\").pop();\r\n }\r\n active();\r\n function active() {\r\n checkOriginalContactUser();\r\n }\r\n\r\n function checkOriginalContactUser() {\r\n if ($localStorage.userProfile) {\r\n vm.originalProfile = angular.copy(vm.userCandidate.profile)\r\n }\r\n }\r\n\r\n\r\n function updateUserPassport() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyOfPassport) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyOfPassport\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.profile.passportUrl = response.data[0].url;\r\n SignupCandidateService.updateUserPassport(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n if (data.data.result.profile.passportUrl !== null) {\r\n vm.documentFile = data.data.result.profile.passportUrl;\r\n vm.documentFile = vm.documentFile.split(\".\").pop().toLowerCase();\r\n if (vm.documentFile !== \"png\" && vm.documentFile !== \"jpg\" && vm.documentPhotoFile !== \"gif\" && vm.documentFile !== \"jpeg\" && vm.documentFile !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function updateUserContact() {\r\n $state.go(CONFIG.routes.candidate.signup.step8);\r\n }\r\n\r\n function backProfileCandidate() {\r\n $state.go(CONFIG.routes.candidate.signup.step6);\r\n }\r\n\r\n function selectImageLast($files) {\r\n vm.pdfFileName = vm.copyOfPassport.name;\r\n vm.photoFile = vm.copyOfPassport.name;\r\n vm.photoFile = vm.photoFile.split(\".\").pop().toLowerCase();\r\n if (vm.photoFile == \"pdf\") {\r\n vm.showImgFile = false;\r\n vm.showPdfFile = true;\r\n } else {\r\n vm.showImgFile = true;\r\n vm.showPdfFile = false;\r\n }\r\n if (vm.photoFile !== \"png\" && vm.photoFile !== \"jpg\" && vm.photoFile !== \"jpeg\" && vm.photoFile !== \"gif\" && vm.photoFile !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n vm.isHasLastImage = true;\r\n vm.filePhotoUrl = imgSrc;\r\n $timeout(function () {\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function selectImage($files) {\r\n vm.pdfFileName = vm.copyOfPassport.name;\r\n vm.photoFile = vm.copyOfPassport.name;\r\n vm.photoFile = vm.photoFile.split(\".\").pop();\r\n if (vm.photoFile == \"pdf\") {\r\n vm.showImgFile = false;\r\n vm.showPdfFile = true;\r\n } else {\r\n vm.showImgFile = true;\r\n vm.showPdfFile = false;\r\n }\r\n if ($files.length > 0) {\r\n vm.file = $files[0];\r\n if (vm.file) {\r\n var imgSrc = URL.createObjectURL(vm.file);\r\n if (imgSrc && imgSrc !== '') {\r\n vm.isHasImage = false;\r\n vm.fileUrl = imgSrc;\r\n $timeout(function () {\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function removePassportFiles() {\r\n if (vm.userCandidate.profile.passportUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeUserPassport(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.profile.passportUrl = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n vm.email2Message = error.data.error.message;\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.filePhotoUrl) {\r\n vm.filePhotoUrl = null;\r\n }\r\n if (vm.isHasLastImage) {\r\n vm.isHasLastImage = false\r\n }\r\n }\r\n\r\n function alternativeDocumentation() {\r\n $state.go(CONFIG.routes.candidate.signup.alternativeDocumentation);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep6Controller', SignUpStep6Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep6Controller($state, CONFIG,$localStorage) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1)\r\n return;\r\n }\r\n var vm = this;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.backUpdateProfile = backUpdateProfile;\r\n vm.goUpdatePassort = goUpdatePassort;\r\n vm.goProfileInformation = goProfileInformation;\r\n vm.goProfileAvailability = goProfileAvailability;\r\n vm.goProfileUpload = goProfileUpload;\r\n function backUpdateProfile() {\r\n $state.go(CONFIG.routes.candidate.signup.step5);\r\n }\r\n\r\n function goUpdatePassort() {\r\n $state.go(CONFIG.routes.candidate.signup.step7);\r\n }\r\n\r\n function goProfileInformation() {\r\n $state.go(CONFIG.routes.candidate.portal.profileInformation, {type: 'signup'});\r\n }\r\n\r\n function goProfileAvailability() {\r\n $state.go(CONFIG.routes.candidate.portal.availability, {type: 'signup'});\r\n }\r\n\r\n function goProfileUpload() {\r\n $state.go(CONFIG.routes.candidate.portal.uploadPhoto, {type: 'signup'});\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep5Controller', SignUpStep5Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep5Controller($state, $scope, $uibModal, $localStorage, CONFIG, $rootScope,\r\n Upload, $sce, SignupCandidateService, ngToast, $timeout) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n return;\r\n }\r\n var vm = this;\r\n vm.file = null;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidate.profile = angular.copy($localStorage.userProfile.profile) || {};\r\n vm.isImage = false;\r\n vm.isVideo = false;\r\n vm.isHasVideo = false;\r\n vm.text = $sce.trustAsHtml('Uploaded file is not valid. Only JPG, PNG, GIF, JPEG and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n }\r\n\r\n function uploadFiles() {\r\n if (vm.cropImageApi) {\r\n vm.resultImage = vm.cropImageApi.crop();\r\n }\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.files) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.isVideo ? vm.files : Upload.dataUrltoBlob(vm.resultImage, vm.files.name)\r\n }\r\n }).then(function (response) {\r\n var typeFile = checkTypeFile(vm.files.type);\r\n if (typeFile === 1) {\r\n vm.isImage = false;\r\n vm.isHasImage = true;\r\n vm.userCandidate.profile.photoUrl = '';\r\n vm.userCandidate.profile.videoType = null;\r\n vm.userCandidate.profile.photoUrl = response.data[0].url;\r\n onUpdateVideoOrPhoto();\r\n }\r\n if (typeFile === 2) {\r\n vm.userCandidate.profile.videoUrl = '';\r\n vm.userCandidate.profile.videoType = response.data[0].fileType;\r\n vm.userCandidate.profile.videoUrl = response.data[0].url;\r\n vm.userCandidate.profile.photoUrl = response.data[0].url_Thumbnail;\r\n vm.isHasVideo = true;\r\n $rootScope.loading = false;\r\n }\r\n\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n vm.isHasVideo = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function selectFile($files) {\r\n if (vm.files.name !== null) {\r\n vm.photoFile = vm.files.name;\r\n vm.photoFile = vm.photoFile.split(\".\").pop();\r\n if (vm.photoFile !== \"png\" && vm.photoFile !== \"jpg\" && vm.photoFile !== \"jpeg\" && vm.photoFile !== \"gif\" && vm.photoFile !== \"mp4\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and MP4 files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n if ($files.length > 0) {\r\n vm.file = $files[0];\r\n var type = checkTypeFile(vm.file.type);\r\n $timeout(function () {\r\n if (vm.file) {\r\n var imgSrc = URL.createObjectURL(vm.file);\r\n if (type == 1) {\r\n vm.isImage = true;\r\n vm.userCandidate.profile.videoType = null;\r\n if (vm.userCandidate.profile.videoUrl) {\r\n vm.userCandidate.profile.videoUrl = null;\r\n }\r\n }\r\n if (type == 2) {\r\n if (vm.file.size >= 50000000) {\r\n vm.fileOnlyUpload = \"Sorry! LB X-Change is supporting file under 50mb\";\r\n return;\r\n }\r\n vm.isVideo = true;\r\n vm.isPlay = true;\r\n vm.userCandidate.profile.videoType = vm.file.type;\r\n if (vm.userCandidate.profile.photoUrl) {\r\n vm.userCandidate.profile.photoUrl = null;\r\n }\r\n uploadFiles();\r\n }\r\n if (imgSrc && imgSrc !== '') {\r\n vm.isHasImage = false;\r\n vm.fileUrl = imgSrc;\r\n $files = [];\r\n }\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n function getApiFunction(api) {\r\n vm.cropImageApi = api;\r\n }\r\n\r\n function checkNameFile(filename) {\r\n var n = filename.split(\".\");\r\n return n[n.length - 1];\r\n\r\n }\r\n\r\n function checkTypeFile(filename) {\r\n var ext = filename.split(\"/\");\r\n if (ext[0].toLowerCase() == \"image\") {\r\n return 1\r\n }\r\n if (ext[0].toLowerCase() == \"video\") {\r\n return 2\r\n }\r\n return\r\n }\r\n\r\n\r\n function onUpdateVideoOrPhoto() {\r\n vm.userCandidate.id = vm.userCandidate.id || vm.userCandidate.profile.id;\r\n var typeFile = checkTypeFile(vm.files.type);\r\n if (typeFile == 1) {\r\n SignupCandidateService.updateUserPhoto(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n } else if (typeFile == 2) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateUserVideo(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n }\r\n\r\n function goNextStep() {\r\n $state.go(CONFIG.routes.candidate.signup.step6);\r\n }\r\n\r\n function removeFiles() {\r\n if (vm.userCandidate.profile.photoUrl || vm.userCandidate.profile.videoUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeUserPhotoAndVideo(vm.userCandidate.id).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $rootScope.loading = false;\r\n vm.userCandidate.profile.photoUrl = null;\r\n vm.userCandidate.profile.videoUrl = null;\r\n vm.userCandidate.profile.videoType = vm.file.type;\r\n checkHasPhotoOrVideo();\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n vm.isHasImage = false;\r\n\r\n }\r\n if (vm.fileUrl) {\r\n vm.fileUrl = null;\r\n }\r\n if (vm.files) {\r\n vm.files = null;\r\n }\r\n if (vm.isImage) {\r\n vm.isImage = false\r\n }\r\n if (vm.isHasVideo) {\r\n vm.isHasVideo = false\r\n }\r\n\r\n }\r\n\r\n function openVideoToolTipModal(index) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/signup/partials/addvideo-tooltip-modal.html',\r\n controller: function ($scope, $uibModalInstance, index) {\r\n $scope.index = index;\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n\r\n },\r\n resolve: {\r\n index: index\r\n },\r\n size: 'md'\r\n });\r\n }\r\n\r\n\r\n function backUpdateCandidateProfile() {\r\n $state.go(CONFIG.routes.candidate.signup.step4)\r\n }\r\n\r\n function play(e) {\r\n if (!vm.userCandidate.profile.videoType) return;\r\n var elem = angular.element(e.currentTarget).parent().find('video');\r\n if (elem[0].paused) {\r\n elem[0].play();\r\n elem.muted = \"muted\";\r\n angular.element(e.currentTarget).parent().find('.play-video').fadeOut()\r\n elem.on('ended', function () {\r\n\r\n if (elem[0].paused) {\r\n elem[0].play();\r\n }\r\n })\r\n } else {\r\n elem[0].pause();\r\n angular.element(e.currentTarget).parent().find('.play-video').fadeIn()\r\n }\r\n\r\n };\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep4Controller', SignUpStep4Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep4Controller($state,CONFIG, dataList, $localStorage, User, Auth, $rootScope, SignupCandidateService) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n return;\r\n }\r\n var vm = this;\r\n vm.profileForm4 = [];\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidate.profile.minHourlyRate = CONFIG.minHourlyRate;\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.onUpdateCandidate = onUpdateCandidate;\r\n vm.backUpdateCandidate = backUpdateCandidate;\r\n vm.considerPermanentRoleOptions = CONFIG.considerPermanentRole;\r\n activate();\r\n\r\n function activate() {\r\n getTypeOfWork();\r\n getEmploymentStatuses();\r\n getKeySkills();\r\n getWorkExperiences();\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n function getEmploymentStatuses() {\r\n dataList.getEmploymentStatuses().then(function (data) {\r\n vm.employmentStatuses = data.data.result.items;\r\n })\r\n }\r\n\r\n function getKeySkills() {\r\n dataList.getKeySkills().then(function (data) {\r\n vm.keySkills = data.data.result.items;\r\n })\r\n }\r\n\r\n function getWorkExperiences() {\r\n dataList.getKeyExperiences().then(function (data) {\r\n vm.workExperiences = data.data.result.items;\r\n })\r\n }\r\n\r\n function backUpdateCandidate() {\r\n $state.go(CONFIG.routes.candidate.signup.step3)\r\n }\r\n\r\n function onUpdateCandidate() {\r\n var resultCompare = angular.equals(vm.userCandidate, vm.userCandidateTemp);\r\n if (vm.profileForm4.$valid) {\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n SignupCandidateService.updateCandidate(vm.userCandidate).then(function (data) {\r\n User.get().$promise.then(function (resp) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = resp.result.user;\r\n $localStorage.searchFilter = resp.result.user;\r\n $state.go(CONFIG.routes.candidate.signup.step5)\r\n });\r\n\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n })\r\n } else {\r\n $state.go(CONFIG.routes.candidate.signup.step5)\r\n }\r\n }\r\n\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep3Controller', SignUpStep3Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep3Controller(CONFIG, $state, Auth, User, UserRoleService, $localStorage, $rootScope, SignupCandidateService) {\r\n var vm = this;\r\n vm.profileForm3 = [];\r\n vm.userCandidate = $localStorage.userProfile ? angular.copy($localStorage.userProfile) : JSON.parse(localStorage.getItem(\"Candidate\"));\r\n if (vm.userCandidate) {\r\n vm.userCandidate.isAcceptedGDPR = true;\r\n vm.userCandidate.profile.dateOfBirth = vm.userCandidate.profile.dateOfBirth ? new Date(vm.userCandidate.profile.dateOfBirth) : null;\r\n if (vm.userCandidate.workTypeIds == undefined || vm.userCandidate.workTypeIds.length <= 0) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n }\r\n } else {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n }\r\n vm.dateFormat = CONFIG.bootstrapDateFormat;\r\n vm.dateOptions = {\r\n maxDate: new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate())\r\n };\r\n vm.calendarPopup = {\r\n opened: false\r\n };\r\n vm.candidateRole = {};\r\n vm.checkBOD = false;\r\n vm.checkBODOverLimit = false;\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.resetCheckBOD = resetCheckBOD;\r\n //functions\r\n vm.onCreateOrUpdateCandidate = onCreateOrUpdateCandidate;\r\n vm.openCalendarPopup = openCalendarPopup;\r\n vm.clearError = clearError;\r\n vm.backRatingPage = backRatingPage;\r\n vm.checkBODDate = checkBODDate;\r\n activate();\r\n\r\n function activate() {\r\n getCandidateRole();\r\n }\r\n\r\n function onCreateOrUpdateCandidate() {\r\n if (vm.profileForm3.$valid && !vm.checkBODOverLimit) {\r\n var resultCompare = angular.equals(vm.userCandidate, vm.userCandidateTemp);\r\n if (!resultCompare) {\r\n vm.userCandidate.roleId = vm.candidateRole.id;\r\n vm.userCandidate.isActive = true;\r\n vm.userCandidate.id = vm.userCandidate.id || '';\r\n $localStorage.address = vm.userCandidate.profile.address;\r\n if (!vm.userCandidate.id) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.createCandidate(vm.userCandidate).then(function (data) {\r\n var user = {\r\n userNameOrEmailAddress: vm.userCandidate.emailAddress,\r\n password: vm.userCandidate.password\r\n };\r\n $localStorage.userProfile = data.data;\r\n Auth.loginWithoutConfirm(user).then(function () {\r\n $rootScope.loading = false;\r\n localStorage.removeItem(\"Candidate\");\r\n $localStorage.isSignup = true;\r\n $state.go(CONFIG.routes.candidate.signup.step4)\r\n }, function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.login)\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n });\r\n } else {\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateCandidateUserProfile(vm.userCandidate).then(function (data) {\r\n User.get().$promise.then(function (resp) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = resp.result.user;\r\n $localStorage.searchFilter = resp.result.user;\r\n localStorage.removeItem(\"Candidate\");\r\n $state.go(CONFIG.routes.candidate.signup.step4)\r\n });\r\n\r\n }, function () {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n } else {\r\n $state.go(CONFIG.routes.candidate.signup.step4);\r\n }\r\n\r\n }\r\n }\r\n\r\n function openCalendarPopup() {\r\n vm.calendarPopup.opened = true;\r\n }\r\n\r\n function getCandidateRole() {\r\n UserRoleService.getRoleByName(CONFIG.userRoles.candidate).then(function (data) {\r\n vm.candidateRole = data.data.result;\r\n })\r\n }\r\n\r\n function clearError() {\r\n if (vm.emailMessage) {\r\n vm.emailMessage = false;\r\n }\r\n }\r\n\r\n function backRatingPage() {\r\n $state.go(CONFIG.routes.candidate.signup.step2)\r\n }\r\n\r\n function checkBODDate(BODDate) {\r\n vm.checkBOD = true;\r\n if (BODDate && BODDate.getTime() > vm.dateOptions.maxDate.getTime()) {\r\n vm.checkBODOverLimit = true;\r\n } else {\r\n vm.checkBODOverLimit = false;\r\n }\r\n\r\n }\r\n\r\n function resetCheckBOD() {\r\n vm.checkBOD = false;\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep2Controller', SignUpStep2Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep2Controller($state,CONFIG, SignupCandidateService, $rootScope) {\r\n\r\n var vm = this;\r\n vm.filterClient = JSON.parse(localStorage.getItem(\"Candidate\")) || {};\r\n vm.clientLength = null;\r\n vm.goCreateCandidate = goCreateCandidate;\n vm.loading = false;\n\r\n getNearClient();\n\r\n function getNearClient() {\r\n $rootScope.loading = true;\n vm.loading = $rootScope.loading;\r\n if (angular.equals({}, vm.filterClient)) {\r\n $rootScope.loading = false;\n vm.loading = $rootScope.loading;\r\n $state.go(CONFIG.routes.candidate.signup.step1)\r\n } else {\r\n SignupCandidateService.getNearClient(vm.filterClient).then(function (data) {\r\n vm.clientLength = data.data.result.totalCount;\r\n $rootScope.loading = false;\n vm.loading = $rootScope.loading;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n }\r\n\r\n function goCreateCandidate() {\r\n $state.go(CONFIG.routes.candidate.signup.step3)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpStep1Controller', SignUpStep1Controller);\r\n\r\n /** @ngInject */\r\n function SignUpStep1Controller(dataList, CONFIG,CommonService,$state, $localStorage) {\r\n\r\n var vm = this;\r\n vm.profileForm1 = [];\r\n vm.userCandidate = $localStorage.userProfile ? angular.copy($localStorage.userProfile) : {};\r\n\r\n vm.userCandidate.availableDayTimes = !vm.userCandidate.id ? [] : vm.userCandidate.availableDayTimes;\r\n vm.timePickerOptions = CONFIG.timePickerOptions;\r\n vm.dateOptions = CONFIG.dateOptions;\r\n vm.availableTemp = [];\r\n\r\n vm.timePickerDefault = CONFIG.timePickerDefault;\r\n vm.availableDayTimes =\r\n [\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(1),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(1),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(2),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(2),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(3),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(3),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(4),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(4),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(5),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(5),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(6),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(6),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(7),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(7),\r\n isSelected: false\r\n }\r\n ];\r\n\r\n //Functions\r\n vm.findWorkYouWant = findWorkYouWant;\r\n vm.getDayWeek = getDayWeek;\r\n vm.selectDayOfWeek = selectDayOfWeek;\r\n\r\n vm.onChangeTimeTo = onChangeTimeTo;\r\n vm.onChangeTimeFrom = onChangeTimeFrom;\r\n\r\n function checkDate() {\r\n if (vm.userCandidate.availableDayTimes.length > 0) {\r\n angular.forEach(vm.userCandidate.availableDayTimes, function (userDate) {\r\n var dayOfWeek = moment(userDate.startTime).isoWeekday();\r\n vm.availableDayTimes[dayOfWeek - 1] = {\r\n startTime: moment(userDate.startTime),\r\n endTime: moment(userDate.endTime),\r\n isSelected: true\r\n };\r\n });\r\n }\r\n }\r\n\r\n function getDayWeek(d) {\r\n return CommonService.getDateOfWeek(d)\r\n }\r\n\r\n function selectDayOfWeek(num, check, date) {\r\n var d = moment(vm.timePickerDefault.startTime),\r\n day = moment(d).day();\r\n if (check == true) {\r\n var diff = moment(d).date() - day + num + 1,\r\n current = moment(d).date()\r\n day = {\r\n startTime: null,\r\n endTime: null,\r\n isSelected: false\r\n };\r\n if (diff < current) {\r\n day = {\r\n startTime: moment(d).set('date' , diff + 7),\r\n endTime: moment(d).set('date' , diff + 7),\r\n isSelected: true\r\n };\r\n } else {\r\n day = {\r\n startTime: moment(d).set('date' , diff),\r\n endTime: moment(d).set('date' , diff),\r\n isSelected: true\r\n };\r\n }\r\n vm.availableTemp.push(day)\r\n\r\n } else {\r\n var index = arrayObjectIndexOf(vm.availableTemp, date);\r\n vm.availableTemp.splice(index, 1)\r\n\r\n }\r\n }\r\n\r\n function arrayObjectIndexOf(myArray, searchTerm) {\r\n for (var i = 0, len = myArray.length; i < len; i++) {\r\n if (angular.equals(myArray[i].startTime, searchTerm.startTime)) return i;\r\n }\r\n return -1;\r\n }\r\n\r\n function onChangeTimeTo(available) {\r\n if (available.startTime >= available.endTime) {\r\n var endTime = moment(available.endTime);\r\n available.startTime = endTime.minute(endTime.minute() - 15);\r\n }\r\n }\r\n\r\n function onChangeTimeFrom(available) {\r\n if (available.startTime >= available.endTime) {\r\n var startTime = moment(available.startTime);\r\n available.endTime = startTime.minute(startTime.minute() + 15);\r\n }\r\n }\r\n\r\n function findWorkYouWant() {\r\n if (vm.profileForm1.$valid) {\r\n vm.userCandidate.availableDayTimes = [];\r\n angular.forEach(vm.availableDayTimes, function (check) {\r\n if (check.isSelected) {\r\n vm.userCandidate.availableDayTimes.push(\r\n {\r\n startTime: moment(check.startTime).format(CONFIG.timeFormat),\r\n endTime: moment(check.endTime).format(CONFIG.timeFormat)\r\n }\r\n );\r\n }\r\n });\r\n localStorage.setItem('Candidate', JSON.stringify(vm.userCandidate));\r\n $state.go(CONFIG.routes.candidate.signup.step2)\r\n }\r\n\r\n }\r\n\r\n\r\n activate();\r\n function activate() {\r\n getTypeOfWork();\r\n checkDate();\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpModeOfTransportController', SignUpModeOfTransportController);\r\n\r\n /** @ngInject */\r\n function SignUpModeOfTransportController(dataList, SignupCandidateService, $state, $window, CONFIG, $localStorage, $rootScope) {\r\n\r\n var vm = this;\r\n vm.user = angular.copy($localStorage.userProfile);\r\n vm.transportationModes = [];\r\n vm.updateDeliveryDriver = updateDeliveryDriver;\r\n activate();\r\n\r\n function activate() {\r\n getTransportationModes();\r\n }\r\n\r\n function getTransportationModes() {\r\n dataList.getTransportationModes().then(function (data) {\r\n vm.transportationModes = data.data.result.items;\r\n })\r\n }\r\n function updateDeliveryDriver() {\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateDeliveryDriver(vm.user).then(function(res){\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = res.data.result;\r\n $state.go(CONFIG.routes.candidate.signup.uploadDeliveryDriverDocument);\r\n },function(){\r\n $rootScope.loading = false;\r\n });\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpInsuranceCodeController', SignUpInsuranceCodeController);\r\n\r\n /** @ngInject */\r\n function SignUpInsuranceCodeController(SignupCandidateService, $rootScope, $timeout, Upload, ngToast, $state, $window, CONFIG, $localStorage) {\r\n\r\n var vm = this;\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.updateInsuranceCode = updateInsuranceCode;\r\n vm.selectInsuranceCodeImage = selectInsuranceCodeImage;\r\n vm.removeInsuranceCodeFiles = removeInsuranceCodeFiles;\r\n vm.goStep9 = goStep9;\r\n function updateInsuranceCode() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyInsuranceCode) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyInsuranceCode\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.insuranceCode = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function selectInsuranceCodeImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasInsuranceCodeImage = true;\r\n vm.fileInsuranceCodeUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeInsuranceCodeFiles() {\r\n if (vm.userCandidate.deliveryDriver.insuranceCode) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeInsuranceCode(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.insuranceCode = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileInsuranceCodeUrl) {\r\n vm.fileInsuranceCodeUrl = null;\r\n }\r\n if (vm.isHasInsuranceCodeImage) {\r\n vm.isHasInsuranceCodeImage = false\r\n }\r\n }\r\n\r\n function goStep9() {\r\n $state.go(CONFIG.routes.candidate.signup.step9);\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('DocumentController', DocumentController);\r\n\r\n /** @ngInject */\r\n function DocumentController($state, $localStorage, $scope, $rootScope, Upload, CONFIG,\r\n SignupCandidateService, ngToast, $timeout) {\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.noDocumentation = noDocumentation;\r\n vm.updateUserDocument = updateUserDocument;\r\n vm.selectImageLast = selectImageLast;\r\n vm.removeDocumentFiles = removeDocumentFiles;\r\n vm.goUploadDocument = goUploadDocument;\r\n vm.goAlternativeDocument = goAlternativeDocument;\r\n active();\r\n function active() {\r\n checkOriginalLink();\r\n }\r\n\r\n function checkOriginalLink() {\r\n if (vm.userCandidate.profile.documentUrl) {\r\n vm.fileDocumentUrl = vm.originalLink = angular.copy(vm.userCandidate.profile.documentUrl);\r\n } else {\r\n vm.fileDocumentUrl = vm.originalLink = false;\r\n }\r\n }\r\n\r\n function noDocumentation() {\r\n $state.go(CONFIG.routes.candidate.signup.noDocument);\r\n }\r\n\r\n function goUploadDocument() {\r\n $state.go(CONFIG.routes.candidate.signup.step7);\r\n\r\n }\r\n\r\n function goAlternativeDocument() {\r\n $state.go(CONFIG.routes.candidate.signup.alternativeDocumentation);\r\n\r\n }\r\n\r\n function selectImageLast($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n vm.isHasLastImage = true;\r\n vm.fileDocumentUrl = imgSrc;\r\n $timeout(function () {\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeDocumentFiles() {\r\n if (vm.userCandidate.profile.documentUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeUserDocument(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n vm.userCandidate.profile.documentUrl = null\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n if (vm.fileDocumentUrl) {\r\n vm.fileDocumentUrl = null;\r\n }\r\n if (vm.isHasLastImage) {\r\n vm.isHasLastImage = false\r\n }\r\n\r\n }\r\n\r\n function updateUserDocument() {\r\n if (vm.fileDocumentUrl != vm.originalLink) {\r\n if (vm.documentFile) {\r\n $rootScope.loading = true;\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.documentFile\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.profile.documentUrl = response.data[0].url;\r\n SignupCandidateService.updateUserDocument(vm.userCandidate).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n } else {\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateUserDocument(vm.userCandidate).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpCandidateConfirmEmailController', SignUpCandidateConfirmEmailController);\r\n\r\n /** @ngInject */\r\n function SignUpCandidateConfirmEmailController($stateParams, Auth, CONFIG, $rootScope, $state, CommonService, $localStorage) {\r\n var vm = this;\r\n vm.redirectLink = redirectLink;\r\n vm.goHome = goHome;\r\n active();\r\n vm.confirmResponse = null;\r\n\r\n function active() {\r\n $rootScope.loading = true;\r\n if ($localStorage.userProfile && $stateParams.id != $localStorage.userProfile.id) {\r\n delete $localStorage.userProfile;\r\n }\r\n CommonService.confirmEmail($stateParams.id, $stateParams.code).then(function (res) {\r\n $rootScope.loading = false;\r\n vm.confirmSuccess = 1;\r\n vm.confirmResponse = res.data;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.confirmSuccess = 2;\r\n });\r\n }\r\n\r\n function redirectLink() {\r\n if ($localStorage.userProfile) {\r\n $localStorage.userProfile.isEmailConfirmed = true;\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack)\r\n } else {\r\n Auth.logout();\r\n $rootScope.isHasLogin = true;\r\n $state.go(CONFIG.routes.login)\r\n }\r\n\r\n }\r\n\r\n function goHome() {\r\n $state.go(CONFIG.routes.home)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpCommunityInformationController', SignUpCommunityInformationController);\r\n\r\n /** @ngInject */\r\n function SignUpCommunityInformationController($state, $rootScope, CONFIG, $localStorage, SignupCandidateService) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n return;\r\n }\r\n var vm = this;\r\n vm.profileForm8 = [];\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.back = back;\r\n vm.onSupportForSelfEmployed = onSupportForSelfEmployed;\r\n\r\n function onSupportForSelfEmployed() {\r\n $rootScope.loading = true;\r\n SignupCandidateService.supportForSelfEmployed(vm.userCandidate.id, vm.userCandidate).then(function (res) {\r\n $localStorage.userProfile.profile.communityOrOtherUnionInfo = res.data.result.profile.communityOrOtherUnionInfo;\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.signup.communityConfirmation)\r\n }, function () {\r\n $rootScope.loading = false;\r\n });\r\n }\r\n\r\n function back() {\r\n $state.go(CONFIG.routes.candidate.signup.step8)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpCommunityConfirmationController', SignUpCommunityConfirmationController);\r\n\r\n /** @ngInject */\r\n function SignUpCommunityConfirmationController($state, $rootScope, CONFIG, $localStorage, SignupCandidateService) {\r\n if (!$localStorage.userProfile) {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n return;\r\n }\r\n var vm = this;\r\n vm.profileForm8 = [];\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.back = back;\r\n vm.onSupportForSelfEmployed = onSupportForSelfEmployed;\r\n\r\n function onSupportForSelfEmployed() {\r\n $rootScope.loading = true;\r\n SignupCandidateService.supportForSelfEmployed(vm.userCandidate.id, vm.userCandidate).then(function (res) {\r\n $localStorage.userProfile.profile.isUnderstandCommunityRules = res.data.result.profile.isUnderstandCommunityRules;\r\n $rootScope.loading = false;\r\n if (res.data.result.isDeliveryDriver) {\r\n $state.go(CONFIG.routes.candidate.signup.modeOfTransport);\r\n } else {\r\n $state.go(CONFIG.routes.candidate.signup.step9);\r\n }\r\n }, function () {\r\n $rootScope.loading = false;\r\n });\r\n }\r\n\r\n function back() {\r\n $state.go(CONFIG.routes.candidate.signup.communityInformation)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('UnsuitableForCareCandidatelController', UnsuitableForCareCandidatelController);\r\n\r\n /** @ngInject */\r\n function UnsuitableForCareCandidatelController($uibModalInstance, $state, CONFIG, CandidatePortalService) {\r\n\r\n var vm = this;\r\n\r\n vm.backToPortal = backToPortal;\r\n vm.cancel = cancel;\r\n\r\n function backToPortal() {\r\n $uibModalInstance.dismiss('cancel');\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('ReasonRefuseCandidateController', ReasonRefuseController);\r\n\r\n /** @ngInject */\r\n function ReasonRefuseController($uibModalInstance, CandidatePortalService) {\r\n\r\n var vm = this;\r\n vm.refusedReasonIds = [];\r\n vm.getReasons = getReasons;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n\r\n vm.isChecked = isChecked;\r\n vm.sync = sync;\r\n active();\r\n function active() {\r\n getReasons();\r\n }\r\n\r\n function ok() {\r\n if(vm.otherRefusedReason || vm.refusedReasonIds.length > 0){\r\n $uibModalInstance.close({\r\n otherRefusedReason: vm.otherRefusedReason,\r\n refusedReasonIds: vm.refusedReasonIds\r\n });\r\n }\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function getReasons() {\r\n CandidatePortalService.getListReasons().then(function (res) {\r\n vm.reasons = res.data.result.items;\r\n });\r\n }\r\n\r\n function isChecked(id) {\r\n var match = false;\r\n for (var i = 0; i < vm.refusedReasonIds.length; i++) {\r\n if (vm.refusedReasonIds[i] == id) {\r\n match = true;\r\n }\r\n }\r\n return match;\r\n };\r\n function sync(bool, item) {\r\n if (bool) {\r\n vm.refusedReasonIds.push(item.id);\r\n } else {\r\n for (var i = 0; i < vm.refusedReasonIds.length; i++) {\r\n if (vm.refusedReasonIds[i] == item.id) {\r\n vm.refusedReasonIds.splice(i, 1);\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('FutureBookingCandidatelController', FutureBookingCandidatelController);\r\n\r\n /** @ngInject */\r\n function FutureBookingCandidatelController(booking, $uibModalInstance, CommonService, CandidatePortalService) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.cancel = cancel;\r\n vm.checkDate = checkDate;\r\n vm.checkTime = checkTime;\r\n vm.confirmCancel = confirmCancel;\r\n vm.formatDate = formatDate\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n\r\n function confirmCancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n CandidatePortalService.openConfirmCancelModal(vm.booking).then(function () {\r\n });\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('ConfirmCancelController', ConfirmCancelController);\r\n\r\n /** @ngInject */\r\n function ConfirmCancelController(booking, $uibModalInstance) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.ok = ok;\r\n vm.close = close;\r\n\r\n function ok() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function close() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('CareQualificationsUploadCandidatelController', CareQualificationsUploadCandidatelController);\r\n\r\n /** @ngInject */\r\n function CareQualificationsUploadCandidatelController($uibModalInstance, CandidatePortalService) {\r\n\r\n var vm = this;\r\n vm.refusedReasonIds = [];\r\n vm.getReasons = getReasons;\r\n vm.ok = ok;\r\n vm.cancel = cancel;\r\n\r\n vm.isChecked = isChecked;\r\n vm.sync = sync;\r\n active();\r\n function active() {\r\n getReasons();\r\n }\r\n\r\n function ok() {\r\n if(vm.otherRefusedReason || vm.refusedReasonIds.length > 0){\r\n $uibModalInstance.close({\r\n otherRefusedReason: vm.otherRefusedReason,\r\n refusedReasonIds: vm.refusedReasonIds\r\n });\r\n }\r\n }\r\n\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function getReasons() {\r\n CandidatePortalService.getListReasons().then(function (res) {\r\n vm.reasons = res.data.result.items;\r\n });\r\n }\r\n\r\n function isChecked(id) {\r\n var match = false;\r\n for (var i = 0; i < vm.refusedReasonIds.length; i++) {\r\n if (vm.refusedReasonIds[i] == id) {\r\n match = true;\r\n }\r\n }\r\n return match;\r\n };\r\n function sync(bool, item) {\r\n if (bool) {\r\n vm.refusedReasonIds.push(item.id);\r\n } else {\r\n for (var i = 0; i < vm.refusedReasonIds.length; i++) {\r\n if (vm.refusedReasonIds[i] == item.id) {\r\n vm.refusedReasonIds.splice(i, 1);\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('BookingHistoryCandidatelController', BookingHistoryCandidatelController);\r\n\r\n /** @ngInject */\r\n function BookingHistoryCandidatelController(booking,CommonService, CandidatePortalService,$uibModalInstance) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.checkDate = checkDate;\r\n vm.checkTime = checkTime;\r\n vm.cancel = cancel;\r\n vm.formatDate = formatDate\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('BookingDetailController', BookingDetailController);\r\n\r\n /** @ngInject */\r\n function BookingDetailController(booking,CommonService,CandidatePortalService, $uibModalInstance) {\r\n\r\n var vm = this;\r\n vm.booking = booking;\r\n vm.cancel = cancel;\r\n vm.formatDate = formatDate;\r\n vm.checkDate = checkDate;\r\n vm.checkTime = checkTime;\r\n function cancel() {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('YunoQuizCandidateController', YunoQuizCandidateController);\r\n\r\n /** @ngInject */\r\n function YunoQuizCandidateController($rootScope, $state,$window, CONFIG, $localStorage, careCandidatesFactory) {\r\n\r\n var vm = this;\r\n\t\tvm.user = angular.copy($localStorage.userProfile);\n\t\tvm.careCandidate = null;\r\n\r\n\t\tvm.startYunoQuiz = startYunoQuiz;\n\n\t\tif (vm.user) {\n\t\t\t$rootScope.loading = true;\n\n\t\t\tcareCandidatesFactory.getCurrent(vm.user.id)\n\t\t\t\t.then(\n\t\t\t\t\tfunction (careCandidate) {\n\t\t\t\t\t\tif (!careCandidate) {\n\t\t\t\t\t\t\tvm.careCandidate = {};\r\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tvm.careCandidate = careCandidate;\r\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t},\n\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\tconsole.log(error);\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t}\n\t\t\t\t);\r\n\t\t}\r\n\r\n function startYunoQuiz() {\r\n $state.go(CONFIG.routes.candidate.portal.suitableForCare);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('WorkfaceProfileController', WorkfaceProfileController);\r\n\r\n /** @ngInject */\r\n function WorkfaceProfileController($state,User, $rootScope, CONFIG, careCandidatesFactory) {\r\n var vm = this;\r\n\t\tvm.userCandidate = {};\n\t\tvm.careCandidate = null;\r\n vm.goProfileInformation = goProfileInformation;\r\n vm.goProfileAvailability = goProfileAvailability;\r\n vm.goProfileUpload = goProfileUpload;\r\n vm.goPaymentDetails = goPaymentDetails;\r\n vm.goUploadDocument = goUploadDocument;\r\n vm.goBackHomePage = goBackHomePage;\r\n vm.goUploadDocument = goUploadDocument;\r\n\t\tvm.goToDeliveryDriver = goToDeliveryDriver;\n\t\tvm.goToEmploymentRecord = goToEmploymentRecord;\n\r\n\t\tactive();\n\r\n function active() {\r\n\t\t\t$rootScope.loading = true;\n\r\n\t\t\tUser.get().$promise\n\t\t\t\t.then(\n\t\t\t\t\tfunction (resp) {\r\n \r\n\t\t\t\t\t\tvm.userCandidate = resp.result.user;\n\n\t\t\t\t\t\tcareCandidatesFactory.getCurrent(vm.userCandidate.id)\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\tfunction (careCandidate) {\n\t\t\t\t\t\t\t\t\tvm.careCandidate = careCandidate;\n\n\t\t\t\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\r\n return vm.userCandidate;\r\n\t\t\t\t\t},\n\t\t\t\t\tfunction (error) { \r\n $rootScope.loading = false;\r\n\t\t\t\t\t}\n\t\t\t\t);\r\n }\r\n function goPaymentDetails() {\r\n $state.go(CONFIG.routes.candidate.portal.paymentDetails);\r\n }\r\n\r\n function goProfileInformation() {\r\n $state.go(CONFIG.routes.candidate.portal.profileInformation, {type: 'portal'});\r\n }\r\n\r\n function goProfileAvailability() {\r\n $state.go(CONFIG.routes.candidate.portal.availability, {type: 'portal'});\r\n }\r\n\r\n function goProfileUpload() {\r\n $state.go(CONFIG.routes.candidate.portal.uploadPhoto, {type: 'portal'});\r\n }\r\n\r\n function goUploadDocument() {\r\n $state.go(CONFIG.routes.candidate.portal.uploadDocuments);\r\n }\r\n\r\n function goBackHomePage() {\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\r\n\r\n function goToDeliveryDriver(){\r\n $state.go(CONFIG.routes.candidate.portal.modeOfTransport)\r\n\t\t}\n\n\t\tfunction goToEmploymentRecord() {\n\t\t\t$state.go(CONFIG.routes.candidate.portal.employmentRecord, { id: vm.careCandidate.EmploymentRecords[0].Identifier });\r\n\t\t}\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('WheelBookingController', WheelBookingController);\r\n\r\n /** @ngInject */\r\n function WheelBookingController($state, CandidatePortalService, CONFIG ,CommonService, $rootScope) {\r\n var vm = this;\r\n vm.booking = {};\r\n vm.backHomePage = backHomePage;\r\n vm.checkDate = checkDate;\r\n vm.checkTime = checkTime;\r\n vm.formatDate = formatDate;\r\n vm.showTextMainCan = false;\r\n vm.showTextAddCan = false;\r\n getBooking();\r\n function backHomePage() {\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack)\r\n }\r\n\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.booking = data.data.result;\r\n angular.forEach(vm.booking.potentialCandidates, function (item) {\r\n if (item.candidateType == 0) {\r\n vm.showTextMainCan = true;\r\n vm.showTextAddCan = false;\r\n }\r\n else if(item.candidateType == 1) {\r\n vm.showTextAddCan = true;\r\n vm.showTextMainCan = false;\r\n }\r\n })\r\n $rootScope.loading = false;\r\n return vm.booking\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.bookingRequests)\r\n })\r\n }\r\n\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('HomePageCandidateController', HomePageCandidateController);\r\n\r\n /** @ngInject */\r\n function HomePageCandidateController($rootScope, $state, $window, CONFIG, $localStorage, Auth) {\r\n\r\n var vm = this;\r\n vm.user = angular.copy($localStorage.userProfile);\r\n\r\n vm.goWorkfaceProfile = goWorkfaceProfile;\r\n vm.goCurrentStarRating = goCurrentStarRating;\r\n vm.goBookingsHistory = goBookingsHistory;\r\n vm.goCommunityTuPage = goCommunityTuPage;\r\n vm.goEmploymentSupport = goEmploymentSupport;\r\n vm.goCarePathway = goCarePathway;\n vm.logout = logout;\r\n\r\n function goWorkfaceProfile(){\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile);\r\n }\r\n\r\n function goCurrentStarRating(){\r\n $state.go(CONFIG.routes.candidate.portal.currentStarRating);\r\n }\r\n\r\n function goBookingsHistory(){\r\n $state.go(CONFIG.routes.candidate.portal.bookingsHistory);\r\n }\r\n\r\n function goCommunityTuPage() {\r\n $window.open('http://community-tu.org/');\r\n }\r\n\r\n function goEmploymentSupport() {\r\n $state.go(CONFIG.routes.candidate.portal.employmentSupport);\r\n }\r\n\r\n function goCarePathway() {\r\n\t\t\t//$state.go(CONFIG.routes.candidate.portal.helpUsToHelpYou);\n $state.go(CONFIG.routes.candidate.portal.suitableForCare);\r\n }\n\n function logout() {\n Auth.logout();\r\n $rootScope.isHasLogin = true;\r\n $rootScope.showNewPolicySticky = false;\r\n\r\n delete $localStorage.user;\r\n delete $localStorage.userProfile;\r\n vm.user = null;\r\n\r\n $state.go(CONFIG.routes.login);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('UploadPhotoController', UploadPhotoController);\r\n\r\n /** @ngInject */\r\n function UploadPhotoController($state, $scope, $uibModal, CandidatePortalService, $localStorage, CONFIG, $rootScope, Upload, $sce, ngToast, $timeout) {\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidate.profile = angular.copy($localStorage.userProfile.profile) || {};\r\n vm.isImage = false;\r\n vm.isVideo = false;\r\n vm.isHasVideo = false;\r\n vm.text = $sce.trustAsHtml('Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function selectFile($files) {\r\n if (vm.files.name !== null) {\r\n vm.photoFile = vm.files.name;\r\n vm.photoFile = vm.photoFile.split(\".\").pop();\r\n if (vm.photoFile !== \"png\" && vm.photoFile !== \"jpg\" && vm.photoFile !== \"jpeg\" && vm.photoFile !== \"gif\" && vm.photoFile !== \"mp4\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and MP4 files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n if ($files.length > 0) {\r\n vm.file = $files[0];\r\n var type = checkTypeFile(vm.file.type);\r\n if (vm.file) {\r\n var imgSrc = URL.createObjectURL(vm.file);\r\n if (type == 1) {\r\n vm.isImage = true;\r\n vm.userCandidate.profile.videoType = null;\r\n if (vm.userCandidate.profile.videoUrl) {\r\n vm.userCandidate.profile.videoUrl = null;\r\n }\r\n }\r\n if (type == 2) {\r\n if (vm.file.size >= 50000000) {\r\n vm.files = null;\r\n vm.fileOnlyUpload = \"Sorry! LB X-Change is supporting file under 50mb\";\r\n return;\r\n }\r\n vm.isVideo = true;\r\n vm.isPlay = true;\r\n vm.userCandidate.profile.videoType = vm.file.type;\r\n if (vm.userCandidate.profile.photoUrl) {\r\n vm.userCandidate.profile.photoUrl = null;\r\n }\r\n uploadFiles();\r\n }\r\n if (imgSrc && imgSrc !== '') {\r\n vm.isHasImage = false;\r\n vm.fileUrl = imgSrc;\r\n $timeout(function () {\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getApiFunction(api) {\r\n vm.cropImageApi = api;\r\n\r\n }\r\n\r\n function checkNameFile(filename) {\r\n var n = filename.split(\".\");\r\n return n[n.length - 1];\r\n\r\n }\r\n\r\n function checkTypeFile(filename) {\r\n var ext = filename.split(\"/\");\r\n if (ext[0].toLowerCase() == \"image\") {\r\n return 1\r\n }\r\n if (ext[0].toLowerCase() == \"video\") {\r\n return 2\r\n }\r\n return\r\n }\r\n\r\n function onUpdateVideoOrPhoto() {\r\n vm.userCandidate.id = vm.userCandidate.id || vm.userCandidate.profile.id;\r\n var typeFile = checkTypeFile(vm.files.type);\r\n if (typeFile == 1) {\r\n CandidatePortalService.updateUserPhoto(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n if (data.data.result.profile.photoUrl !== null && data.data.result.profile.videoUrl !== null) {\r\n vm.documentImgFile = data.data.result.profile.photoUrl;\r\n vm.documentImgFile = vm.documentFile.split(\".\").pop();\r\n vm.documentVideoFile = data.data.result.profile.videoUrl;\r\n vm.documentVideoFile = vm.documentFile.split(\".\").pop();\r\n if (vm.documentImgFile !== \"png\" && vm.documentImgFile !== \"jpg\" && vm.documentImgFile !== \"jpeg\" && vm.documentImgFile !== \"gif\" && vm.documentVideoFile !== \"mp4\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, GIF JPEG and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n } else if (typeFile == 2) {\r\n $rootScope.loading = true;\r\n CandidatePortalService.updateUserVideo(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n }\r\n\r\n\r\n function openVideoToolTipModal(index) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/signup/partials/addvideo-tooltip-modal.html',\r\n controller: function ($scope, $uibModalInstance, index) {\r\n $scope.index = index;\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n\r\n },\r\n size: 'md',\r\n resolve: {\r\n index: index\r\n }\r\n });\r\n }\r\n\r\n function removeFiles() {\r\n if (vm.userCandidate.profile.photoUrl || vm.userCandidate.profile.videoUrl) {\r\n $rootScope.loading = true;\r\n CandidatePortalService.removeUserPhotoAndVideo(vm.userCandidate.id).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $rootScope.loading = false;\r\n vm.userCandidate.profile.photoUrl = null;\r\n vm.userCandidate.profile.videoUrl = null;\r\n vm.userCandidate.profile.videoType = null;\r\n checkHasPhotoOrVideo()\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n vm.isHasImage = false;\r\n }\r\n if (vm.fileUrl) {\r\n vm.fileUrl = null;\r\n }\r\n if (vm.files) {\r\n vm.files = null;\r\n }\r\n if (vm.isImage) {\r\n vm.isImage = false\r\n }\r\n if (vm.isHasVideo) {\r\n vm.isHasVideo = false\r\n }\r\n }\r\n\r\n function goWorkfaceProfile() {\r\n if ($state.params.type === 'signup') {\r\n $state.go(CONFIG.routes.candidate.signup.step6, {}, {reload: true})\r\n } else {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile, {}, {reload: true})\r\n }\r\n }\r\n\r\n function play(e) {\r\n if (!vm.userCandidate.profile.videoType) return;\r\n var elem = angular.element(e.currentTarget).parent().find('video');\r\n if (elem[0].paused) {\r\n elem[0].play();\r\n elem.muted = \"muted\";\r\n angular.element(e.currentTarget).parent().find('.play-video').fadeOut()\r\n elem.on('ended', function () {\r\n if (elem[0].paused) {\r\n elem[0].play();\r\n }\r\n })\r\n } else {\r\n elem[0].pause();\r\n angular.element(e.currentTarget).parent().find('.play-video').fadeIn()\r\n }\r\n\r\n };\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('UploadPassportDocumentController', UploadPassportDocumentController);\r\n\r\n /** @ngInject */\r\n function UploadPassportDocumentController($state, $localStorage, $scope, CandidatePortalService, $rootScope, Upload, CONFIG, ngToast, $timeout) {\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.noDocumentation = noDocumentation;\r\n vm.updateUserDocument = updateUserDocument;\r\n vm.updateUserPassport = updateUserPassport;\r\n vm.selectPhotoImageLast = selectPhotoImageLast;\r\n vm.selectDocumentImageLast = selectDocumentImageLast;\r\n vm.removePassportFiles = removePassportFiles;\r\n vm.removeDocumentFiles = removeDocumentFiles;\r\n vm.backToProfile = backToProfile;\r\n vm.onUpdateAlternavtiveDoc = onUpdateAlternavtiveDoc;\r\n vm.goUploadDocument = goUploadDocument;\r\n vm.goAlternativeDocument = goAlternativeDocument;\r\n vm.showImgFilePassport = true;\r\n vm.showPdfFilePassport = false;\r\n vm.showImgFileDocument = true;\r\n vm.showPdfFileDocument = false;\r\n if (vm.userCandidate.profile.passportUrl !== null) {\r\n vm.pdfFileCurrentPassport = vm.userCandidate.profile.passportUrl;\r\n vm.pdfFileCurrentPassport = vm.pdfFileCurrentPassport.split(\".\").pop();\r\n }\r\n if (vm.userCandidate.profile.documentUrl !== null) {\r\n vm.pdfFileCurrentDocument = vm.userCandidate.profile.documentUrl;\r\n vm.pdfFileCurrentDocument = vm.pdfFileCurrentDocument.split(\".\").pop();\r\n }\r\n function noDocumentation() {\r\n $state.go(CONFIG.routes.candidate.portal.noDocument);\r\n }\r\n\r\n function selectPhotoImageLast($files) {\r\n if (vm.copyOfPassport) {\r\n vm.photoFilePassport = vm.copyOfPassport.name;\r\n vm.photoFilePassport = vm.photoFilePassport.split(\".\").pop().toLowerCase();\r\n if (vm.photoFilePassport == \"pdf\") {\r\n vm.showImgFilePassport = false;\r\n vm.showPdfFilePassport = true;\r\n } else {\r\n vm.showImgFilePassport = true;\r\n vm.showPdfFilePassport = false;\r\n }\r\n if (vm.photoFilePassport !== \"png\" && vm.photoFilePassport !== \"jpg\" && vm.photoFilePassport !== \"jpeg\" && vm.photoFilePassport !== \"gif\" && vm.photoFilePassport !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasLastPhotoImage = true;\r\n vm.filePhotoUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function selectDocumentImageLast($files) {\r\n if (vm.documentFile) {\r\n vm.photoFileDocument = vm.documentFile.name;\r\n vm.photoFileDocument = vm.photoFileDocument.split(\".\").pop().toLowerCase();\r\n if (vm.photoFileDocument == \"pdf\") {\r\n vm.showImgFileDocument = false;\r\n vm.showPdfFileDocument = true;\r\n } else {\r\n vm.showImgFileDocument = true;\r\n vm.showPdfFileDocument = false;\r\n }\r\n if (vm.photoFileDocument !== \"png\" && vm.photoFileDocument !== \"jpg\" && vm.photoFileDocument !== \"jpeg\" && vm.photoFileDocument !== \"gif\" && vm.photoFileDocument !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasLastDocumentImage = true;\r\n vm.fileDocumentUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function updateUserPassport() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyOfPassport) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyOfPassport\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.profile.passportUrl = response.data[0].url;\r\n CandidatePortalService.updateUserPassport(vm.userCandidate).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n if (data.data.result.profile.passportUrl !== null) {\r\n vm.documentFile = data.data.result.profile.passportUrl;\r\n vm.documentFile = vm.documentFile.split(\".\").pop().toLowerCase();\r\n if (vm.documentFile !== \"png\" && vm.documentFile !== \"jpg\" && vm.documentFile !== \"jpeg\" && vm.documentFile !== \"gif\" && vm.documentFile !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function updateUserDocument() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.documentFile) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.documentFile\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.profile.documentUrl = response.data[0].url;\r\n CandidatePortalService.updateUserDocument(vm.userCandidate).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n if (data.data.result.profile.documentUrl !== null) {\r\n vm.documentFile = data.data.result.profile.documentUrl;\r\n vm.documentFile = vm.documentFile.split(\".\").pop().toLowerCase();\r\n if (vm.documentFile !== \"png\" && vm.documentFile !== \"jpg\" && vm.documentFile !== \"jpeg\" && vm.documentFile !== \"gif\" && vm.documentFile !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function removePassportFiles() {\r\n if (vm.userCandidate.profile.passportUrl) {\r\n $rootScope.loading = true;\r\n CandidatePortalService.removeUserPassport(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n vm.userCandidate.profile.passportUrl = null;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n if (vm.filePhotoUrl) {\r\n vm.filePhotoUrl = null;\r\n }\r\n if (vm.isHasLastPhotoImage) {\r\n vm.isHasLastPhotoImage = false\r\n }\r\n }\r\n\r\n function removeDocumentFiles() {\r\n if (vm.userCandidate.profile.documentUrl) {\r\n $rootScope.loading = true;\r\n CandidatePortalService.removeUserDocument(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n vm.userCandidate.profile.documentUrl = null;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n if (vm.fileDocumentUrl) {\r\n vm.fileDocumentUrl = null;\r\n }\r\n if (vm.isHasLastDocumentImage) {\r\n vm.isHasLastDocumentImage = false\r\n }\r\n }\r\n\r\n function backToProfile() {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile)\r\n }\r\n\r\n function onUpdateAlternavtiveDoc() {\r\n updateUserDocument();\r\n backToProfile();\r\n }\r\n\r\n function goUploadDocument() {\r\n $state.go(CONFIG.routes.candidate.portal.uploadDocuments);\r\n\r\n }\r\n\r\n function goAlternativeDocument() {\r\n $state.go(CONFIG.routes.candidate.portal.alternativeDocumentation);\r\n\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('UploadDeliveryDriverDocumentController', UploadDeliveryDriverDocumentController);\r\n\r\n /** @ngInject */\r\n function UploadDeliveryDriverDocumentController($state, $localStorage, $timeout, SignupCandidateService, $rootScope, Upload, CONFIG, ngToast) {\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n if ($localStorage.userProfile) {\r\n vm.userCandidate.profile = angular.copy($localStorage.userProfile.profile) || {};\r\n }\r\n vm.updateProofOfAddress = updateProofOfAddress;\r\n vm.updateVehicle = updateVehicle;\r\n vm.selectProofOfAddressImage = selectProofOfAddressImage;\r\n vm.selectVehicleImage = selectVehicleImage;\r\n vm.removeProofOfAddressFiles = removeProofOfAddressFiles;\r\n vm.removeVehicleFiles = removeVehicleFiles;\r\n vm.goUploadDBSCertificatePage = goUploadDBSCertificatePage;\r\n vm.goWorkfaceProfile = goWorkfaceProfile;\r\n active();\r\n function active() {\r\n }\r\n\r\n\r\n function updateProofOfAddress() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyProofOfAddress) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyProofOfAddress\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.proofOfAddressUrl = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function updateVehicle() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyOfVehicle) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyOfVehicle\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.vehicleUrl = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function selectProofOfAddressImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasProofOfAddressImage = true;\r\n vm.fileProofOfAddressUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function selectVehicleImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasVehicleImage = true;\r\n vm.fileVehicleUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeProofOfAddressFiles() {\r\n if (vm.userCandidate.deliveryDriver.proofOfAddressUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeProofOfAddress(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.proofOfAddressUrl = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileProofOfAddressUrl) {\r\n vm.fileProofOfAddressUrl = null;\r\n }\r\n if (vm.isHasProofOfAddressImage) {\r\n vm.isHasProofOfAddressImage = false\r\n }\r\n }\r\n\r\n function removeVehicleFiles() {\r\n if (vm.userCandidate.deliveryDriver.vehicleUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeVehicle(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.vehicleUrl = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileVehicleUrl) {\r\n vm.fileVehicleUrl = null;\r\n }\r\n if (vm.isHasVehicleImage) {\r\n vm.isHasVehicleImage = false\r\n }\r\n }\r\n\r\n vm.goUploadDBSCertificatePage = goUploadDBSCertificatePage;\r\n function goUploadDBSCertificatePage() {\r\n $state.go(CONFIG.routes.candidate.portal.uploadDBSCertificate);\r\n }\r\n\r\n function goWorkfaceProfile() {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile, {}, {reload: true});\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('UploadDBSCertificateController', UploadDBSCertificateController);\r\n\r\n /** @ngInject */\r\n function UploadDBSCertificateController(SignupCandidateService, Upload, ngToast, $timeout, $rootScope, $state, $window, CONFIG, $localStorage) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n if ($localStorage.userProfile) {\r\n vm.userCandidate.profile = angular.copy($localStorage.userProfile.profile) || {};\r\n }\r\n vm.updateDBSCertificate = updateDBSCertificate;\r\n vm.selectDBSCertificateImage = selectDBSCertificateImage;\r\n vm.removeDBSCertificateFiles = removeDBSCertificateFiles;\r\n vm.updateDeliveryDriver = updateDeliveryDriver;\r\n vm.goWorkfaceProfile = goWorkfaceProfile;\r\n active();\r\n function active() {\r\n }\r\n\r\n\r\n function updateDBSCertificate() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyDBSCertificate) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyDBSCertificate\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.dbsCertificateUrl = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function selectDBSCertificateImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasDBSCertificateImage = true;\r\n vm.fileDBSCertificateUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeDBSCertificateFiles() {\r\n if (vm.userCandidate.deliveryDriver.dbsCertificateUrl) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeDBSCertificate(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.dbsCertificateUrl = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileDBSCertificateUrl) {\r\n vm.fileDBSCertificateUrl = null;\r\n }\r\n if (vm.isHasDBSCertificateImage) {\r\n vm.isHasDBSCertificateImage = false\r\n }\r\n }\r\n\r\n function updateDeliveryDriver() {\r\n var resultCompare = angular.equals(vm.userCandidate, vm.userCandidateTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n $state.go(CONFIG.routes.candidate.portal.insuranceCode);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n else {\r\n $state.go(CONFIG.routes.candidate.portal.insuranceCode);\r\n }\r\n }\r\n\r\n function goWorkfaceProfile() {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile, {}, {reload: true});\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SuitableForCareCandidateController', SuitableForCareCandidateController);\r\n\r\n /** @ngInject */\r\n\tfunction SuitableForCareCandidateController($rootScope, $state, $window, CONFIG, $localStorage, careCandidatesFactory) {\r\n\r\n var vm = this;\n vm.labourXchangeWebsite = LabourXchange.Website.LabourXchange.Site;\r\n\t\tvm.user = angular.copy($localStorage.userProfile);\n\t\tvm.careCandidate = null;\r\n\r\n vm.notForMe = notForMe;\r\n vm.whatsTheProcess = whatsTheProcess;\r\n\t\tvm.becomeEligible = becomeEligible;\n\n\t\tif (vm.user) {\n\t\t\t$rootScope.loading = true;\n\n\t\t\tcareCandidatesFactory.getCurrent(vm.user.id)\n\t\t\t\t.then(\n\t\t\t\t\tfunction (careCandidate) {\n\t\t\t\t\t\tif (!careCandidate) {\n\t\t\t\t\t\t\tvm.careCandidate = {};\r\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvm.careCandidate = careCandidate;\r\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t},\n\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\tconsole.log(error);\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t}\n\t\t\t\t);\r\n\t\t}\r\n\r\n function notForMe() {\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\r\n\r\n function whatsTheProcess() {\r\n\r\n }\r\n\r\n function becomeEligible() {\r\n $state.go(CONFIG.routes.candidate.portal.becomeEligibleForCare);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('RatingStarCandidateController', RatingStarCandidateController);\r\n\r\n /** @ngInject */\r\n function RatingStarCandidateController($state, $rootScope,CONFIG, CandidatePortalService) {\r\n\r\n var vm = this;\r\n vm.submitRatingStar = submitRatingStar;\r\n getBooking();\r\n function getBooking() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.ratingStar = data.data.result;\r\n\r\n CandidatePortalService.getClientRateByCandidate(vm.ratingStar.potentialCandidates[0].id).then(function (data) {\r\n vm.ratingStarList = data.data.result || {};\r\n vm.ratingStarListOrigin = angular.copy(vm.ratingStarList)\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function submitRatingStar() {\r\n var resultCompare = angular.equals(vm.ratingStarList, vm.ratingStarListOrigin);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n CandidatePortalService.rateClient(vm.ratingStar.potentialCandidates[0].id, vm.ratingStarList).then(function () {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n } else {\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\r\n\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('ProfileInformationController', ProfileInformationController);\r\n\r\n /** @ngInject */\r\n function ProfileInformationController(CONFIG, $localStorage, $rootScope, CandidatePortalService, SignupCandidateService, $state, dataList, ngToast) {\r\n var vm = this;\r\n vm.profileForm = [];\r\n vm.dateFormat = CONFIG.bootstrapDateFormat;\r\n vm.receivingEmailStatus = CONFIG.receivingEmailStatus;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.checkBOD = false;\r\n vm.checkBODOverLimit = false;\r\n if (vm.userCandidate) {\r\n if (vm.userCandidate.profile) {\r\n vm.userCandidate.profile.dateOfBirth = vm.userCandidate.profile.dateOfBirth ? new Date(vm.userCandidate.profile.dateOfBirth) : '';\r\n }\r\n }\r\n vm.calendarPopup = {\r\n opened: false\r\n };\r\n vm.dateOptions = {\r\n maxDate: new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate())\r\n };\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.updateCandidates = updateCandidates;\r\n vm.openCalendarPopup = openCalendarPopup;\r\n vm.checkBODDate = checkBODDate;\r\n vm.resetCheckBOD = resetCheckBOD;\r\n vm.goToDeliveryDriver = goToDeliveryDriver;\r\n vm.goToHowCommunicate = goToHowCommunicate;\r\n vm.requestDeleteAccount = requestDeleteAccount;\r\n vm.updateReceivingEmailStatus = updateReceivingEmailStatus;\r\n activate();\r\n\r\n function activate() {\r\n getValuesMostSearchByClient();\r\n getTypeOfWork();\r\n getEmploymentStatuses();\r\n getKeySkills();\r\n getWorkExperiences();\r\n }\r\n\r\n function getValuesMostSearchByClient() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getValuesMostSearchByClient().then(function (data) {\r\n $rootScope.loading = false;\r\n vm.valuesMostSearch = data.data.result;\r\n })\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n function getEmploymentStatuses() {\r\n dataList.getEmploymentStatuses().then(function (data) {\r\n vm.employmentStatuses = data.data.result.items;\r\n })\r\n }\r\n\r\n function getKeySkills() {\r\n dataList.getKeySkills().then(function (data) {\r\n vm.keySkills = data.data.result.items;\r\n })\r\n }\r\n\r\n function getWorkExperiences() {\r\n dataList.getKeyExperiences().then(function (data) {\r\n vm.workExperiences = data.data.result.items;\r\n })\r\n }\r\n\r\n function updateCandidates() {\r\n if (vm.profileForm.$valid && !vm.checkBODOverLimit) {\r\n var resultCompare = angular.equals(vm.userCandidate, vm.userCandidateTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n $localStorage.address = vm.userCandidate.profile.address;\r\n SignupCandidateService.updateCandidateUserFull(vm.userCandidate).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $rootScope.showNewPolicySticky = vm.userCandidate.isAcceptedGDPR ? false : true;\r\n $rootScope.loading = false;\r\n goWorkfaceProfile()\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n })\r\n } else {\r\n goWorkfaceProfile()\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n function openCalendarPopup() {\r\n vm.calendarPopup.opened = true;\r\n }\r\n\r\n function checkBODDate(BODDate) {\r\n vm.checkBOD = true;\r\n if (BODDate && BODDate.getTime() > vm.dateOptions.maxDate.getTime()) {\r\n vm.checkBODOverLimit = true;\r\n } else {\r\n vm.checkBODOverLimit = false;\r\n }\r\n\r\n }\r\n\r\n function goWorkfaceProfile() {\r\n if ($state.params.type === 'signup') {\r\n $state.go(CONFIG.routes.candidate.signup.step6)\r\n } else {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile)\r\n }\r\n }\r\n\r\n function requestDeleteAccount() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.requestDeleteAccount().then(function () {\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n })\r\n }\r\n\r\n function resetCheckBOD() {\r\n vm.checkBOD = false;\r\n }\r\n\r\n function goToHowCommunicate() {\r\n $state.go(CONFIG.routes.candidate.portal.howCommunicate)\r\n }\r\n\r\n function goToDeliveryDriver() {\r\n $state.go(CONFIG.routes.candidate.portal.modeOfTransport)\r\n }\r\n\r\n function updateReceivingEmailStatus(status) {\r\n $rootScope.loading = true;\r\n var dataReq = {\r\n receivingEmailStatus: status,\r\n id: vm.userCandidate.id\r\n };\r\n CandidatePortalService.receivingEmail(dataReq).then(function (res) {\r\n vm.userCandidate.receivingEmailStatus = res.data.result.receivingEmailStatus;\r\n $localStorage.userProfile.receivingEmailStatus = res.data.result.receivingEmailStatus;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function () {\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('PaymentDetailsController', PaymentDetailsController);\r\n\r\n /** @ngInject */\r\n function PaymentDetailsController($state, $rootScope, CONFIG ,$localStorage, SignupCandidateService) {\r\n var vm = this;\r\n vm.paymentDetailForm = [];\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.onBackToProfile = onBackToProfile;\r\n vm.onEarningToDate = onEarningToDate;\r\n function onBackToProfile() {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile)\r\n }\r\n\r\n function onEarningToDate() {\r\n var resultCompare = angular.equals(vm.userCandidate, vm.userCandidateTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n SignupCandidateService.createUserBillingInfo(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n $state.go(CONFIG.routes.candidate.portal.bookingsHistory)\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.emailMessage = error.data.exceptionMessage;\r\n })\r\n } else {\r\n $state.go(CONFIG.routes.candidate.portal.bookingsHistory)\r\n }\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('ModeOfTransportController', ModeOfTransportController);\r\n\r\n /** @ngInject */\r\n function ModeOfTransportController(SignupCandidateService, dataList, $rootScope, $state, $window, CONFIG, $localStorage) {\r\n\r\n var vm = this;\r\n vm.user = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.user);\r\n vm.transportationModes = [];\r\n vm.updateDeliveryDriver = updateDeliveryDriver;\r\n vm.goWorkfaceProfile = goWorkfaceProfile;\r\n activate();\r\n\r\n function activate() {\r\n getTransportationModes();\r\n }\r\n\r\n function getTransportationModes() {\r\n dataList.getTransportationModes().then(function (data) {\r\n vm.transportationModes = data.data.result.items;\r\n })\r\n }\r\n function updateDeliveryDriver() {\r\n var resultCompare = angular.equals(vm.user, vm.userCandidateTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateDeliveryDriver(vm.user).then(function(res){\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = res.data.result;\r\n $state.go(CONFIG.routes.candidate.portal.uploadDeliveryDriverDocument);\r\n },function(){\r\n $rootScope.loading = false;\r\n });\r\n } else {\r\n $state.go(CONFIG.routes.candidate.portal.uploadDeliveryDriverDocument);\r\n }\r\n }\r\n function goWorkfaceProfile() {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile, {}, {reload: true});\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('InsuranceCodeController', InsuranceCodeController);\r\n\r\n /** @ngInject */\r\n function InsuranceCodeController(SignupCandidateService, $timeout, Upload, ngToast, $rootScope, $state, $window, CONFIG, $localStorage) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.updateInsuranceCode = updateInsuranceCode;\r\n vm.selectInsuranceCodeImage = selectInsuranceCodeImage;\r\n vm.removeInsuranceCodeFiles = removeInsuranceCodeFiles;\r\n vm.goAlreadyToGoAndEarnExtra = goAlreadyToGoAndEarnExtra;\r\n vm.goWorkfaceProfile = goWorkfaceProfile;\r\n function updateInsuranceCode() {\r\n vm.userCandidate.id = $localStorage.userProfile.id || vm.userCandidate.profile.id;\r\n if (vm.copyInsuranceCode) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=\" + vm.userCandidate.id,\r\n data: {\r\n file: vm.copyInsuranceCode\r\n }\r\n }).then(function (response) {\r\n vm.userCandidate.deliveryDriver.insuranceCode = response.data[0].url;\r\n SignupCandidateService.updateDeliveryDriver(vm.userCandidate).then(function (data) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function selectInsuranceCodeImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $timeout(function () {\r\n vm.isHasInsuranceCodeImage = true;\r\n vm.fileInsuranceCodeUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeInsuranceCodeFiles() {\r\n if (vm.userCandidate.deliveryDriver.insuranceCode) {\r\n $rootScope.loading = true;\r\n SignupCandidateService.removeInsuranceCode(vm.userCandidate.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.userCandidate.deliveryDriver.insuranceCode = null;\r\n $localStorage.userProfile = data.data.result;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileInsuranceCodeUrl) {\r\n vm.fileInsuranceCodeUrl = null;\r\n }\r\n if (vm.isHasInsuranceCodeImage) {\r\n vm.isHasInsuranceCodeImage = false\r\n }\r\n }\r\n\r\n function goAlreadyToGoAndEarnExtra() {\r\n $state.go(CONFIG.routes.candidate.portal.alreadyToGoAndEarnExtra);\r\n }\r\n\r\n function goWorkfaceProfile() {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile, {}, {reload: true});\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('CandidateHowCommunicateController', CandidateHowCommunicateController);\r\n\r\n /** @ngInject */\r\n function CandidateHowCommunicateController($state, $rootScope, CONFIG ,$localStorage, CandidatePortalService) {\r\n\r\n var vm = this;\r\n vm.profileHowCommunicateForm = [];\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.updateCandidateUserContact = updateCandidateUserContact;\r\n if (!vm.userCandidate.communicate) {\r\n vm.userCandidate.communicate = {\r\n isEmailAddress: true,\r\n isSecondEmailAddress: false,\r\n isTelephoneNumber: false,\r\n isMobileNumber: false\r\n }\r\n }\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n function updateCandidateUserContact() {\r\n if (vm.profileHowCommunicateForm.$valid) {\r\n var resultCompare = angular.equals(vm.userCandidate, vm.userCandidateTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n CandidatePortalService.updateCandidateUserContact(vm.userCandidate).then(function (data) {\r\n $localStorage.userProfile = data.data.result;\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n } else {\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('lx.candidate')\r\n .controller('HelpUsToHelpYouCandidateController', HelpUsToHelpYouCandidateController);\r\n\r\n\t/** @ngInject */\r\n function HelpUsToHelpYouCandidateController($rootScope, $state, $window, CONFIG, $localStorage, CandidatePortalService, careCandidatesFactory) {\r\n\r\n\t\tvar vm = this;\n vm.labourXchangeWebsite = LabourXchange.Website.LabourXchange.Site;\n vm.enums = LabourXchange.Enums;\r\n vm.user = angular.copy($localStorage.userProfile);\n vm.allQuestionsCompleted = false;\n vm.proceedToCarePathway = false;\r\n\r\n vm.finish = finish;\n vm.findOutMore = findOutMore;\n vm.backToHomepage = backToHomepage;\r\n\n\t\tif (vm.user) {\n\t\t\t$rootScope.loading = true;\n\n\t\t\tcareCandidatesFactory.getCurrent(vm.user.id)\n\t\t\t\t.then(\n\t\t\t\t\tfunction (careCandidate) {\n\t\t\t\t\t\tif (!careCandidate) {\n\t\t\t\t\t\t\tvm.careCandidate = {\n\t\t\t\t\t\t\t\tUser: {\n Id: vm.user.id\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n vm.careCandidate = careCandidate;\n\n if (checkAccessToCarePathway()) {\n vm.allQuestionsCompleted = true;\n vm.proceedToCarePathway = checkAccessToCarePathway();\n\n if (vm.proceedToCarePathway) $state.go(CONFIG.routes.candidate.portal.suitableForCare);\r\n }\r\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t},\n\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\tconsole.log(error);\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t}\n\t\t\t\t);\r\n\t\t}\n\r\n function finish() {\n vm.error = false;\n\r\n if (vm.careCandidate.GoodEmployer && vm.careCandidate.BanksImproveMost && vm.careCandidate.MostImportantQualities && vm.careCandidate.WorseOrderingTakeaway && vm.careCandidate.MostImportantQualitiesWork && vm.careCandidate.BestEmployee && vm.careCandidate.FriendsFamilyDescribeYou && vm.careCandidate.ChooseFilmPreferance && vm.careCandidate.WorstPartNewJob && vm.careCandidate.OftenBored && vm.careCandidate.WorstPartCookDinner && vm.careCandidate.MachinesBetterHumans) {\n var personalInteractionScore = 0;\n var repetitiveTasksScore = 0;\n\n personalInteractionScore = (vm.careCandidate.GoodEmployer + vm.careCandidate.BanksImproveMost + vm.careCandidate.MostImportantQualities) - (vm.careCandidate.WorseOrderingTakeaway + vm.careCandidate.MostImportantQualitiesWork + vm.careCandidate.BestEmployee);\n repetitiveTasksScore = (vm.careCandidate.OftenBored + vm.careCandidate.WorstPartCookDinner + vm.careCandidate.MachinesBetterHumans) - (vm.careCandidate.FriendsFamilyDescribeYou + vm.careCandidate.ChooseFilmPreferance + vm.careCandidate.WorstPartNewJob);\n\n $rootScope.loading = true;\n\n careCandidatesFactory.saveCareCandidate(vm.careCandidate)\n .then(\n function (careCandidate) {\n vm.allQuestionsCompleted = true;\n vm.proceedToCarePathway = checkAccessToCarePathway();\n\n $rootScope.loading = false;\r\n },\n function (error) {\n console.log(error);\n\n $rootScope.loading = false;\r\n }\n );\n\n \r\n }\n else {\n vm.error = true;\r\n }\r\n }\n\n function findOutMore() {\n $state.go(CONFIG.routes.candidate.portal.suitableForCare);\r\n }\n\n function backToHomepage() {\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\n\n function checkAccessToCarePathway() {\n if (vm.careCandidate.GoodEmployer && vm.careCandidate.BanksImproveMost && vm.careCandidate.MostImportantQualities && vm.careCandidate.WorseOrderingTakeaway && vm.careCandidate.MostImportantQualitiesWork && vm.careCandidate.BestEmployee && vm.careCandidate.FriendsFamilyDescribeYou && vm.careCandidate.ChooseFilmPreferance && vm.careCandidate.WorstPartNewJob && vm.careCandidate.OftenBored && vm.careCandidate.WorstPartCookDinner && vm.careCandidate.MachinesBetterHumans) {\n var personalInteractionScore = 0;\n var repetitiveTasksScore = 0;\n\n personalInteractionScore = (vm.careCandidate.GoodEmployer + vm.careCandidate.BanksImproveMost + vm.careCandidate.MostImportantQualities) - (vm.careCandidate.WorseOrderingTakeaway + vm.careCandidate.MostImportantQualitiesWork + vm.careCandidate.BestEmployee);\n repetitiveTasksScore = (vm.careCandidate.OftenBored + vm.careCandidate.WorstPartCookDinner + vm.careCandidate.MachinesBetterHumans) - (vm.careCandidate.FriendsFamilyDescribeYou + vm.careCandidate.ChooseFilmPreferance + vm.careCandidate.WorstPartNewJob);\n\n if (personalInteractionScore >= 4 && repetitiveTasksScore >= 2) {\n return true;\r\n }\r\n }\n\n return false;\r\n }\r\n\t}\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('EmploymentSupportController', EmploymentSupportController);\r\n\r\n /** @ngInject */\r\n function EmploymentSupportController($rootScope, $state, CONFIG, $localStorage, CommonService) {\r\n\r\n var vm = this;\r\n vm.user = angular.copy($localStorage.userProfile);\r\n vm.filter = {\r\n typeName: CONFIG.pageTypes.employmentSupport,\r\n pageNo: 1,\r\n pageSize: 25\r\n };\r\n vm.routeConfig = CONFIG.routes;\r\n vm.newsPage = null;\r\n vm.communityMembershipExpires = '';\r\n vm.contentPageRows = [];\r\n\r\n vm.goEmploymentSupportNews = goEmploymentSupportNews;\r\n\r\n active();\r\n calculateCommunityMembershipExpiry();\r\n\r\n function active() {\r\n getListNewsPage();\r\n }\r\n\r\n function goEmploymentSupportNews() {\r\n $state.go(CONFIG.routes.candidate.portal.employmentSupportNews);\r\n }\r\n\r\n function calculateCommunityMembershipExpiry() {\r\n if (vm.user.profile.communityMembershipExpiry) {\r\n var today = moment()\r\n var communityMembershipExpiryDate = moment(vm.user.profile.communityMembershipExpiry);\r\n var expiresIn = moment.duration(communityMembershipExpiryDate.diff(today)).asDays();\r\n\r\n if (expiresIn > 0) {\r\n vm.communityMembershipExpires = 'Your free membership runs out in ' + parseInt(expiresIn) + ' day(s), to renew ';\r\n }\r\n else {\r\n vm.communityMembershipExpires = 'Your free membership has run out, to renew ';\r\n }\r\n }\r\n }\r\n\r\n function getListNewsPage() {\r\n //vm.landingPages = [\r\n // { title: '1' },\r\n // { title: '2' },\r\n // { title: '3' },\r\n // { title: '4' },\r\n // { title: '5' },\r\n //];\r\n\r\n //var contentColumns = [];\r\n\r\n //for (var i = 0; i < vm.landingPages.length; i++) {\r\n // //if (vm.landingPages[i].pageType.name === 'Employment support (news)') {\r\n // // vm.newsPage = vm.landingPages[i];\r\n // // break;\r\n // //}\r\n // //else {\r\n // contentColumns.push(vm.landingPages[i]);\r\n\r\n // if (contentColumns.length % 3 === 0) {\r\n // vm.contentPageRows.push(contentColumns);\r\n // contentColumns = [];\r\n // }\r\n // //}\r\n //}\r\n\r\n //if (contentColumns.length > 0) vm.contentPageRows.push(contentColumns);\r\n\r\n //debugger;\r\n\r\n $rootScope.loading = true;\r\n\r\n CommonService.getListPagesByPageType(vm.filter).then(\r\n function (res) {\r\n vm.landingPages = res.data.result.items;\r\n\r\n if (vm.landingPages.length == 0) {\r\n vm.listLandingResponse = 'No news';\r\n }\r\n else {\r\n var contentColumns = [];\r\n\r\n for (var i = 0; i < vm.landingPages.length; i++) {\r\n if (vm.landingPages[i].pageType.name === 'Employment support (news)') {\r\n vm.newsPage = vm.landingPages[i];\r\n break;\r\n }\r\n else {\r\n contentColumns.push(vm.landingPages[i]);\r\n\r\n if (contentColumns.length % 3 === 0) {\r\n vm.contentPageRows.push(contentColumns);\r\n contentColumns = [];\r\n }\r\n }\r\n }\r\n\r\n if (contentColumns.length > 0) vm.contentPageRows.push(contentColumns);\r\n }\r\n\r\n $rootScope.loading = false;\r\n },\r\n function (error) {\r\n $rootScope.loading = false;\r\n vm.listLandingResponse = 'No news';\r\n }\r\n );\r\n }\r\n\r\n function goNewsPage() {\r\n\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('EmploymentSupportNewsController', EmploymentSupportNewsController);\r\n\r\n /** @ngInject */\r\n function EmploymentSupportNewsController($state, $rootScope, CONFIG, CommonService) {\r\n var vm = this;\r\n\r\n vm.filter = {\r\n typeName: CONFIG.pageTypes.employmentSupportNews,\r\n pageNo: 1,\r\n pageSize: 25\r\n };\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.routeConfig = CONFIG.routes;\r\n vm.clickDisplayTitleNews = clickDisplayTitleNews;\r\n vm.loadMoreLandings = loadMoreLandings;\r\n vm.landingPages = [];\r\n vm.displayTitleNews = '';\r\n\r\n active();\r\n\r\n function clickDisplayTitleNews(title) {\r\n vm.displayTitleNews = title;\r\n }\r\n\r\n function active() {\r\n getListNewsPage();\r\n }\r\n\r\n function getListNewsPage() {\r\n $rootScope.loading = true;\r\n CommonService.getListPagesByPageType(vm.filter).then(function (res) {\r\n vm.landingPages = res.data.result.items;\r\n vm.totalLanding = res.data.result.totalCount;\r\n if (vm.landingPages.length == 0) {\r\n vm.listLandingResponse = 'No news';\r\n } else {\r\n vm.displayTitleNews = vm.landingPages[0].title;\r\n if (vm.landingPages.length < vm.totalLanding) {\r\n vm.loadMoreLanding = true;\r\n }\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.listLandingResponse = 'No news';\r\n })\r\n }\r\n\r\n function loadMoreLandings() {\r\n if (vm.loadMoreLanding) {\r\n vm.filter.pageNo++;\r\n $rootScope.loading = true;\r\n CommonService.getListPagesByPageType(vm.filter).then(function (res) {\r\n vm.landingPages = vm.landingPages.concat(res.data.result.items);\r\n vm.totalLanding = res.data.result.totalCount;\r\n if (vm.landingPages.length >= vm.totalLanding) {\r\n vm.loadMoreLanding = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error)\r\n $rootScope.loading = false;\r\n vm.listLandingResponse = 'No news';\r\n })\r\n }\r\n\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n\t\t.controller('EmploymentRecordDocumentController', EmploymentRecordDocumentController);\r\n\r\n /** @ngInject */\r\n\tfunction EmploymentRecordDocumentController($rootScope, $state, $localStorage, $scope, CandidatePortalService, Upload, CONFIG, ngToast, $timeout, employmentRecordsFactory, documentsFactory, signaturePadFactory) {\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n\t\tvm.userCandidate = angular.copy($localStorage.userProfile);\n\t\tvm.employmentRecord = null;\n\n\t\tvm.uploadDBSCheckDocument = uploadDBSCheckDocument;\n\t\tvm.uploadedSignedContract = uploadedSignedContract;\n\t\tvm.clearSignature = clearSignature;\n\t\tvm.saveEmploymentRecord = saveEmploymentRecord;\n\t\tvm.backToProfile = backToProfile;\r\n\n\t\tif ($state.params.id) {\n\t\t\t$rootScope.loading = true;\n\n\t\t\temploymentRecordsFactory.getEmploymentRecord($state.params.id)\n\t\t\t\t.then(\n\t\t\t\t\tfunction (employmentRecord) {\n\t\t\t\t\t\tvm.employmentRecord = employmentRecord;\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t},\n\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\tconsole.log(error);\n\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t}\n\t\telse {\n\t\t\t$state.go(CONFIG.routes.candidate.portal.workfaceProfile);\r\n\t\t}\n\n\t\tfunction uploadDBSCheckDocument(files) {\n\t\t\tif (files && files.length === 1) {\n\t\t\t\t$rootScope.loading = true;\n\n\t\t\t\tdocumentsFactory.uploadDocument(files[0])\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfunction (document) {\n\t\t\t\t\t\t\tvm.employmentRecord.DBSCheckDocument = document;\n\n\t\t\t\t\t\t\temploymentRecordsFactory.saveEmploymentRecord(vm.employmentRecord)\n\t\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t\tfunction (employmentRecord) {\n\t\t\t\t\t\t\t\t\t\t$rootScope.loading = false;\n\n\t\t\t\t\t\t\t\t\t\tvm.employmentRecord = employmentRecord;\r\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\t\t\t\t\t$rootScope.loading = false;\n\n\t\t\t\t\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\t\t$rootScope.loading = false;\n\t\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t}\r\n\t\t}\n\n\t\tfunction uploadedSignedContract(files) {\n\t\t\tif (files && files.length === 1) {\n\t\t\t\t$rootScope.loading = true;\n\n\t\t\t\tdocumentsFactory.uploadDocument(files[0])\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfunction (document) {\n\t\t\t\t\t\t\tvm.employmentRecord.SignedContractDocument = document;\n\n\t\t\t\t\t\t\temploymentRecordsFactory.saveEmploymentRecord(vm.employmentRecord)\n\t\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\t\tfunction (employmentRecord) {\n\t\t\t\t\t\t\t\t\t\t$rootScope.loading = false;\n\n\t\t\t\t\t\t\t\t\t\tvm.employmentRecord = employmentRecord;\r\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\t\t\t\t\t$rootScope.loading = false;\n\n\t\t\t\t\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\t\t$rootScope.loading = false;\n\t\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t}\r\n\t\t}\n\n\t\tfunction clearSignature() {\n\t\t\tsignaturePadFactory.initialise();\r\n\t\t\tsignaturePadFactory.clear();\r\n\t\t\tvm.employmentRecord.DigitalSignature = null;\r\n\t\t}\n\n\t\tfunction saveEmploymentRecord() {\n\t\t\temploymentRecordsFactory.saveEmploymentRecord(vm.employmentRecord)\n\t\t\t\t.then(\n\t\t\t\t\tfunction (employmentRecord) {\n\t\t\t\t\t\t$rootScope.loading = false;\n\n\t\t\t\t\t\tvm.employmentRecord = employmentRecord;\r\n\t\t\t\t\t},\n\t\t\t\t\tfunction (error) {\n\t\t\t\t\t\t$rootScope.loading = false;\n\n\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t}\n\t\t\t\t);\r\n\t\t}\n\r\n function backToProfile() {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('CurrentStarRatingController', CurrentStarRatingController);\r\n\r\n /** @ngInject */\r\n function CurrentStarRatingController(CandidatePortalService, CONFIG ,$localStorage,$rootScope,$state) {\r\n var vm = this;\r\n vm.userCandidate = angular.copy($localStorage.userProfile);\r\n vm.backHomePage = backHomePage;\r\n vm.currentRating = {};\r\n getCurrentRating();\r\n function backHomePage(){\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack)\r\n }\r\n function getCurrentRating() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getCandidateCurrentRating(vm.userCandidate.id).then(function(data){\r\n vm.currentRating = data.data.result;\r\n $rootScope.loading = false;\r\n return vm.currentRating;\r\n },function(){\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n })\r\n\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('CancelBookingController', CancelBookingController);\r\n\r\n /** @ngInject */\r\n function CancelBookingController(CandidatePortalService,CommonService, CONFIG,$uibModal, $rootScope, $state) {\r\n var vm = this;\r\n vm.checkDate = checkDate;\r\n vm.checkTime = checkTime;\r\n vm.openCancelToolTipModal = openCancelToolTipModal;\r\n vm.formatDate = formatDate;\r\n vm.backHomePage = backHomePage;\r\n vm.cancelBooking = {};\r\n getBookingCancel();\r\n function backHomePage(){\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack)\r\n }\r\n function getBookingCancel() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getBookingCandidate($state.params.id).then(function (data) {\r\n vm.cancelBooking = data.data.result;\r\n $rootScope.loading = false;\r\n return vm.cancelBooking;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.bookingsHistory)\r\n })\r\n }\r\n\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n\r\n function openCancelToolTipModal(bookingId) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/partials/confirm-cancel-modal.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close(true);\r\n };\r\n $scope.ok = function () {\r\n $rootScope.loading = true;\r\n CandidatePortalService.cancelBookingByCandidate(bookingId).then(function () {\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.bookingsHistory);\r\n },function(){\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.bookingsHistory);\r\n });\r\n };\r\n\r\n },\r\n size :'md'\r\n });\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('BookingsHistoryController', BookingsHistoryController);\r\n\r\n /** @ngInject */\r\n function BookingsHistoryController(CandidatePortalService,CommonService,CONFIG, $filter,$rootScope, $state) {\r\n var vm = this;\r\n vm.checkDate = checkDate;\r\n vm.cancelOneBooking = cancelOneBooking;\r\n vm.checkTime = checkTime;\r\n vm.openBookingDetail = openBookingDetail;\r\n vm.openFutureBookingPopup = openFutureBookingPopup;\r\n vm.openBookingHistoryPopup = openBookingHistoryPopup;\r\n vm.loadMoreEarningsBookings = loadMoreEarningsBookings;\r\n vm.loadMoreUpComingBookings = loadMoreUpComingBookings;\r\n vm.backHomePage = backHomePage;\r\n vm.pageEarningsNo = 1;\r\n vm.pageEarningsSize = 10;\r\n vm.pageUpcomingNo = 1;\r\n vm.pageUpcomingSize = 10;\r\n vm.noEarningsHistory = false;\r\n vm.bookingStatus = bookingStatus;\r\n vm.formatDate = formatDate;\r\n active();\r\n function active() {\r\n getListBookings();\r\n }\r\n function loadMoreEarningsBookings(){\r\n if(vm.loadMoreEarningsBookingCount){\r\n vm.pageEarningsNo++;\r\n $rootScope.loading = true;\r\n CandidatePortalService.getCandidatePreviousBookings({\r\n PageNo: vm.pageEarningsNo,\r\n PageSize: vm.pageEarningsSize\r\n }).then(function (dataEarningsBookings) {\r\n $rootScope.loading = false;\r\n vm.earningsHistories = vm.earningsHistories.concat(dataEarningsBookings.data.result.items);\r\n vm.totalEarningsBookingsCount = dataEarningsBookings.data.result.totalCount;\r\n if (vm.earningsHistories.length >= vm.totalEarningsBookingsCount) {\r\n vm.loadMoreEarningsBookingCount = false;\r\n }\r\n },function(){\r\n $rootScope.loading = false;\r\n vm.loadMoreEarningsBookingCount = false;\r\n })\r\n }\r\n }\r\n function loadMoreUpComingBookings(){\r\n if (vm.loadMoreUpComingBookingCount) {\r\n vm.pageUpcomingNo++;\r\n $rootScope.loading = true;\r\n CandidatePortalService.getCandidateUpcomingBookings({\r\n PageNo: vm.pageUpcomingNo,\r\n PageSize: vm.pageUpcomingSize\r\n }).then(function (dataUpcomingBookings) {\r\n $rootScope.loading = false;\r\n vm.comingBookings = vm.comingBookings.concat(dataUpcomingBookings.data.result.items);\r\n vm.totalUpcomingBookingsCount = dataUpcomingBookings.data.result.totalCount;\r\n if (vm.comingBookings.length >= vm.totalUpcomingBookingsCount) {\r\n vm.loadMoreUpComingBookingCount = false;\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.loadMoreUpComingBookingCount = false;\r\n })\r\n }\r\n }\r\n function getListBookings() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getCandidatePreviousBookings({\r\n PageNo: vm.pageEarningsNo,\r\n PageSize: vm.pageEarningsSize\r\n }).then(function (dataEarningsBookings) {\r\n vm.earningsHistories = dataEarningsBookings.data.result.items;\r\n vm.totalEarningsBookingsCount = dataEarningsBookings.data.result.totalCount;\r\n vm.earningsTotalAmount = dataEarningsBookings.data.result.totalAmount;\r\n\r\n if (vm.earningsHistories.length == 0) {\r\n vm.noEarningsHistory = 'Nothing yet, but follow our tips and you will be topping up your income in no time';\r\n } else if(vm.earningsHistories.length < vm.totalEarningsBookingsCount){\r\n vm.loadMoreEarningsBookingCount = true;\r\n }\r\n CandidatePortalService.getCandidateUpcomingBookings({\r\n PageNo: vm.pageUpcomingNo,\r\n PageSize: vm.pageUpcomingSize\r\n }).then(function (dataUpcomingBookings) {\r\n vm.comingBookings = dataUpcomingBookings.data.result.items;\r\n vm.totalUpcomingBookingsCount = dataUpcomingBookings.data.result.totalCount;\r\n if (vm.comingBookings.length == 0) {\r\n vm.noUpcomingHistory = 'No booking';\r\n }else if (vm.comingBookings.length < vm.totalUpcomingBookingsCount) {\r\n vm.loadMoreUpComingBookingCount = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.noUpcomingHistory = 'No booking';\r\n })\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.noEarningsHistory = 'Nothing yet, but follow our tips and you will be topping up your income in not time';\r\n })\r\n }\r\n\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n\r\n function cancelOneBooking(id) {\r\n $state.go(CONFIG.routes.candidate.portal.cancelBooking, {'id': id});\r\n }\r\n\r\n function openFutureBookingPopup(booking) {\r\n CandidatePortalService.openFutureBookingModal(booking).then(function () {\r\n\r\n });\r\n }\r\n\r\n function openBookingHistoryPopup(booking) {\r\n CandidatePortalService.openBookingHistoryModal(booking).then(function () {\r\n\r\n });\r\n }\r\n\r\n function openBookingDetail(booking) {\r\n CandidatePortalService.openBookingDetail(booking).then(function () {\r\n\r\n });\r\n }\r\n function bookingStatus(status){\r\n var item = $filter('filter')(CONFIG.bookingStatus, status);\r\n return item[0].status;\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n function backHomePage(){\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack)\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('BookingRequestController', BookingRequestController);\r\n\r\n /** @ngInject */\r\n function BookingRequestController(CandidatePortalService, CONFIG ,CommonService, $filter, $state, $rootScope, $localStorage) {\r\n var vm = this;\r\n vm.acceptBooking = acceptBooking;\r\n vm.userCandidate = $localStorage.userProfile;\r\n vm.refuseBooking = refuseBooking;\r\n vm.checkDate = checkDate;\r\n vm.checkTime = checkTime;\r\n vm.formatDate = formatDate;\r\n vm.backHomePage = backHomePage;\r\n vm.listBookings = [];\r\n getListRequestBookings();\r\n function acceptBooking(bookingId) {\r\n $rootScope.loading = true;\r\n CandidatePortalService.acceptRequestBooking(bookingId).then(function (data) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.portal.wheelBooking, {'id': data.data.result.id});\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function getListRequestBookings() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getListRequestBookings().then(function (data) {\r\n $rootScope.loading = false;\r\n vm.listBookings = data.data.result;\r\n var checkAmendBooking = [];\r\n angular.forEach(data.data.result, function(item){\r\n angular.forEach(item.potentialCandidates,function(can){\r\n if(can.isAmend && vm.userCandidate.id == can.candidateId) {\r\n item.hasAmend = true; \r\n checkAmendBooking.push(item)\r\n }else{\r\n item.hasAmend = false;\r\n item.candidateType= CONFIG.candidateType.Main\r\n }\r\n })\r\n\r\n });\r\n if(checkAmendBooking.length > 0){\r\n vm.titleRequestBooking = vm.userCandidate.name + ', can you make the amended booking';\r\n }else{\r\n vm.titleRequestBooking = 'Great news ' + vm.userCandidate.name + ', you have the following booking requests';\r\n }\r\n if (vm.listBookings.length == 0) {\r\n vm.noListBookings = 'No List Booking Request';\r\n }\r\n return vm.listBookings;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.noListBookings = 'No List Booking Request';\r\n })\r\n }\r\n\r\n function refuseBooking(bookingId) {\r\n openReasonModal(bookingId);\r\n }\r\n\r\n function openReasonModal(bookingId) {\r\n CandidatePortalService.openReasonModal(bookingId)\r\n .then(function (data) {\r\n removeByAttr(vm.listBookings, 'id', bookingId);\r\n $rootScope.loading = true;\r\n CandidatePortalService.refuseRequestBookingWithReason(bookingId, data).then(function(){\r\n $state.go(CONFIG.routes.candidate.portal.bookingsHistory);\r\n $rootScope.loading = false;\r\n },function(error){\r\n $rootScope.loading = false;\r\n });\r\n });\r\n }\r\n\r\n function checkDate(startDate, endDate) {\r\n return CommonService.checkDate(startDate, endDate)\r\n }\r\n\r\n function checkTime(startTime, endTime) {\r\n return CommonService.checkTime(startTime, endTime)\r\n }\r\n\r\n function removeByAttr(arr, attr, value) {\r\n var i = arr.length;\r\n while (i--) {\r\n if (arr[i]\r\n && arr[i].hasOwnProperty(attr)\r\n && (arguments.length > 2 && arr[i][attr] === value )) {\r\n\r\n arr.splice(i, 1);\r\n\r\n }\r\n }\r\n return arr;\r\n }\r\n function formatDate (d) {\r\n return CommonService.formatDate(d)\r\n };\r\n function backHomePage(){\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack)\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('lx.candidate')\r\n\t\t.controller('BecomeEligibleForCareCandidateController', BecomeEligibleForCareCandidateController);\r\n\r\n\t/** @ngInject */\r\n\tfunction BecomeEligibleForCareCandidateController($rootScope, $state, $window, CONFIG, $localStorage, CandidatePortalService, careCandidatesFactory) {\r\n\r\n\t\tvar vm = this;\r\n\t\tvm.labourXchangeWebsite = LabourXchange.Website.LabourXchange.Site;\r\n\t\tvm.user = angular.copy($localStorage.userProfile);\r\n\t\tvm.step = 1;\r\n\t\tvm.eligibleForCareAnswers = {\r\n\t\t\tableToAssistMobility: null,\r\n\t\t\ttravelToHomes: null,\r\n\t\t\tcarryOutVarietyOfDuties: null,\r\n\t\t\tanyReasonUnsuitable: null,\r\n\t\t\tqualificationsInCare: null,\r\n\t\t\thighDependencyCareExperience: null,\r\n\t\t\tmediumDependencyCareExperience: null,\r\n\t\t};\r\n\t\tvm.backButtonLabel = 'Not for me thanks, back to portal';\r\n\t\tvm.nextButtonLabel = 'What are the questions';\r\n\r\n\t\tvm.back = back;\r\n\t\tvm.whatsTheProcess = whatsTheProcess;\r\n\t\tvm.next = next;\r\n\t\tvm.openUnsuitableForCarePopup = openUnsuitableForCarePopup;\r\n\t\tvm.openCareQualificationsUploadPopup = openCareQualificationsUploadPopup;\r\n\r\n\t\tif (vm.user) {\r\n\t\t\t$rootScope.loading = true;\r\n\r\n\t\t\tcareCandidatesFactory.getCurrent(vm.user.id)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (careCandidate) {\r\n\t\t\t\t\t\tif (!careCandidate) {\r\n\t\t\t\t\t\t\tvm.careCandidate = {\r\n\t\t\t\t\t\t\t\tUser: {\r\n Id: vm.user.id\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tvm.careCandidate = careCandidate;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\tconsole.log(error);\r\n\r\n\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction back() {\r\n\t\t\tswitch (vm.step) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\t$state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tvm.step = 1;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tvm.step = 2;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tvm.step = 3;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\tvm.step = 4;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction whatsTheProcess() {\r\n\t\t\tvm.step = 1;\r\n\t\t\tchangeButtonLabels();\r\n\t\t}\r\n\r\n\t\tfunction next() {\r\n\t\t\tswitch (vm.step) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tvm.step = 2;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tvm.step = 3;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tvm.step = 4;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tvm.step = 5;\r\n\t\t\t\t\tchangeButtonLabels();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\t$rootScope.loading = true;\r\n\r\n\t\t\t\t\tcareCandidatesFactory.saveCareCandidate(vm.careCandidate)\r\n\t\t\t\t\t\t.then(\r\n\t\t\t\t\t\t\tfunction (careCandidate) {\r\n\t\t\t\t\t\t\t\tvm.careCandidate = careCandidate;\r\n\t\t\t\t\t\t\t\t$rootScope.loading = false;\r\n\r\n\t\t\t\t\t\t\t\t$state.go(CONFIG.routes.candidate.portal.workfaceProfile);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tfunction (error) {\r\n\t\t\t\t\t\t\t\t$rootScope.loading = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction changeButtonLabels() {\r\n\t\t\tswitch (vm.step) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tvm.backButtonLabel = 'Not for me thanks, back to portal';\r\n\t\t\t\t\tvm.nextButtonLabel = 'What are the questions';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tvm.backButtonLabel = 'Back to previous page';\r\n\t\t\t\t\tvm.nextButtonLabel = 'A few more questions';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tvm.backButtonLabel = 'Back to previous page';\r\n\t\t\t\t\tvm.nextButtonLabel = 'Prior support experience';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tvm.backButtonLabel = 'Back to previous page';\r\n\t\t\t\t\tvm.nextButtonLabel = 'Lets start training';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\tvm.backButtonLabel = 'Back to previous page';\r\n\t\t\t\t\tvm.nextButtonLabel = 'Finish';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 6:\r\n\t\t\t\t\tvm.backButtonLabel = 'Back to previous page';\r\n\t\t\t\t\tvm.nextButtonLabel = 'Finish';\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction openUnsuitableForCarePopup() {\r\n\t\t\tCandidatePortalService.openUnsuitableForCareModal().then(function () {\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction openCareQualificationsUploadPopup() {\r\n\t\t\tCandidatePortalService.openCareQualificationsUploadModal().then(function () {\r\n\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('AvailabilityController', AvailabilityController);\r\n\r\n /** @ngInject */\r\n function AvailabilityController(User, dataList, $state,CommonService, $localStorage,CONFIG, CandidatePortalService, $rootScope, SignupCandidateService) {\r\n\r\n var vm = this;\r\n vm.profileForm1 = [];\r\n vm.userCandidate = $localStorage.userProfile ? angular.copy($localStorage.userProfile) : {};\r\n vm.userCandidateTemp = angular.copy(vm.userCandidate);\r\n vm.userCandidate.availableDayTimes = !vm.userCandidate.id ? [] : vm.userCandidate.availableDayTimes;\r\n vm.timePickerOptions = CONFIG.timePickerOptions\r\n vm.dateOptions = CONFIG.dateOptions;\r\n vm.availableTemp = [];\r\n vm.updateAvailability = updateAvailability;\r\n vm.formatDate = formatDate;\r\n vm.timePickerDefault = CONFIG.timePickerDefault;\r\n vm.availableDayTimes =\r\n [\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(1),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(1),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(2),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(2),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(3),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(3),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(4),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(4),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(5),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(5),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(6),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(6),\r\n isSelected: false\r\n },\r\n {\r\n startTime: moment(vm.timePickerDefault.startTime).isoWeekday(7),\r\n endTime: moment(vm.timePickerDefault.endTime).isoWeekday(7),\r\n isSelected: false\r\n }\r\n ];\r\n vm.getDateOfWeek = getDateOfWeek;\r\n vm.onChangeTimeTo = onChangeTimeTo;\r\n vm.onChangeTimeFrom = onChangeTimeFrom;\r\n\r\n activate();\r\n\r\n //Functions\r\n function checkDateSelected() {\r\n if (vm.userCandidate.availableDayTimes.length > 0) {\r\n angular.forEach(vm.userCandidate.availableDayTimes, function (userDate) {\r\n var dayOfWeek = moment(userDate.startTime).isoWeekday();\r\n vm.availableDayTimes[dayOfWeek - 1] = {\r\n startTime: moment(userDate.startTime),\r\n endTime: moment(userDate.endTime),\r\n isSelected: true\r\n };\r\n\r\n });\r\n }\r\n }\r\n\r\n function getDateOfWeek(d) {\r\n return CommonService.getDateOfWeek(d)\r\n }\r\n\r\n function onChangeTimeTo(available) {\r\n if (available.startTime >= available.endTime) {\r\n var endTime = moment(available.endTime);\r\n available.startTime = endTime.minute(endTime.minute() - 15);\r\n }\r\n }\r\n\r\n function onChangeTimeFrom(available) {\r\n if (available.startTime >= available.endTime) {\r\n var startTime = moment(available.startTime);\r\n available.endTime = startTime.minute(startTime.minute() + 15);\r\n }\r\n }\r\n\r\n function activate() {\r\n getTypeOfWork();\r\n checkDateSelected();\r\n getDayTimeMostSearchByClient();\r\n }\r\n\r\n function getDayTimeMostSearchByClient() {\r\n $rootScope.loading = true;\r\n CandidatePortalService.getDayTimeMostSearchByClient().then(function (data) {\r\n $rootScope.loading = false;\r\n vm.dayTimeMost = data.data.result;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function updateAvailability() {\r\n vm.userCandidate.availableDayTimes = [];\r\n angular.forEach(vm.availableDayTimes, function (check) {\r\n if (check.isSelected) {\r\n vm.userCandidate.availableDayTimes.push(\r\n {\r\n startTime: moment(check.startTime).format(CONFIG.timeFormat),\r\n endTime: moment(check.endTime).format(CONFIG.timeFormat)\r\n }\r\n );\r\n }\r\n });\r\n $rootScope.loading = true;\r\n SignupCandidateService.updateCandidateUserProfile(vm.userCandidate).then(function (data) {\r\n User.get().$promise.then(function (resp) {\r\n $rootScope.loading = false;\r\n $localStorage.userProfile = resp.result.user;\r\n $localStorage.searchFilter = resp.result.user;\r\n goWorkfaceProfile();\r\n });\r\n //$localStorage.userProfile = data.data.result;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function goWorkfaceProfile() {\r\n if ($state.params.type === 'signup') {\r\n $state.go(CONFIG.routes.candidate.signup.step6)\r\n } else {\r\n $state.go(CONFIG.routes.candidate.portal.workfaceProfile)\r\n }\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n function formatDate(d) {\r\n return CommonService.formatDate(d)\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('AlreadyToGoAndEarnExtraController', AlreadyToGoAndEarnExtraController);\r\n\r\n /** @ngInject */\r\n function AlreadyToGoAndEarnExtraController($state, $window, CONFIG, $localStorage) {\r\n\r\n var vm = this;\r\n vm.user = angular.copy($localStorage.userProfile);\r\n vm.goPortal = goPortal;\r\n function goPortal() {\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx', [\r\n 'mgo-angular-wizard',\r\n 'ngAnimate',\r\n 'ngCookies',\r\n 'ngTouch',\r\n 'ngSanitize',\r\n 'ngMessages',\r\n 'ngAria',\r\n 'ngResource',\r\n 'ui.router',\r\n 'ui.bootstrap',\r\n 'ngToast',\r\n 'slick',\r\n 'ui.select',\r\n 'angular.chosen',\r\n 'ui.mask',\r\n 'ngFileUpload',\r\n 'multi-select-tree',\r\n 'ngStorage',\r\n 'ngIntlTelInput',\r\n 'imageCropper',\r\n 'ui.timepicker',\r\n 'ng.deviceDetector',\r\n 'vjs.video',\r\n 'duScroll',\r\n 'ngFileSaver',\r\n 'angular-cookie-law',\r\n 'textAngular',\r\n 'lx.candidate',\r\n 'lx.client',\r\n 'lx.common',\r\n 'lx.admin',\r\n 'lx.corporate'\r\n ]);\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('JobsController', JobsController);\r\n\r\n /** @ngInject */\r\n function JobsController($rootScope, JobService) {\r\n var vm = this;\r\n vm.job = [];\r\n active();\r\n\r\n function active() {\r\n getPublishedJobs();\r\n }\r\n\r\n function getPublishedJobs() {\r\n $rootScope.loading = true;\r\n\r\n JobService.getPublishedJobs().then(function (res) {\r\n $rootScope.loading = false;\r\n vm.jobs = res.data.result.items;\r\n }, function () {\r\n vm.job = [];\r\n });\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('JobController', JobController);\r\n\r\n /** @ngInject */\r\n function JobController($rootScope, $state, CONFIG, JobService) {\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.job = {};\r\n vm.errorMessage = null;\r\n\r\n vm.goToApplyHere = goToApplyHere;\r\n\r\n active();\r\n\r\n function goToApplyHere() {\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n }\r\n\r\n function active() {\r\n getJob();\r\n }\r\n\r\n function getJob() {\r\n $rootScope.loading = true;\r\n\r\n JobService.getJobByUrl($state.params.url).then(function (res) {\r\n $rootScope.loading = false;\r\n vm.job = res.data.result;\r\n\r\n if (vm.job) $rootScope.activeTab = CONFIG.activeTab.jobs;\r\n \r\n }, function (error) {\r\n vm.errorMessage = error.data.exceptionMessage;\r\n $rootScope.loading = false;\r\n })\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n \"use strict\";\r\n\r\n angular\r\n .module('lx')\r\n .directive('validateFile', validateFile);\r\n\r\n function validateFile() {\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elem, attrs, ngModel) {\r\n var validFormats = ['jpg','jpeg','png','pdf'];\r\n elem.bind('change', function () {\r\n validImage(false);\r\n scope.$apply(function () {\r\n ngModel.$render();\r\n });\r\n });\r\n ngModel.$render = function () {\r\n ngModel.$setViewValue(elem.val());\r\n };\r\n function validImage(bool) {\r\n ngModel.$setValidity('extension', bool);\r\n }\r\n ngModel.$parsers.push(function(value) {\r\n var index = value.lastIndexOf(\".\");\r\n var ext = value.substring(index, value.length);\r\n if(ext=='') return;\r\n if(validFormats.indexOf(ext) == -1){\r\n return value;\r\n }\r\n validImage(true);\r\n return value;\r\n });\r\n }\r\n };\r\n }\r\n})();\n(function () {\r\n \"use strict\";\r\n\r\n angular\r\n .module('lx')\r\n .directive('videoCustom', videoCustom);\r\n\r\n function videoCustom($rootScope, detectUtils, CONFIG) {\r\n\r\n return {\r\n restrict: 'EA',\r\n template: '',\r\n scope: {\r\n src: '=?',\r\n type: '=?',\r\n link: '=?',\r\n poster: '=?'\r\n\r\n },\r\n link: link\r\n };\r\n\r\n function link(scope, element, attrs, model) {\r\n scope.url = scope.link ? scope.link + '/' + scope.src : scope.src;\r\n scope.media = {\r\n sources: [\r\n {\r\n src: scope.link ? scope.link + '/' + scope.src : scope.src,\r\n type: scope.type\r\n }\r\n ],\r\n poster: scope.poster ? scope.link + '/' + scope.poster : ''\r\n };\r\n scope.options = {};\r\n if (detectUtils.isMobile()) {\r\n scope.$on('vjsVideoReady', function (e, data) {\r\n data.vid.on('play', function () {\r\n this.bigPlayButton.hide();\r\n this.controlBar.show();\r\n });\r\n data.vid.on('pause', function () {\r\n this.bigPlayButton.show();\r\n this.controlBar.show();\r\n });\r\n });\r\n } else {\r\n scope.$on('vjsVideoReady', function (e, data) {\r\n\r\n\r\n data.vid.on('play', function () {\r\n this.bigPlayButton.hide();\r\n this.controlBar.hide();\r\n });\r\n data.vid.on('pause', function () {\r\n this.bigPlayButton.show();\r\n this.controlBar.hide();\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n \"use strict\";\r\n\r\n angular\r\n .module('lx')\r\n .directive('postcodeAutocomplete', postcodeAutocomplete)\r\n .directive('postcodeAutocompleteCustom', postcodeAutocompleteCustom);\r\n\r\n function postcodeAutocomplete($rootScope, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n ngModel: \"=\",\r\n postCode: '=?',\r\n lat: '=?',\r\n lng: '=?',\r\n town: '=?',\r\n county: '=?',\r\n country: '=?',\r\n shortAddressLine: '=?',\r\n frm: '=',\r\n\r\n },\r\n link: link\r\n };\r\n\r\n function link(scope, element, attrs, model) {\r\n var options = {\r\n types: ['(regions)'],\r\n componentRestrictions: {'country': 'uk'}\r\n };\r\n if (!scope.postCode) {\r\n model.$invalid = true;\r\n }\r\n $rootScope.geocode = {};\r\n listenPlaceChange();\r\n scope.$watch(\r\n function () {\r\n return model.$modelValue;\r\n }, function (newValue, oldValue) {\r\n if (newValue !== oldValue) {\r\n scope.postCode = null;\r\n }\r\n }, true);\r\n element.blur(function () {\r\n listenPlaceChange();\r\n if (!scope.postCode) {\r\n model.$invalid = true;\r\n model.$setValidity(\"invalid\", false);\r\n }\r\n })\r\n element.focus(function () {\r\n })\r\n\r\n function listenPlaceChange() {\r\n var geocoder = new google.maps.Geocoder();\r\n var autocomplete = new google.maps.places.Autocomplete(element[0], options);\r\n google.maps.event.addListener(autocomplete, 'place_changed', function () {\r\n\r\n var place = autocomplete.getPlace();\r\n if (place['geometry'] && place['geometry']['location']) {\r\n var lat = place['geometry']['location'].lat();\r\n var lng = place['geometry']['location'].lng();\r\n var latlng = new google.maps.LatLng(lat, lng);\r\n $timeout(function () {\r\n geocoder.geocode({'latLng': latlng}, function (results) {\r\n if (results\r\n && results.length > 0\r\n && results[0].address_components\r\n && results[0].address_components.length > 0) {\r\n results[0].address_components.forEach(function (address) {\r\n\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('postal_town') >= 0) {\r\n var townName = address.long_name;\r\n scope.$apply(function () {\r\n scope.town = townName;\r\n });\r\n }\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('administrative_area_level_2') >= 0) {\r\n var countyName = address.long_name;\r\n scope.$apply(function () {\r\n scope.county = countyName;\r\n });\r\n }\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('country') >= 0) {\r\n var country = address.long_name;\r\n scope.$apply(function () {\r\n scope.country = country;\r\n });\r\n }\r\n });\r\n var postCode = getPostCode(results);\r\n scope.$apply(function () {\r\n scope.postCode = postCode;\r\n model.$setValidity(\"invalid\", true);\r\n });\r\n scope.$apply(function () {\r\n scope.shortAddressLine = getShortAddressLine(element.val(), results[0].address_components, postCode);\r\n });\r\n\r\n }\r\n })\r\n }, 0)\r\n $timeout(function () {\r\n scope.lat = lat;\r\n scope.lng = lng;\r\n model.$setViewValue(element.val());\r\n }, 0)\r\n }\r\n })\r\n }\r\n\r\n function getShortAddressLine(address, address_components, postCode) {\r\n var words = address.replace(',', ' ').split(' ');\r\n words = words.filter(function (x) {\r\n return x != '';\r\n })\r\n if (postCode) {\r\n var postCodeSplit = postCode.split(' ');\r\n words = words.filter(function (x) {\r\n return postCodeSplit.indexOf(x) < 0;\r\n })\r\n }\r\n address_components.forEach(function (address) {\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('administrative_area_level_2') >= 0) {\r\n words = words.filter(function (x) {\r\n return (x.toLowerCase().replace(' ', '') != address.long_name.toLowerCase().replace(' ', '') &&\r\n x.toLowerCase().replace(' ', '') != address.short_name.toLowerCase().replace(' ', ''));\r\n });\r\n }\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('country') >= 0) {\r\n words = words.filter(function (x) {\r\n return (x.toLowerCase().replace(' ', '') != address.long_name.toLowerCase().replace(' ', '') &&\r\n x.toLowerCase().replace(' ', '') != address.short_name.toLowerCase().replace(' ', '') &&\r\n x.toLowerCase().replace(' ', '') != abbrevName(address.long_name.toLowerCase()).replace(' ', ''));\r\n });\r\n }\r\n });\r\n var addressLine = words.join(\" \");\r\n address_components.forEach(function (address) {\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('postal_code') >= 0) {\r\n var splitWords = address.long_name.split(' ');\r\n splitWords.forEach(function (item) {\r\n addressLine = addressLine.replace(item, '');\r\n })\r\n }\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('postal_town') >= 0) {\r\n addressLine = addressLine.replace(address.long_name, '');\r\n addressLine = addressLine.replace(address.short_name, '');\r\n }\r\n });\r\n return addressLine;\r\n }\r\n\r\n function abbrevName(str1) {\r\n var split_names = str1.trim().split(\" \");\r\n if (split_names.length > 1) {\r\n return (split_names[0].charAt(0) + split_names[1].charAt(0));\r\n }\r\n return split_names[0];\r\n };\r\n\r\n function getPostCode(results) {\r\n for (var i = 0; i < results.length; i++) {\r\n for (var j = 0; j < results[i].address_components.length; j++) {\r\n for (var k = 0; k < results[i].address_components[j].types.length; k++) {\r\n if (results[i].address_components[j].types[k] == \"postal_code\") {\r\n if (results[i].address_components[j].long_name.length > 4) {\r\n return results[i].address_components[j].long_name;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n function postcodeAutocompleteCustom($rootScope, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n ngModel: \"=\",\r\n street: '=?',\r\n lat: '=?',\r\n lng: '=?',\r\n town: '=?',\r\n county: '=?',\r\n country: '=?'\r\n\r\n },\r\n link: link\r\n };\r\n\r\n function link(scope, element, attrs, model) {\r\n var options = {\r\n types: ['(regions)'],\r\n componentRestrictions: {'country': 'uk'}\r\n };\r\n $rootScope.geocode = {};\r\n listenPlaceChange();\r\n\r\n function listenPlaceChange() {\r\n var geocoder = new google.maps.Geocoder();\r\n var autocomplete = new google.maps.places.Autocomplete(element[0], options);\r\n google.maps.event.addListener(autocomplete, 'place_changed', function () {\r\n\r\n var place = autocomplete.getPlace();\r\n if (place['geometry'] && place['geometry']['location']) {\r\n var lat = place['geometry']['location'].lat();\r\n var lng = place['geometry']['location'].lng();\r\n var latlng = new google.maps.LatLng(lat, lng);\r\n var street='';\r\n geocoder.geocode({'latLng': latlng}, function (results) {\r\n if (results\r\n && results.length > 0\r\n && results[0].address_components\r\n && results[0].address_components.length > 0) {\r\n results[0].address_components.forEach(function (address) {\r\n\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('street_number') >= 0) {\r\n street = address.long_name;\r\n scope.$apply(function () {\r\n scope.street = street;\r\n });\r\n }\r\n\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('route') >= 0) {\r\n var route = address.long_name;\r\n scope.$apply(function () {\r\n scope.street = street + ' ' + route;\r\n });\r\n }\r\n\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('postal_town') >= 0) {\r\n var townName = address.long_name;\r\n scope.$apply(function () {\r\n scope.town = townName;\r\n });\r\n }\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('administrative_area_level_2') >= 0) {\r\n var countyName = address.long_name;\r\n scope.$apply(function () {\r\n scope.county = countyName;\r\n });\r\n }\r\n if (address.types\r\n && address.types.length > 0\r\n && address.types.indexOf('country') >= 0) {\r\n var country = address.long_name;\r\n scope.$apply(function () {\r\n scope.country = country;\r\n });\r\n }\r\n });\r\n var postCode = getPostCode(results);\r\n scope.$apply(function () {\r\n scope.ngModel = postCode;\r\n });\r\n scope.$apply(function () {\r\n model.$setViewValue(postCode);\r\n });\r\n\r\n }\r\n })\r\n $timeout(function () {\r\n scope.lat = lat;\r\n scope.lng = lng;\r\n }, 0)\r\n }\r\n })\r\n }\r\n\r\n function getPostCode(results) {\r\n for (var i = 0; i < results.length; i++) {\r\n for (var j = 0; j < results[i].address_components.length; j++) {\r\n for (var k = 0; k < results[i].address_components[j].types.length; k++) {\r\n if (results[i].address_components[j].types[k] == \"postal_code\") {\r\n if (results[i].address_components[j].long_name.length > 4) {\r\n return results[i].address_components[j].long_name;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n \"use strict\";\r\n\r\n angular\r\n .module('lx')\r\n .filter('limitHtml', limitHtml);\r\n\r\n function limitHtml() {\r\n\r\n return function(text, limit) {\r\n\r\n var changedString = String(text).replace(/<[^>]+>/gm, '');\r\n var length = changedString.length;\r\n var suffix = ' ...';\r\n\r\n return length > limit ? changedString.substr(0, limit - 1) + suffix : changedString;\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .directive('toggleSelectClickInput', toggleSelectClickInput);\n\n toggleSelectClickInput.$inject = ['$timeout'];\n\n function toggleSelectClickInput($timeout) {\n return {\n require: 'uiSelect',\r\n link: function (scope, element, attrs, $select) {\r\n element.bind('click', function () {\r\n\r\n //$timeout(function () {\r\n // $(element).find('input').click();\r\n //});\n\n $select.activate();\r\n });\r\n }\r\n };\r\n }\n})();\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.client')\r\n .factory('ToastMessageService', ToastMessageService);\r\n\r\n /** @ngInject */\r\n function ToastMessageService($uibModal, CONFIG, $http) {\r\n return {\r\n openPopupMessageModal: openPopupMessageModal,\r\n openAmendRefusedPopupMessageModal: openAmendRefusedPopupMessageModal,\r\n openCandidateCancelledPopupMessageModal: openCandidateCancelledPopupMessageModal,\r\n openClientCancelledPopupMessageModal: openClientCancelledPopupMessageModal,\r\n openClientCancelledPopupBeforePaymentMessageModal: openClientCancelledPopupBeforePaymentMessageModal,\r\n closedNotification: closedNotification,\r\n closedNotifications: closedNotifications\r\n };\r\n function openPopupMessageModal() {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/toastMessage/modal/popupMessage.html',\r\n controller: 'PopupMessageController',\r\n controllerAs: 'vm',\r\n resolve: {},\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openAmendRefusedPopupMessageModal() {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/toastMessage/modal/amendRefusedPopupMessage.html',\r\n controller: 'AmendRefusedPopupMessageController',\r\n controllerAs: 'vm',\r\n resolve: {},\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openCandidateCancelledPopupMessageModal() {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/toastMessage/modal/candidateCancelledPopupMessage.html',\r\n controller: 'CandidateCancelledMessageController',\r\n controllerAs: 'vm',\r\n resolve: {},\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openClientCancelledPopupMessageModal(notification) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/toastMessage/modal/clientCancelledPopupMessage.html',\r\n controller: 'ClientCancelledMessageController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n notification: notification\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openClientCancelledPopupBeforePaymentMessageModal(notification) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/components/toastMessage/modal/clientCancelledPopupBeforePaymentMessageModal.html',\r\n controller: 'ClientCancelledPopupBeforePaymentMessageController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n notification: notification\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function closedNotification(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.closedNotification + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n function closedNotifications(ids) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.closedNotifications,\r\n data:ids\r\n };\r\n return $http(req);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n \"use strict\";\r\n\r\n angular\r\n .module('lx')\r\n .directive('lxToastMessage', lxToastMessage)\r\n .directive('compile', ['$compile', function ($compile) {\r\n return function (scope, element, attrs) {\r\n scope.$watch(\r\n function (scope) {\r\n return scope.$eval(attrs.compile);\r\n },\r\n function (value) {\r\n element.html(value);\r\n $compile(element.contents())(scope);\r\n }\r\n );\r\n };\r\n }]);\r\n\r\n function lxToastMessage($rootScope,CONFIG, $uibModal, $interval, ClientPortalService, CandidatePortalService, $state, ToastMessageService, $localStorage) {\r\n\r\n return {\r\n restrict: 'EA',\r\n link: link,\r\n template: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n else {\r\n AdminService.updateSettingSenderSchedule(vm.sender).then(function (data) {\r\n vm.sender = data.data.result;\r\n $rootScope.loading = false;\r\n $uibModalInstance.close({sender: vm.sender});\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n };\r\n function cancel() {\r\n $uibModalInstance.close({voucher: vm.currentSender});\r\n }\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('ShowEditLandingPageController', ShowEditLandingPageController);\r\n\r\n /** @ngInject */\r\n function ShowEditLandingPageController(landingPage, $uibModalInstance, $location, ngToast, CONFIG, AdminService, $rootScope, $timeout, $state) {\r\n var vm = this;\r\n vm.pageTypes = [];\r\n vm.landingPage = landingPage;\r\n vm.currentLandingPage = angular.copy(landingPage);\r\n vm.baseUrl = document.querySelector('base').href;\r\n vm.cancel = cancel;\r\n vm.checkUrlExists = checkUrlExists;\r\n vm.resetErrorUrlExists = resetErrorUrlExists;\r\n vm.onSubmitLandingPage = onSubmitLandingPage;\r\n vm.onDeleteLandingPage = onDeleteLandingPage;\r\n active();\r\n function active() {\r\n getPageTypes();\r\n getDefaultUrl();\r\n }\r\n\r\n function getPageTypes() {\r\n AdminService.getPageTypes().then(function (res) {\r\n vm.pageTypes = res.data.result.items;\r\n });\r\n }\r\n\r\n function getDefaultUrl() {\r\n if (vm.landingPage && (vm.landingPage.url == null || vm.landingPage.url == '')) {\r\n AdminService.getLandingPageDefaultUrl().then(function (res) {\r\n vm.landingPage.url = res.data.result;\r\n });\r\n }\r\n }\r\n\r\n function onSubmitLandingPage() {\r\n $rootScope.loading = true;\r\n AdminService.createOrUpdateLandingPage(vm.landingPage).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n $uibModalInstance.close({landingPage: vm.landingPage});\r\n goToManageLandingPage();\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n };\r\n function onDeleteLandingPage() {\r\n $rootScope.loading = true;\r\n AdminService.deleteLandingPage(vm.landingPage.id).then(function (res) {\r\n vm.landingPage = {};\r\n $uibModalInstance.close({landingPage: vm.landingPage});\r\n goToManageLandingPage();\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n };\r\n\r\n function cancel() {\r\n $uibModalInstance.close({landingPage: vm.currentLandingPage});\r\n }\r\n\r\n function checkUrlExists(form, url) {\r\n if (url === vm.currentLandingPage.url) {\r\n form.url.$setValidity(\"urlExists\", true);\r\n } else {\r\n AdminService.checkLandingPageUrlExists(vm.landingPage).then(function (res) {\r\n if (res.data.result) {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", false);\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", true);\r\n }, 1000);\r\n }\r\n }, function (error) {\r\n $timeout(function () {\r\n form.$setValidity('urlExists', false);\r\n }, 1000);\r\n })\r\n }\r\n }\r\n\r\n function resetErrorUrlExists(form) {\r\n form.$setValidity('urlExists', true);\r\n };\r\n\r\n function goToManageLandingPage() {\r\n $state.go(CONFIG.routes.admin.manageLandingPage);\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('DeleteUserModal', DeleteUserModal);\r\n\r\n /** @ngInject */\r\n function DeleteUserModal(AdminService, user, $uibModalInstance, $rootScope, ngToast) {\r\n var vm = this;\r\n vm.user = user;\r\n vm.close = close;\r\n vm.deleteUser = deleteUser;\r\n\r\n function close() {\r\n $uibModalInstance.close(false);\r\n }\r\n\r\n function deleteUser() {\r\n $rootScope.loading = true;\r\n AdminService.deleteUser(vm.user.id).then(function () {\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Delete user successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Delete user unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $uibModalInstance.close(false);\r\n });\r\n }\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('DeleteSenderModal', DeleteSenderModal);\r\n\r\n /** @ngInject */\r\n function DeleteSenderModal(AdminService, sender, $uibModalInstance, $rootScope, ngToast) {\r\n var vm = this;\r\n vm.sender = sender;\r\n vm.close = close;\r\n vm.deleteSender = deleteSender;\r\n\r\n function close() {\r\n $uibModalInstance.close(false);\r\n }\r\n\r\n function deleteSender() {\r\n $rootScope.loading = true;\r\n AdminService.deleteSender(vm.sender.id).then(function () {\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Delete sender successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Delete sender unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $uibModalInstance.close(false);\r\n });\r\n }\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('DeleteJobModalController', DeleteJobModalController);\r\n\r\n /** @ngInject */\r\n function DeleteJobModalController(JobService, job, $uibModalInstance, $rootScope, ngToast) {\r\n var vm = this;\r\n vm.job = job;\r\n vm.close = close;\r\n vm.deleteJob = deleteJob;\r\n\r\n function close() {\r\n $uibModalInstance.close(false);\r\n }\r\n\r\n function deleteJob() {\r\n $rootScope.loading = true;\r\n JobService.deleteJobByAdmin(vm.job.id).then(function () {\r\n $uibModalInstance.close(true);\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Delete job successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Delete job unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $uibModalInstance.close(false);\r\n });\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin', []);\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('SMSSenderController', SMSSenderController);\r\n\r\n /** @ngInject */\r\n function SMSSenderController(AdminService, $rootScope, Upload, ngToast, $scope, CONFIG, $state, $uibModal, dataList) {\r\n\r\n var vm = this;\r\n vm.propertyName = 'senderName';\r\n vm.propertyNameExtend = 'senderName';\r\n vm.reverse = false;\r\n vm.reverse = false;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.sortBy = sortBy;\r\n vm.candidatePageNo = 1;\r\n vm.candidatePageSize = 100;\r\n vm.clientPageNo = 1;\r\n vm.clientPageSize = 100;\r\n vm.smsSender = {};\r\n vm.smsSender.distance = CONFIG.distance;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.onCreateSMSSender = onCreateSMSSender;\r\n vm.openModalEditSender = openModalEditSender;\r\n vm.openModalDeleteSender = openModalDeleteSender;\r\n active();\r\n function active() {\r\n $rootScope.loading = true;\r\n loadSendToVariables();\r\n loadSendFirstVariables();\r\n loadSendFrequencyVariables();\r\n loadSMSSenders();\r\n getTypeOfWork();\r\n }\r\n\r\n function loadSendToVariables() {\r\n AdminService.getSendToVariables().then(function (data) {\r\n vm.sendToVariables = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function loadSendFirstVariables() {\r\n AdminService.getSendFirstVariables().then(function (data) {\r\n vm.sendFirstVariables = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function loadSendFrequencyVariables() {\r\n AdminService.getSendFrequencyVariables().then(function (data) {\r\n vm.sendFrequencyVariables = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function loadSMSSenders() {\r\n $rootScope.loading = true;\r\n AdminService.getSMSSenders().then(function (data) {\r\n vm.smsSenders = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error)\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function onCreateSMSSender() {\r\n $rootScope.loading = true;\r\n vm.smsSender.senderType = 1;\r\n AdminService.createSettingSenderSchedule(vm.smsSender).then(function (data) {\r\n loadSMSSenders();\r\n vm.smsSender = {};\r\n vm.registerSMSSenderForm.$setUntouched();\r\n vm.registerSMSSenderForm.$setPristine();\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n };\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function openModalEditSender(sender) {\r\n var v = JSON.parse(angular.toJson(sender));\r\n AdminService.showEditSenderModal(v).then(function (res) {\r\n loadSMSSenders();\r\n });\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n function openModalDeleteSender(sender) {\r\n AdminService.showDeleteSenderModal(sender).then(function (isDeleted) {\r\n if (isDeleted) {\r\n vm.smsSenders = vm.smsSenders.filter(function (data) {\r\n return data.id !== sender.id;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('RegisterVoucherController', RegisterVoucherController);\r\n\r\n /** @ngInject */\r\n function RegisterVoucherController(AdminService, $rootScope, $filter, CONFIG, $state, $uibModal, $timeout) {\r\n\r\n var vm = this;\r\n vm.propertyName = 'expiry';\r\n vm.propertyNameExtend = 'expiry';\r\n vm.reverse = true;\r\n vm.sortBy = sortBy;\r\n vm.pageNo = 1;\r\n vm.pageSize = 10;\r\n vm.calendarPopup = {\r\n opened: false\r\n };\r\n vm.vouchers = [];\r\n vm.checkExpiry = false;\r\n vm.checkExpiryOverLimit = false;\r\n vm.dateOptions = {\r\n minDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1)\r\n };\r\n vm.dateFormat = CONFIG.bootstrapDateFormat;\r\n vm.loadMoreVoucher = loadMoreVoucher;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.onCreateVoucher = onCreateVoucher;\r\n vm.resetCheckExpiry = resetCheckExpiry;\r\n vm.checkExpiryDate = checkExpiryDate;\r\n vm.openCalendarPopup = openCalendarPopup;\r\n vm.checkIsExistedVoucher = checkIsExistedVoucher;\r\n vm.resetErrorExistedVoucher = resetErrorExistedVoucher;\r\n vm.openModalEditVoucher = openModalEditVoucher;\r\n active();\r\n function active() {\r\n $rootScope.loading = true;\r\n AdminService.getVouchersByAdmin({PageNo: vm.pageNo, PageSize: vm.pageSize}).then(function (data) {\r\n vm.vouchers = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.vouchers.length == 0) {\r\n vm.listVoucherResponse = 'No user';\r\n } else if (vm.vouchers.length < vm.totalUserCount) {\r\n vm.loadMoreVoucherCount = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listVoucherResponse = 'No voucher';\r\n })\r\n\r\n }\r\n\r\n function openCalendarPopup() {\r\n vm.calendarPopup.opened = true;\r\n }\r\n\r\n function resetCheckExpiry() {\r\n vm.checkExpiry = false;\r\n }\r\n\r\n function checkExpiryDate(expiryDate) {\r\n vm.checkExpiry = true;\r\n if (expiryDate && expiryDate.getTime() < vm.dateOptions.minDate.getTime()) {\r\n vm.checkExpiryOverLimit = true;\r\n } else {\r\n vm.checkExpiryOverLimit = false;\r\n }\r\n\r\n }\r\n\r\n function loadMoreVoucher() {\r\n if (vm.loadMoreVoucherCount) {\r\n vm.pageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getVouchersByAdmin({PageNo: vm.pageNo, PageSize: vm.pageSize}).then(function (data) {\r\n vm.vouchers = vm.vouchers.concat(data.data.result.items);\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.vouchers.length >= vm.totalUserCount) {\r\n vm.loadMoreVoucherCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error)\r\n $rootScope.loading = false;\r\n vm.listVoucherResponse = 'No voucher';\r\n })\r\n }\r\n\r\n }\r\n\r\n function onCreateVoucher() {\r\n $rootScope.loading = true;\r\n AdminService.createVoucherByAdmin(vm.voucher).then(function (res) {\r\n vm.vouchers.push(res.data.result);\r\n vm.totalUserCount = vm.totalUserCount + 1;\r\n $rootScope.loading = false;\r\n vm.voucher = {};\r\n vm.registerVoucherForm.$setUntouched();\r\n vm.registerVoucherForm.$setPristine();\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n\r\n }\r\n\r\n function checkIsExistedVoucher(form, code) {\r\n AdminService.checkIsExistedVoucher(code).then(function (res) {\r\n if (res.data.result) {\r\n $timeout(function () {\r\n form.code.$setValidity(\"codeExists\", false);\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n form.code.$setValidity(\"codeExists\", true);\r\n }, 1000);\r\n }\r\n }, function (error) {\r\n $timeout(function () {\r\n form.$setValidity('codeExists', false);\r\n }, 1000);\r\n })\r\n\r\n }\r\n\r\n function resetErrorExistedVoucher(form) {\r\n form.$setValidity('codeExists', true);\r\n };\r\n\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n };\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function openModalEditVoucher(voucher) {\r\n var v = JSON.parse(angular.toJson(voucher))\r\n AdminService.showEditVoucherModal(v).then(function (res) {\r\n var index = vm.vouchers.map(function(v){return v.id}).indexOf(res.voucher.id);\r\n vm.vouchers[~index?index:vm.vouchers.length] = res.voucher;\r\n });\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('ReceivingEmailPageController', ReceivingEmailPageController);\r\n\r\n /** @ngInject */\r\n function ReceivingEmailPageController(AdminService, $filter, $rootScope, CONFIG, $state) {\r\n var vm = this;\r\n vm.isAllowUserStopReceivingEmail = false;\r\n vm.onSearchUser = onSearchUser;\r\n vm.loadMoreUser = loadMoreUser;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.changeStatus = changeStatus;\r\n vm.receivingEmail = receivingEmail;\r\n vm.listReceivingEmailStatus = CONFIG.receivingEmail;\r\n vm.receivingEmailStatusFilter = receivingEmailStatusFilter;\r\n vm.reverse = false;\r\n vm.sortBy = sortBy;\r\n vm.listUsers = [];\r\n vm.deleteUserPage = {};\r\n vm.search = {\r\n emailAddress: null,\r\n pageNo: 1,\r\n pageSize: 20\r\n };\r\n vm.filter = {\r\n emailAddress: null,\r\n status: {\r\n IsAccepted: false,\r\n IsRequested: true,\r\n IsAllowed: false\t\r\n },\r\n pageNo: 1,\r\n pageSize: 20\r\n };\r\n active();\r\n function active() {\r\n $rootScope.loading = true;\r\n AdminService.getAllUsersWantToStopReceivingEmail(vm.filter).then(function (data) {\r\n vm.listUsers = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listUsers.length == 0) {\r\n vm.listUsersResponse = 'No user';\r\n } else if (vm.listUsers.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listUsersResponse = 'No user';\r\n })\r\n }\r\n\r\n function loadMoreUser() {\r\n if (vm.loadMoreUserCount) {\r\n vm.filter.pageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getAllUsersWantToStopReceivingEmail(vm.filter).then(function (data) {\r\n vm.listUsers = vm.listUsers.concat(data.data.result.items);\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listUsers.length >= vm.totalUserCount) {\r\n vm.loadMoreUserCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listUsersResponse = 'No user';\r\n })\r\n }\r\n }\r\n\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function onSearchUser() {\r\n vm.filter.pageNo = 1;\r\n $rootScope.loading = true;\r\n AdminService.getAllUsersWantToStopReceivingEmail(vm.search).then(function (data) {\r\n vm.listUsers = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listUsers.length == 0) {\r\n vm.listUsersResponse = 'No user';\r\n } else {\r\n vm.listUsersResponse = '';\r\n }\r\n if (vm.listUsers.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n } else {\r\n vm.loadMoreUserCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listUsersResponse = 'No user';\r\n })\r\n }\r\n\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n };\r\n\r\n function receivingEmailStatusFilter() {\r\n vm.filter.pageNo = 1;\r\n $rootScope.loading = true;\r\n AdminService.getAllUsersWantToStopReceivingEmail(vm.filter).then(function (data) {\r\n vm.listUsers = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listUsers.length == 0) {\r\n vm.listUsersResponse = 'No user';\r\n } else if (vm.listUsers.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n } else {\r\n vm.loadMoreUserCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listUsersResponse = 'No user';\r\n });\r\n };\r\n\r\n function changeStatus(receivingEmailStatus,id) {\r\n $rootScope.loading = true;\r\n var dataReq = {\r\n receivingEmailStatus: receivingEmailStatus,\r\n id: id\r\n };\r\n AdminService.receivingEmail(dataReq).then(function () {\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function receivingEmail(status) {\r\n var item = $filter('filter')(CONFIG.receivingEmail, status);\r\n return item[0].status;\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('ManageBookingController', ManageBookingController);\r\n\r\n /** @ngInject */\r\n function ManageBookingController(AdminService, $rootScope, $filter, CONFIG, $state, $element, FileSaver, $log, dataList) {\r\n var vm = this;\r\n vm.propertyName = 'status';\r\n vm.propertyNameExtend = 'status';\r\n vm.reverse = false;\r\n vm.sortBy = sortBy;\r\n vm.pageNo = 1;\r\n vm.pageSize = 10;\r\n vm.isShowLoginLogOut = false;\r\n vm.isShowStatus = false;\r\n vm.isCollapsedFilter = false;\r\n vm.search = {\r\n pageNo: 1,\r\n pageSize: 10\r\n };\r\n vm.filter = {\r\n pageNo: 1,\r\n pageSize: 10\r\n };\r\n\r\n vm.listBooking = [];\r\n vm.listBookingOrigin = [];\r\n vm.loadMoreBooking = loadMoreBooking;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.bookingStatus = bookingStatus;\r\n vm.candidateType = CONFIG.candidateType;\r\n vm.exportBookings = exportBookings;\r\n vm.getTypeOfWork = getTypeOfWork;\r\n vm.getKeySkills = getKeySkills;\r\n vm.onSearchBooking = onSearchBooking;\r\n vm.toggleFilterButton = toggleFilterButton;\r\n active();\r\n function active() {\r\n $rootScope.loading = true;\r\n AdminService.getBookingsByAdmin({PageNo: vm.pageNo, PageSize: vm.pageSize}).then(function (data) {\r\n vm.listBookingOrigin = data.data.result.items;\r\n vm.listBooking = vm.listBookingOrigin;\r\n vm.totalBookingCount = data.data.result.totalCount;\r\n if (vm.listBooking.length == 0) {\r\n vm.listBookingResponse = 'No booking';\r\n } else if (vm.listBooking.length < vm.totalBookingCount) {\r\n vm.loadMoreBookingCount = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $log.error(error);\r\n $rootScope.loading = false;\r\n vm.listBookingResponse = 'No booking';\r\n })\r\n getTypeOfWork();\r\n getKeySkills();\r\n getWorkExperiences();\r\n }\r\n\r\n function loadMoreBooking() {\r\n if (vm.loadMoreBookingCount) {\r\n vm.pageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getBookingsByAdmin({PageNo: vm.pageNo, PageSize: vm.pageSize}).then(function (data) {\r\n vm.listBookingOrigin = vm.listBookingOrigin.concat(data.data.result.items);\r\n vm.listBooking = vm.listBookingOrigin;\r\n vm.totalBookingCount = data.data.result.totalCount;\r\n if (vm.listBooking.length >= vm.totalBookingCount) {\r\n vm.loadMoreBookingCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $log.error(error);\r\n $rootScope.loading = false;\r\n vm.listBookingResponse = 'No booking';\r\n })\r\n }\r\n\r\n }\r\n\r\n function onSearchBooking() {\r\n vm.filter.pageNo = 1;\r\n $rootScope.loading = true;\r\n AdminService.getBookingsByAdmin(vm.search).then(function (data) {\r\n vm.listBooking = data.data.result.items;\r\n vm.totalBookingCount = data.data.result.totalCount;\r\n if (vm.listBooking.length == 0) {\r\n vm.listBookingResponse = 'No booking';\r\n } else {\r\n vm.listBookingResponse = '';\r\n }\r\n if (vm.listBooking.length < vm.totalBookingCount) {\r\n vm.loadMoreBookingCount = true;\r\n } else {\r\n vm.loadMoreBookingCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listBookingResponse = 'No booking';\r\n })\r\n }\r\n\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n }\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n function bookingStatus(status){\r\n var item = $filter('filter')(CONFIG.bookingStatus, status);\r\n return item[0].status;\r\n }\r\n function exportBookings(){\r\n $rootScope.loading = true;\r\n AdminService.exportBookingsByAdmin(vm.search).then(function (res) {\r\n $rootScope.loading = false;\r\n saveData(res, \"ReportBookings.xlsx\");\r\n }, function () {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n function saveData(data, fileName) {\r\n var blob = new Blob([data.data], {type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"});\r\n FileSaver.saveAs(blob, fileName);\r\n }\r\n\r\n function toggleFilterButton() {\r\n vm.isCollapsedFilter = !vm.isCollapsedFilter;\r\n }\r\n\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n function getKeySkills() {\r\n dataList.getKeySkills().then(function (data) {\r\n vm.keySkills = data.data.result.items;\r\n })\r\n }\r\n\r\n function getWorkExperiences() {\r\n dataList.getKeyExperiences().then(function (data) {\r\n vm.workExperiences = data.data.result.items;\r\n })\r\n }\r\n }\r\n\r\n})\r\n();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('LandingPagesController', LandingPagesController);\r\n\r\n /** @ngInject */\r\n function LandingPagesController(AdminService, $rootScope, $location, Upload, ngToast, $timeout, CONFIG, $state, $uibModal) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.landingPage = {};\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n vm.copyImage = null;\r\n vm.toolbarOptions = [\r\n ['p', 'pre', 'quote'],\r\n ['bold', 'italics', 'underline', 'strikeThrough', 'ul', 'ol', 'redo', 'undo', 'clear'],\r\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n ['html', 'insertLink']];\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.onCreateOrUpdateLandingPage = onCreateOrUpdateLandingPage;\r\n vm.onCreateLandingPage = onCreateLandingPage;\r\n vm.onEditLandingPage = onEditLandingPage;\r\n vm.openModalEditLandingPage = openModalEditLandingPage;\r\n vm.selectImage = selectImage;\r\n vm.removeFiles = removeFiles;\r\n vm.baseUrl = document.querySelector('base').href;\r\n vm.landingPageNo = 1;\r\n vm.landingPageSize = 25;\r\n vm.loadMoreLandings = loadMoreLandings;\r\n active();\r\n function active() {\r\n getListLandings();\r\n }\r\n\r\n function getListLandings() {\r\n AdminService.getListPagesByAdmin({\r\n PageNo: vm.landingPageNo,\r\n PageSize: vm.landingPageSize\r\n }).then(function (res) {\r\n vm.landingPage = res.data.result.items;\r\n vm.totalLanding = res.data.result.totalCount;\r\n if (vm.landingPage.length == 0) {\r\n vm.listLandingResponse = 'No landing';\r\n } else if (vm.landingPage.length < vm.totalLanding) {\r\n vm.loadMoreLanding = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.listLandingResponse = 'No landing';\r\n })\r\n }\r\n\r\n function loadMoreLandings() {\r\n if (vm.loadMoreLanding) {\r\n vm.landingPageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getListPagesByAdmin({\r\n PageNo: vm.landingPageNo,\r\n PageSize: vm.landingPageSize\r\n }).then(function (res) {\r\n vm.landingPage = vm.landingPage.concat(res.data.result.items);\r\n vm.totalLanding = res.data.result.totalCount;\r\n if (vm.landingPage.length >= vm.totalLanding) {\r\n vm.loadMoreLanding = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error)\r\n $rootScope.loading = false;\r\n vm.listLandingResponse = 'No landing';\r\n })\r\n }\r\n\r\n }\r\n\r\n function onCreateOrUpdateLandingPage() {\r\n var resultCompare = angular.equals(vm.landingPage, vm.landingPageTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n AdminService.createOrUpdateLandingPage(vm.landingPage).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n }\r\n\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function onCreateLandingPage() {\r\n $state.go(CONFIG.routes.admin.createLandingPage);\r\n }\r\n\r\n function onEditLandingPage(id) {\r\n $state.go(CONFIG.routes.admin.editLandingPage, {'id': id});\r\n }\r\n\r\n function openModalEditLandingPage(landingPage) {\r\n var v = JSON.parse(angular.toJson(landingPage));\r\n AdminService.showEditLandingPageModal(v).then(function (res) {\r\n vm.landingPage = res.landingPage;\r\n });\r\n }\r\n\r\n function selectImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n console.log(\"selectImage\");\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=LandingPages\",\r\n data: {\r\n file: $files\r\n }\r\n }).then(function (response) {\r\n vm.landingPage.imageUrl = response.data[0].url;\r\n AdminService.createOrUpdateLandingPage(vm.landingPage).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n $timeout(function () {\r\n vm.isHasImage = true;\r\n vm.fileUrl = imgSrc;\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeFiles() {\r\n if (vm.landingPage.imageUrl) {\r\n $rootScope.loading = true;\r\n AdminService.removeLandingPageImage(vm.landingPage.imageUrl).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.landingPage.imageUrl = null;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n if (vm.fileUrl) {\r\n vm.fileUrl = null;\r\n }\r\n if (vm.isHasImage) {\r\n vm.isHasImage = false\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('JobManagementController', JobManagementController);\r\n\r\n /** @ngInject */\r\n function JobManagementController(JobService, AdminService, $rootScope, $location, ngToast, $timeout, CONFIG, $state, $log) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.baseUrl = document.querySelector('base').href + 'jobs/';\r\n vm.jobNo = 1;\r\n vm.jobManagementize = 25;\r\n vm.loadMoreJobs = loadMoreJobs;\r\n vm.onCreateJob = onCreateJob;\r\n vm.onEditJob = onEditJob;\r\n vm.openModalDeleteJob = openModalDeleteJob;\r\n active();\r\n function active() {\r\n getListjobs();\r\n }\r\n\r\n function getListjobs() {\r\n JobService.getJobsByAdmin({\r\n PageNo: vm.jobNo,\r\n PageSize: vm.jobManagementize\r\n }).then(function (res) {\r\n vm.jobs = res.data.result.items;\r\n vm.totalJob = res.data.result.totalCount;\r\n if (vm.jobs.length == 0) {\r\n vm.listJobResponse = 'No job';\r\n } else if (vm.jobs.length < vm.totalJob) {\r\n vm.loadMoreJob = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listJobResponse = 'No job';\r\n })\r\n }\r\n\r\n function loadMoreJobs() {\r\n if (vm.loadMoreJob) {\r\n vm.jobNo++;\r\n $rootScope.loading = true;\r\n JobService.getJobsByAdmin({\r\n PageNo: vm.jobNo,\r\n PageSize: vm.jobManagementize\r\n }).then(function (res) {\r\n vm.jobs = vm.jobs.concat(res.data.result.items);\r\n vm.totalJob = res.data.result.totalCount;\r\n if (vm.job.length >= vm.totalJob) {\r\n vm.loadMoreJob = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listJobResponse = 'No job';\r\n })\r\n }\r\n\r\n }\r\n\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function onCreateJob() {\r\n $state.go(CONFIG.routes.admin.createJob);\r\n }\r\n\r\n function onEditJob(id) {\r\n $state.go(CONFIG.routes.admin.editJob, {'id': id});\r\n }\r\n function openModalDeleteJob(job) {\r\n AdminService.showDeleteJobModal(job).then(function (isDeleted) {\r\n if (isDeleted) {\r\n vm.jobs = vm.jobs.filter(function (data) {\r\n return data.id !== job.id;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('ExportController', ExportController);\r\n\r\n /** @ngInject */\r\n function ExportController(AdminService, $rootScope, FileSaver, Blob, $filter, CONFIG, $state, $uibModal) {\r\n\r\n var vm = this;\r\n vm.reverse = false;\r\n vm.sortBy = sortBy;\r\n vm.candidatePageNo = 1;\r\n vm.candidatePageSize = 100;\r\n vm.clientPageNo = 1;\r\n vm.clientPageSize = 100;\r\n vm.loadMoreCandidates = loadMoreCandidates;\r\n vm.loadMoreClients = loadMoreClients;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.exportClients = exportClients;\r\n vm.exportCandidates = exportCandidates;\r\n active();\r\n function active() {\r\n $rootScope.loading = true;\r\n loadCandidates();\r\n loadClients();\r\n }\r\n function loadCandidates() {\r\n AdminService.getCandidatesByAdmin({PageNo: vm.candidatePageNo, PageSize: vm.candidatePageSize}).then(function (data) {\r\n vm.listCandidate = data.data.result.items;\r\n vm.totalCandidate = data.data.result.totalCount;\r\n if (vm.listCandidate.length == 0) {\r\n vm.listCandidateResponse = 'No user';\r\n } else if (vm.listCandidate.length < vm.totalCandidate) {\r\n vm.loadMoreCandidate = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n vm.listCandidateResponse = 'No user';\r\n })\r\n }\r\n function loadClients() {\r\n AdminService.getClientsByAdmin({PageNo: vm.clientPageNo, PageSize: vm.clientPageSize}).then(function (data) {\r\n vm.listClient = data.data.result.items;\r\n vm.totalClient = data.data.result.totalCount;\r\n if (vm.listClient.length == 0) {\r\n vm.listClientResponse = 'No user';\r\n } else if (vm.listClient.length < vm.totalClient) {\r\n vm.loadMoreClient = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n vm.listClientResponse = 'No user';\r\n })\r\n }\r\n function loadMoreCandidates() {\r\n if (vm.loadMoreCandidate) {\r\n vm.candidatePageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getCandidatesByAdmin({PageNo: vm.candidatePageNo, PageSize: vm.candidatePageSize}).then(function (data) {\r\n vm.listCandidate = vm.listCandidate.concat(data.data.result.items);\r\n vm.totalCandidate = data.data.result.totalCount;\r\n if (vm.listCandidate.length >= vm.totalCandidate) {\r\n vm.loadMoreCandidate = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error)\r\n $rootScope.loading = false;\r\n vm.listCandidateResponse = 'No user';\r\n })\r\n }\r\n\r\n }\r\n function loadMoreClients() {\r\n if (vm.loadMoreClient) {\r\n vm.clientPageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getClientsByAdmin({PageNo: vm.clientPageNo, PageSize: vm.clientPageSize}).then(function (data) {\r\n vm.listClient = vm.listClient.concat(data.data.result.items);\r\n vm.totalClient = data.data.result.totalCount;\r\n if (vm.listClient.length >= vm.totalClient) {\r\n vm.loadMoreClient = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error)\r\n $rootScope.loading = false;\r\n vm.listClientResponse = 'No user';\r\n })\r\n }\r\n\r\n }\r\n function exportClients(){\r\n $rootScope.loading = true;\r\n AdminService.exportClientsByAdmin().then(function (res, status, headers, config) {\r\n $rootScope.loading = false;\r\n saveData(res, \"ReportClients.xlsx\");\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n function exportCandidates(){\r\n $rootScope.loading = true;\r\n AdminService.exportCandidatesByAdmin().then(function (res, status, headers, config) {\r\n $rootScope.loading = false;\r\n saveData(res, \"ReportCandidates.xlsx\");\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n };\r\n\r\n\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n function saveData(data, fileName) {\r\n var blob = new Blob([data.data], {type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"});\r\n FileSaver.saveAs(blob, fileName);\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('EmailSenderController', EmailSenderController);\r\n\r\n /** @ngInject */\r\n function EmailSenderController(AdminService, $rootScope, Upload, ngToast, $scope, CONFIG, $state, $timeout,dataList) {\r\n\r\n var vm = this;\r\n vm.propertyName = 'senderName';\r\n vm.propertyNameExtend = 'senderName';\r\n vm.reverse = false;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.sortBy = sortBy;\r\n vm.candidatePageNo = 1;\r\n vm.candidatePageSize = 100;\r\n vm.clientPageNo = 1;\r\n vm.clientPageSize = 100;\r\n vm.emailSender = {};\r\n vm.copyOfEmailTemplate = null;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.selectFileLast = selectFileLast;\r\n vm.removeTemplateFiles = removeTemplateFiles;\r\n vm.onCreateEmailSender = onCreateEmailSender;\r\n vm.openModalEditSender = openModalEditSender;\r\n vm.openModalTestEmailSender = openModalTestEmailSender;\r\n vm.getTypeOfWork = getTypeOfWork;\r\n //vm.emailSender.distance = CONFIG.distance;\r\n vm.openModalDeleteSender = openModalDeleteSender;\r\n active();\r\n function active() {\r\n $rootScope.loading = true;\r\n loadSendToVariables();\r\n loadSendFromVariables();\r\n loadSendFirstVariables();\r\n loadSendFrequencyVariables();\r\n loadEmailSenders();\r\n getTypeOfWork();\r\n }\r\n\r\n function loadSendToVariables() {\r\n AdminService.getSendToVariables().then(function (data) {\r\n vm.sendToVariables = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function loadSendFromVariables() {\r\n AdminService.getSendFromVariables().then(function (data) {\r\n vm.sendFromVariables = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function loadSendFirstVariables() {\r\n AdminService.getSendFirstVariables().then(function (data) {\r\n vm.sendFirstVariables = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function loadSendFrequencyVariables() {\r\n AdminService.getSendFrequencyVariables().then(function (data) {\r\n vm.sendFrequencyVariables = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error);\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function loadEmailSenders() {\r\n $rootScope.loading = true;\r\n AdminService.getEmailSenders().then(function (data) {\r\n vm.emailSenders = data.data.result.items;\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n console.log(error)\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function selectFileLast($files) {\r\n if ($files.length > 0) {\r\n var fileSrc = URL.createObjectURL($files[0]);\r\n if (fileSrc && fileSrc !== '') {\r\n vm.isHasTemplate = true;\r\n vm.fileTemplateUrl = fileSrc;\r\n $timeout(function () {\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function onCreateEmailSender() {\r\n if (vm.copyOfEmailTemplate) {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=Templates\",\r\n data: {\r\n file: vm.copyOfEmailTemplate\r\n }\r\n }).then(function (response) {\r\n vm.emailSender.emailTemplateUrl = response.data[0].url;\r\n AdminService.createSettingSenderSchedule(vm.emailSender).then(function (data) {\r\n loadEmailSenders();\r\n vm.emailSender = {};\r\n vm.registerEmailSenderForm.$setUntouched();\r\n vm.registerEmailSenderForm.$setPristine();\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n }\r\n\r\n function removeTemplateFiles() {\r\n if (vm.sender.emailTemplateUrl) {\r\n $rootScope.loading = true;\r\n AdminService.removeTemplateFiles(vm.sender.emailTemplateUrl).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.sender.emailTemplateUrl = null;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n if (vm.fileTemplateUrl) {\r\n vm.fileTemplateUrl = null;\r\n }\r\n if (vm.isHasTemplate) {\r\n vm.isHasTemplate = false\r\n }\r\n }\r\n\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n };\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function openModalEditSender(sender) {\r\n var v = JSON.parse(angular.toJson(sender));\r\n AdminService.showEditSenderModal(v).then(function (res) {\r\n loadEmailSenders();\r\n });\r\n }\r\n function openModalTestEmailSender(sender) {\r\n var v = JSON.parse(angular.toJson(sender));\r\n AdminService.showTestSenderModal(v).then(function (res) {\r\n });\r\n }\r\n function getTypeOfWork() {\r\n dataList.getWorkTypes().then(function (data) {\r\n vm.typeOfWorks = data.data.result.items;\r\n })\r\n }\r\n\r\n function openModalDeleteSender(sender) {\r\n AdminService.showDeleteSenderModal(sender).then(function (isDeleted) {\r\n if (isDeleted) {\r\n vm.emailSenders = vm.emailSenders.filter(function (data) {\r\n return data.id !== sender.id;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('EditLandingPageController', EditLandingPageController);\r\n\r\n /** @ngInject */\r\n function EditLandingPageController(AdminService, $rootScope, Upload, ngToast, $scope, CONFIG, $state, $uibModal, $timeout) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.landingPage = {};\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n vm.copyImage = null;\r\n vm.toolbarOptions = [\r\n ['p', 'pre', 'quote'],\r\n ['bold', 'italics', 'underline', 'strikeThrough', 'ul', 'ol', 'redo', 'undo', 'clear'],\r\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n ['html', 'insertLink']];\r\n vm.backToLandingPage = backToLandingPage;\r\n vm.onCreateOrUpdateLandingPage = onCreateOrUpdateLandingPage;\r\n vm.openModalEditLandingPage = openModalEditLandingPage;\r\n vm.selectImage = selectImage;\r\n vm.removeFiles = removeFiles;\r\n active();\r\n function active() {\r\n getLandingPage($state.params.id)\r\n }\r\n\r\n function getLandingPage(id) {\r\n $rootScope.loading = true;\r\n AdminService.getLandingPageById(id).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function onCreateOrUpdateLandingPage() {\r\n var resultCompare = angular.equals(vm.landingPage, vm.landingPageTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n AdminService.createOrUpdateLandingPage(vm.landingPage).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n }\r\n\r\n function backToLandingPage() {\r\n $state.go(CONFIG.routes.admin.manageLandingPage);\r\n }\r\n\r\n function openModalEditLandingPage(landingPage) {\r\n var v = JSON.parse(angular.toJson(landingPage));\r\n AdminService.showEditLandingPageModal(v).then(function (res) {\r\n vm.landingPage = res.landingPage;\r\n });\r\n }\r\n\r\n function selectImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n vm.isHasImage = true;\r\n vm.fileUrl = imgSrc;\r\n console.log(\"selectImage\");\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=LandingPages\",\r\n data: {\r\n file: $files\r\n }\r\n }).then(function (response) {\r\n vm.landingPage.imageUrl = response.data[0].url;\r\n AdminService.createOrUpdateLandingPage(vm.landingPage).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n $timeout(function() {\r\n $files = [];\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeFiles() {\r\n if (vm.landingPage.imageUrl) {\r\n $rootScope.loading = true;\r\n AdminService.removeLandingPageImage(vm.landingPage.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.landingPage.imageUrl = null;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n }\r\n if (vm.fileUrl) {\r\n vm.fileUrl = null;\r\n }\r\n if (vm.isHasImage) {\r\n vm.isHasImage = false;\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('EditJobController', EditJobController);\r\n\r\n /** @ngInject */\r\n function EditJobController(JobService, AdminService, $rootScope, Upload, ngToast, $scope, CONFIG, $state, $uibModal, $timeout) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.baseUrl = document.querySelector('base').href + 'jobs/';\r\n vm.dateFormat = CONFIG.bootstrapDateFormat;\r\n vm.calendarPopup = {\r\n opened: false\r\n };\r\n vm.checkValidThrough = false;\r\n vm.checkValidThroughOverLimit = false;\r\n vm.dateOptions = {\r\n minDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1)\r\n };\r\n vm.job = {};\r\n vm.jobTemp = angular.copy(vm.job);\r\n vm.copyImage = null;\r\n vm.toolbarOptions = [\r\n ['p', 'pre', 'quote'],\r\n ['bold', 'italics', 'underline', 'strikeThrough', 'ul', 'ol', 'redo', 'undo', 'clear'],\r\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n ['html', 'insertLink']];\r\n vm.backToJobManagement = backToJobManagement;\r\n vm.openCalendarPopup = openCalendarPopup;\r\n vm.resetCheckValidThrough=resetCheckValidThrough;\r\n vm.checkValidThroughDate = checkValidThroughDate;\r\n vm.editJob = editJob;\r\n vm.checkUrlExists = checkUrlExists;\r\n vm.resetErrorUrlExists = resetErrorUrlExists;\r\n vm.generateUrl = generateUrl;\r\n\r\n active();\r\n\r\n function active() {\r\n getJob($state.params.id)\r\n }\r\n\r\n function getJob(id) {\r\n $rootScope.loading = true;\r\n JobService.getJobById(id).then(function (res) {\r\n vm.job = res.data.result;\r\n if (vm.job) {\r\n vm.job.validThrough = vm.job.validThrough ? new Date(vm.job.validThrough) : ''\r\n }\r\n vm.jobTemp = angular.copy(vm.job);\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function backToJobManagement() {\r\n $state.go(CONFIG.routes.admin.jobManagement);\r\n }\r\n function openCalendarPopup() {\r\n vm.calendarPopup.opened = true;\r\n }\r\n function checkValidThroughDate(validThroughDate) {\r\n vm.checkValidThrough = true;\r\n if (validThroughDate && validThroughDate.getTime() < vm.dateOptions.minDate.getTime()) {\r\n vm.checkValidThroughOverLimit = true;\r\n } else {\r\n vm.checkValidThroughOverLimit = false;\r\n }\r\n\r\n }\r\n function resetCheckValidThrough() {\r\n vm.checkValidThrough = false;\r\n }\r\n\r\n function editJob() {\r\n var resultCompare = angular.equals(vm.job, vm.jobTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n JobService.updateJobByAdmin(vm.job).then(function (res) {\r\n vm.job = res.data.result;\r\n if (vm.job) {\r\n vm.job.validThrough = vm.job.validThrough ? new Date(vm.job.validThrough) : ''\r\n }\r\n vm.jobTemp = angular.copy(vm.job);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n goToJobManagement();\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }else{\r\n goToJobManagement();\r\n }\r\n }\r\n function goToJobManagement() {\r\n $state.go(CONFIG.routes.admin.jobManagement);\r\n }\r\n\r\n function checkUrlExists(form, url) {\r\n if (url === vm.job.url) {\r\n form.url.$setValidity(\"urlExists\", true);\r\n } else {\r\n AdminService.checkJobUrlExists(url).then(function (res) {\r\n if (res.data.result) {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", false);\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", true);\r\n }, 1000);\r\n }\r\n }, function (error) {\r\n $timeout(function () {\r\n form.$setValidity('urlExists', false);\r\n }, 1000);\r\n })\r\n }\r\n }\r\n\r\n function generateUrl(form, url) {\r\n if (vm.job.title) {\r\n vm.job.url = vm.job.title.replace(/\\s+/g, '-').toLowerCase();\r\n }\r\n\r\n if (vm.job.address && vm.job.address.postCode) {\r\n vm.job.url += '-' + vm.job.address.postCode.replace(/\\s+/g, '-').toLowerCase();\r\n }\r\n\r\n AdminService.checkJobUrlExists(vm.job.url).then(function (res) {\r\n if (res.data.result) {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", false);\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", true);\r\n }, 1000);\r\n }\r\n }, function (error) {\r\n $timeout(function () {\r\n form.$setValidity('urlExists', false);\r\n }, 1000);\r\n })\r\n }\r\n\r\n function resetErrorUrlExists(form) {\r\n form.$setValidity('urlExists', true);\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('DeleteUserPagesController', DeleteUserPagesController);\r\n\r\n /** @ngInject */\r\n function DeleteUserPagesController(AdminService, $rootScope, CONFIG, $state) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.backToAdminPage = backToAdminPage;\r\n vm.onSearchUser = onSearchUser;\r\n vm.loadMoreUser = loadMoreUser;\r\n vm.openModalDeleteUser = openModalDeleteUser;\r\n vm.reverse = false;\r\n vm.sortBy = sortBy;\r\n vm.listUsers = [];\r\n vm.deleteUserPage = {};\r\n vm.search = {\r\n emailAddress: null,\r\n pageNo: 1,\r\n pageSize: 10\r\n };\r\n vm.filter = {\r\n emailAddress: null,\r\n pageNo: 1,\r\n pageSize: 10\r\n };\r\n //active();\r\n function active() {\r\n loadUsersList();\r\n }\r\n\r\n function loadUsersList() {\r\n $rootScope.loading = true;\r\n AdminService.getAllUsersByAdmin(vm.filter).then(function (data) {\r\n vm.listUsers = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listUsers.length == 0) {\r\n vm.listUsersResponse = 'No user';\r\n } else if (vm.listUsers.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.listUsersResponse = 'No user';\r\n })\r\n }\r\n\r\n function loadMoreUser() {\r\n if (vm.loadMoreUserCount) {\r\n vm.filter.pageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getAllUsersByAdmin(vm.filter).then(function (data) {\r\n vm.listUsers = vm.listUsers.concat(data.data.result.items);\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listUsers.length >= vm.totalUserCount) {\r\n vm.loadMoreUserCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.listUsersResponse = 'No user';\r\n })\r\n }\r\n }\r\n\r\n function backToAdminPage() {\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function onSearchUser() {\r\n vm.filter.pageNo = 1;\r\n $rootScope.loading = true;\r\n AdminService.getAllUsersByAdmin(vm.search).then(function (data) {\r\n vm.listUsers = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listUsers.length == 0) {\r\n vm.listUsersResponse = 'No user';\r\n } else {\r\n vm.listUsersResponse = '';\r\n }\r\n if (vm.listUsers.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n } else {\r\n vm.loadMoreUserCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.listUsersResponse = 'No user';\r\n })\r\n }\r\n\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n };\r\n\r\n function openModalDeleteUser(user) {\r\n AdminService.showDeleteUserModal(user).then(function (isDeleted) {\r\n if (isDeleted) {\r\n vm.listUsers = vm.listUsers.filter(function (data) { \r\n return data.id !== user.id;\r\n });\r\n }\r\n });\r\n }\r\n\r\n }\r\n})();\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('CreateLandingPageController', CreateLandingPageController);\r\n\r\n /** @ngInject */\r\n function CreateLandingPageController(AdminService, $rootScope, Upload, ngToast, $timeout, CONFIG, $state, $uibModal) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.landingPage = {};\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n vm.copyImage = null;\r\n vm.toolbarOptions = [\r\n ['p', 'pre', 'quote'],\r\n ['bold', 'italics', 'underline', 'strikeThrough', 'ul', 'ol', 'redo', 'undo', 'clear'],\r\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n ['html', 'insertLink']];\r\n vm.backToLandingPage = backToLandingPage;\r\n vm.onCreateOrUpdateLandingPage = onCreateOrUpdateLandingPage;\r\n vm.openModalEditLandingPage = openModalEditLandingPage;\r\n vm.selectImage = selectImage;\r\n vm.removeFiles = removeFiles;\r\n active();\r\n function active() {\r\n }\r\n\r\n function onCreateOrUpdateLandingPage() {\r\n var resultCompare = angular.equals(vm.landingPage, vm.landingPageTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n AdminService.createOrUpdateLandingPage(vm.landingPage).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n }\r\n\r\n function backToLandingPage() {\r\n $state.go(CONFIG.routes.admin.manageLandingPage);\r\n }\r\n\r\n function openModalEditLandingPage(landingPage) {\r\n var v = JSON.parse(angular.toJson(landingPage));\r\n AdminService.showEditLandingPageModal(v).then(function (res) {\r\n vm.landingPage = res.landingPage;\r\n });\r\n }\r\n\r\n function selectImage($files) {\r\n if ($files.length > 0) {\r\n var imgSrc = URL.createObjectURL($files[0]);\r\n if (imgSrc && imgSrc !== '') {\r\n $rootScope.loading = true;\r\n Upload.upload({\r\n url: CONFIG.rest.baseURI + CONFIG.rest.uploadFile + \"?subFolder=LandingPages\",\r\n data: {\r\n file: $files\r\n }\r\n }).then(function (response) {\r\n vm.landingPage.imageUrl = response.data[0].url;\r\n AdminService.createOrUpdateLandingPage(vm.landingPage).then(function (res) {\r\n vm.landingPage = res.data.result;\r\n vm.landingPageTemp = angular.copy(vm.landingPage);\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }, function (response) {\r\n $rootScope.loading = false;\r\n if (response.status > 0) {\r\n vm.errorMsg = response.status + ': ' + response.data;\r\n }\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n });\r\n $timeout(function () {\r\n vm.isHasImage = true;\r\n vm.fileUrl = imgSrc;\r\n $files=[]\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n function removeFiles() {\r\n if (vm.landingPage.imageUrl) {\r\n $rootScope.loading = true;\r\n AdminService.removeLandingPageImage(vm.landingPage.id).then(function (data) {\r\n $rootScope.loading = false;\r\n vm.landingPage.imageUrl = null;\r\n ngToast.success({\r\n content: 'Remove successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Remove unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n if (vm.fileUrl) {\r\n vm.fileUrl = null;\r\n }\r\n if (vm.isHasImage) {\r\n vm.isHasImage = false\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('CreateJobController', CreateJobController);\r\n\r\n /** @ngInject */\r\n function CreateJobController(JobService, $rootScope, Upload, ngToast, $timeout, CONFIG, $state, $uibModal, AdminService) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.baseUrl = document.querySelector('base').href + 'jobs/';\r\n vm.dateFormat = CONFIG.bootstrapDateFormat;\r\n vm.calendarPopup = {\r\n opened: false\r\n };\r\n vm.checkValidThrough = false;\r\n vm.checkValidThroughOverLimit = false;\r\n vm.dateOptions = {\r\n minDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1)\r\n };\r\n vm.job = {};\r\n vm.jobTemp = angular.copy(vm.job);\r\n vm.toolbarOptions = [\r\n ['p', 'pre', 'quote'],\r\n ['bold', 'italics', 'underline', 'strikeThrough', 'ul', 'ol', 'redo', 'undo', 'clear'],\r\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n ['html', 'insertLink']];\r\n vm.backToJobManagement = backToJobManagement;\r\n vm.openCalendarPopup = openCalendarPopup;\r\n vm.resetCheckValidThrough=resetCheckValidThrough;\r\n vm.checkValidThroughDate = checkValidThroughDate;\r\n vm.createJob = createJob;\r\n vm.checkUrlExists = checkUrlExists;\r\n vm.resetErrorUrlExists = resetErrorUrlExists;\r\n vm.generateUrl = generateUrl;\r\n\r\n active();\r\n\r\n function active() {\r\n getDefaultUrl();\r\n }\r\n\r\n function backToJobManagement() {\r\n $state.go(CONFIG.routes.admin.jobManagement);\r\n }\r\n\r\n function openCalendarPopup() {\r\n vm.calendarPopup.opened = true;\r\n }\r\n\r\n function checkValidThroughDate(validThrough) {\r\n vm.checkValidThrough = true;\r\n if (validThrough && validThrough.getTime() < vm.dateOptions.minDate.getTime()) {\r\n vm.checkValidThroughOverLimit = true;\r\n } else {\r\n vm.checkValidThroughOverLimit = false;\r\n }\r\n\r\n }\r\n function resetCheckValidThrough() {\r\n vm.checkValidThrough = false;\r\n }\r\n\r\n function createJob() {\r\n var resultCompare = angular.equals(vm.job, vm.jobTemp);\r\n if (!resultCompare) {\r\n $rootScope.loading = true;\r\n JobService.createJobByAdmin(vm.job).then(function (res) {\r\n vm.job = res.data.result;\r\n vm.jobTemp = angular.copy(vm.job);\r\n if (vm.job) {\r\n vm.job.validThrough = vm.job.validThrough ? new Date(vm.job.validThrough) : ''\r\n }\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n goToJobManagement();\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n }\r\n\r\n function goToJobManagement() {\r\n $state.go(CONFIG.routes.admin.jobManagement);\r\n }\r\n\r\n function getDefaultUrl() {\r\n if (vm.job && (vm.job.url == null || vm.job.url == '')) {\r\n AdminService.getJobDefaultUrl().then(function (res) {\r\n vm.job.url = res.data.result;\r\n });\r\n }\r\n }\r\n\r\n function checkUrlExists(form, url) {\r\n if (url === vm.job.url) {\r\n form.url.$setValidity(\"urlExists\", true);\r\n } else {\r\n AdminService.checkJobUrlExists(url).then(function (res) {\r\n if (res.data.result) {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", false);\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", true);\r\n }, 1000);\r\n }\r\n }, function (error) {\r\n $timeout(function () {\r\n form.$setValidity('urlExists', false);\r\n }, 1000);\r\n })\r\n }\r\n }\r\n\r\n function generateUrl(form, url) {\r\n if (vm.job.title) {\r\n vm.job.url = vm.job.title.toLowerCase().replace(' ', '-');\r\n }\r\n\r\n if (vm.job.address && vm.job.address.postCode) {\r\n vm.job.url += '-' + vm.job.address.postCode.toLowerCase().replace(' ', '-');\r\n }\r\n\r\n AdminService.checkJobUrlExists(vm.job.url).then(function (res) {\r\n if (res.data.result) {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", false);\r\n }, 1000);\r\n } else {\r\n $timeout(function () {\r\n form.url.$setValidity(\"urlExists\", true);\r\n }, 1000);\r\n }\r\n }, function (error) {\r\n $timeout(function () {\r\n form.$setValidity('urlExists', false);\r\n }, 1000);\r\n })\r\n }\r\n\r\n function resetErrorUrlExists(form) {\r\n form.$setValidity('urlExists', true);\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .controller('AdminController', AdminController);\r\n\r\n /** @ngInject */\r\n function AdminController(AdminService, $rootScope, $filter, CONFIG, $state, $element, ngToast) {\r\n var vm = this;\r\n vm.propertyName = 'creationTime';\r\n vm.propertyNameExtend = 'creationTime';\r\n vm.reverse = false;\r\n vm.sortBy = sortBy;\r\n vm.candidateFilter = candidateFilter;\r\n vm.onSearchUser = onSearchUser;\r\n vm.isShowLoginLogOut = false;\r\n vm.isShowStatus = false;\r\n vm.search = {\r\n emailAddress: null,\r\n pageNo: 1,\r\n pageSize: 10\r\n };\r\n vm.filter = {\r\n emailAddress: null,\r\n photo: {\r\n isExist: false,\r\n isNotExist: false\r\n },\r\n passport: {\r\n isExist: false,\r\n isNotExist: false\r\n },\r\n document: {\r\n isExist: false,\r\n isNotExist: false\r\n },\r\n insurance: {\r\n isExist: false,\r\n isNotExist: false\r\n },\r\n status: {\r\n isPending: false,\r\n isIllegal: false,\r\n isLegal: false,\r\n isIncorrectIDFile:false\r\n },\r\n emailConfirmedStatus: {\r\n isConfirmed: false,\r\n isNotConfirmed: false\r\n },\r\n pageNo: 1,\r\n pageSize: 20\r\n };\r\n var date = new Date();\r\n vm.zego = {\r\n timeStamp: date\r\n };\r\n vm.dateFormat = CONFIG.bootstrapDateFormat;\r\n\r\n vm.calendarPopup = {\r\n dateOpened: false\r\n };\r\n vm.dateOptions = {\r\n formatYear: 'yyyy',\r\n startingDay: 1,\r\n minDate: date\r\n };\r\n vm.timePickerOptions = {\r\n timeFormat: 'H:i'\r\n };\r\n vm.listPassport = [];\r\n vm.listPassportOrigin = [];\r\n vm.userStatus = userStatus;\r\n vm.loadMoreUser = loadMoreUser;\r\n vm.viewPassport = viewPassport;\r\n vm.viewDocument = viewDocument;\r\n vm.viewPhotoOrVideo = viewPhotoOrVideo;\r\n vm.viewInsuranceCode = viewInsuranceCode;\r\n vm.changeStatus = changeStatus;\r\n vm.listUserStatus = CONFIG.userStatus;\r\n vm.goToExportPage = goToExportPage;\r\n vm.goToRegisterVoucherPage = goToRegisterVoucherPage;\r\n vm.goToSMSSenderPage = goToSMSSenderPage;\r\n vm.goToEmailSenderPage = goToEmailSenderPage;\r\n vm.goToManageBookingPage = goToManageBookingPage;\r\n vm.goToManageLandingPage = goToManageLandingPage;\r\n vm.goToDeleteUserPage = goToDeleteUserPage;\r\n vm.goToStopReceivingEmailPage = goToStopReceivingEmailPage;\r\n vm.goToJobManagementPage = goToJobManagementPage;\r\n vm.onGetZegoUserStatus = onGetZegoUserStatus;\r\n vm.onLoginZego = onLoginZego;\r\n vm.onLogoutZego = onLogoutZego;\r\n vm.openCalendarPopup = openCalendarPopup;\r\n vm.openTimePicker = openTimePicker;\r\n vm.mergeUnique = mergeUnique;\r\n vm.resendEmail = resendEmail;\r\n vm.resendSMS = resendSMS;\r\n vm.verifyEmail = verifyEmail;\r\n vm.active = active;\r\n //active();\r\n\r\n function active() {\r\n $rootScope.loading = true;\r\n AdminService.getUsersByAdmin(vm.filter).then(function (data) {\r\n vm.listPassport = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listPassport.length == 0) {\r\n vm.listPassportResponse = 'No user';\r\n } else if (vm.listPassport.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listPassportResponse = 'No user';\r\n })\r\n\r\n }\r\n\r\n function loadMoreUser() {\r\n if (vm.loadMoreUserCount) {\r\n vm.filter.pageNo++;\r\n $rootScope.loading = true;\r\n AdminService.getUsersByAdmin(vm.filter).then(function (data) {\r\n vm.listPassport = vm.listPassport.concat(data.data.result.items);\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listPassport.length >= vm.totalUserCount) {\r\n vm.loadMoreUserCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listPassportResponse = 'No user';\r\n })\r\n }\r\n\r\n }\r\n\r\n function onSearchUser() {\r\n vm.filter.pageNo = 1;\r\n $rootScope.loading = true;\r\n AdminService.getUsersByAdmin(vm.search).then(function (data) {\r\n vm.listPassport = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listPassport.length == 0) {\r\n vm.listPassportResponse = 'No user';\r\n } else {\r\n vm.listPassportResponse = '';\r\n }\r\n if (vm.listPassport.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n } else {\r\n vm.loadMoreUserCount = false;\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listPassportResponse = 'No user';\r\n })\r\n\r\n }\r\n\r\n function sortBy(propertyName) {\r\n vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;\r\n vm.propertyNameExtend = '';\r\n vm.propertyName = propertyName;\r\n }\r\n\r\n function candidateFilter() {\r\n $rootScope.loading = true;\r\n vm.filter.pageNo = 1;\r\n AdminService.getUsersByAdmin(vm.filter).then(function (data) {\r\n vm.listPassport = data.data.result.items;\r\n vm.totalUserCount = data.data.result.totalCount;\r\n if (vm.listPassport.length == 0) {\r\n vm.listPassportResponse = 'No user';\r\n } else {\r\n vm.listPassportResponse = '';\r\n if (vm.listPassport.length < vm.totalUserCount) {\r\n vm.loadMoreUserCount = true;\r\n } else {\r\n vm.loadMoreUserCount = false;\r\n }\r\n }\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n vm.listPassportResponse = 'No user';\r\n });\r\n }\r\n\r\n function mergeUnique(arr1, arr2) {\r\n return arr1.concat(arr2.filter(function (item) {\r\n return arr1.indexOf(item) === -1;\r\n }));\r\n }\r\n\r\n function userStatus(status) {\r\n var item = $filter('filter')(CONFIG.userStatus, status);\r\n return item[0].status;\r\n }\r\n\r\n function openCalendarPopup() {\r\n vm.calendarPopup.dateOpened = true;\r\n }\r\n\r\n function openTimePicker() {\r\n $element.find(\"#time\").timepicker('show');\r\n }\r\n\r\n function viewPhotoOrVideo(user, $index) {\r\n AdminService.showPhotoOrVideoModal(user).then(function (res) {\r\n vm.listPassport[$index] = res.user;\r\n if (res.user.profile.photoUrl !== null) {\r\n vm.photoFile = res.user.profile.photoUrl;\r\n vm.photoFile = vm.photoFile.split(\".\").pop();\r\n if (vm.photoFile !== \"png\" && vm.photoFile !== \"jpg\" && vm.photoFile !== \"jpeg\" && vm.photoFile !== \"gif\" && vm.photoFile !== \"mp4\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and MP4 files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n function viewPassport(user, $index) {\r\n AdminService.showPassportModal(user).then(function (res) {\r\n vm.listPassport[$index] = res.user;\r\n if (res.user.profile.passportUrl !== null) {\r\n vm.passportFile = res.user.profile.passportUrl;\r\n vm.passportFile = vm.passportFile.split(\".\").pop().toLowerCase();\r\n if (vm.passportFile !== \"png\" && vm.passportFile !== \"jpg\" && vm.passportFile !== \"jpeg\" && vm.passportFile !== \"gif\" && vm.passportFile !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n function viewDocument(user, $index) {\r\n AdminService.showDocumentModal(user).then(function (res) {\r\n vm.listPassport[$index] = res.user;\r\n if (res.user.profile.documentUrl !== null) {\r\n vm.documentFile = res.user.profile.documentUrl;\r\n vm.documentFile = vm.documentFile.split(\".\").pop().toLowerCase();\r\n if (vm.documentFile !== \"png\" && vm.documentFile !== \"jpg\" && vm.documentFile !== \"jpeg\" && vm.documentFile !== \"gif\" && vm.documentFile !== \"pdf\") {\r\n ngToast.warning({\r\n content: 'Uploaded file is not valid. Only JPG, PNG, JPEG, GIF and PDF files are allowed.
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n function viewInsuranceCode(user, $index) {\r\n AdminService.showInsuranceModal(user).then(function (res) {\r\n vm.listPassport[$index] = res.user;\r\n });\r\n }\r\n\r\n function changeStatus(id, status) {\r\n $rootScope.loading = true;\r\n var dataReq = {\r\n id: id,\r\n profile: {\r\n status: status\r\n }\r\n };\r\n AdminService.updateCandidateUserStatus(dataReq).then(function () {\r\n $rootScope.loading = false;\r\n }, function () {\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function onGetZegoUserStatus() {\r\n $rootScope.loading = true;\r\n AdminService.getZegoUserStatus(vm.zego).then(function (res) {\r\n vm.zego.status = res.data.result.status;\r\n vm.isShowLoginLogOut = false;\r\n vm.isShowStatus = true;\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'It responses the status is ' + res.data.result.status + '
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.isShowLoginLogOut = false;\r\n vm.isShowStatus = false;\r\n var message = error.data.exceptionMessage ? error.data.exceptionMessage : error.data.message;\r\n ngToast.warning({\r\n content: 'It has error is ' + message + '
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n })\r\n }\r\n\r\n function onLoginZego() {\r\n $rootScope.loading = true;\r\n AdminService.loginZego(vm.zego).then(function (res) {\r\n vm.zego.status = res.data.result.status;\r\n vm.isShowLoginLogOut = true;\r\n vm.isShowStatus = false;\r\n ngToast.success({\r\n content: 'It responses the status is ' + res.data.result.status + '
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n vm.isShowLoginLogOut = false;\r\n vm.isShowStatus = false;\r\n var message = error.data.exceptionMessage ? error.data.exceptionMessage : error.data.message;\r\n ngToast.warning({\r\n content: 'It has error is ' + message + '
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function onLogoutZego() {\r\n $rootScope.loading = true;\r\n AdminService.logoutZego(vm.zego).then(function (res) {\r\n vm.zego.status = res.data.result.status;\r\n vm.isShowLoginLogOut = true;\r\n vm.isShowStatus = false;\r\n ngToast.success({\r\n content: 'It responses the status is ' + res.data.result.status + '
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n }, function (error) {\r\n vm.isShowLoginLogOut = false;\r\n vm.isShowStatus = false;\r\n var message = error.data.exceptionMessage ? error.data.exceptionMessage : error.data.message;\r\n ngToast.warning({\r\n content: 'It has error is ' + message + '
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function resendEmail(candidateId) {\r\n $rootScope.loading = true;\r\n AdminService.sendCandidateConfirmEmail(candidateId).then(function () {\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function resendSMS(candidateId) {\r\n $rootScope.loading = true;\r\n AdminService.sendCandidateConfirmEmailViaPhoneNumber(candidateId).then(function () {\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function verifyEmail(candidate) {\r\n $rootScope.loading = true;\r\n candidate.isEmailConfirmed = true;\r\n AdminService.updateCandidateVerifiedByAdmin(candidate).then(function (res) {\r\n if (res) {\r\n vm.listPassport.forEach(function (item) {\r\n if (item.id === res.data.result.id) {\r\n item = res.data.result;\r\n }\r\n });\r\n }\r\n $rootScope.loading = false;\r\n ngToast.success({\r\n content: 'Submission successful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n }, function () {\r\n ngToast.warning({\r\n content: 'Submission unsuccessful
',\r\n dismissButton: true,\r\n dismissButtonHtml: '×'\r\n });\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n function goToExportPage() {\r\n $state.go(CONFIG.routes.admin.export);\r\n }\r\n\r\n function goToRegisterVoucherPage() {\r\n $state.go(CONFIG.routes.admin.registerVoucher);\r\n }\r\n\r\n function goToSMSSenderPage() {\r\n $state.go(CONFIG.routes.admin.smsSender);\r\n }\r\n\r\n function goToEmailSenderPage() {\r\n $state.go(CONFIG.routes.admin.emailSender);\r\n }\r\n\r\n function goToManageBookingPage() {\r\n $state.go(CONFIG.routes.admin.manageBooking);\r\n }\r\n\r\n function goToManageLandingPage() {\r\n $state.go(CONFIG.routes.admin.manageLandingPage);\r\n }\r\n\r\n function goToDeleteUserPage() {\r\n $state.go(CONFIG.routes.admin.deleteUser);\r\n }\r\n\r\n function goToStopReceivingEmailPage() {\r\n $state.go(CONFIG.routes.admin.stopReceivingEmail);\r\n }\r\n\r\n function goToJobManagementPage() {\r\n $state.go(CONFIG.routes.admin.jobManagement);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .factory('SignupCandidateService', SignupCandidateService);\r\n function SignupCandidateService($http, CONFIG, $rootScope) {\r\n return {\r\n createCandidate: createCandidate,\r\n updateCandidate: updateCandidate,\r\n updateCandidateUserProfile: updateCandidateUserProfile,\r\n createUserBillingInfo: createUserBillingInfo,\r\n updateUserPhoto: updateUserPhoto,\r\n updateUserVideo: updateUserVideo,\r\n updateUserDocument: updateUserDocument,\r\n updateUserContact: updateUserContact,\r\n updateUserPassport: updateUserPassport,\r\n getNearClient: getNearClient,\r\n updateCandidateUserFull: updateCandidateUserFull,\r\n removeUserPhotoAndVideo: removeUserPhotoAndVideo,\r\n removeUserDocument: removeUserDocument,\r\n removeProofOfAddress: removeProofOfAddress,\r\n removeVehicle: removeVehicle,\r\n removeUserPassport: removeUserPassport,\r\n removeDBSCertificate: removeDBSCertificate,\r\n removeInsuranceCode: removeInsuranceCode,\r\n supportForSelfEmployed: supportForSelfEmployed,\r\n updateDeliveryDriver: updateDeliveryDriver\r\n };\r\n function createCandidate(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.create,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateCandidate(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.update,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateCandidateUserProfile(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateCandidateUserProfile,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function createUserBillingInfo(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.createUserBillingInfo,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserPhoto(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserPhoto,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserVideo(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserVideo,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserDocument(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserDocument,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserContact(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserContact,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserPassport(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserPassport,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getNearClient(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.getNearClient,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateCandidateUserFull(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateCandidateUserFull,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n\r\n function removeUserPhotoAndVideo(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserPhotoAndVideo + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserDocument(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserDocument + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n function removeProofOfAddress(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeProofOfAddress + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n function removeVehicle(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeVehicle + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n function removeDBSCertificate(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeDBSCertificate + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n function removeInsuranceCode(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeInsuranceCode + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserPassport(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserPassport + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function supportForSelfEmployed(id, data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.supportForSelfEmployed + \"?id=\" + id,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateDeliveryDriver(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.updateDeliveryDriver,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.candidate.signup.main, {\r\n url: '/signup',\r\n templateUrl: 'app/candidate/signup/signup.html',\r\n controller: 'SignUpController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate\r\n })\r\n\r\n .state(CONFIG.routes.candidate.signup.step1, {\r\n url: '/step1',\r\n templateUrl: 'app/candidate/signup/partials/step1.html',\r\n controller: 'SignUpStep1Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step2, {\r\n url: '/step2',\r\n templateUrl: 'app/candidate/signup/partials/step2.html',\r\n controller: 'SignUpStep2Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step3, {\r\n url: '/step3',\r\n templateUrl: 'app/candidate/signup/partials/step3.html',\r\n controller: 'SignUpStep3Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step4, {\r\n url: '/step4',\r\n templateUrl: 'app/candidate/signup/partials/step4.html',\r\n controller: 'SignUpStep4Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step5, {\r\n url: '/step5',\r\n templateUrl: 'app/candidate/signup/partials/step5.html',\r\n controller: 'SignUpStep5Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step6, {\r\n url: '/step6',\r\n templateUrl: 'app/candidate/signup/partials/step6.html',\r\n controller: 'SignUpStep6Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step7, {\r\n url: '/step7',\r\n templateUrl: 'app/candidate/signup/partials/step7.html',\r\n controller: 'SignUpStep7Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step8, {\r\n url: '/step8',\r\n templateUrl: 'app/candidate/signup/partials/step8.html',\r\n controller: 'SignUpStep8Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.step9, {\r\n url: '/step9',\r\n templateUrl: 'app/candidate/signup/partials/step9.html',\r\n controller: 'SignUpStep9Controller',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.alternativeDocumentation, {\r\n url: '/alternative-documentation',\r\n templateUrl: 'app/candidate/signup/partials/alternative-documentation.html',\r\n controller: 'DocumentController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.noDocument, {\r\n url: '/no-document',\r\n templateUrl: 'app/candidate/signup/partials/no-document.html',\r\n controller: 'DocumentController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.confirmEmail, {\r\n url: '/confirmEmail/?id&code',\r\n templateUrl: 'app/candidate/signup/partials/confirmEmail.html',\r\n controller: 'SignUpCandidateConfirmEmailController',\r\n controllerAs: 'vm'\r\n })\r\n .state(CONFIG.routes.candidate.signup.modeOfTransport, {\r\n url: '/mode-of-transport',\r\n templateUrl: 'app/candidate/signup/partials/mode-of-transport.html',\r\n controller: 'SignUpModeOfTransportController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.uploadDeliveryDriverDocument, {\r\n url: '/upload-document',\r\n templateUrl: 'app/candidate/signup/partials/upload-document.html',\r\n controller: 'SignUpUploadDeliveryDriverDocumentController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.uploadDBSCertificate, {\r\n url: '/upload-dbs-certificate',\r\n templateUrl: 'app/candidate/signup/partials/upload-dbs-certificate.html',\r\n controller: 'SignUpUploadDBSCertificateController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.signup.insuranceCode, {\r\n url: '/insurance-code',\r\n templateUrl: 'app/candidate/signup/partials/insurance-code.html',\r\n controller: 'SignUpInsuranceCodeController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('SignUpController', SignUpController);\r\n\r\n /** @ngInject */\r\n function SignUpController() {\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .factory('CandidatePortalService', CandidatePortalService);\r\n\r\n /** @ngInject */\r\n function CandidatePortalService($uibModal, CONFIG, $http) {\r\n return {\r\n openReasonModal: openReasonModal,\r\n openFutureBookingModal: openFutureBookingModal,\r\n openBookingHistoryModal: openBookingHistoryModal,\r\n openConfirmCancelModal: openConfirmCancelModal,\r\n openBookingDetail: openBookingDetail,\r\n getListRequestBookings: getListRequestBookings,\r\n acceptRequestBooking: acceptRequestBooking,\r\n refuseRequestBooking: refuseRequestBooking,\r\n refuseRequestBookingWithReason: refuseRequestBookingWithReason,\r\n getCandidateUpcomingBookings: getCandidateUpcomingBookings,\r\n getCandidatePreviousBookings: getCandidatePreviousBookings,\r\n getBooking: getBooking,\r\n updateCandidateUserContact: updateCandidateUserContact,\r\n removeUserPhotoAndVideo: removeUserPhotoAndVideo,\r\n removeUserDocument: removeUserDocument,\r\n removeUserPassport: removeUserPassport,\r\n updateUserPhoto: updateUserPhoto,\r\n updateUserVideo: updateUserVideo,\r\n updateUserDocument: updateUserDocument,\r\n updateUserContact: updateUserContact,\r\n updateUserPassport: updateUserPassport,\r\n getNotifications: getNotifications,\r\n getDayTimeMostSearchByClient: getDayTimeMostSearchByClient,\r\n getValuesMostSearchByClient: getValuesMostSearchByClient,\r\n rateClient: rateClient,\r\n requestDeleteAccount: requestDeleteAccount,\r\n getClientRateByCandidate: getClientRateByCandidate,\r\n getRefusedBooking: getRefusedBooking,\r\n getAcceptedBooking: getAcceptedBooking,\r\n getBookingCandidate: getBookingCandidate,\r\n getCandidateCurrentRating: getCandidateCurrentRating,\r\n getListReasons: getListReasons,\r\n cancelBookingByCandidate: cancelBookingByCandidate,\r\n getClientUserById : getClientUserById,\r\n sendCandidateConfirmEmail : sendCandidateConfirmEmail,\r\n sendCandidateConfirmEmailViaPhoneNumber : sendCandidateConfirmEmailViaPhoneNumber,\r\n receivingEmail: receivingEmail,\r\n openCareQualificationsUploadModal: openCareQualificationsUploadModal,\r\n openUnsuitableForCareModal: openUnsuitableForCareModal\r\n };\r\n function openReasonModal(id) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/modal/reasonRefuse.html',\r\n controller: 'ReasonRefuseCandidateController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n Id: id\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openFutureBookingModal(booking) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/modal/futureBookings.html',\r\n controller: 'FutureBookingCandidatelController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n booking: booking\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openBookingHistoryModal(booking) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/modal/bookingsHistory.html',\r\n controller: 'BookingHistoryCandidatelController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n booking: booking\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openConfirmCancelModal(booking) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/modal/confirmCancel.html',\r\n controller: 'ConfirmCancelController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n booking: booking\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openBookingDetail(booking) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/modal/bookingDetail.html',\r\n controller: 'BookingDetailController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n booking: booking\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function getListRequestBookings(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getListRequestBookings,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getListReasons() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getListReasons\r\n };\r\n return $http(req);\r\n }\r\n\r\n function acceptRequestBooking(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.acceptRequestBooking + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function refuseRequestBooking(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.refuseRequestBooking + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n function cancelBookingByCandidate(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.cancelBookingByCandidate + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function refuseRequestBookingWithReason(id, data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.refuseRequestBookingWithReason + \"?id=\" + id,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getCandidateUpcomingBookings(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getCandidateUpcomingBookings,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getCandidatePreviousBookings(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getCandidatePreviousBookings,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getBooking(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getBooking + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateCandidateUserContact(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateCandidateUserContact,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserPhotoAndVideo(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserPhotoAndVideo + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserDocument(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserDocument + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserPassport(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserPassport + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserPhoto(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserPhoto,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserVideo(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserVideo,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserDocument(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserDocument,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserContact(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserContact,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserPassport(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserPassport,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getNotifications() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.notification.getCandidateNotifications\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getDayTimeMostSearchByClient() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.getDayTimeMostSearchByClient\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getValuesMostSearchByClient() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.getValuesMostSearchByClient\r\n };\r\n return $http(req);\r\n }\r\n\r\n function rateClient(id, data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.rateClient + \"?bookingCandidateId=\" + id,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getClientRateByCandidate(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.getClientRateByCandidate + \"?bookingCandidateId=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getAcceptedBooking(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getAcceptedBooking + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getRefusedBooking(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getRefusedBooking + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getBookingCandidate(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.booking.getBookingCandidate + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getCandidateCurrentRating(userId) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.getCandidateCurrentRating + \"?userId=\" + userId,\r\n };\r\n return $http(req);\r\n }\r\n function getClientUserById(id){\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.getClientUserById + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n function sendCandidateConfirmEmail(id){\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.sendCandidateConfirmEmail + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n function sendCandidateConfirmEmailViaPhoneNumber(id){\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.sendCandidateConfirmEmailViaPhoneNumber + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n function requestDeleteAccount(){\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.requestDeleteAccount,\r\n };\r\n return $http(req);\r\n }\r\n\r\n function receivingEmail(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.receivingEmail,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function openCareQualificationsUploadModal() {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/modal/careQualificationsUpload.html',\r\n controller: 'CareQualificationsUploadCandidatelController',\r\n controllerAs: 'vm',\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function openUnsuitableForCareModal() {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/modal/unsuitableForCare.html',\r\n controller: 'UnsuitableForCareCandidatelController',\r\n controllerAs: 'vm',\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.candidate.portal.main, {\r\n url: '/portal',\r\n templateUrl: 'app/candidate/portal/portal.html',\r\n controller: 'CandidatePortalController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate\r\n })\r\n\r\n .state(CONFIG.routes.candidate.portal.welcomeBack, {\r\n url: '/welcome-back',\r\n templateUrl: 'app/candidate/portal/partials/welcome-back.html',\r\n controller: 'HomePageCandidateController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.workfaceProfile, {\r\n url: '/workface-profile',\r\n templateUrl: 'app/candidate/portal/partials/workface-profile.html',\r\n controller: 'WorkfaceProfileController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.availability, {\r\n url: '/availability?type',\r\n templateUrl: 'app/candidate/portal/partials/availability.html',\r\n controller: 'AvailabilityController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.currentStarRating, {\r\n url: '/current-star-rating',\r\n templateUrl: 'app/candidate/portal/partials/current-star-rating.html',\r\n controller: 'CurrentStarRatingController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.profileInformation, {\r\n url: '/amend-your-profile-information?type',\r\n templateUrl: 'app/candidate/portal/partials/profile-information.html',\r\n controller: 'ProfileInformationController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.uploadPhoto, {\r\n url: '/upload-photo-video?type',\r\n templateUrl: 'app/candidate/portal/partials/upload-photo.html',\r\n controller: 'UploadPhotoController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.uploadDocuments, {\r\n url: '/upload-documents',\r\n templateUrl: 'app/candidate/portal/partials/upload-documents.html',\r\n controller: 'UploadPassportDocumentController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.paymentDetails, {\r\n url: '/payment-details',\r\n templateUrl: 'app/candidate/portal/partials/payment-details.html',\r\n controller: 'PaymentDetailsController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.bookingRequests, {\r\n url: '/booking-requests',\r\n templateUrl: 'app/candidate/portal/partials/booking-requests.html',\r\n controller: \"BookingRequestController\",\r\n controllerAs: \"vm\",\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.cancelBooking, {\r\n url: '/cancel-booking/:id',\r\n templateUrl: 'app/candidate/portal/partials/cancel-booking.html',\r\n controller: \"CancelBookingController\",\r\n controllerAs: \"vm\",\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.howCommunicate, {\r\n url: '/how-communicate',\r\n templateUrl: 'app/candidate/portal/partials/how-communicate.html',\r\n controller: \"CandidateHowCommunicateController\",\r\n controllerAs: \"vm\",\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.wheelBooking, {\r\n url: '/wheel-booking/:id',\r\n templateUrl: 'app/candidate/portal/partials/wheel-booking.html',\r\n controller: \"WheelBookingController\",\r\n controllerAs: \"vm\",\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.bookingsHistory, {\r\n url: '/bookings-history',\r\n templateUrl: 'app/candidate/portal/partials/bookings-history.html',\r\n controller: \"BookingsHistoryController\",\r\n controllerAs: \"vm\",\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.ratingStar, {\r\n url: '/rating-star/:id',\r\n templateUrl: 'app/candidate/portal/partials/rating-star.html',\r\n controller: \"RatingStarCandidateController\",\r\n controllerAs: \"vm\",\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.alternativeDocumentation, {\r\n url: '/alternative-documentation',\r\n templateUrl: 'app/candidate/portal/partials/alternative-documentation.html',\r\n controller: 'UploadPassportDocumentController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.noDocument, {\r\n url: '/no-document',\r\n templateUrl: 'app/candidate/portal/partials/no-document.html',\r\n controller: 'UploadPassportDocumentController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.modeOfTransport, {\r\n url: '/mode-of-transport',\r\n templateUrl: 'app/candidate/portal/partials/mode-of-transport.html',\r\n controller: 'ModeOfTransportController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.uploadDeliveryDriverDocument, {\r\n url: '/upload-delivery-driver-document',\r\n templateUrl: 'app/candidate/portal/partials/upload-delivery-driver-document.html',\r\n controller: 'UploadDeliveryDriverDocumentController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.uploadDBSCertificate, {\r\n url: '/upload-dbs-certificate',\r\n templateUrl: 'app/candidate/portal/partials/upload-dbs-certificate.html',\r\n controller: 'UploadDBSCertificateController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.insuranceCode, {\r\n url: '/insurance-code',\r\n templateUrl: 'app/candidate/portal/partials/insurance-code.html',\r\n controller: 'InsuranceCodeController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.alreadyToGoAndEarnExtra, {\r\n url: '/already-to-go',\r\n templateUrl: 'app/candidate/portal/partials/already-to-go.html',\r\n controller: 'AlreadyToGoAndEarnExtraController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.employmentSupport, {\r\n url: '/employment-support',\r\n templateUrl: 'app/candidate/portal/partials/employment-support.html',\r\n controller: 'EmploymentSupportController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.employmentSupportNews, {\r\n url: '/employment-support-news',\r\n templateUrl: 'app/candidate/portal/partials/employment-support-news.html',\r\n controller: 'EmploymentSupportNewsController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.yunoQuiz, {\r\n url: '/yuno-quiz',\r\n templateUrl: 'app/candidate/portal/partials/yuno-quiz.html',\r\n controller: 'YunoQuizCandidateController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\n .state(CONFIG.routes.candidate.portal.helpUsToHelpYou, {\r\n url: '/help-us-to-help-you',\r\n templateUrl: 'app/candidate/portal/partials/help-us-to-help-you.html',\r\n controller: 'HelpUsToHelpYouCandidateController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.suitableForCare, {\r\n url: '/suitable-for-care',\r\n templateUrl: 'app/candidate/portal/partials/suitable-for-care.html',\r\n controller: 'SuitableForCareCandidateController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n })\r\n .state(CONFIG.routes.candidate.portal.becomeEligibleForCare, {\r\n url: '/become-eligible-for-care',\r\n templateUrl: 'app/candidate/portal/partials/become-eligible-for-care.html',\r\n controller: 'BecomeEligibleForCareCandidateController',\r\n controllerAs: 'vm',\r\n authorizedRoles: CONFIG.userRoles.candidate,\r\n activeTab: CONFIG.activeTab.candidate\r\n\t\t\t})\r\n\t\t\t.state(CONFIG.routes.candidate.portal.employmentRecord, {\r\n\t\t\t\turl: '/employment-record/:id',\r\n\t\t\t\ttemplateUrl: 'app/candidate/portal/partials/employment-record.html',\r\n\t\t\t\tcontroller: 'EmploymentRecordDocumentController',\r\n\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\tauthorizedRoles: CONFIG.userRoles.candidate,\r\n\t\t\t\tactiveTab: CONFIG.activeTab.candidate\r\n\t\t\t})\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.candidate')\r\n .controller('CandidatePortalController', CandidatePortalController);\r\n\r\n /** @ngInject */\r\n function CandidatePortalController($state, $localStorage, $uibModal, CandidatePortalService) {\r\n\r\n var vm = this;\r\n vm.user = angular.copy($localStorage.userProfile);\r\n vm.openPhotoToolTipModal = openPhotoToolTipModal;\r\n vm.openVideoToolTipModal = openVideoToolTipModal;\r\n vm.noDocumentation = noDocumentation;\r\n vm.state = $state;\r\n\r\n function openPhotoToolTipModal() {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/partials/addphoto-tooltip-modal.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n\r\n },\r\n size :'md'\r\n });\r\n }\r\n\r\n function openVideoToolTipModal() {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/candidate/portal/partials/addvideo-tooltip-modal.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n\r\n },\r\n size :'md'\r\n });\r\n }\r\n\r\n function noDocumentation() {\r\n $state.go(CONFIG.routes.candidate.portal.noDocument);\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.tempstaff, {\r\n url: '/tempstaff',\r\n templateUrl: 'app/tempstaff/tempstaff.html',\r\n controller: 'TempStaffController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.tempstaff\r\n });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('TempStaffController', TempStaffController);\r\n\r\n /** @ngInject */\r\n function TempStaffController($state,CONFIG, CommonService, $rootScope) {\r\n\r\n var vm = this;\r\n vm.goLookForWork = goLookForWork;\r\n vm.goLookForStaff = goLookForStaff;\r\n vm.sendContact = sendContact;\r\n function goLookForWork(){\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n }\r\n function goLookForStaff(){\r\n $state.go(CONFIG.routes.client.signup.home);\r\n }\r\n if($state.params.type === 'contact'){\r\n var newHash = 'contactUs';\r\n console.log($(\"#\"+newHash).offset().top)\r\n $('html,body').animate({scrollTop: $(\"#\"+newHash).offset().top},2000);\r\n return false;\r\n }\r\n function sendContact(){\r\n $rootScope.loading = true;\r\n CommonService.sendContact(vm.contact).then(function(){\r\n $rootScope.loading = false;\r\n vm.contact={};\r\n $('html,body').animate({scrollTop: 0},'slow');\r\n return false;\r\n },function(){\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.resetPassword.sendEmail, {\r\n url: '/sendEmail',\r\n templateUrl: 'app/resetPassword/sendEmail.html',\r\n controller: 'ResetPasswordController',\r\n controllerAs: 'vm'\r\n })\r\n .state(CONFIG.routes.resetPassword.resetPassword, {\r\n url: '/resetPassword/?id&code',\r\n templateUrl: 'app/resetPassword/resetPassword.html',\r\n controller: 'ResetPasswordController',\r\n controllerAs: 'vm'\r\n })\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('ResetPasswordController', ResetPasswordController);\r\n\r\n /** @ngInject */\r\n function ResetPasswordController($state, $stateParams, $rootScope, CommonService, $localStorage, CONFIG) {\r\n\r\n var vm = this;\r\n vm.resetSendEmail = {};\r\n vm.resetConfirmEmail = {};\r\n vm.sendEmail = sendEmail;\r\n vm.resetPassword = resetPassword;\r\n vm.sendEmailResponse = false;\r\n vm.confirmEmailResponse = false;\r\n function sendEmail() {\r\n $rootScope.loading = true;\r\n CommonService.resetPassword(vm.user).then(function (data) {\r\n vm.sendEmailResponse = 'Reset password email is sent. Please check your email address!'\r\n $rootScope.loading = false;\r\n }, function (err) {\r\n $rootScope.loading = false;\r\n vm.sendEmailResponse = err.data.exceptionMessage;\r\n console.log(err);\r\n })\r\n }\r\n\r\n function resetPassword() {\r\n vm.user.code = $stateParams.code;\r\n $rootScope.loading = true;\r\n CommonService.resetPasswordWithToken($stateParams.id, vm.user).then(function (data) {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.login)\r\n }, function (err) {\r\n $rootScope.loading = false;\r\n vm.confirmEmailResponse = err.exceptionMessage;\r\n console.log(err);\r\n })\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\n\n $stateProvider\r\n .state(CONFIG.routes.login, {\r\n url: '/login',\r\n templateUrl: 'app/login/login.html',\r\n controller: 'LoginController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.login\r\n })\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('LoginController', LoginController);\r\n\r\n /** @ngInject */\r\n function LoginController($state, $rootScope, Auth, $localStorage, CONFIG, CandidatePortalService, ClientPortalService) {\r\n\r\n var vm = this;\r\n vm.loginUser = loginUser;\r\n vm.resetPassword = resetPassword;\r\n vm.login = [];\r\n $rootScope.isHasLogin = false;\r\n $rootScope.isCandidate = false;\r\n $rootScope.isClient = false;\r\n $rootScope.isAdmin = false;\r\n $rootScope.loading = false;\r\n vm.removeErrorText = removeErrorText;\r\n Auth.isAuthenticatedAsync(function (loggedIn) {\r\n if (loggedIn && $localStorage.userProfile && $localStorage.userProfile.isEmailConfirmed) {\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.admin) $state.go(CONFIG.routes.admin.main);\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.candidate) $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.client) $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }\r\n });\r\n function removeErrorText() {\r\n vm.error = null;\r\n }\r\n function loginUser() {\r\n if (vm.login.$valid) {\r\n localStorage.clear();\r\n $rootScope.loading = true;\r\n Auth.login(vm.user).then(function () {\r\n $rootScope.isHasLogin = true;\r\n $rootScope.$broadcast('user:loggedIn');\r\n if (Auth.isAuthorized(CONFIG.userRoles.candidate)) {\r\n candidateLogin();\r\n } else if (Auth.isAuthorized(CONFIG.userRoles.client)) {\r\n clientLogin();\r\n } else if (Auth.isAuthorized(CONFIG.userRoles.admin)) {\r\n adminLogin();\r\n }\r\n }, function (error) {\r\n $rootScope.loading = false;\r\n vm.error = error.exceptionMessage;\r\n })\r\n } else {\r\n $rootScope.loading = false;\r\n }\r\n }\r\n function candidateLogin() {\r\n $rootScope.isCandidate = true;\r\n if ($localStorage.userProfile.isEmailConfirmed) {\r\n if ($localStorage.userProfile.isAcceptedGDPR == true) {\r\n $rootScope.showNewPolicySticky = false;\r\n } else {\r\n $rootScope.showNewPolicySticky = true;\r\n }\r\n CandidatePortalService.getNotifications().then(function (res) {\r\n $rootScope.loading = false;\r\n $rootScope.clientNote = null;\r\n $rootScope.candidateNote = res.data.result.items;\r\n $state.go(CONFIG.routes.candidate.portal.welcomeBack);\r\n }, function () {\r\n $rootScope.loading = false;\r\n });\r\n } else {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n }\r\n }\r\n function clientLogin() {\r\n $rootScope.isClient = true;\r\n if ($localStorage.userProfile.isEmailConfirmed) {\r\n if ($localStorage.userProfile.isAcceptedGDPR == true) {\r\n $rootScope.showNewPolicySticky = false;\r\n } else {\r\n $rootScope.showNewPolicySticky = true;\r\n }\r\n ClientPortalService.getNotifications().then(function (res) {\r\n $rootScope.loading = false;\r\n $rootScope.candidateNote = null;\r\n $rootScope.clientNote = res.data.result.items;\r\n $state.go(CONFIG.routes.client.portal.welcomeBack);\r\n }, function () {\r\n $rootScope.loading = false;\r\n });\r\n } else {\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.client.signup.home);\r\n }\r\n }\r\n function adminLogin() {\r\n $rootScope.isAdmin = true;\r\n $rootScope.showNewPolicySticky = false;\r\n $rootScope.loading = false;\r\n $state.go(CONFIG.routes.admin.main);\r\n }\r\n\r\n function resetPassword() {\r\n $state.go(CONFIG.routes.resetPassword.sendEmail);\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.jobs.root, {\r\n abstract: true,\r\n url: '/jobs',\r\n template: ''\r\n })\r\n .state(CONFIG.routes.jobs.main, {\r\n url: '',\r\n templateUrl: 'app/jobs/partials/jobs.html',\r\n controller: 'JobsController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.jobs\r\n })\r\n .state(CONFIG.routes.jobs.job, {\r\n url: '/:url',\r\n templateUrl: 'app/jobs/partials/job.html',\r\n controller: 'JobController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.jobs\r\n });\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .factory('JobService', JobService);\r\n\r\n /** @ngInject */\r\n\r\n function JobService($http, CONFIG) {\r\n return {\r\n createJobByAdmin: createJobByAdmin,\r\n deleteJobByAdmin: deleteJobByAdmin,\r\n getPublishedJobs: getPublishedJobs,\r\n getJobsByAdmin: getJobsByAdmin,\r\n getJobById: getJobById,\r\n getJobByUrl: getJobByUrl,\r\n updateJobByAdmin: updateJobByAdmin\r\n };\r\n\r\n\r\n function createJobByAdmin(job) {\r\n var url = CONFIG.rest.baseURI + CONFIG.rest.job.createJobByAdmin;\r\n return $http.post(url, job);\r\n }\r\n\r\n function deleteJobByAdmin(id) {\r\n var url = CONFIG.rest.baseURI + CONFIG.rest.job.deleteJobByAdmin + '?id=' + id;\r\n return $http.post(url, {});\r\n }\r\n\r\n function getPublishedJobs() {\r\n var url = CONFIG.rest.baseURI + CONFIG.rest.job.getPublishedJobs;\r\n return $http.post(url, {});\r\n }\r\n\r\n function getJobsByAdmin() {\r\n var url = CONFIG.rest.baseURI + CONFIG.rest.job.getJobsByAdmin;\r\n return $http.post(url, {});\r\n }\r\n\r\n function getJobById(id) {\r\n var url = CONFIG.rest.baseURI + CONFIG.rest.job.getJobById + '?id=' + id;\r\n return $http.post(url, {});\r\n }\r\n\r\n function getJobByUrl(url) {\r\n var url = CONFIG.rest.baseURI + CONFIG.rest.job.getJobByUrl + '?url=' + url;\r\n return $http.post(url, {});\r\n }\r\n\r\n function updateJobByAdmin(job) {\r\n var url = CONFIG.rest.baseURI + CONFIG.rest.job.updateJobByAdmin;\r\n return $http.post(url, job);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n //$stateProvider\r\n // .state(CONFIG.routes.home, {\r\n // url: '/?type',\r\n // templateUrl: 'app/home/home.html',\r\n // controller: 'HomeController',\r\n // controllerAs: 'vm',\r\n // activeTab: CONFIG.activeTab.home\r\n // });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('HomeController', HomeController);\r\n\r\n /** @ngInject */\r\n function HomeController($state,CONFIG, CommonService, $rootScope) {\r\n\r\n var vm = this;\r\n vm.goLookForWork = goLookForWork;\r\n vm.goLookForStaff = goLookForStaff;\r\n vm.sendContact = sendContact;\r\n function goLookForWork(){\r\n $state.go(CONFIG.routes.candidate.signup.step1);\r\n }\r\n function goLookForStaff(){\r\n $state.go(CONFIG.routes.client.signup.home);\r\n }\r\n if($state.params.type === 'contact'){\r\n var newHash = 'contactUs';\r\n console.log($(\"#\"+newHash).offset().top)\r\n $('html,body').animate({scrollTop: $(\"#\"+newHash).offset().top},2000);\r\n return false;\r\n }\r\n function sendContact(){\r\n $rootScope.loading = true;\r\n CommonService.sendContact(vm.contact).then(function(){\r\n $rootScope.loading = false;\r\n vm.contact={};\r\n $('html,body').animate({scrollTop: 0},'slow');\r\n return false;\r\n },function(){\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider,CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.costEffectiveTempStaff, {\r\n url: '/cost-effective_temp_staff',\r\n templateUrl: 'app/costEffectiveTempStaff/costEffectiveTempStaff.html',\r\n controller: 'CostEffectiveTempStaffController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.costEffectiveTempStaff\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('CostEffectiveTempStaffController', CostEffectiveTempStaffController);\r\n\r\n /** @ngInject */\r\n function CostEffectiveTempStaffController($state,CONFIG, CommonService, $rootScope) {\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .factory('usersFactory', usersFactory);\r\n\r\n /** @ngInject */\r\n\r\n function usersFactory(CONFIG, $rootScope, $http, $q, $localStorage) {\r\n return {\r\n\t\t\ttoken: 'd0ff589d-adbf-4622-b8d5-6dc911439dc8', //($localStorage.token) ? $localStorage.token : null,\r\n login: login,\r\n getAuth: getAuth,\r\n signOut: signOut,\r\n };\r\n\r\n function login(username, password) {\r\n var self = this;\r\n var deferred = $q.defer();\r\n\r\n $http.post(LabourXchange.Api.v2 + 'Users/Authenticate', '', { headers: { 'Authorization': 'Basic ' + btoa(username + ':' + password) } })\r\n .then(\r\n function (response) {\r\n self.token = response.headers('Token');\r\n\r\n\t\t\t\t\t\t$localStorage.token = self.token;\n\n\t\t\t\t\t\t$rootScope.$broadcast(\"user:logged-in\");\r\n\r\n deferred.resolve(response.data);\r\n\r\n //$http.get(__WEB_SERVICE_BASE_URL + '/Users/Current', { headers: { 'Token': self.token } })\r\n // .then(\r\n // function (response) {\r\n // self.user = response.data;\r\n\r\n // switch (self.user.Role) {\r\n // case Landseer.Enums.Roles.SystemAdmin:\r\n // self.user.isSystemAdmin = true;\r\n // break;\r\n // case Landseer.Enums.Roles.User:\r\n // self.user.isUser = true;\r\n // break;\r\n // }\r\n\r\n // localStorageService.set('user', self.user);\r\n\r\n // deferred.resolve(self.user);\r\n // },\r\n // function (error) {\r\n // console.log(error);\r\n\r\n // deferred.reject(error);\r\n // }\r\n // );\r\n },\r\n function (error) {\r\n console.log(error);\r\n\r\n deferred.reject(error);\r\n }\r\n );\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getAuth() {\r\n var u = $localStorageuser;\r\n\r\n return btoa(this.user.Username + ':' + this.user.Password);\r\n }\r\n\r\n function signOut() {\r\n var self = this;\r\n\r\n return $http.post(LabourXchange.Api.v2 + 'Users/SignOut', '', { headers: { 'Token': self.token } })\r\n .then(\r\n function (response) {\r\n self.user = null;\r\n delete $localStorage.user;\r\n delete $localStorage.token;\r\n }\r\n );\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .factory('employmentRecordsFactory', employmentRecordsFactory);\r\n\r\n /** @ngInject */\r\n\r\n function employmentRecordsFactory(CONFIG, $http, $q, $cacheFactory, usersFactory, $localStorage) {\r\n return {\r\n\t\t\tgetEmploymentRecord: getEmploymentRecord,\r\n saveEmploymentRecord: saveEmploymentRecord\r\n };\r\n\n\t\tfunction getEmploymentRecord(identifier) {\n\t\t\treturn $http.get(LabourXchange.Api.v2 + 'EmploymentRecords/' + identifier, { headers: { 'Token': usersFactory.token } })\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\treturn response.data.Result;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\n\r\n function saveEmploymentRecord(employmentRecord) {\r\n var self = this;\r\n var uri = LabourXchange.Api.v2 + 'EmploymentRecords';\r\n\r\n if (!employmentRecord.Identifier) {\r\n return $http.post(uri, employmentRecord)//, { headers: { 'Token': usersFactory.token } })\r\n .then(\r\n function (response) {\r\n return response.data.Result;\r\n }\r\n );\r\n }\r\n else {\r\n return $http.put(uri + '/' + employmentRecord.Identifier, employmentRecord)//, { headers: { 'Token': usersFactory.token } })\r\n .then(\r\n function (response) {\r\n return employmentRecord;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n\t\t.factory('documentsFactory', documentsFactory);\r\n\r\n /** @ngInject */\r\n\r\n\tfunction documentsFactory(CONFIG, $http, $q, $cacheFactory) {\r\n return {\r\n uploadDocument: uploadDocument\r\n };\r\n\r\n\t\tfunction uploadDocument(file) {\r\n\t\t\treturn $http.post(LabourXchange.Api.v2 + 'Documents', file, { headers: { 'Content-Type': undefined, 'Filename': file.name }, transformRequest: angular.identity })\r\n .then(\r\n function (response) {\r\n return response.data.Result;\r\n }\r\n );\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('lx')\r\n\t\t.factory('careCandidatesFactory', careCandidatesFactory);\r\n\r\n\t/** @ngInject */\r\n\r\n\tfunction careCandidatesFactory(CONFIG, $http, $q, $cacheFactory, usersFactory, $localStorage) {\r\n\t\treturn {\r\n\t\t\tgetCurrent: getCurrent,\r\n\t\t\tsearchCareCandidates: searchCareCandidates,\r\n\t\t\tsaveCareCandidate: saveCareCandidate\r\n\t\t};\r\n\r\n\t\tfunction getCurrent(id) {\r\n\t\t\treturn $http.get(LabourXchange.Api.v2 + 'CareCandidates/Current/' + id)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\t$localStorage.careEmployer = response.data.Result;\r\n\r\n\t\t\t\t\t\treturn response.data.Result;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction searchCareCandidates(searchFilters) {\r\n\t\t\treturn $http.post(LabourXchange.Api.v2 + 'CareCandidates/Search', searchFilters)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\treturn response.data.Result;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\tfunction saveCareCandidate(careCandidate) {\r\n\t\t\tvar self = this;\r\n\t\t\tvar uri = LabourXchange.Api.v2 + 'CareCandidates';\r\n\t\t\tvar c = angular.copy(careCandidate);\r\n\r\n\t\t\tif (c.EmploymentRecords) delete c.EmploymentRecords;\r\n\r\n\t\t\tif (!c.Identifier) {\r\n\t\t\t\treturn $http.post(uri, c)//, { headers: { 'Token': usersFactory.token } })\r\n\t\t\t\t\t.then(\r\n\t\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\t\treturn response.data.Result;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn $http.put(uri + '/' + c.Identifier, c)//, { headers: { 'Token': usersFactory.token } })\r\n\t\t\t\t\t.then(\r\n\t\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\t\treturn careCandidate;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider,CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.corporate.main, {\r\n abstract: true,\r\n url: '/corporate',\r\n template: ''\r\n })\r\n .state(CONFIG.routes.corporate.facilitiesManagement, {\r\n url: '/facilities-management',\r\n templateUrl: 'app/corporate/facilities-management/facilities-management.html',\r\n controller:'CorporateController',\r\n controllerAs : 'vm',\r\n activeTab: CONFIG.activeTab.facilitiesManagement\r\n })\r\n .state(CONFIG.routes.corporate.hospitality, {\r\n url: '/hospitality',\r\n templateUrl: 'app/corporate/hospitality/hospitality.html',\r\n controller: 'CorporateController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.hospitality\r\n })\r\n .state(CONFIG.routes.corporate.finalMileDelivery, {\r\n url: '/final-mile-delivery',\r\n templateUrl: 'app/corporate/final-mile-delivery/final-mile-delivery.html',\r\n controller: 'CorporateController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.finalMileDelivery\r\n })\r\n .state(CONFIG.routes.corporate.warehouse, {\r\n url: '/warehouse',\r\n templateUrl: 'app/corporate/warehouse/warehouse.html',\r\n controller: 'CorporateController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.warehouse\r\n })\r\n .state(CONFIG.routes.corporate.manufacturing, {\r\n url: '/manufacturing',\r\n templateUrl: 'app/corporate/manufacturing/manufacturing.html',\r\n controller: 'CorporateController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.manufacturing\r\n })\r\n .state(CONFIG.routes.corporate.care, {\r\n url: '/care',\r\n templateUrl: 'app/corporate/care/care.html',\r\n controller: 'CorporateController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.care\r\n })\r\n .state(CONFIG.routes.corporate.cantBePigeonholed, {\r\n url: '/cant-be-pigeonholed',\r\n templateUrl: 'app/corporate/cant-be-pigeonholed/cant-be-pigeonholed.html',\r\n controller: 'CorporateController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.cantBePigeonholed\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.corporate', []);\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.corporate')\r\n .controller('CorporateController', CorporateController);\r\n\r\n /** @ngInject */\r\n function CorporateController($state, CONFIG, $uibModal) {\r\n var vm = this;\r\n vm.clickDisplayTitleNews = clickDisplayTitleNews;\r\n vm.clickGoForBusinessPage = clickGoForBusinessPage;\r\n vm.clickGoForIndividualsPage = clickGoForIndividualsPage;\r\n vm.openStarRatingContent = openStarRatingContent;\r\n vm.news = [{\r\n title: 'Uber driver win employment rights',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n date: new Date()\r\n }, {\r\n title: 'Deliveroo drivers jump',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n date: new Date()\r\n }, {\r\n title: 'Wages down for most people',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n date: new Date()\r\n }];\r\n\r\n vm.business = [{\r\n title: 'Part 1 - Criterea',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n thumbnail: '/assets/images/logo.png'\r\n }, {\r\n title: 'Part 2 - Selection',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n thumbnail: '/assets/images/logo.png'\r\n }, {\r\n title: 'Part 3 – Blah blah',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n thumbnail: '/assets/images/logo.png'\r\n }];\r\n vm.displayTitleNews = vm.news[0].title;\r\n\r\n function clickDisplayTitleNews(title) {\r\n vm.displayTitleNews = title;\r\n }\r\n\r\n function clickGoForIndividualsPage() {\r\n $state.go(CONFIG.routes.common.recruitment, {name: 'individualsGuide'})\r\n }\r\n\r\n function clickGoForBusinessPage() {\r\n $state.go(CONFIG.routes.common.recruitment, {name: 'businessGuide'})\r\n }\r\n\r\n function openStarRatingContent() {\r\n $uibModal.open({\r\n templateUrl: 'app/common/modal/ratingStar.html',\r\n controller: function ($uibModalInstance) {\r\n var vm = this;\r\n vm.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n },\r\n controllerAs: 'vm',\r\n size: 'md'\r\n });\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider,CONFIG) {\r\n\r\n $stateProvider\r\n .state('sitemap.xml', {url: '/sitemap.xml'})\r\n .state('robots.txt', {url: '/robots.txt'})\r\n .state(CONFIG.routes.common.main, {\r\n abstract: true,\r\n url: '/common',\r\n template: ''\r\n })\r\n .state(CONFIG.routes.common.termsConditions, {\r\n url: '/termsConditions',\r\n templateUrl: 'app/common/termsConditions/termsConditions.html',\r\n controller :'CommonController',\r\n controllerAs : 'vm',\r\n activeTab: CONFIG.activeTab.termsConditions\r\n })\r\n .state(CONFIG.routes.common.privacyPolicy, {\r\n url: '/privacyPolicy',\r\n templateUrl: 'app/common/privacyPolicy/privacyPolicy.html',\r\n activeTab: CONFIG.activeTab.privacyPolicy\r\n })\r\n .state(CONFIG.routes.common.faq, {\r\n url: '/faq',\r\n templateUrl: 'app/common/faq/faq.html',\r\n activeTab: CONFIG.activeTab.faq\r\n })\r\n .state(CONFIG.routes.common.aboutUs, {\r\n url: '/aboutUs',\r\n templateUrl: 'app/common/aboutUs/aboutUs.html',\r\n activeTab: CONFIG.activeTab.aboutUs\r\n })\r\n .state(CONFIG.routes.common.livingWage, {\r\n url: '/livingWage',\r\n templateUrl: 'app/common/livingWage/livingWage.html',\r\n activeTab: CONFIG.activeTab.livingWage\r\n })\r\n .state(CONFIG.routes.common.howItWorks, {\r\n url: '/howItWorks/:name',\r\n templateUrl: 'app/common/howItWorks/howItWorks.html' ,\r\n controller :'HowItWorksController',\r\n controllerAs : 'vm',\r\n activeTab: CONFIG.activeTab.howItWorks\r\n })\r\n .state(CONFIG.routes.common.news, {\r\n url: '/news',\r\n templateUrl: 'app/common/news/news.html',\r\n controller :'NewsController',\r\n controllerAs : 'vm',\r\n activeTab: CONFIG.activeTab.news\r\n })\r\n .state(CONFIG.routes.common.recruitment, {\r\n url: '/recruitment/:name',\r\n templateUrl: function (state) {\r\n if(!state.name){\r\n return 'app/common/recruitmentGuide/recruitment.html'\r\n }else{\r\n return 'app/common/recruitmentGuide/' + state.name + '.html'\r\n }\r\n } ,\r\n controller :'RecruitmentController',\r\n controllerAs : 'vm',\r\n activeTab: CONFIG.activeTab.recruitment\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.common')\r\n .controller('CommonController', CommonController);\r\n\r\n /** @ngInject */\r\n function CommonController($state, CONFIG, $uibModal) {\r\n var vm = this;\r\n vm.clickDisplayTitleNews = clickDisplayTitleNews;\r\n vm.clickGoForBusinessPage = clickGoForBusinessPage;\r\n vm.clickGoForIndividualsPage = clickGoForIndividualsPage;\r\n vm.openStarRatingContent = openStarRatingContent;\r\n vm.news = [{\r\n title: 'Uber driver win employment rights',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n date: new Date()\r\n }, {\r\n title: 'Deliveroo drivers jump',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n date: new Date()\r\n }, {\r\n title: 'Wages down for most people',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n date: new Date()\r\n }];\r\n\r\n vm.business = [{\r\n title: 'Part 1 - Criterea',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n thumbnail: '/assets/images/logo.png'\r\n }, {\r\n title: 'Part 2 - Selection',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n thumbnail: '/assets/images/logo.png'\r\n }, {\r\n title: 'Part 3 – Blah blah',\r\n content: 'Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.',\r\n thumbnail: '/assets/images/logo.png'\r\n }];\r\n vm.displayTitleNews = vm.news[0].title;\r\n\r\n function clickDisplayTitleNews(title) {\r\n vm.displayTitleNews = title;\r\n }\r\n\r\n function clickGoForIndividualsPage() {\r\n $state.go(CONFIG.routes.common.recruitment, {name: 'individualsGuide'})\r\n }\r\n\r\n function clickGoForBusinessPage() {\r\n $state.go(CONFIG.routes.common.recruitment, {name: 'businessGuide'})\r\n }\r\n\r\n function openStarRatingContent() {\r\n $uibModal.open({\r\n templateUrl: 'app/common/modal/ratingStar.html',\r\n controller: function ($uibModalInstance) {\r\n var vm = this;\r\n vm.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n },\r\n controllerAs: 'vm',\r\n size: 'md'\r\n });\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider,CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.client.root, {\r\n abstract: true,\r\n url: '/client',\r\n template: ''\r\n });\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx.admin')\r\n .factory('AdminService', AdminService);\r\n\r\n function AdminService($http, CONFIG, $rootScope, $uibModal) {\r\n return {\r\n checkIsExistedVoucher: checkIsExistedVoucher,\r\n checkLandingPageUrlExists: checkLandingPageUrlExists,\r\n createVoucherByAdmin: createVoucherByAdmin,\r\n createSettingSenderSchedule: createSettingSenderSchedule,\r\n createOrUpdateLandingPage: createOrUpdateLandingPage,\r\n createLandingPage: createLandingPage,\r\n deleteLandingPage: deleteLandingPage,\r\n deleteUser: deleteUser,\r\n deleteSender: deleteSender,\r\n exportBookingsByAdmin: exportBookingsByAdmin,\r\n exportCandidatesByAdmin: exportCandidatesByAdmin,\r\n exportClientsByAdmin: exportClientsByAdmin,\r\n editLandingPage: editLandingPage,\r\n getUsersByAdmin: getUsersByAdmin,\r\n getAllUsersByAdmin: getAllUsersByAdmin,\r\n getAllUsersWantToStopReceivingEmail: getAllUsersWantToStopReceivingEmail,\r\n getCandidatesByAdmin: getCandidatesByAdmin,\r\n getClientsByAdmin: getClientsByAdmin,\r\n getSendFirstVariables: getSendFirstVariables,\r\n getSendToVariables: getSendToVariables,\r\n getSendFromVariables: getSendFromVariables,\r\n getSendFrequencyVariables: getSendFrequencyVariables,\r\n getEmailSenders: getEmailSenders,\r\n getSMSSenders: getSMSSenders,\r\n getZegoUserStatus: getZegoUserStatus,\r\n getBookingsByAdmin: getBookingsByAdmin,\r\n getVouchersByAdmin: getVouchersByAdmin,\r\n getPageTypes: getPageTypes,\r\n getLandingPageDefaultUrl: getLandingPageDefaultUrl,\r\n getLandingPageById: getLandingPageById,\r\n getListPagesByAdmin: getListPagesByAdmin,\r\n receivingEmail: receivingEmail,\r\n loginZego: loginZego,\r\n logoutZego: logoutZego,\r\n removeUserPhotoAndVideo: removeUserPhotoAndVideo,\r\n removeUserDocument: removeUserDocument,\r\n removeUserPassport: removeUserPassport,\r\n removeLandingPageImage: removeLandingPageImage,\r\n sendCandidateConfirmEmail: sendCandidateConfirmEmail,\r\n sendCandidateConfirmEmailViaPhoneNumber: sendCandidateConfirmEmailViaPhoneNumber,\r\n showPhotoOrVideoModal: showPhotoOrVideoModal,\r\n showPassportModal: showPassportModal,\r\n showDeleteUserModal: showDeleteUserModal,\r\n showDeleteJobModal: showDeleteJobModal,\r\n showDeleteSenderModal: showDeleteSenderModal,\r\n showDocumentModal: showDocumentModal,\r\n showEditVoucherModal: showEditVoucherModal,\r\n showEditSenderModal: showEditSenderModal,\r\n showTestSenderModal: showTestSenderModal,\r\n showInsuranceModal: showInsuranceModal,\r\n showEditLandingPageModal: showEditLandingPageModal,\r\n testSenderSchedule: testSenderSchedule,\r\n updateCandidateUserStatus: updateCandidateUserStatus,\r\n updateUserPhoto: updateUserPhoto,\r\n updateUserVideo: updateUserVideo,\r\n updateUserDocument: updateUserDocument,\r\n updateUserPassport: updateUserPassport,\r\n updateSettingSenderSchedule: updateSettingSenderSchedule,\r\n updateVoucherByAdmin: updateVoucherByAdmin,\r\n updateCandidateVerifiedByAdmin: updateCandidateVerifiedByAdmin,\r\n checkJobUrlExists: checkJobUrlExists,\r\n getJobDefaultUrl: getJobDefaultUrl\r\n\r\n };\r\n\r\n function checkIsExistedVoucher(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.checkIsExistedVoucher + \"?code=\" + data,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function checkLandingPageUrlExists(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.checkLandingPageUrlExists,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function checkJobUrlExists(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.checkJobUrlExists,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function createSettingSenderSchedule(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.createSettingSenderSchedule,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function createVoucherByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.createVoucherByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function createOrUpdateLandingPage(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.createOrUpdateLandingPage,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function createLandingPage(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.createLandingPage,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function editLandingPage(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.editLandingPage,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function deleteLandingPage(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.deleteLandingPage + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function deleteUser(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.delUser + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function deleteSender(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.delSender + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function exportBookingsByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.exportBookingsByAdmin,\r\n data: data,\r\n // transformRequest: angular.identity,\r\n // headers: {'Content-Type': undefined},\r\n responseType: 'arraybuffer',\r\n };\r\n return $http(req);\r\n }\r\n\r\n function exportCandidatesByAdmin() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.exportCandidatesByAdmin,\r\n transformRequest: angular.identity,\r\n headers: {'Content-Type': undefined},\r\n responseType: 'arraybuffer'\r\n };\r\n return $http(req);\r\n }\r\n\r\n function exportClientsByAdmin() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.exportClientsByAdmin,\r\n responseType: 'arraybuffer'\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getUsersByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getUsersByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getAllUsersByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getAllUsersByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getAllUsersWantToStopReceivingEmail(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getAllUsersWantToStopReceivingEmail,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n\r\n function getCandidatesByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getCandidatesByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getClientsByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getClientsByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getEmailSenders() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getEmailSenders,\r\n data: {}\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getSMSSenders() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getSMSSenders,\r\n data: {}\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getSendFirstVariables() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getSendFirstVariables,\r\n data: {}\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getSendToVariables() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getSendToVariables,\r\n data: {}\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getSendFromVariables() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getSendFromVariables,\r\n data: {}\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getSendFrequencyVariables() {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getSendFrequencyVariables,\r\n data: {}\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getBookingsByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getBookingsByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getPageTypes(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getPageTypes,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getLandingPageDefaultUrl(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getLandingPageDefaultUrl,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getJobDefaultUrl(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getJobDefaultUrl,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getVouchersByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getVouchersByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getZegoUserStatus(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getZegoUserStatus,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getLandingPageById(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getLandingPageById + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function getListPagesByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.getListPagesByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function receivingEmail(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.receivingEmail,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function loginZego(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.loginZego,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function logoutZego(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.logoutZego,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserPhotoAndVideo(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserPhotoAndVideo + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserDocument(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserDocument + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeUserPassport(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.removeUserPassport + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function removeLandingPageImage(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.removeLandingPageImage + \"?id=\" + id\r\n };\r\n return $http(req);\r\n }\r\n\r\n function sendCandidateConfirmEmail(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.sendCandidateConfirmEmail + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n\r\n function sendCandidateConfirmEmailViaPhoneNumber(id) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.sendCandidateConfirmEmailViaPhoneNumber + \"?id=\" + id,\r\n };\r\n return $http(req);\r\n }\r\n\r\n function showPhotoOrVideoModal(user) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/viewPhotoOrVideo.html',\r\n controller: 'ShowPhotoOrVideoController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n user: user\r\n },\r\n size: 'lg'\r\n });\r\n return modalInstance.result;\r\n }\r\n\r\n function showPassportModal(user) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/viewPassport.html',\r\n controller: 'ShowPassportController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n user: user\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showDocumentModal(user) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/viewDocument.html',\r\n controller: 'ShowDocumentController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n user: user\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showEditVoucherModal(voucher) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/editVoucher.html',\r\n controller: 'EditVoucherController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n voucher: voucher\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showEditSenderModal(sender) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/editSender.html',\r\n controller: 'EditSenderController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n sender: sender\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showDeleteUserModal(user) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/deleteUserModal.html',\r\n controller: 'DeleteUserModal',\r\n controllerAs: 'vm',\r\n resolve: {\r\n user: user\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showDeleteJobModal(job) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/deleteJobModal.html',\r\n controller: 'DeleteJobModalController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n job: job\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showDeleteSenderModal(sender) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/deleteSenderModal.html',\r\n controller: 'DeleteSenderModal',\r\n controllerAs: 'vm',\r\n resolve: {\r\n sender: sender\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showTestSenderModal(sender) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/testSender.html',\r\n controller: 'TestSenderController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n sender: sender\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showInsuranceModal(user) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/viewInsuranceCode.html',\r\n controller: 'ShowInsuranceCodeController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n user: user\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function showEditLandingPageModal(landingPage) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'app/admin/modal/editLandingPage.html',\r\n controller: 'ShowEditLandingPageController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n landingPage: landingPage\r\n },\r\n size: 'md'\r\n });\r\n\r\n return modalInstance.result;\r\n }\r\n\r\n function testSenderSchedule(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.testSenderSchedule,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n\r\n function updateCandidateUserStatus(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.updateCandidateUserStatus,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateCandidateVerifiedByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.updateCandidateVerifiedByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserPhoto(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserPhoto,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserVideo(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserVideo,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserDocument(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserDocument,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateUserPassport(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.candidate.signup.updateUserPassport,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateVoucherByAdmin(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.updateVoucherByAdmin,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n\r\n function updateSettingSenderSchedule(data) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.admin.updateSettingSenderSchedule,\r\n data: data\r\n };\r\n return $http(req);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.admin.root, {\r\n abstract: true,\r\n url: '/admin',\r\n template: '',\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.main, {\r\n url: '',\r\n templateUrl: 'app/admin/partials/admin.html',\r\n controller: 'AdminController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.export, {\r\n url: '/export',\r\n templateUrl: 'app/admin/partials/export-excel.html',\r\n controller: 'ExportController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.registerVoucher, {\r\n url: '/register-voucher',\r\n templateUrl: 'app/admin/partials/register-voucher.html',\r\n controller: 'RegisterVoucherController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.emailSender, {\r\n url: '/email-sender',\r\n templateUrl: 'app/admin/partials/email-sender.html',\r\n controller: 'EmailSenderController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.smsSender, {\r\n url: '/sms-sender',\r\n templateUrl: 'app/admin/partials/sms-sender.html',\r\n controller: 'SMSSenderController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.manageBooking, {\r\n url: '/manage-booking',\r\n templateUrl: 'app/admin/partials/manage-booking.html',\r\n controller: 'ManageBookingController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.manageLandingPage, {\r\n url: '/landing-pages',\r\n templateUrl: 'app/admin/partials/landing-pages.html',\r\n controller: 'LandingPagesController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.deleteUser, {\r\n url: '/delete-user-page',\r\n templateUrl: 'app/admin/partials/delete-user-page.html',\r\n controller: 'DeleteUserPagesController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.stopReceivingEmail, {\r\n url: '/receiving-email-page',\r\n templateUrl: 'app/admin/partials/receiving-email-page.html',\r\n controller: 'ReceivingEmailPageController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.jobManagement, {\r\n url: '/jobs',\r\n templateUrl: 'app/admin/partials/job-management.html',\r\n controller: 'JobManagementController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.createJob, {\r\n url: '/jobs/create',\r\n templateUrl: 'app/admin/partials/create-job.html',\r\n controller: 'CreateJobController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.editJob, {\r\n url: '/jobs/:id',\r\n templateUrl: 'app/admin/partials/edit-job.html',\r\n controller: 'EditJobController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.createLandingPage, {\r\n url: '/landing-pages/create',\r\n templateUrl: 'app/admin/partials/create-landing-page.html',\r\n controller: 'CreateLandingPageController',\r\n controllerAs: 'vm',\r\n activeTab: CONFIG.activeTab.admin,\r\n authorizedRoles: CONFIG.userRoles.admin\r\n })\r\n .state(CONFIG.routes.admin.editLandingPage, {\r\n url: '/landing-pages/:id',\r\n templateUrl: 'app/admin/partials/edit-landing-page.html',\r\n controller: \"EditLandingPageController\",\r\n controllerAs: \"vm\",\r\n authorizedRoles: CONFIG.userRoles.admin,\r\n activeTab: CONFIG.activeTab.admin\r\n })\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider,CONFIG) {\r\n\r\n $stateProvider\r\n .state(CONFIG.routes.candidate.root, {\r\n abstract: true,\r\n url: '/candidate',\r\n template: ''\r\n });\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .factory('LandingPageService', LandingPageService);\r\n function LandingPageService($http, CONFIG) {\r\n return {\r\n getLandingPageByUrl: getLandingPageByUrl\r\n };\r\n\r\n function getLandingPageByUrl(url) {\r\n var req = {\r\n method: 'POST',\r\n url: CONFIG.rest.baseURI + CONFIG.rest.landingPage.getLandingPageByUrl + \"?url=\" + url\r\n };\r\n return $http(req);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, CONFIG) {\r\n\r\n //$stateProvider\r\n // .state(CONFIG.routes.landingPage, {\r\n // url: '/:url',\r\n // templateUrl: 'app/addLandingPage/landingPage.html',\r\n // controller: 'LandingPageController',\r\n // controllerAs: 'vm',\r\n // activeTab: CONFIG.activeTab.landingPage\r\n // });\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .controller('LandingPageController', LandingPageController);\r\n\r\n /** @ngInject */\r\n function LandingPageController($state, CONFIG, LandingPageService, $rootScope) {\r\n\r\n var vm = this;\r\n vm.link = CONFIG.rest.baseURILink;\r\n vm.landingPage = {};\r\n vm.errorMessage=null;\r\n active();\r\n\r\n function active() {\r\n $rootScope.loading = true;\r\n LandingPageService.getLandingPageByUrl($state.params.url).then(function (res) {\r\n $rootScope.loading = false;\r\n vm.landingPage = res.data.result;\r\n if(vm.landingPage && vm.landingPage.pageType){\r\n var typeName = vm.landingPage.pageType.name;\r\n if( typeName.includes(CONFIG.pageTypes.news)){\r\n $rootScope.activeTab = CONFIG.activeTab.news;\r\n }else{\r\n if( typeName.includes(CONFIG.pageTypes.recruitmentGuide)){\r\n $rootScope.activeTab = CONFIG.activeTab.recruitment;\r\n }\r\n }\r\n }\r\n }, function (error) {\r\n vm.errorMessage = error.data.exceptionMessage;\r\n $rootScope.loading = false;\r\n })\r\n }\r\n\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .constant('moment', moment)\r\n .run(runBlock);\r\n\r\n /** @ngInject */\r\n function runBlock($rootScope, ngToast, Auth, $state, $localStorage, CONFIG, $timeout) {\r\n Auth.isAuthenticatedAsync(function (loggedIn) {\r\n if (loggedIn) {\r\n Auth.getCurrentUser().$promise.then(function (data) {\r\n $localStorage.userProfile = data.result.user;\r\n $localStorage.searchFilter = data.result.user;\r\n Auth.getLocationFromUserAddress(data.result.user);\r\n checkUserLogin();\r\n });\r\n } else {\r\n delete $localStorage.token;\r\n delete $localStorage.expireInSeconds;\r\n delete $localStorage.userProfile;\r\n delete $localStorage.searchFilter;\r\n localStorage.clear();\r\n checkUserLogin();\r\n }\r\n });\r\n function checkUserLogin() {\r\n if ($localStorage.userProfile && $localStorage.userProfile.isEmailConfirmed) {\r\n $rootScope.isHasLogin = true;\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.admin) return $rootScope.isAdmin = true;\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.candidate) return $rootScope.isCandidate = true;\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.client) return $rootScope.isClient = true;\r\n } else {\r\n $rootScope.isHasLogin = false;\r\n $rootScope.isCandidate = false;\r\n $rootScope.isClient = false;\r\n $rootScope.isAdmin = false;\r\n }\r\n }\r\n\r\n checkUserLogin();\r\n $rootScope.$on(\"$stateChangeStart\", function (event, next, pre, from, to) {\r\n\r\n //validate authenticate & roles\r\n if (next.authorizedRoles) {\r\n Auth.isAuthenticatedAsync(function (loggedIn) {\r\n\r\n if (!loggedIn) {\r\n noLogin()\r\n } else {\r\n checkUserLoginWithoutConfirm();\r\n if (!Auth.isAuthorized(next.authorizedRoles)) {\r\n\r\n event.preventDefault();\r\n $state.go(CONFIG.routes.home);\r\n\r\n }\r\n hasLogin()\r\n }\r\n });\r\n }\r\n function hasLogin() {\r\n var isAcceptedGoToPortal = checkAcceptedGoToPortal(next);\r\n var isAcceptedGoToSignUp = checkAcceptedGoToSignUp(next, from);\r\n var isAcceptedGoToAdmin = checkAcceptedGoToAdmin(next);\r\n if (!isAcceptedGoToPortal &&\r\n !isAcceptedGoToSignUp &&\r\n !isAcceptedGoToAdmin) {\r\n event.preventDefault();\r\n Auth.logout();\r\n $rootScope.showNewPolicySticky = false;\r\n $state.go(CONFIG.routes.login);\r\n }\r\n }\r\n\r\n\r\n function noLogin() {\r\n if (next.name.indexOf(CONFIG.routes.client.portal.main) !== -1\r\n || next.name.indexOf(CONFIG.routes.candidate.portal.main) !== -1\r\n || next.name.indexOf(CONFIG.routes.admin.root) !== -1) {\r\n event.preventDefault();\r\n Auth.logout();\r\n $rootScope.showNewPolicySticky = false;\r\n $state.go(CONFIG.routes.login);\r\n }\r\n }\r\n\r\n var expireInSeconds = new Date(moment($localStorage.expireInSeconds));\r\n\r\n function checkExpireInSeconds() {\r\n if ($localStorage.userProfile && $localStorage.userProfile.isEmailConfirmed && new Date() - expireInSeconds >= 0) {\r\n Auth.logout();\r\n $rootScope.showNewPolicySticky = false;\r\n $state.go(CONFIG.routes.login);\r\n }\r\n }\r\n\r\n function checkUserLoginWithoutConfirm() {\r\n if ($localStorage.userProfile) {\r\n $rootScope.isHasLogin = true;\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.admin) return $rootScope.isAdmin = true;\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.candidate) return $rootScope.isCandidate = true;\r\n if ($localStorage.userProfile.roleName == CONFIG.userRoles.client) return $rootScope.isClient = true;\r\n } else {\r\n $rootScope.isHasLogin = false;\r\n $rootScope.isCandidate = false;\r\n $rootScope.isClient = false;\r\n $rootScope.isAdmin = false;\r\n }\r\n }\r\n\r\n checkExpireInSeconds();\r\n angular.element('body,html').animate({\r\n scrollTop: 0\r\n }, 200);\r\n function checkAcceptedGoToPortal(next) {\r\n if ($localStorage.userProfile &&\r\n (next.name.indexOf(CONFIG.routes.client.portal.main) !== -1 || next.name.indexOf(CONFIG.routes.candidate.portal.main) !== -1)\r\n && $localStorage.userProfile.isEmailConfirmed)\r\n return true;\r\n return false;\r\n\r\n }\r\n\r\n function checkAcceptedGoToAdmin(next) {\r\n if (next.authorizedRoles === CONFIG.userRoles.admin && next.name.indexOf(CONFIG.routes.admin.root) !== -1)\r\n return true;\r\n return false;\r\n\r\n }\r\n\r\n function checkAcceptedGoToSignUp(next, from) {\r\n if (\r\n (\r\n next.name.indexOf(CONFIG.routes.candidate.signup.main) !== -1 ||\r\n (\r\n (\r\n next.name.indexOf(CONFIG.routes.candidate.portal.profileInformation) !== -1 ||\r\n next.name.indexOf(CONFIG.routes.candidate.portal.uploadPhoto) !== -1 ||\r\n next.name.indexOf(CONFIG.routes.candidate.portal.availability !== -1)\r\n ) &&\r\n from.name.indexOf(CONFIG.routes.candidate.signup.main) !== -1\r\n ) ||\r\n next.name.indexOf(CONFIG.routes.client.signup.main) !== -1\r\n ) &&\r\n (\r\n (\r\n from.name.indexOf(CONFIG.routes.candidate.portal.main) == -1 ||\r\n (\r\n (\r\n from.name.indexOf(CONFIG.routes.candidate.portal.profileInformation) !== -1 ||\r\n from.name.indexOf(CONFIG.routes.candidate.portal.uploadPhoto) !== -1 ||\r\n from.name.indexOf(CONFIG.routes.candidate.portal.availability !== -1)\r\n ) && next.name.indexOf(CONFIG.routes.candidate.signup.main) !== -1\r\n )\r\n ) &&\r\n from.name.indexOf(CONFIG.routes.client.portal.main) == -1\r\n ) &&\r\n $localStorage.isSignup\r\n )\r\n return true;\r\n return false;\r\n\r\n }\r\n });\r\n $rootScope.$on(\"$stateChangeSuccess\", function () {\r\n $timeout(function () {\r\n wisepops(\"pageview\");\r\n });\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .constant('_', _)\r\n .constant('CONFIG', {\r\n rest: {\r\n baseURI: window.baseURI,\r\n baseURILink: window.baseURILink,\r\n action: {\r\n signin: \"account/Authenticate\",\r\n signinWithoutConfirm: \"account/AuthenticateWithoutConfirm\"\r\n },\r\n candidate: {\r\n signup: {\r\n create: \"userAccount/CreateCandidateUser\",\r\n update: \"services/app/user/UpdateCandidateUser\",\r\n updateCandidateUserProfile: \"services/app/user/UpdateCandidateUserProfile\",\r\n createUserBillingInfo: \"services/app/user/CreateUserBillingInfo\",\r\n getUserProfile: \"services/app/user/GetUserProfile\",\r\n updateUserPhoto: \"services/app/user/updateUserPhoto\",\r\n updateUserVideo: \"services/app/user/updateUserVideo\",\r\n updateUserDocument: \"services/app/user/updateUserDocument\",\r\n updateUserContact: \"userAccount/updateCandidateProfileContact\",\r\n updateUserPassport: \"services/app/user/updateUserPassport\",\r\n getNearClient: \"services/app/user/getNearClient\",\r\n updateCandidateUserFull: 'services/app/user/UpdateCandidateUserFull',\r\n updateCandidateUserContact: 'services/app/user/UpdateCandidateUserContact',\r\n getDayTimeMostSearchByClient: 'services/app/user/GetDayTimeMostSearchByClient',\r\n getValuesMostSearchByClient: 'services/app/user/GetValuesMostSearchByClient',\r\n sendCandidateConfirmEmail: \"userAccount/SendCandidateConfirmEmail\",\r\n sendCandidateConfirmEmailViaPhoneNumber: \"userAccount/sendCandidateConfirmEmailViaPhoneNumber\",\r\n supportForSelfEmployed: \"services/app/user/SupportForSelfEmployed\"\r\n },\r\n getCandidateCurrentRating: 'services/app/currentRatingStar/GetCandidateCurrentRating',\r\n updateDeliveryDriver: \"services/app/user/UpdateCandidateUserDeliveryDriverAsync\",\r\n receivingEmail: 'services/app/user/UpdateStatusRecevingEmailAsync',\r\n },\r\n client: {\r\n signup: {\r\n create: \"userAccount/CreateClientUser\",\r\n update: \"services/app/user/UpdateClientUser\",\r\n updateClientUserProfile: \"services/app/user/UpdateClientUserProfile\",\r\n findStaffs: \"services/app/user/FindStaffs\",\r\n updateClientUserFull: 'services/app/user/updateClientUserFull',\r\n updateClientUserContact: 'services/app/user/UpdateClientUserContact',\r\n sendClientConfirmEmail: \"userAccount/SendClientConfirmEmail\",\r\n sendClientConfirmEmailViaPhoneNumber: \"userAccount/sendClientConfirmEmailViaPhoneNumber\",\r\n getVoucher: \"services/app/voucher/getVoucher\"\r\n },\r\n receivingEmail: 'services/app/user/UpdateStatusRecevingEmailAsync',\r\n },\r\n admin: {\r\n checkIsExistedVoucher: 'services/app/voucher/CheckIsExistedVoucher',\r\n checkLandingPageUrlExists: 'services/app/landingPage/CheckUrlExists',\r\n createVoucherByAdmin: 'services/app/voucher/CreateVoucherByAdmin',\r\n createSettingSenderSchedule: 'services/app/sender/CreateSettingSenderSchedule',\r\n createOrUpdateLandingPage: 'services/app/landingPage/CreateOrUpdatePageByAdminAsync',\r\n deleteLandingPage: 'services/app/landingPage/DeleteLandingPageAsync',\r\n delUser: 'services/app/user/DeleteUserByAdminAsync',\r\n delSender: 'services/app/sender/DeleteSenderAsync',\r\n exportBookingsByAdmin: 'services/app/booking/ExportBookingsToExcelByAdmin',\r\n exportCandidatesByAdmin: 'services/app/user/ExportCandidatesToExcelByAdmin',\r\n exportClientsByAdmin: 'services/app/user/ExportClientsToExcelByAdmin',\r\n getUsersByAdmin: 'services/app/user/GetUsersByAdmin',\r\n getAllUsersByAdmin: 'services/app/user/GetAllCandidateAndClientUsersByAdmin',\r\n getAllUsersWantToStopReceivingEmail: 'services/app/user/GetAllUsersNeedToUpdateReceivingEmailStatusByAdmin',\r\n getCandidatesByAdmin: 'services/app/user/GetCandidatesByAdmin',\r\n getVouchersByAdmin: 'services/app/voucher/GetVouchersByAdmin',\r\n getClientsByAdmin: 'services/app/user/GetClientsByAdmin',\r\n getSendFirstVariables: 'services/app/sendFirstVariable/GetSendFirstVariables',\r\n getSendToVariables: 'services/app/sendToVariable/GetSendToVariables',\r\n getSendFromVariables: 'services/app/sendFromVariable/GetSendFromVariables',\r\n getEmailSenders: 'services/app/sender/GetEmailSenders',\r\n getSMSSenders: 'services/app/sender/GetSMSSenders',\r\n getBookingsByAdmin: 'services/app/booking/GetBookingsByAdmin',\r\n getZegoUserStatus: 'services/app/user/GetZegoUserStatusAsync',\r\n getSendFrequencyVariables: 'services/app/sendFrequencyVariable/GetSendFrequencyVariables',\r\n getPageTypes: 'services/app/pageType/GetPageTypes',\r\n getLandingPageDefaultUrl: 'services/app/landingPage/GetDefaultUrl',\r\n getLandingPageById: 'services/app/landingPage/GetLandingPageById',\r\n getListPagesByAdmin: 'services/app/landingPage/GetListPagesByAdmin',\r\n loginZego: 'services/app/user/LoginZegoAsync',\r\n logoutZego: 'services/app/user/LogoutZegoAsync',\r\n testSenderSchedule: 'services/app/sender/TestSenderSchedule',\r\n updateCandidateUserStatus: 'services/app/user/UpdateCandidateUserStatus',\r\n receivingEmail: 'services/app/user/UpdateStatusRecevingEmailAsync',\r\n sendCandidateConfirmEmail: \"userAccount/SendCandidateConfirmEmail\",\r\n sendCandidateConfirmEmailViaPhoneNumber: \"userAccount/SendCandidateConfirmEmailViaPhoneNumber\",\r\n updateVoucherByAdmin: 'services/app/voucher/UpdateVoucherByAdmin',\r\n updateSettingSenderSchedule: 'services/app/sender/UpdateSettingSenderSchedule',\r\n removeLandingPageImage: \"services/app/landingPage/RemoveLandingPageImageUrl\",\r\n updateCandidateVerifiedByAdmin: 'services/app/user/UpdateCandidateVerifiedByAdmin',\r\n getJobDefaultUrl: 'services/app/job/GetDefaultUrl',\r\n checkJobUrlExists: 'services/app/job/CheckUrlExists',\r\n },\r\n confirm: \"userAccount/confirm\",\r\n resetPassword: \"userAccount/resetPassword\",\r\n resetPasswordWithToken: \"userAccount/resetPasswordWithToken\",\r\n sendContact: \"services/app/contact/RequestContact\",\r\n booking: {\r\n createBookings: 'services/app/booking/CreateBookings',\r\n getListRequestBookings: 'services/app/booking/GetRequestBooking',\r\n getClientRequestBookings: 'services/app/booking/GetClientRequestBooking',\r\n acceptRequestBooking: 'services/app/booking/AcceptRequestBooking',\r\n refuseRequestBooking: 'services/app/booking/RefuseRequestBooking',\r\n refuseRequestBookingWithReason: 'services/app/booking/RefuseBookingWithReason',\r\n getCandidatePreviousBookings: 'services/app/booking/GetCandidatePreviousBookings',\r\n getClientPreviousBookings: 'services/app/booking/GetClientPreviousBookings',\r\n getCandidateUpcomingBookings: 'services/app/booking/getCandidateUpcomingBookings',\r\n getClientUpcomingBookings: 'services/app/booking/getClientUpcomingBookings',\r\n getBooking: \"services/app/booking/GetBooking\",\r\n reBooking: \"services/app/booking/ReBooking\",\r\n amentBooking: \"services/app/booking/AmentBooking\",\r\n getAcceptedBooking: \"services/app/booking/GetAcceptedBooking\",\r\n paidBooking: \"services/app/booking/PaidBooking\",\r\n getRefusedBooking: 'services/app/booking/GetRefusedBooking',\r\n getBookingCandidate: 'services/app/booking/GetBooking',\r\n cancelBookingByClient: 'services/app/booking/CancelBookingByClient',\r\n cancelBookingByCandidate: 'services/app/booking/CancelBookingByCandidate',\r\n reportOtherIssueBooking: 'services/app/booking/ReportOtherIssueBooking',\r\n getListReasons: 'services/app/refusedReason/GetRefusedReasons',\r\n getCandidateUserById: 'services/app/user/getCandidateUserById',\r\n getClientUserById: 'services/app/user/getClientUserById',\r\n calculatorAmount: 'services/app/booking/getAmountBooking',\r\n closedNotification: 'services/app/booking/ClosedNotification',\r\n closedNotifications: 'services/app/booking/ClosedNotifications',\r\n getVATBooking: 'services/app/booking/GetVATBooking',\r\n redeemVoucherCode: 'services/app/booking/RedeemVoucherCode'\r\n },\r\n permanentRole: 'services/app/permanentRole/RequestPermanentRole',\r\n role: {\r\n getByName: \"services/app/role/GetRoleByName\"\r\n },\r\n getSkills: \"services/app/keySkill/GetKeySkills\",\r\n getEmploymentStatuses: \"services/app/employmentStatus/GetEmploymentStatuses\",\r\n getKeyExperiences: \"services/app/keyExperience/GetKeyExperiences\",\r\n getBusinessTypes: \"services/app/businessType/GetBusinessTypes\",\r\n getWorkTypes: \"services/app/workType/GetWorkTypes\",\r\n getTransportationModes: \"services/app/transportationMode/getTransportationModes\",\r\n uploadFile: \"fileupload/post\",\r\n removeUserPhotoAndVideo: \"services/app/user/RemoveUserPhotoAndVideo\",\r\n removeUserDocument: \"services/app/user/RemoveUserDocument\",\r\n removeUserPassport: \"services/app/user/RemoveUserPassport\",\r\n removeVehicle: \"services/app/user/RemoveVehicle\",\r\n removeProofOfAddress: \"services/app/user/RemoveProofOfAddress\",\r\n removeDBSCertificate: \"services/app/user/RemoveDBSCertificate\",\r\n removeInsuranceCode: \"services/app/user/RemoveInsuranceCode\",\r\n notification: {\r\n getCandidateNotifications: \"services/app/notification/getCandidateNotifications\",\r\n getClientNotifications: \"services/app/notification/GetClientNotifications\"\r\n },\r\n rateClient: \"services/app/rating/RateClient\",\r\n getClientRateByCandidate: \"services/app/rating/GetClientRateByCandidate\",\r\n rateCandidate: \"services/app/rating/RateCandidate\",\r\n getCandidateRateByClient: \"services/app/rating/GetCandidateRateByClient\",\r\n requestDeleteAccount: \"services/app/user/RequestDeleteUserAsync\",\r\n landingPage: {\r\n getLandingPageByUrl: \"services/app/landingPage/GetLandingPageByUrl\",\r\n getListPagesByPageType: \"services/app/landingPage/GetListPagesByPageType\"\r\n },\r\n job: {\r\n createJobByAdmin: \"services/app/job/CreateJobAsync\",\r\n deleteJobByAdmin: \"services/app/job/DeleteJobAsync\",\r\n getPublishedJobs: \"services/app/job/GetPublishedJobs\",\r\n getJobsByAdmin: \"services/app/job/GetJobsByAdmin\",\r\n getJobById: \"services/app/job/GetJobByIdAsync\",\r\n getJobByUrl: \"services/app/job/GetJobByUrl\",\r\n updateJobByAdmin: \"services/app/job/UpdateJobAsync\"\r\n }\r\n },\r\n userRoles: {\r\n candidate: 'Candidate',\r\n client: 'Client',\r\n admin: 'Admin'\r\n },\r\n activeTab: {\r\n candidate: 'candidate',\r\n client: 'client',\r\n login: 'login',\r\n home: 'home',\r\n admin: 'admin',\r\n howItWorks: 'howItWorks',\r\n aboutUs: 'aboutUs',\r\n corporate: 'corporate',\r\n livingWage: 'livingWage',\r\n faq: 'faq',\r\n termsConditions: 'termsConditions',\r\n policy: 'policy',\r\n news: 'news',\r\n recruitment: 'recruitment',\r\n tempstaff: 'tempstaff',\r\n costEffectiveTempStaff: 'costEffectiveTempStaff',\r\n landingPage: 'landingPage',\r\n jobs: 'jobs',\r\n facilitiesManagement: 'facilitiesManagement',\r\n hospitality: 'hospitality',\r\n finalMileDelivery: 'finalMileDelivery',\r\n warehouse: 'warehouse',\r\n manufacturing: 'manufacturing',\r\n care: 'care',\r\n cantBePigeonholed: 'cantBePigeonholed'\r\n },\r\n bootstrapDateFormat: 'dd-MM-yyyy',\r\n dateFormat: 'YYYY-MM-DD',\r\n timeFormat: 'YYYY-MM-DDTHH:mm:ss',\r\n minHourlyRate: 10,\r\n distance: 10,\r\n buttonLabels: {\r\n rotateLeft: ' ',\r\n rotateRight: ' ',\r\n zoomIn: ' ',\r\n zoomOut: ' ',\r\n fit: ' ',\r\n crop: ' '\r\n },\r\n bookingStatus: [\r\n { id: 0, status: \"Pending\" },\r\n { id: 1, status: \"Accepted\" },\r\n { id: 2, status: \"Refused\" },\r\n { id: 3, status: \"Paid\" },\r\n { id: 4, status: \"Cancelled\" }\r\n ],\r\n userStatus: [\r\n { id: 0, status: \"Pending\" },\r\n { id: 1, status: \"II-legal\" },\r\n { id: 2, status: \"Legal\" },\r\n { id: 3, status: \"Incorrect ID file\" }\r\n ],\r\n receivingEmail: [\r\n { id: 0, receivingEmailStatus: \"Accepted Receiving Email\" },\r\n { id: 1, receivingEmailStatus: \"Requested Stop Receiving Email\" },\r\n { id: 2, receivingEmailStatus: \"Allowed Stop Receiving Email\" }\r\n ],\r\n receivingEmailStatus: {\r\n acceptedReceivingEmail: 0,\r\n requestedStopReceivingEmail: 1,\r\n allowedUserStopReceivingEmail: 2\r\n },\r\n timePickerOptions: {\r\n timeFormat: 'H:i',\r\n disableTextInput: true,\r\n minTime: '00:00',\r\n maxTime: '23:45'\r\n },\r\n timePickerDefault: {\r\n startTime: {hour: 8, minute: 0, second: 0},\r\n endTime: {hour: 20, minute: 0, second: 0}\r\n },\r\n candidateType: {\r\n Main: 0,\r\n Additional: 1,\r\n BestMatch: 2\r\n },\r\n dateOptions: {\r\n formatYear: 'yy',\r\n startingDay: 1\r\n },\r\n pageTypes: {\r\n news: 'Employment News',\r\n recruitmentGuide: 'Recruitment guide',\r\n ownPage: 'Own Page',\r\n employmentSupport: 'Employment support (B)',\r\n employmentSupportNews: 'Employment support (news)'\r\n },\r\n considerPermanentRole: [\r\n { label: 'Yes', value: 'YES' },\r\n { label: 'No', value: 'NO' },\r\n { label: 'Maybe', value: 'MAYBE' },\r\n ],\r\n routes: {\r\n candidate: {\r\n root: 'candidate',\r\n signup: {\r\n main: 'candidate.signup',\r\n step1: 'candidate.signup.step1',\r\n step2: 'candidate.signup.step2',\r\n step3: 'candidate.signup.step3',\r\n step4: 'candidate.signup.step4',\r\n step5: 'candidate.signup.step5',\r\n step6: 'candidate.signup.step6',\r\n step7: 'candidate.signup.step7',\r\n step8: 'candidate.signup.step8',\r\n step9: 'candidate.signup.step9',\r\n alternativeDocumentation: 'candidate.signup.alternativeDocumentation',\r\n noDocument: 'candidate.signup.noDocument',\r\n confirmEmail: 'candidate.signup.confirmEmail',\r\n modeOfTransport: 'candidate.signup.modeOfTransport',\r\n uploadDeliveryDriverDocument: 'candidate.signup.uploadDeliveryDriverDocument',\r\n uploadDBSCertificate: 'candidate.signup.uploadDBSCertificate',\r\n insuranceCode: 'candidate.signup.insuranceCode',\r\n communityInformation: 'candidate.signup.communityInformation',\r\n communityConfirmation: 'candidate.signup.communityConfirmation'\r\n },\r\n portal: {\r\n main: 'candidate.portal',\r\n welcomeBack: 'candidate.portal.welcomeBack',\r\n workfaceProfile: 'candidate.portal.workfaceProfile',\r\n availability: 'candidate.portal.availability',\r\n currentStarRating: 'candidate.portal.currentStarRating',\r\n profileInformation: 'candidate.portal.profileInformation',\r\n uploadPhoto: 'candidate.portal.uploadPhoto',\r\n uploadDocuments: 'candidate.portal.uploadDocuments',\r\n paymentDetails: 'candidate.portal.paymentDetails',\r\n bookingRequests: 'candidate.portal.bookingRequests',\r\n cancelBooking: 'candidate.portal.cancelBooking',\r\n howCommunicate: 'candidate.portal.howCommunicate',\r\n wheelBooking: 'candidate.portal.wheelBooking',\r\n bookingsHistory: 'candidate.portal.bookingsHistory',\r\n ratingStar: 'candidate.portal.ratingStar',\r\n alternativeDocumentation: 'candidate.portal.alternativeDocumentation',\r\n noDocument: 'candidate.portal.noDocument',\r\n modeOfTransport: 'candidate.portal.modeOfTransport',\r\n uploadDeliveryDriverDocument: 'candidate.portal.uploadDeliveryDriverDocument',\r\n uploadDBSCertificate: 'candidate.portal.uploadDBSCertificate',\r\n insuranceCode: 'candidate.portal.insuranceCode',\r\n alreadyToGoAndEarnExtra: 'candidate.portal.alreadyToGoAndEarnExtra',\r\n employmentSupport: 'candidate.portal.employmentSupport',\r\n employmentSupportNews: 'candidate.portal.employmentSupportNews',\r\n yunoQuiz: 'candidate.portal.yunoQuiz',\n helpUsToHelpYou: 'candidate.portal.helpUsToHelpYou',\r\n suitableForCare: 'candidate.portal.suitableForCare',\r\n\t\t\t\t\t\tbecomeEligibleForCare: 'candidate.portal.becomeEligibleForCare',\r\n employmentRecord: 'candidate.portal.employmentRecord',\r\n }\r\n },\r\n client: {\r\n root: 'client',\r\n signup: {\r\n main: 'client.signup',\r\n home: 'client.signup.home',\r\n findMeStaff: 'client.signup.findMeStaff',\r\n clientProfile: 'client.signup.clientProfile',\r\n staffRequirements: 'client.signup.staffRequirements',\r\n candidates: 'client.signup.candidates',\r\n finish: 'client.signup.finish',\r\n confirmEmail: 'client.signup.confirmEmail'\r\n\r\n },\r\n portal: {\r\n main: 'client.portal',\r\n welcomeBack: 'client.portal.welcomeBack',\r\n findTheStaff: 'client.portal.findTheStaff',\r\n contactStaff: 'client.portal.contactStaff',\r\n companyProfile: 'client.portal.companyProfile',\r\n bookingsInformation: 'client.portal.bookingsInformation',\r\n makePayment: 'client.portal.makePayment',\r\n reportIssue: 'client.portal.reportIssue',\r\n howCommunicate: 'client.portal.howCommunicate',\r\n amendBooking: 'client.portal.amendBooking',\r\n reBooking: 'client.portal.reBooking',\r\n confirmedBooking: 'client.portal.confirmedBooking',\r\n permanentRole: 'client.portal.permanentRole',\r\n ratingStar: 'client.portal.ratingStar',\r\n contactCandidates: 'client.portal.contactCandidates'\r\n\r\n }\r\n },\r\n common: {\r\n main: 'common',\r\n termsConditions: 'common.termsConditions',\r\n privacyPolicy: 'common.privacyPolicy',\r\n faq: 'common.faq',\r\n aboutUs: 'common.aboutUs',\r\n //corporate: 'common.corporate',\r\n livingWage: 'common.livingWage',\r\n howItWorks: 'common.howItWorks',\r\n news: 'common.news',\r\n recruitment: 'common.recruitment'\r\n },\r\n login: 'login',\r\n home: 'home',\r\n landingPage: 'landingPage',\r\n tempstaff: 'tempstaff',\r\n costEffectiveTempStaff: 'costEffectiveTempStaff',\r\n jobs: {\r\n root: 'jobs',\r\n main: 'jobs.main',\r\n job: 'jobs.job'\r\n },\r\n resetPassword: {\r\n sendEmail: 'sendEmail',\r\n resetPassword: 'resetPassword'\r\n },\r\n admin: {\r\n root: 'admin',\r\n main: 'admin.main',\r\n export: 'admin.export',\r\n registerVoucher: 'admin.registerVoucher',\r\n emailSender: 'admin.emailSender',\r\n smsSender: 'admin.smsSender',\r\n manageBooking: 'admin.manageBooking',\r\n manageLandingPage: 'admin.manageLandingPage',\r\n deleteUser: 'admin.deleteUser',\r\n stopReceivingEmail: 'admin.stopReceivingEmail',\r\n createLandingPage: 'admin.createLandingPage',\r\n editLandingPage: 'admin.editLandingPage',\r\n jobManagement: 'admin.jobManagement',\r\n createJob: 'admin.createJob',\r\n editJob: 'admin.editJob'\r\n },\r\n corporate: {\r\n main: 'corporate',\r\n facilitiesManagement: 'corporate.facilitiesManagement',\r\n hospitality: 'corporate.hospitality',\r\n finalMileDelivery: 'corporate.finalMileDelivery',\r\n warehouse: 'corporate.warehouse',\r\n manufacturing: 'corporate.manufacturing',\r\n care: 'corporate.care',\r\n cantBePigeonholed: 'corporate.cantBePigeonholed'\r\n }\r\n }\r\n });\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lx')\r\n .config(config);\r\n\r\n /** @ngInject */\r\n function config($urlRouterProvider, $httpProvider, $locationProvider, $logProvider, ngIntlTelInputProvider, ngToastProvider) {\r\n\r\n $urlRouterProvider.otherwise('/login');\r\n $httpProvider.interceptors.push('authInterceptor');\r\n ngIntlTelInputProvider.set({initialCountry: 'gb'});\r\n // Enable log\r\n $logProvider.debugEnabled(true);\r\n ngToastProvider.configure({\r\n animation: 'slide',\r\n horizontalPosition: 'center',\r\n verticalPosition: 'top'\r\n });\r\n $locationProvider.hashPrefix('!');\r\n $locationProvider.html5Mode(true);\r\n }\r\n\r\n})();\r\n\nangular.module(\"lx\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/addLandingPage/landingPage.html\",\"Labour xchange is designed to make, work work for everyone. Our automated systems mean that we are the most cost effective way to hire temporary staff, as we pass on the savings from automation to our users.
Our system is so efficient that the hourly rate paid to the individual is more cost effective than hiring direct
Staff hired directly
TOTAL COST £10.17
Labour xchange Staff
TOTAL COST £10
02037736651
20-22 Wenlock Road, London, N1 7GU
Company reg: 9465567
Vat reg: 24334242
Find additional work that fits around your life. What are you waiting for, get your workface on and start earning when convenient to you!
Utilise the spare time of talented and motivated individuals to fill your staffing gaps. From two hours on a Sunday to two weeks, our simple process connects you directly with the people you need when you need them.
No CVs or long forms, no waiting for applications, no delays. Simply excellent people ready and eager to work who match directly to your requirements by our easy effective platform.
Need an extra income but find it difficult to find work that fits around an existing job, kids, caring commitments or any other constraints? The answer is simple, create your workface profile, detail when you are available to work and our system will match you directly with local employers wanting those hours worked.
There are no complicated application forms, no need for lengthy CVs. It’s a quick and painless process to create your workface profile which then pitches you perfectly to prospective companies. Work that fits around you with a minimum rate of pay based upon the Living Wage Foundation calculation.
We all want to get on at work. And we all want to do right by our families. But sometimes you need a little more help to know your rights and understand your responsibilities. That’s why Labour xchange is proud to partner with Community, who can provide online advice, support and guidance for individuals who find work through our platform.
Community is the modern union for a changing world. They help people at work, at home and when life gets complicated. Whoever you are, wherever you work, Community can help.
The world of work is changing all around us. It’s more flexible and more complex. So sometimes you need somewhere to turn to for support. If you get work through the Labour xchange platform, then you can be an associate member of Community for free.
You’ll have access to the Labour xchange advice pages of Community’s website so that you know your rights and understand your responsibilities as a self-employed worker.
If you have issues at work and need representation or if you need more help from one of Community’s legally trained advisors, then it’s easy to upgrade to full Community membership to get the support you need. Their rates start at less than £5 a month – a small price to pay for peace of mind at work
We have one overriding belief, a few extra hours work per month, paid at a fair rate, can make the world of difference to the lives and living standards of most working people. That is driving force for what we do, not to make a quick buck from others\\' hard work.
We are therefore partnering with charities who share our goals and values in creating a better life for working people.
We aim to ensure that everyone getting work through Labour Xchange will be paid a minimum of the living wage, we do this via the unique way we match potential work candidates with potential employers.
We believe that paying at least this minimum amount benefits not only the worker but the employer as well, it improves the reputation of the employer, increases the motivation of the worker and relationship between the employer thus creating a better working environment.
Your comments are really important to us. We want to improve the world of work for everyone, so what ever your thoughts please let us know. We will come back to you as fast as humanly possible!
02037736651
20-22 Wenlock Road, London, N1 7GU
Company reg: 9465567
Vat reg: 24334242
Fill staffing gaps in under 5 minutes.
What are you waiting for, it really is as quick and easy as “click, click, staff!
Utilise the spare time of talented and motivated individuals to fill your staffing gaps. From two hours on a Sunday to two weeks, our simple process connects you directly with the people you need when you need them.
No CV’s or long forms, no waiting for applications, no delays. Simply excellent people ready and eager to work who match directly to your requirements by our easy effective platform.
Every individual who is registered on our platform has selected the times they are free and want to use and earn extra income. So unlike other platforms or agencies the staff that are matched to your requirements genuinely want that work as it fits in with their lives.
Additionally as our system is entirely automated, we not only pass the costs savings on to you, we ensure the individuals are always paid well (at least the living wage)
We all want to get on at work. And we all want to do right by our families. But sometimes you need a little more help to know your rights and understand your responsibilities. That’s why Labour xchange is proud to partner with Community, who can provide online advice, support and guidance for individuals who find work through our platform.
Community is the modern union for a changing world. They help people at work, at home and when life gets complicated. Whoever you are, wherever you work, Community can help.
The world of work is changing all around us. It’s more flexible and more complex. So sometimes you need somewhere to turn to for support. If you get work through the Labour xchange platform, then you can be an associate member of Community for free.
You’ll have access to the Labour xchange advice pages of Community’s website so that you know your rights and understand your responsibilities as a self-employed worker.
If you have issues at work and need representation or if you need more help from one of Community’s legally trained advisors, then it’s easy to upgrade to full Community membership to get the support you need. Their rates start at less than £5 a month – a small price to pay for peace of mind at work
Your comments are really important to us. We want to improve the world of work for everyone, so what ever your your thoughts please let us know. We will come back to you as fast as humanly possible!
02037736651
20-22 Wenlock Road, London, N1 7GU
Company reg: 9465567
Vat reg: 24334242
Note: Currently, you are permitted to upload the following file types: jpeg, jpg, png, gif, pdf
Note: Currently, you are permitted to upload the following file types: jpeg, jpg, png, gif, pdf
Note: Currently, you are permitted to upload the following file types: jpeg, jpg, png, gif, mp4
Username | Candidate Name | Photo/Video | Passport | Another Document | Insurance Code | Status | Verified Y/N | Verified Email Address |
---|---|---|---|---|---|---|---|---|
{{list.userName}} | {{list.name}} | View/Edit Add | View/Edit Add | View/Edit Add |
Email Name | Send From | Send To | Send First | Send Frequency | Live | |
---|---|---|---|---|---|---|
{{list.senderName}} | {{list.sendFromVariable.name}} | {{list.sendToVariable.name}} | {{list.sendFirstVariable.name}} | {{list.sendFrequencyVariable.name}} |
First Name | Surname | Email Address | First Register | Postcode | Verified Y/N | Last booking (or n/a) | Last Login | Passport uploaded Y/N | Video uploaded Y/N | Photo Uploaded Y/N | MobileNo |
---|---|---|---|---|---|---|---|---|---|---|---|
{{list.name}} | {{list.surname}} | {{list.emailAddress}} | {{list.creationTime | date:\\'dd/MM/yyyy\\'}} | {{list.profile.address.postCode}} | {{list.isEmailConfirmed?\\'Y\\':\\'N\\'}} | {{((list.lastBooking !== null) ? (list.lastBooking | date: \\'dd/MM/yyyy\\') : \\'\\' )}} | {{((list.lastLogin !== null) ? (list.lastLogin | date: \\'dd/MM/yyyy\\') : \\'\\' )}} | {{list.profile.passportUrl? \\'Y\\':\\'N\\'}} | {{list.profile.videoUrl? \\'Y\\':\\'N\\'}} | {{list.profile.photoUrl? \\'Y\\':\\'N\\'}} | {{list.profile.mobileNumber}} |
First Name | Surname | Email Address | First Register | Postcode | Verified Y/N | Last booking (or n/a) | Last Login | Type of businesses | Type of work | TelNo |
---|---|---|---|---|---|---|---|---|---|---|
{{list.name}} | {{list.surname}} | {{list.emailAddress}} | {{list.creationTime | date:\\'dd/MM/yyyy\\'}} | {{list.companyProfile.address.postCode}} | {{list.isEmailConfirmed?\\'Y\\':\\'N\\'}} | {{((list.lastBooking !== null) ? (list.lastBooking | date: \\'dd/MM/yyyy\\') : \\'\\' )}} | {{((list.lastLogin !== null) ? (list.lastLogin | date: \\'dd/MM/yyyy\\') : \\'\\' )}} |
|
| {{list.companyProfile.telephoneNumber}} |
Url | Part of | Live | |
---|---|---|---|
{{vm.baseUrl}}{{list.url}} | {{list.pageType.name}} | {{list.isPublished? \\'Yes\\':\\'No\\'}} |
Note:
Main candidate
Additional candidate
Booking Id | Created Date | Client Name | Candidate Name | Status | Post code | Type of work | Key skill | Key experience | Employment Status |
---|---|---|---|---|---|---|---|---|---|
{{booking.id}} | {{booking.creationTime|date:\\'dd/MM/yyyy\\'}} | {{booking.clientUser.name}} |
| {{vm.bookingStatus(booking.status)}} | {{booking.address.postCode}} |
|
|
|
|
ID | Username | Name | Receiving email status |
---|---|---|---|
{{list.id}} | {{list.userName}} | {{list.name}} |
Code | Value | Expired Date | Main Code | |
---|---|---|---|---|
{{list.code}} | {{list.value | currency:\\'£\\'}} | {{list.expiry| date:\\'dd/MM/yy\\'}} |
Email Name | Send To | Send First | Send Frequency | Live | |
---|---|---|---|---|---|
{{list.senderName}} | {{list.sendToVariable.name}} | {{list.sendFirstVariable.name}} | {{list.sendFrequencyVariable.name}} |
Have you received the email yet? (worth checking SPAM folder)
Labour xchange has a simple yet important mission; we connect individuals with spare time who want to earn extra cash with businesses who every now and then need additional staff.
By fulfilling this mission, we can help people increase their income whilst helping businesses grow and prosper. Everything we do is driven by our core belief that everyone should benefit in the employment market, a win win scenario with no losers.
See our “how it works page”
In short normal everyday people:
Our founder Jonathan Key has had the privilege to work in a wide variety of environments and roles in which he experienced first-hand the dysfunctional employment market. It was this first-hand experience that made him realise there must be a better way for people and business to connect.
We are proud to work in partnership with Community trade union, we believe a good modern trade union is not only essential to a positive and safe workplace but more importantly leads to a better and more productive business.
We also work with a variety of charities to ensure all Labour xchange users can access the support they need whether it be debt advice, training or employment advice.
In addition to empowering people to earn more money we take our social responsibility further and donate 15% of all generated profit to our charity partners. We are not out to make a quick buck from others\\' hard work, instead we make a lasting and positive difference to our society.
We really want both people and business to mutually benefit from our platform, therefore if you have any suggestions or comments (good or bad) please, please drop us a line. For details on how to contact us please see our “contact page”
Get access to thousands of people local to your operations
Ability to book staff within one hour
Be the good guys, our ethical approach means you will be doing the right thing
Lower costs than any agency
There are over 7 million people in the UK who cannot work enough hours as they cannot find work opportunities that fit around current commitments. Individuals such as the underemployed, parents and carers.
Labour xchange enable your organisation to utilise these people\\'s free time, so you get the best staff as required and these hardworking people get additional income that fits around their life.
We integrate the labour xchange platform with your scheduling software so individuals can be booked automatically when a staffing gap appears.
As everyone has already confirmed their availability people can be booked and on premises in under an hour.
As our approach is radically different we create a win for you and the worker. This ethical model is endorsed and backed by our friends at Community trade union, which means yes you could be the good guys and get the staff you need.
Our cutting edge technology and automated process gives us a substantially lower cost base, which we pass on to you in the form of reduced fees and then to the workers in the form of higher hourly rates.
We are also backed by charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
FAQ – FOR INDIVUDALS
FAQ – FOR BUSINESS
1
How to become a Living Wage employer
2
The Living Wage master mark
3
The Living Wage employers mark
4
Colour palette
5
Exclusion zone
6
Signage example: sticker
7
Contact us
How does the star rating system work? A – The star ratings for individuals are based on three elements.
Our rating system is simple and transparent, it is designed so you can build your reputation and command increased work and rates.
{{vm.listLandingResponse}}
{{vm.listLandingResponse}}
Understanding your rights and responsibilities as a Labour xchange user
Privacy Reminder
Protect your personal information by never providing, credit/debit card or bank account numbers or personal details to prospective hiring companies.
Definitions
Company – This is the business using the Labour xchange site to look for staff. This may be a limited Company, partnership, public limited Company or sole trader.
Site – This is the Labour xchange platform
Worker – This is the individual using the Labour xchange site to find additional work to boost their income.
Labour xchange – The name for Labour xchange Ltd, the sole proprietor of the Labour xchange site and workface profile ©
Workface and Profile – The system in which Workers detail their availability, preferred work type and skills linked. Also includes the ability to publish a video/photo. A Company can then view this access suitability for temporary employment.
Your and You – The end user, includes both Workers and Workers and is dependent to whom the clause applies
Company portal – The portal which enables each individual company to login change details and search for staff.
Worker portal – The portal which enables each individual worker to login, change details and amend their profile.
Booking – The offer of work by an employer and the agreement to work by a worker.
Terms of Use
This page states the Terms of Use (\\\"Terms\\\") under which you (\\\"You\\\") may use the Labour xchange Sites and the Services (each as defined below). These Terms include the Labour xchange Privacy Policy, which is incorporated into these Terms by reference.
These Terms constitute a binding agreement between You and Labour xchange, and are deemed accepted by You each time that You use or access any Labour xchange Site or Labour xchange Services. If You do not accept the Terms stated here, do not use the Labour xchange Sites and the Labour xchange Services.
The Labour xchange Sites are defined as any Web sites under Labour xchange’s control, whether partial or otherwise and include the Labour xchange Site. The Labour xchange Site is defined as the applications and services offered by Labour xchange, including an on-line service to note availability for and search temporary work opportunities and including any application accessed through the Labour xchange Site and/or any mobile or other interface that allows You to access such application (collectively, “Labour xchange Services”). The Labour xchange Sites also allow Workers to create individual profiles, which may include personal information (” Workface”), and to make these Profiles, or aspects thereof, public. Labour xchange may revise these Terms at any time by posting an updated version to this Web page. You should visit this page periodically to review the most current Terms because they are binding on You.
Users who violate these Terms may have their access and use of the Labour xchange Sites suspended or terminated, at Labour xchange’s sole discretion.
You must be 18 years of age or older to visit or use any Labour xchange Site in any manner, and, if under the age of 18 or the age of majority as that is defined in Your jurisdiction,.
You may not use the Labour xchange Content or Profiles to determine a consumer\\'s eligibility for: (a) credit or insurance for personal, family, or household purposes; (b) employment; or (c) a government license or benefit.
Labour xchange authorises You, subject to these Terms, to access and use the Labour xchange Sites and the Labour xchange Content (as defined below) and to download and print a single copy of the content available on or from the Labour xchange Sites solely for Your personal, non-commercial use. The contents of the Labour xchange Sites, such as designs, text, graphics, images, video, information, logos, button icons, software, audio files and other Labour xchange content (collectively, \\\"Labour xchange Content\\\"), are protected under copyright, trademark and other laws. All Labour xchange Content is the property of Labour xchange. The compilation (meaning the collection, arrangement and assembly) of all content on the Labour xchange Sites is the exclusive property of Labour xchange and is protected by copyright, trademark, and other laws. Unauthorised use of the Labour xchange Content may violate these laws and/or applicable communications regulations and statutes, and is strictly prohibited. You must preserve all copyright, trademark, service mark and other proprietary notices contained in the original Labour xchange Content on any authorised copy You make of the Labour xchange Content.
Any code that Labour xchange creates to generate or display any Labour xchange Content or the pages making up any Labour xchange Site is also protected by Labour xchange\\'s copyright and You may not copy or adapt such code.
You agree not to sell or modify the Labour xchange Content or reproduce, display, publicly perform, distribute, or otherwise use the Labour xchange Content in any way for any public or commercial purpose, in connection with products or services that are not those of the Labour xchange Sites, in any other manner that is likely to cause confusion among Workers, that disparages or discredits Labour xchange, that dilutes the strength of Labour xchange\\'s property, or that otherwise infringes Labour xchange\\'s intellectual property rights. You further agree to in no other way to misuse Labour xchange Content. The use of the Labour xchange Content on any other application, web site or in a networked computer environment for any purpose is prohibited. Any code that Labour xchange creates to generate or display any Labour xchange Content or the pages making up any Application or Service is also protected by Labour xchange\\'s copyright and you may not copy or adapt such code.
The “Work face” profile (“Labour xchanges profile Database”) and other features of the Labour xchange Sites may be used only by Workers seeking temporary employment and by Companies seeking temporary staff. Your use of the Labour xchange Services is also subject to any other contracts You may have with Labour xchange. In the case of any conflict between these Terms and any contract you have with Labour xchange, the terms of your contract will prevail. The term “Create” as used herein shall mean information that You submit, publish or display on a Labour xchange Site.
You are responsible for maintaining the confidentiality of Your account, Profile and passwords, as applicable. You may not share Your password or other account access information with any other party, temporarily or permanently, and You shall be responsible for all uses of Your Labour xchange Site registrations and passwords, whether authorised by You. You agree to immediately notify Labour xchange of any unauthorised use of Your account, Profile, or passwords via the report abuse link.
All Labour xchange Users agree to not:
(a) transmit, post, distribute, store or destroy material, including without limitation Labour xchange Content, in violation of any applicable law or regulation, including but not limited to laws or regulations governing the collection, processing, or transfer of personal information, or in breach of Labour xchange’s privacy policy;
(b) take any action that imposes an unreasonable or disproportionately large load on any Labour xchange Site\\'s infrastructure;
(c) use any device to navigate or search any Labour xchange Site other than the tools available on the Site, generally available third party web browsers, or other tools approved by Labour xchange;
(d) use any data mining, robots or similar data gathering or extraction methods;
(e) violate or attempt to violate the security of any Labour xchange Site including attempting to probe, scan or test the vulnerability of a system or network or to breach security or authentication measures without proper authorization;
(f) forge any TCP/IP packet header or any part of the header information in any e-mail or newsgroup posting;
(g) reverse engineer or decompile any parts of any Labour xchange Site;
(h) aggregate, copy or duplicate in any manner any of the Labour xchange Content or information available from any Labour xchange Site, including expired job postings, other than as permitted by these Terms;
(I) frame or link to any Labour xchange Content or information available from any Labour xchange Site, unless permitted by these Terms;
(j) post any content or material that promotes or endorses false or misleading information or illegal activities, or endorses or provides instructional information about illegal activities or other activities prohibited by these Terms, such as making or buying illegal weapons, violating someone\\'s privacy, providing or creating computer viruses or pirating media;
(k) create a Workface profile on behalf of another party;
(l) set more than one copy of the same “workface profile at any one time;
(m) share with a third party any login credentials to any Labour xchange Site;
(o) access data not intended for You or logging into a server or account which You are not authorised to access;
(p) post or submit to any Labour xchange Site any incomplete, false or inaccurate biographical information or information which is not Your own;
(q) post content that contains restricted or password-only access pages, or hidden pages or images;
(r) solicit passwords or personally identifiable information from other Users;
(s) delete or alter any material posted by any other person or entity;
(t) harass, incite harassment or advocate harassment of any group, Company, or individual;
(u) send unsolicited mail or email, make unsolicited phone calls or send unsolicited faxes.
(v) attempt to interfere with service to any User, host or network, including, without limitation, via means of submitting a virus to any Labour xchange Site, overloading, \\\"flooding\\\", \\\"spamming\\\", \\\"mailbombing\\\" or \\\"crashing\\\";
(w) promote or endorse an illegal or unauthorised copy of another person\\'s copyrighted work, such by as providing or making available pirated computer programs or links to them, providing or making available information to circumvent manufacture-installed copy-protect devices, or providing or making available pirated music or other media or links to pirated music or other media files; or
(x) use the Labour xchange Services for any unlawful purpose or any illegal activity, or post or submit any content, resume, or job posting that is defamatory, libelous, implicitly or explicitly offensive, vulgar, obscene, threatening, abusive, hateful, racist, discriminatory, of a menacing character or likely to cause annoyance, inconvenience, embarrassment, anxiety or could cause harassment to any person or include any links to pornographic, indecent or sexually explicit material of any kind, as determined by Labour xchange’s discretion.
Violations of system or network security may result in civil and/or criminal liability. Labour xchange will investigate occurrences which may involve such violations and may involve, and cooperate with, law enforcement authorities in prosecuting Users who are involved in such violations.
(a) employment status
All Workers found on the Labour xchange platform are individuals looking to work additional hours gaining additional income on a self-employed basis. The motivation for Workers to look for additional work varies however each one is considered self-employed.
(b) standard employment rights
As self-employed individuals, the Workers do not have employment rights such as:
To compensate Workers for any lost rights associated with self-employed status all Workers receive a minimum fee of £10 per hour. Other than the Worker fee and the Labour xchange administration fee no other costs are incurred by you.
(c) health and safety
Although the Workers do not have employment rights you are required to provide a safe environment for them in line with HSE guidelines on contractors.
Should the environment/role be unsafe, the Worker has the right to refuse to work. Should this happen no fees are refundable. The Worker in addition to rating your Company poorly can file a complaint with Labour xchange, which should it be upheld Labour xchange reserve the right to permanently prohibit You from using the platform.
For guidance on a what is deemed a safe role/environment please visit the HSE website.
(d) respect and dignity
All Workers although self-employed have the right to be treated with respect and dignity. Should you:
The Worker has the right to refuse not to work. Should this happen no fees are refundable. The Worker in addition to rating your Company poorly can file a complaint with Labour xchange, which should it be upheld Labour xchange reserve the right to permanently bar you from using the platform.
(e) Illegal activity
Should the Worker be asked to carry out any activity which could be classified illegal they have the right to refuse to work. Should this happen no fees are refundable. The Worker in addition to rating your Company poorly can file a complaint with Labour xchange, which should it be upheld Labour xchange reserve the right to permanently bar you from using the platform.
In addition, Labour xchange will pass any illegal activities noted on to law enforcement agencies.
(f) employment selection
Companies are solely responsible for screening all Workers via their workface profile. Labour xchange shall not be responsible for any employment decisions or issues resulting from.
All Workers are considered self-employed and although Labour xchange facilitates their payment from you they are not and have not been employees of Labour xchange. As such Labour xchange neither recommends any Worker nor guarantees their abilities.
The star rating system is provided as a tool to assess each Worker’s suitability; the rating is calculated from their previous placement feedback and other factors which you can see here. A strong star rating does not guarantee a suitable Worker and should be used for guidance purposes only.
Labour xchange accepts no liability for any damage or loss resulting from any Worker.
(g) eligibility to work in the UK
As part of the sign up process all Worker must upload documentation that demonstrates their right to work in the UK. If you are able to book a Worker, Labour xchange will have already received such uploaded documentation.
As the UK law states companies, must see an original copy of eligibility documentation the Worker must bring the original copy of the document to your booking. It is then your responsibility to check the original document and be satisfied of their eligibility to work before they start any actual work. Should a Worker fail to bring their original documentation you must refuse to let them work otherwise you will be in breach of UK law. Should a Worker be refused work for failing to supply documentation a full refund will be issued.
Although Labour xchange makes every effort to ensure all registered Workers are legally allowed to work in the UK, ultimately as their direct contractor this is your responsibility and Labour xchange accepts no liability for loss/damage arising from failure in this field.
(h) payment terms
The Workers fee and Labour xchange administration fee are taken in advance as part of the booking process. On your behalf Labour xchange will transmit the Worker fee upon booking completion.
These fees may be refunded in full or part as per;
(g)the worker not being able to prove eligibility to work in the UK,
(i) booking amendment policy,
(j) cancellation policy,
(k) disputes policy.
(i) booking amendment policy
If for any reason you should need to amend a booking the following terms apply;
We will notify the Worker of your change of booking request. Should they be able to accommodate the request you will be notified and the booking will proceed as normal. Should the Worker be unable to accommodate the request we will search for other Workers and begin the booking process from start. Should a suitable replacement be confirmed the booking will proceed as normal, should a suitable replacement not be sourced the booking will be deemed cancelled (as such cancellation terms apply).
(j) booking cancellation policy
Should the Worker cancel the agreed booking Labour xchange will initiate the booking process from start to identify a possible replacement. Should there not be a suitable replacement a full refund of all fees will be made.
Should you need to cancel the booking for any reason:
Bookings with Over 24 hours until scheduled to start (i)
All fees will be refunded, however, an administration fee of £5 per day will be imposed which will be deducted from the refunded sums.
Bookings with Under 24 hours until scheduled to start (ii)
50% of the Worker’s fee will be refunded and an administration fee of £5 per day will be imposed which will be deducted from the refunded sums.
Bookings with Under 12 hours until scheduled to start (iii)
No refund can be issued
(j) disputes policy
Should the booking commence the Worker will receive their fee in all but the following circumstance:
(k) excluded activity
Company are not allowed to use the Labour xchange system for the following:
(a) jobs that include any screening requirement or criterion about a job where such requirement or criterion is not an actual and legal requirement of the posted job;
(b) with respect to Profiles, determine a consumer\\'s eligibility for: (i) credit or insurance for person, family, or household purposes; (ii) employment; or (iii) a government license of benefit.
(c) sell, promote or advertise products or services;
(g) post any franchise, pyramid scheme, \\\"club membership\\\", distributorship, multi-level marketing opportunity, or sales representative agency arrangement;
(h) post any business opportunity that requires an upfront or periodic payment or requires recruitment of other members, sub-distributors or sub-agents;
(i) post any business opportunity that pays commission only.
(j) promote any opportunity that does not represent bona fide employment.
(k) recruit on Labour xchange Site for modeling, acting, talent or entertainment agencies or talent scouting positions;
(l) advertise sexual services or seek employees for jobs of a sexual nature;
(m) request the use of human body parts or the donation of human parts, including, without limitation, reproductive services such as egg donation and surrogacy;
(n) endorse a political party, political agenda, political position or issue;
(o) promote a religion;
(p) post jobs located in countries subject to economic sanctions of the UK Government
(q) except where allowed by applicable law, post jobs which require the applicant to provide information relating to his/her (i) racial or ethnic origin (ii) political beliefs (iii) philosophical or religious beliefs (iv) membership of a trade union (v) physical or mental health (vi) sexual life (vii) the commission of criminal offences or proceedings or (vii) age.
Labour xchange reserves the right to remove any Company from any Labour xchange Site, which in the reasonable exercise of Labour xchange’s discretion, does not comply with the above Terms, or if any content is posted that Labour xchange believes is not in the best interest of Labour xchange.
If at any time during Your use of the Labour xchange Services, you made a misrepresentation of fact to Labour xchange or otherwise misled Labour xchange in regard to the nature of Your business activities, Labour xchange will have grounds to terminate Your use of the Labour xchange Services.
(l) Worker booking frequency
Labour xchange is a platform that enables Companies to find ad-hoc additional staff when required, as the systems is based around impartial calculated algorithms Workers provided are at chance and can be categorically deemed as self-employed.
Should a Company consistently book the same Worker Labour xchange will refuse the booking request, as the Worker could be deemed to be an employee due to the consistent nature of employment. For the avoidance of doubt Labour xchange considers the following “consistent booking”
The Company has the opportunity however to employee the Worker directly, see permanent recruitment.
(m) Permanent recruitment
Following a booking should the Company feel a Worker is suited for more regular employment they have the option to offer the Worker a permeant position. Accessed through the Company’s portal an offer of permeant employment can be made.
Although Labour xchange will communicate the permanent offer to the Worker it can neither guarantee, acceptance nor provide feedback on refusal.
Should a Worker accept the permanent offer of employment a £100 administration fee becomes due to Labour xchange. This fee is fully refundable should the Worker fail to start the permanent recruitment.
As part of the administration fee Labour xchange will provide an “Companies pack” with advice and guidance on employing staff.
Should the Company permanently hire a Worker book through Labour xchange and fail to notify Labour xchange and/or pay the administration fee a penalty fee of £750 becomes due immediately to cover Labour xchange losses.
.
(n) hiring staff temporarily outside Labour xchange
Should a Company attempt to hire a Worker previously booked through Labour xchange outside the Labour xchange platform a £750 penalty fee will become immediately due to cover Labour xchange losses.
(a) employment status
By agreeing to the Labour xchange Terms and conditions you are confirming that all work offered by companies through the Labour xchange platform is on a self-employed basis. Neither the Company nor Labour xchange is your Company, rather you are contracting your services directly to the Company using Labour xchange as means to acquire business.
As a self-employed Worker, you are responsible for the payment of your own tax and you do not receive the following benefits associated with employment:
To compensate you for any losses associated with self-employment all companies will pay a minimum of £10 per hour.
For support and help regarding self-employment please visit the Community TU support site.
(b) health and safety
As a self-employed Worker, you must be aware of your health and safety obligations, please visit the Community TU support site for more details.
The Company employing you must however provide a safe environment and role for you. If you believe the environment/role to be unsafe, concerns must be addressed to the Company in the first instance. However ultimately you should never work in an unsafe environment/role and will not be penalised for refusing to do so.
(c) payment terms
Once you have confirmed the ability to attend an offered booking Labour xchange will take the payment from the Company in advance for your fees. These will be held by Labour xchange until the booking has been completed. Payment will then be made to your bank account within 24hrs of booking completion on behalf of the Company.
In all but the following circumstances you will receive the agreed fee:
In all cases we will notify you of the issued dispute from the Company and note your comments.
(d) cancellation policy
Should you fail to attend a booking without notifying Labour xchange your star rating will be immediately taken to zero.
Should you cancel a booking on more than three occasions with less than 12 hours’ notice your star rating will be immediately taken to zero.
Should a Company cancel your booking with less than 24hours notice you will still receive 50% of your agreed fee. Should a Company cancel your booking with less than 12 hours’ notice you will receive your entire fee.
In circumstances of cancelation we will notify you via the agreed communication method.
(e) Workface profile creation
When You register with any Labour xchange Site, you will be asked to create an account and provide Labour xchange with certain information including, without limitation, a valid email address (Your \\\"Workface profile\\\").
Any Profile You submit must be accurate and describe You, an individual person.
You acknowledge and agree that You are solely responsible for the form, content and accuracy of any Profile or material contained therein placed by You on the Labour xchange Sites.
You understand and acknowledge that You have no ownership rights in Your account and that if You cancel Your Labour xchange account or Your Labour xchange account is terminated, all Your account information from Labour xchange, including ratings, Profiles, and work history will be marked as deleted in and may be deleted from Labour xchange\\'s databases and will be removed from any public area of the Labour xchange Sites. Information may continue to be available for some period of time because of delays in propagating such deletion through Labour xchange’s web servers.
Labour xchange reserves the right to delete Your account and all Your Information after a significant duration of inactivity.
(e) Workface profile maintenance
You agree to keep you your workface updated and in good order. You also agree to keep your availability updated which will in turn ensure you are only contacted regarding relevant opportunities.
All information on the workface profile must be honest and relevant. Videos should follow the script provided to ensure necessary information is included. Videos are not permitted to contain:
Labour xchange maintains the absolute right to refuse publication or deletion of any video it deems inappropriate.
(g) eligibility to work in the UK
All Workers who register with Labour xchange must be eligible to work in the UK. If you are not eligible to work in the UK, you are not permitted to use the Labour xchange system.
Before your profile can go live Labour xchange requires all Workers to upload proof of eligibility work documents. A list of accepted documents can be found here. Labour xchange cannot activate a Worker’s profile without the required upload in any circumstances.
As part of UK law, a Company must see the original proof of eligibility document. Therefore, when attending any booking you must take the original document to show to the Company. Should you fail to take the original documents to any booking you will not be allowed to work and sent home without any fee.
Labour xchange accepts no liability for lost fees should a Worker fail to bring the original document to a booking.
(h) booking frequency
Should a Company continuously try to book you in an extended period Labour xchange will stop the Company from booking you. Labour xchange will instead suggest the Company offers you a permeant contract.
This is to protect all Workers from companies which are attempting to avoid employment rights associated with continued work.
(i) permanent recruitment
There may be occasions where a Company may be interested in offering you a permanent contract following a booking through Labour xchange. We will notify you via the Worker portal should such an offer be made. The acceptance of any offer is entirely at your discretion and should be considered carefully.
As starting permanent employment can incur additional costs for Workers Labour xchange will contribute to Worker’s success by:
All payment is entirely discretionary and at the decision of the Labour xchange management. These payments are to enable the smooth transition for Workers into a new role as Labour xchange is committed to Worker welfare.
All offers of permanent employment must be made through the Labour xchange system, should a Company approach you directly please report this via the Worker’s portal.
(i) self-employed support from community TU
As a Labour xchange member you have automatically been opted in to receive access to a support site from Community trade union. The support site is providing free of charge and entirely at the direction of community trade union.
You can opt out of the support site during sign up
Labour xchange has no control over the Community support site and therefore accepts no liability regarding any loss as result of site failure or advice given. When accessing the Community TU support site, you are agreeing to the entire terms of use which can be found here
You understand that all information, data, text, software, music, sound, photographs, graphics, video, advertisements, messages or other materials submitted, posted or displayed by You on or through a Labour xchange Site (\\\"User Content\\\") is the sole responsibility of the person from which such User Content originated. Labour xchange claims no ownership or control over any User Content. You or a third party licensor, as appropriate, retain all patent, trademark and copyright to any User Content you submit, post or display on or through Labour xchange and you are responsible for protecting those rights, as appropriate. By submitting, posting or displaying User Content on or through Labour xchange, you grant Labour xchange a worldwide, non-exclusive, royalty-free, transferable, sub-licensable license to use, reproduce, adapt, distribute and publish such User Content through Labour xchange. In addition, by submitting, posting or displaying User Content which is intended to be available to the general public, you grant Labour xchange a worldwide, non-exclusive, royalty-free license to reproduce, adapt, distribute and publish such User Content for the purpose of promoting Labour xchange and its services. Labour xchange will discontinue this licensed use within a commercially reasonable period after such User Content is removed from Labour xchange. Labour xchange reserves the right to refuse to accept, post, display or transmit any User Content in its sole discretion.
You also represent and warrant that You have the right to grant, or that the holder of any rights, including moral rights in such content has completely and effectively waived all such rights and validly and irrevocably granted to You the right to grant, the license stated above. If You post User Content in any public area of any Labour xchange Site, you also permit any User to access, display, view, store and reproduce such User Content for personal use. Subject to the foregoing, the owner of such User Content placed on any Labour xchange Site retains any and all rights that may exist in such User Content. Labour xchange may review and remove any User Content that, in its sole judgment, violates these Terms, violates applicable laws, rules or regulations, is abusive, disruptive, offensive or illegal, or violates the rights of, or harms or threatens the safety of, Users of any Labour xchange Site. Labour xchange reserves the right to expel Users and prevent their further access to the Labour xchange Sites and/or use of Labour xchange Services for violating the Terms or applicable laws, rules or regulations. Labour xchange may take any action with respect to User Content that it deems necessary or appropriate in its sole discretion if it believes that such User Content could create liability for Labour xchange, damage Labour xchange’s brand or public image, or cause Labour xchange to lose Users or (in whole or in part) the services of its ISPs or other suppliers.
Labour xchange does not represent or guarantee the truthfulness, accuracy, or reliability of User Content, derivative works from User Content, or any other communications posted by Users nor does Labour xchange endorse any opinions expressed by Users. You acknowledge that any reliance on material posted by other Users will be at Your own risk.
The following is a partial list of User Content that is prohibited on the Application. The list below is for illustration only and is not a complete list of all prohibited User Content.
Content that:
Any Profile You submit must describe You, an individual person. Examples of inappropriate and prohibited Profiles include, but are not limited to, Profiles that purport to represent an animal, place, inanimate object, fictional character, or real individual that is not You.
You may not include, in any User Content submitted to Labour xchange Networking, information that may be interpreted as a direct solicitation, advertisement or recruitment for an available job position directed to individuals seeking employment on either a full time or part time basis. In order to protect our Labour xchange Community Users from commercial advertising or solicitation, Labour xchange reserves the right to restrict the number of e-mails or other messages which a User may send to other Users to a number which Labour xchange deems appropriate in its sole discretion.
Profiles derived from User Content may also be made available through the Labour xchange Sites. Labour xchange does not make any representations regarding the accuracy or validity of such derived works or their appropriateness for evaluation by Companies. Derived Profiles may differ significantly from User Content.
We appreciate hearing from our Users and welcome Your comments regarding our services and the Labour xchange Sites. Please be advised, however, that our policy does not permit us to accept or consider creative ideas, suggestions, inventions or materials other than those which we have specifically requested. While we do value Your feedback on our services, please be specific in Your comments regarding our services and do not submit creative ideas, inventions, suggestions, or materials. If, despite our request, you send us creative suggestions, ideas, drawings, concepts, inventions, or other information (collectively the \\\"Submission\\\"), the Submission shall be the property of Labour xchange. None of the Submission shall be subject to any obligation of confidentiality on our part and we shall not be liable for any use or disclosure of any Submission. Labour xchange shall own exclusively all now known or later discovered rights to the Submission and shall be entitled to unrestricted use of the Submission for any purpose whatsoever, commercial or otherwise, without compensation to You or any other person.
If You believe that Your copyrighted work or trademark has been uploaded, posted or copied to any Labour xchange Site and is accessible on such Labour xchange Site in a way that constitutes copyright or trademark infringement, please contact Labour xchange by email at
Labour xchange respects the intellectual property of others, and we ask our Users and content partners to do the same. The unauthorized posting, reproduction, copying, distribution, modification, public display or public performance of copyrighted works constitutes infringement of the copyright owners rights. As a condition to Your use of the Labour xchange Sites, you agree not to use any Labour xchange Site to infringe the intellectual property rights of others in any way. Labour xchange reserves the right to terminate the accounts of any Users, and block access to the Labour xchange Sites of any Users who are repeat infringers of the copyrights, or other intellectual property rights, of others. Labour xchange reserves the right, in its sole discretion, to take these actions to limit access to the Site and/or terminate the accounts of any time, in our sole discretion Users who infringe any intellectual property rights of others, whether or not there is any repeat infringement, with or without notice, and without any liability to the User who is terminated or to the User whose access is blocked. Notwithstanding the foregoing, in the event that You believe in good faith that a notice of copyright infringement has been wrongly filed against You, please contact Labour xchange as set forth in Section 6 above.
The Labour xchange Sites act as, among other things, venues for (i) Companies to search for and evaluate job Workers and (ii) Workers to produce workface Profiles and detail their availability. Labour xchange does not screen or censor the listings, including Profiles offered. Labour xchange is not involved in, and does not control, the actual transaction between Companies and Workers other than transmitting payment. As a result, Labour xchange is not responsible for User Content, the quality, safety or legality of the jobs or resumes posted, the truth or accuracy of the listings, the ability of Companies to offer job opportunities to Workers or the ability of Workers to fill job openings and Labour xchange makes no representations about any jobs, profiles or User Content on the Labour xchange Sites. While Labour xchange reserves the right in its sole discretion to remove User Content, profiles or other material from the Labour xchange Sites from time to time, Labour xchange does not assume any obligation to do so and to the extent permitted by law, disclaims any liability for failing to take any such action.
Note that there are risks, including but not limited to the risk of physical harm, of dealing with strangers, underage persons or people acting under false pretenses. You assume all risks associated with dealing with other users with whom You come in contact through the Labour xchange Sites. By its very nature other people’s information may be offensive, harmful or inaccurate, and in some cases will be mislabeled or deceptively labeled. We expect that You will use caution and common sense when using the Labour xchange Sites.
Because User authentication on the Internet is difficult, Labour xchange cannot and does not confirm that each User is who they claim to be. Because we do not and cannot be involved in User-to-User dealings or control the behavior of participants on any Labour xchange Site, in the event that You have a dispute with one or more Users, You release Labour xchange (and our agents and employees) from claims, demands and damages (actual and consequential and direct and indirect) of every kind and nature, known and unknown, suspected and unsuspected, disclosed and undisclosed, arising out of or in any way connected with such disputes to the fullest extent permitted by law.
The Labour xchange Sites and the Labour xchange Content may contain inaccuracies or typographical errors. Labour xchange makes no representations about the accuracy, reliability, completeness, or timeliness of any Labour xchange Site or the Labour xchange Content. The use of all Labour xchange Sites and the Labour xchange Content is at Your own risk. Changes are periodically made to Labour xchange Sites and may be made at any time. Labour xchange cannot guarantee and does not promise any specific results from use of any Labour xchange Site. No advice or information, whether oral or written, obtained by a User from Labour xchange or through or from any Labour xchange Site shall create any warranty not expressly stated herein.
Labour xchange encourages You to keep a back-up copy of any of Your User Content. To the extent permitted by law, in no event shall Labour xchange be liable for the deletion, loss, or unauthorized modification of any User Content.
If You believe that something on the Site violates these Terms, please contact our designated agent set forth in Section 6 above.
If notified of any content or other materials which allegedly do not conform to these Terms, Labour xchange may in its sole discretion investigate the allegation and determine whether to remove or request the removal of the content. Labour xchange has no liability or responsibility to Users for performance or nonperformance of such activities.
TO THE FULLEST EXTENT POSSIBLE BY LAW, LABOUR XCHANGE DOES NOT WARRANT THAT ANY LABOUR XCHANGE SITE OR ANY LABOUR XCHANGE SERVICES WILL OPERATE ERROR-FREE OR THAT ANY LABOUR XCHANGE SITE AND ITS SERVERS ARE FREE OF COMPUTER VIRUSES OR OTHER HARMFUL MECHANISMS. IF YOUR USE OF ANY LABOUR XCHANGE SITE OR THE LABOUR XCHANGE CONTENT RESULTS IN THE NEED FOR SERVICING OR REPLACING EQUIPMENT OR DATA OR ANY OTHER COSTS, LABOUR XCHANGE IS NOT RESPONSIBLE FOR THOSE COSTS. THE LABOUR XCHANGE SITES AND LABOUR XCHANGE CONTENT ARE PROVIDED ON AN \\\"AS IS\\\" BASIS WITHOUT ANY WARRANTIES OF ANY KIND. LABOUR XCHANGE, TO THE FULLEST EXTENT PERMITTED BY LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTY OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND NON-INFRINGEMENT. LABOUR XCHANGE MAKES NO WARRANTIES ABOUT THE ACCURACY, RELIABILITY, COMPLETENESS, OR TIMELINESS OF THE LABOUR XCHANGE CONTENT, SERVICES, SOFTWARE, TEXT, GRAPHICS, AND LINKS.
TO THE FULLEST EXTENT POSSIBLE BY LAW, IN NO EVENT SHALL LABOUR XCHANGE, ITS SUPPLIERS, OR ANY THIRD PARTIES MENTIONED ON ANY LABOUR XCHANGE SITE BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, INCIDENTAL AND CONSEQUENTIAL DAMAGES, LOST PROFITS, OR DAMAGES RESULTING FROM LOST DATA, LOST EMPLOYMENT OPPORTUNITY OR BUSINESS INTERRUPTION) RESULTING FROM THE USE OR INABILITY TO USE ANY LABOUR XCHANGE SITE AND THE LABOUR XCHANGE CONTENT, WHETHER BASED ON WARRANTY, CONTRACT, TORT, OR ANY OTHER LEGAL THEORY, AND WHETHER OR NOT LABOUR XCHANGE IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
TO THE FULLEST EXTENT POSSIBLE BY LAW, LABOUR XCHANGE\\'S MAXIMUM LIABILITY ARISING OUT OF OR IN CONNECTION WITH ANY LABOUR XCHANGE SITE OR YOUR USE OF THE LABOUR XCHANGE CONTENT, REGARDLESS OF THE CAUSE OF ACTION (WHETHER IN CONTRACT, TORT, BREACH OF WARRANTY OR OTHERWISE), WILL NOT EXCEED £100.
The Labour xchange Sites contain links to third party Web sites. These links are provided solely as a convenience to You and not as an endorsement by Labour xchange of the contents on such third-party Web sites. Labour xchange is not responsible for the content of linked third-party sites and does not make any representations regarding the content or accuracy of materials on such third party Web sites. If You decide to access linked third-party Web sites, you do so at Your own risk.
You agree not to resell or assign Your rights or obligations under these Terms. You also agree not to make any unauthorised commercial use of any Labour xchange Site.
You agree to defend, indemnify, and hold harmless Labour xchange, its affiliates, and their respective officers, directors, employees and agents, from and against any claims, actions or demands, including without limitation reasonable legal and accounting fees, alleging or resulting from (i) any User Content or other material You provide to any Labour xchange Site, (ii) Your use of any Labour xchange Content, or (iii) Your breach of these Terms. Labour xchange shall provide notice to You promptly of any such claim, suit, or proceeding.
Labour xchange makes no claims or representations that the Labour xchange Content may be lawfully viewed or accessed outside of the United Kingdom. Access to the Labour xchange Content may not be legal by certain persons or in certain countries. If You access any Labour xchange Site You do so at Your own risk and are responsible for compliance with the laws of Your jurisdiction.
These Terms are governed by the laws of England and Wales, without respect to its conflict of laws principles. Jurisdiction for any claims arising under this agreement shall lie exclusively within England and Wales. If any provision of these Terms are found to be invalid by any court having competent jurisdiction, the invalidity of such provision shall not affect the validity of the remaining provisions of these Terms, which shall remain in full force and effect. No waiver of any term of these Terms shall be deemed a further or continuing waiver of such term or any other term. In addition, Labour xchange’s failure to enforce any term of these Terms shall not be deemed as a waiver of such term or otherwise affect Labour xchange’s ability to enforce such term at any point in the future. Except as expressly provided in an additional agreement, additional Terms for certain areas of the Labour xchange Sites, a particular \\\"Legal Notice,\\\" or software license or material on particular pages on the Labour xchange Sites, these Terms constitute the entire agreement between You and Labour xchange with respect to the use of the Labour xchange Sites. No changes to these Terms shall be made except by a revised posting on this page.
If You use the Labour xchange Sites through a mobile device, you agree that information about Your use of the Labour xchange Sites through Your mobile device and carrier may be communicated to us, including but not limited to Your mobile carrier, Your mobile device, or Your physical location. In addition, use of the Labour xchange Sites through a mobile device may cause data to be displayed on and through Your mobile device. By accessing the Labour xchange Sites using a mobile device, you represent that to the extent You import any of Your Labour xchange data to Your mobile device that You have authority to share the transferred data with Your mobile carrier or other access provider. In the event You change or deactivate Your mobile account, you must promptly update Your Labour xchange account information to ensure that Your messages are not sent to the person that acquires Your old number and failure to do so is Your responsibility. You acknowledge You are responsible for all charges and necessary permissions related to accessing the Labour xchange Sites through Your mobile access provider. Therefore, you should check with Your provider to find out if the Labour xchange Sites are available and the terms for these services for Your specific mobile devices.
By using any downloadable application to enable Your use of the Labour xchange Sites, you are explicitly confirming Your acceptance of the terms of the End User License Agreement associated with the Application provided at download or installation, or as may be updated from time to time.
These Terms will remain in full force and effect while You are a User of any Labour xchange Site. Labour xchange reserves the right, at its sole discretion, to pursue all of its legal remedies, including but not limited to removal of Your User Content from the Labour xchange Sites and immediate termination of Your registration with or ability to access the Labour xchange Sites and/or any other services provided to You by Labour xchange, upon any breach by You of these Terms or if Labour xchange is unable to verify or authenticate any information You submit to a Labour xchange Site registration. Even after You are no longer a User of the Labour xchange Sites, certain provisions of these Terms will remain in effect, including Sections 1, 2, 5, 7 through 16, inclusive.
We could talk about Labour xchange’s unique technology, our ethical approach or the fact we are endorsed by a TUC affiliated union. We could even mention how we receive weekly fan mail as people love out platform.
But the number one rule of sales is to talk about the benefit for the customer and simply put our approach and technology means you can access more people, who specifically want to work the hours you need working. And this would which gives you a significant advantage over your competition.
There are over 7 million people in the UK who can\\'t work enough hours including the underemployed, parents and carers as they cannot find work that fits around their current commitments.
Labour xchange enables your business to utilise these people\\'s free time, so you get the best staff when required and these hardworking people get additional income that fits in with life.
We integrate the labour xchange platform with your scheduling software so individuals can be booked automatically when a staffing gap appears.
As everyone has already confirmed their availability people can be booked and on premises in under an hour.
Whatever your industry, we have learnt the most important aspect of any business is its people and its ability to deal with changes in demand and/or staff sickness/holidays. We know our new and ethical approach provides access to people that no other recruitment method can.
We work in a variety of sectors and have developed technology that enables us to swiftly adapt to specific industries so why not see if we can help you?
We are also backed by a trade union, charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
Get access to thousands of people local to your operations
Ability to book staff within one hour
Be the good guys, our ethical approach means you will be doing the right thing
Lower costs than any agency
There are over 7 million people in the UK who cannot work enough hours as they cannot find work opportunities that fit around current commitments. Individuals such as the underemployed, parents and carers.
Labour xchange enable your organisation to utilise these people\\'s free time, so you get the best staff as required and these hardworking people get additional income that fits around their life.
We integrate the labour xchange platform with your scheduling software so individuals can be booked automatically when a staffing gap appears.
As everyone has already confirmed their availability people can be booked and on premises in under an hour.
As our approach is radically different we create a win for you and the worker. This ethical model is endorsed and backed by our friends at Community trade union, which means yes you could be the good guys and get the staff you need.
Our cutting edge technology and automated process gives us a substantially lower cost base, which we pass on to you in the form of reduced fees and then to the workers in the form of higher hourly rates.
We are also backed by charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
Covering holidays, sickness and new business in the current employment market is almost impossible for most operations. There just isn’t the people interested in working a few hours every now and then!
What if you knew there are plenty of people who want to cover your operations only you have been looking in the wrong place. Labour xchange works with people excluded from the employment market and can access more people than any other recruitment source.
There are over 7 million people in the UK who can\\'t work enough hours including the underemployed, parents and carers as they cannot find work that fits around their current commitments.
Labour xchange enables your business to utilise these people\\'s free time, so you get the best staff when required and these hardworking people get additional income that fits in with life.
Our approach is simple, by starting with people and asking them when they want to work we can ensure you can access people who genuinely want to work the hours you need working. Happy people, higher productivity and a socially responsible approach, what\\'s not to love?
Unlike other platforms we have used technology to fully automate our processes, which ensures at a touch of button you can book the staff you need to cover sickness, holidays or additional demand.
Furthermore, our technological approach ensures we are extremely cost efficient, the benefits of which are passed on to the worker in the form of higher rates and lower costs to you.
We are also backed by a trade union, charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
We know that there are only so many people who want to carry out final mile delivery work, and it is becoming increasingly difficult to attract these people, right?
Our technological solution targets and attracts people excluded by all other recruitment process and platforms. By working with Labour xchange you can access staff that no one else can!
There are over 7 million people in the UK who can\\'t work enough hours including the underemployed, parents and carers as they cannot find work that fits around their current commitments.
Labour xchange enables your business to utilise these people\\'s free time, so you get the best staff when required and these hardworking people get additional income that fits in with life.
Our approach is simple, by starting with people and asking them when they want to work we can ensure you can access people who genuinely want to work the hours you need working.
Happy people, higher productivity and a socially responsible approach, what\\'s not to love?
Unlike other platforms we have used to technology to fully automate our processes which ensures, at a touch of button, you can book the staff you need to carryout delivery\\'s.
Our technological approach ensures we are extremely cost efficient which is passed on to the worker in the form of higher rates and lower costs to you.
We are also backed by a trade union, charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
For almost every hospitality business the demand peaks at a few hours each and every week. The challenge is in ensuring that there are sufficient staffing to deal with the demand at peak times, especially when there are not enough people who want to work during these busy times.
Labour xchange work with people who specifically want those few extra hours each week; people who are perfectly suited for your busy periods!
There are over 7 million people in the UK who can\\'t work enough hours including the underemployed, parents and carers as they cannot find work that fits around their current commitments.
Labour xchange enables your business to utilise these people\\'s free time, so you get the best staff when required and these hardworking people get additional income that fits in with life.
Our approach is simple, by starting with people and asking them when they want to work we can ensure you can access people who genuinely want to work the hours you need working.
Happy people, higher productivity and a socially responsible approach, what\\'s not to love?
Unlike other platforms we have used to technology to enable people to list the exact hours they want to work, which means at a touch of button you can get the staff you need for those peak times.
Our technological approach ensures we are extremely cost efficient the benefits of which are passed on to the worker in the form of higher rates and lower costs to you.
We are also backed by a trade union, charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
One person can make the difference between getting a lorry out on time or not. So how do you make sure you have adequate cover to keep your operations motoring especially when the local workforce is limited?
Labour xchange work with people who are shut out of the current employment market, so no matter your location we are able to increase the local staffing supply and ensure you have the cover you need!
There are over 7 million people in the UK who can\\'t work enough hours including the underemployed, parents and carers as they cannot find work that fits around their current commitments.
Labour xchange enables your business to utilise these people\\'s free time, so you get the best staff when required and these hardworking people get additional income that fits in with life.
Our approach is simple, by starting with people and asking them when they want to work we can ensure you can access people who genuinely want to work the hours you need working.
Happy people, higher productivity and a socially responsible approach, what\\'s not to love?
In any given location our technological solution can increase the people available to work by a factor of ten. Additionally our technological approach ensures we are highly cost efficient which is passed on to the worker in the form of higher fees and lower costs to you.
We are also backed by a trade union, charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
One person can make the difference between keeping a manufacturing line open or closed. So how do you make sure you have adequate cover to keep all your lines open especially when the local workforce is limited?
Labour xchange work with people who are shut out of the current employment market, no matter your location we are able to increase the local staffing supply and ensure you have the cover you need!
There are over 7 million people in the UK who can\\'t work enough hours including the underemployed, parents and carers as they cannot find work that fits around their current commitments.
Labour xchange enables your business to utilise these people\\'s free time, so you get the best staff when required and these hardworking people get additional income that fits in with life.
Our approach is simple, by starting with people and asking them when they want to work we can ensure you can access people who genuinely want to work the hours you need working.
Happy people, higher productivity and a socially responsible approach, what\\'s not to love?
In any given location our technological solution can increase the people available to work by a factor of ten.
Our technological approach ensures we are extremely cost efficient, the benefits of which are passed on to the worker in the form of higher rates and lower costs to you.
We are also backed by a trade union, charities and social organisations who recognise our approach helps people earn extra income in a way that benefits them.
So by working with Labour xchange not only will you improve your operations but you will be fulfilling your corporate social responsiblity.
{{vm.job.hiringOrganization.name}}
{{vm.job.hiringOrganization.sameAs}}
{{job.hiringOrganization.name}}
{{job.hiringOrganization.sameAs}}
Nice one, keep your eye out for a text or email in the next few days that will detail where and when to work.
A document giving a person’s permanent National Insurance number and name. This could be a : P45, P60,National Insurance card, or a letter from a Government agency AND one of the following documents
A full birth certificate issued in the United Kingdom, which includes the names of the holder’s parents or
A birth certificate issued in the Channel Islands, the Isle of Man or Ireland or
A certificate of registration or naturalisation stating that the holder is a British citizen or
A letter issued by the Home Office which indicates that the person named in it can stay indefinitely in the United Kingdom or has no time limit on their stay or
An Immigration Status Document issued by the Home Office with an endorsement indicating that the person named in it can stay indefinitely in the United Kingdom or has no time limit on their stay or
A letter issued by the Home Office which indicates that the person named in it can stay in the United Kingdom; and this allows them to do the type of work that the employer is offering or
An Immigration Status Document issued by the Home Office with an endorsement indicating that the person named in it can stay in the United Kingdom; and this allows them to do the type of work that the employer is offering.
A work permit or other approval to take employment that has been issued by Work Permits UK
A passport or other travel document endorsed to show that the holder is able to stay in the United Kingdom and can take the work permit employment in question or
A letter issued by the Home Office confirming that the person named in it is able to stay in the United Kingdom and can take the work permit employment in question.
*The following countries are part of the EEA : Austria; Belgium; Denmark; Finland; France; Germany; Greece; Iceland; Ireland; Italy; Liechtenstein; Luxembourg; Netherlands; Norway; Portugal; Spain; Sweden; United Kingdom; Cyprus; Czech Republic; Estonia; Hungary; Latvia; Lithuania; Malta; Poland; Slovakia; Slovenia; Bulgaria and Romania.
There is a registration scheme for nationals of Poland; Latvia; Lithuania; the Czech Republic; Slovakia; Slovenia, Hungary and Estonia.
Nationals from Bulgaria and Romania require work authorisation documents and are restricted in the jobs they can do.
The days/times most searched by employers in your area are :
The process is quite straightfoward:
First: We ask you to answer some simple questions
Second: We ask you to complete an online training package
Finally: We ask you to confirm your agreement to complete a DBS check, once a job is offered to you.
Please use the box below to explain what care and support experience you have.
Experience for this role can be in many forms and not necessarily paid experience, It might have been experience working in a similar role or with vulnerable adults, experience through a work placement, from your personal life, perhaps caring for family members, through volunteering or as part of a traineeship or apprenticeship.
Care Xchange recognise the importance and benefits of training and learning. For this reason, we formed a partnership with Grey Matter Learning, an award-winning online training provider.
Through this platform you can access Grey Matter’s E-Learning system, Click, to complete a range of certified training courses to improve your knowledge, skills and confidence.
Best of all, the training is free of charge and you can undertake training courses at times to suit you, for example the Care Certificate course, which covers the 15 standards for the Care Certificate?
When an individual who needs support for the hours you have listed needs help you will be contacted to arrange a meeting with them.
If both you and them get along they will offer you a role looking after them for an agreed number of hours per week. Before the role can go live you will need to complete a DBS check (at no cost to you), even if you already have one.
Invoice No | Employer | Date | Status | Amount | |
---|---|---|---|---|---|
{{earningshistory.invoiceId}} | {{earningshistory.clientUser.companyProfile.businessName}} | {{earningshistory.startDate| date:\\'dd/MM/yy\\'}} - {{earningshistory.endDate | date:\\'dd/MM/yy\\'}} {{earningshistory.startDate | date:\\'dd/MM/yy\\'}} | {{earningshistory.startDate | date:\\'dd/MM/yy\\'}} - {{earningshistory.endDate | date:\\'dd/MM/yy\\'}} {{earningshistory.startDate | date:\\'dd/MM/yy\\'}} | {{vm.bookingStatus(earningshistory.status)}} | {{earningshistory.invoice.amount | currency: \\'£\\'}} |
Employer | Date | Hour | Status | ||
---|---|---|---|---|---|
{{comingbooking.clientUser.companyProfile.businessName}} | {{comingbooking.startDate | date:\\'dd/MM/yy\\'}} - {{comingbooking.endDate | date:\\'dd/MM/yy\\'}} {{comingbooking.startDate | date:\\'dd/MM/yy\\'}} | {{comingbooking.startDate | date:\\'dd/MM/yy\\'}} - {{comingbooking.endDate | date:\\'dd/MM/yy\\'}} {{comingbooking.startDate | date:\\'dd/MM/yy\\'}} | {{vm.formatDate(comingbooking.startTime) | date:\\'HH:mm\\'}} - {{vm.formatDate(comingbooking.endTime) | date:\\'HH:mm\\'}} {{vm.formatDate(comingbooking.startTime) | date:\\'HH:mm\\'}} | {{vm.bookingStatus(comingbooking.status)}} | Cancel |
Cancelling bookings can affect your star rating, making it harder to find future work
To complete the employment record you need to provide both a copy of your DBS check and a copy of the signed contract
DBS Check requested {{vm.employmentRecord.DBSCheckRequestDate | date : \\'dd/MM/yyyy\\'}}.
Contract offer sent date {{vm.employmentRecord.ContractAndOfferSentDate | date : \\'dd/MM/yyyy\\'}}.
{{vm.listLandingResponse}}
To help us to match you to the right roles and provide some career guidance we need to know a little bit more about you.Below are some questions, some made seem odd but they will help us to better understand what might work for you. There are no right or wrong answers as there is the right role for everyone, be honest and have fun.
Your answers will help us to find you work and suggest career advice and training in the future. We really appreciate your time.
Thanks for your answers, we believe we have something that will fit your personality and hours you have previously selected.
Please select which method you would prefer us to use when communicating with you
Even if you have insurance for your vehicle you will need appropriate insurance to carry out deliveries. If you already have the appropriate insurance please upload a picture of the cover document.
If you do not have such cover do not worry, we recommend that you visit our friends at Zego insurance and arrange cover through them. The good news is that you pay nothing on sign up and you only pay insurance costs for the hours you work, however you will receive compensation for the insurance costs in the form of an increased hourly rate. Once you have signed up please upload a copy of the cover document and we automatically inform Zego to cover you when you are working.
So whenever you are earning you are also insured, a win win right?
Unfortunately to fully register with Labour xchange we need you to upload certain documents which prove your eligibility to work in the UK.
Until these documents are uploaded your profile cannot go live to employers, we will however store your profile for later time when you may be able to upload the documents required.
In addition to a full UK passport we can accept the following documents
For further information please visit the government information site www.gov.ukGreat news we have roles local to you, helping vulnerable people in their own home to stay health and well. What could be more rewarding, especially when it fits the hours you want working, right!
Have you considered becoming a Personal Assistant?
What is a Personal Assistant?
Some disabled or older people may have difficulties that make it challenging to live or perform daily activities. This can mean they need support of someone else to help increase their independence and dignity.
A Personal Assistant is employed directly by one or more individuals to help them with various aspects of their daily lives. It’s not a traditional caring role. Whilst it may involve some personal care, the scope of the role is much broader.
What is a Personal Assistant?
Your tasks may include supporting people:
Don’t worry if you haven’t done this type of work before. If you’re compassionate, hardworking and driven to maximise the health and well-being of others, or if you want to play a key part enabling people to live fulfilled lives and contribute to their community, this could be the ideal role for you!
To find out more about the role of “Being a personal assistant” download the guide here or you could select “Follow the care pathway” below to guide you through the process to discover what exciting opportunities are available to you!
We require you to upload a copy of your DBS certificate, if you have a copy please upload here
If you have not got a DBS we require you to apply for one here *link*. We will refund the full cost of your DBS once you complete your first assignment.
I confirm I have submitted or applied for a DBS certificate
I confirm I have no unspent criminal convictions
Please upload a picture proof of your current address, such as a Utility bill or addressed letter
Please upload a photo of your intended vehicle usage
Eligibility to work in the UK
Please see https://www.gov.uk/legal-right-work-uk for further information
Currently, you are permitted to upload the following file types: jpeg, jpg, png, gif, pdf
* Once you are happy with the passport photo please press submit then proceed to the next page
Other documents to upload/ driving license etc.
Currently, you are permitted to upload the following file types: jpeg, jpg, png, gif, pdf
At Labour Xchange we do not believe in restrictive CV`s, instead we use a 20 second video of you to sell your skills and abilities to prospective employers. A Simple quick and effective way to sell yourself. Although we highly recommend uploading this, you can skip this stage or simply add a photo.
We have contacted the employer below to confirm your possible attendance. Once the booking has been finalised we will send you a confirmation text.
We have contacted the employer below to let them know you have availability to cover the shift. Once the employer comes back we will send you a text message.
Profile not live, eligibility to work documents required
You have skills and abilities that no one else has, there is an employer out there who needs you! At Labour xchange we believe an individuals skills and abilities are more important than qualifications or experience.
Help us to help you by taking the short quiz, it will provide a great in depth analysis of the not only the work that fits you best, but they work that you would most enjoy.
The perfect video should contain three sections
Introduction
Example - Hi my name is Steve I am currently working as a care assistant and have been for the past two months . I am looking to earn some extra money to increase my disposable income
What you are looking for and your key skills
Example - I would like to work in a shop but I open to most types of work. I am very hard working and have always been complimented for my attitude to work. I have a driving license and a food hygiene certificate.
I have a good level of education and I enjoy dealing with people and consider myself a people person
Something only, you would say
Example - I am black belt in judo and I am proud of my achievements thus far. I look forward to working with you and making sure you don`t get tripped up though lack of staff.
You do not need to be an award-winning photographer to take a good photo.
Four points to a good photo
- Get a friend or family member to record the video for you, this will lead to a steadier picture
- Have only your head and neck in frame, making sure the focus is clear.
- Look presentable.
- Smile and have fun.
This is the easiest part, click on the submit photo button below, find where the photo is stored and upload.
We take of the rest, easy peasy!
Click on the link titled “Email video” below. Your email client will then be brought up with our email address pre-populated. Then attach the relevant file and press send.
If your email client doesn`t automatically open, please send to info@labourxchange.uk
The perfect video should contain three sections
Introduction
Example - Hi my name is Steve I am currently working as a care assistant and have been for the past two months . I am looking to earn some extra money to increase my disposable income
What you are looking for and your key skills
Example - I would like to work in a shop but I open to most types of work. I am very hard working and have always been complimented for my attitude to work. I have a driving license and a food hygiene certificate.
I have a good level of education and I enjoy dealing with people and consider myself a people person
Something only, you would say
Example - I am black belt in judo and I am proud of my achievements thus far. I look forward to working with you and making sure you don`t get tripped up though lack of staff.
You do not need to be an Oscar nominee to take a good and effective video.
Five points to a good video
- Get a friend or family member to record the video for you, this will lead to a steadier picture
- Have only your head and neck in frame, making sure the focus is clear.
- Leave 2 seconds from start of recording before you speak, and 2 seconds at the end before you stop recording. This ensures when edited you are not cut off mid-sentence.
- Speak clearly, slowly and precisely with eye contact to camera
- Have a couple of rehearsals and a planned script (see Step 1 what should the video say)
This is the easiest part, click on the submit video button below, find where the video is stored and upload.
We take of the rest, easy peasy!
Click on the link titled “Email video” below. Your email client will then be brought up with our email address pre-populated. Then attach the relevant file and press send.
If your email client doesn`t automatically open, please send to info@labourxchange.uk
A document giving a person’s permanent National Insurance number and name. This could be a: P45, P60,National Insurance card, or a letter from a Government agency AND one of the following documents
A full birth certificate issued in the United Kingdom, which includes the names of the holder’s parents or
A birth certificate issued in the Channel Islands, the Isle of Man or Ireland or
A certificate of registration or naturalisation stating that the holder is a British citizen or
A letter issued by the Home Office which indicates that the person named in it can stay indefinitely in the United Kingdom or has no time limit on their stay or
An Immigration Status Document issued by the Home Office with an endorsement indicating that the person named in it can stay indefinitely in the United Kingdom or has no time limit on their stay or
A letter issued by the Home Office which indicates that the person named in it can stay in the United Kingdom; and this allows them to do the type of work that the employer is offering or
An Immigration Status Document issued by the Home Office with an endorsement indicating that the person named in it can stay in the United Kingdom; and this allows them to do the type of work that the employer is offering.
A work permit or other approval to take employment that has been issued by Work Permits UK
A passport or other travel document endorsed to show that the holder is able to stay in the United Kingdom and can take the work permit employment in question or
A letter issued by the Home Office confirming that the person named in it is able to stay in the United Kingdom and can take the work permit employment in question.
*The following countries are part of the EEA: Austria; Belgium; Denmark; Finland; France; Germany; Greece; Iceland; Ireland; Italy; Liechtenstein; Luxembourg; Netherlands; Norway; Portugal; Spain; Sweden; United Kingdom; Cyprus; Czech Republic; Estonia; Hungary; Latvia; Lithuania; Malta; Poland; Slovakia; Slovenia; Bulgaria and Romania.
There is a registration scheme for nationals of Poland; Latvia; Lithuania; the Czech Republic; Slovakia; Slovenia, Hungary and Estonia.
Nationals from Bulgaria and Romania require work authorisation documents and are restricted in the jobs they can do.
To complete your sign up for Community’s free membership and to get access to their benefits, which could start saving you money straightaway, we’ve got a few more questions:
Community’s rates are based on your total income from work. Paying no more than a fiver a month is a small price to pay for the protection and benefits that Community can offer. Because Community will help you whatever your employment or self-employment, enter your total income below and you’ll be protected for all your jobs:
Estimated gross earnings across all work per year: ENTERS FIGURE
Look up table behind calculates the figure as follows:
When your free membership ends it would cost you just [£X.XX] per month to continue getting access to all Community’s benefits and to continue your protection at work.
If you’ve previously been a member of Community or another union, please tell us here:
Even if you have insurance Just Eat will pay for additional cover from Zego to ensure you have the right cover for the Job.
Please follow the link to the Zego website and setup an account, once you have finished the sign up process please enter your reference code below. Then whenever you are earning you are also insured, a win win right?
The role is delivering food, very locally to you working for Just Eat, all equipment is provided and the commercial insurance costs will also be provided. The rate starts at £10 per hour, all good news so far right!!!
Please confirm the mode of transport you have to deliver for Just Eat
We also need a few more details but it shoudn’t take more than five minutes, and it will be totally worth your while
Unfortunately to fully register with Labour xchange we need you to upload certain documents which prove your eligibility to work in the UK.
Until these documents are uploaded your profile cannot go live to employers, we will however store your profile for later time when you may be able to upload the documents required.
In addition to a full UK passport we can accept the following documents
For further information please visit the government information site www.gov.ukPlease select the times you want to work?
Note: Fields which are marked with * are required fields
In your area looking for people like you!
Note: Fields which are marked with * are required fields
Note: Fields which are marked with * are required fields
At Labour Xchange we think a little differently, we don’t believe in restrictive and plain CV’s. Instead we like to get to know you, and what better way than a short 20 second video where you can sell YOU! 20 seconds for you to use how you like, selling you as a person and prospective new employee.
Although this is not mandatory and you can skip this step, we at Labour Xchange strongly recommend uploading a short video, trust us, you’ll thank us later!
{{vm.fileOnlyUpload}}
Currently, you are permitted to upload the following file types: jpeg, jpg, png, gif
* Once you are happy with the picture/video please press submit then proceed to the next page
Before you attend work, or an interview, you will need to prove your Eligibility to Work in the UK. This is a two part process; you will need to upload a copy of your Eligibility to Work and take the original with you when attending a booking/interview.
Feel free to upload your Eligibility to Work documentation now, or when you get your first booking.
Currently, you are permitted to upload the following file types: jpeg, jpg, png, gif, pdf
* Once you are happy with the passport photo please press submit then proceed to the next page
Our platform will offer you positions on a PAYE, or self employed basis, dependent on work available. You have the ability to accept or refuse each offer of working hours.
Please note: If you accept work on a self employed basis you will be required to provide your own tax arrangements as neither Labour Xchange, or the company making the booking, will be your employer.
Self employment work doesn`t have to be difficult, Community trade union have agreed to provide free support and guidance around this. Community TU are one the Country’s leading unions on Self employment and we pleased to partner with them to support our users.
We have opted you in to receive free self employment support from Community TU. By opting to receive support from Community TU you accept their terms and conditions and authorise us to share your relevant details with them.
We have emailed you a link which confirms and finalises your registration, as soon as you can click on the link and you will be able to fully access your portal and employers can begin to contact you for work.
We require you to upload a copy of your DBS certificate, if you have a copy please upload here
If you have not got a DBS we require you to apply for one here *link*. We will refund the full cost of your DBS once you complete your first assignment.
I confirm I have submitted or applied for a DBS certificate
I confirm I have no unspent criminal convictions
Please upload a picture proof of your current address, such as a Utility bill or addressed letter
Please upload a photo of your intended vehicle usage
Apologies for the inconvenience, we will contact the candidate and come back to you asap ( as per out terms and conditions )
In the meantime if you would like us to arrange a replacement please click on the link below
http/www.kdfdsgg
Invoice No | Candidate | Date | Status | Amout | ||
---|---|---|---|---|---|---|
{{previousBooking.invoiceId}} | {{previousBooking.startDate| date:\\'dd/MM/yyyy\\'}} - {{previousBooking.endDate| date:\\'dd/MM/yyyy\\'}} {{previousBooking.startDate | date :\\'dd/MM/yyyy\\'}} | {{previousBooking.startDate| date:\\'dd/MM/yyyy\\'}} - {{previousBooking.endDate| date:\\'dd/MM/yyyy\\'}} {{previousBooking.startDate| date:\\'dd/MM/yyyy\\'}} | {{vm.bookingStatus(previousBooking.status)}} | {{previousBooking.invoice.amount | currency: \\'£\\'}} | 1\\\" href=\\\"\\\" ng-click=vm.goToReBooking(previousBooking.id)>Re-book |
Invoice No | Candidate | Date | Status | Amout | |||
---|---|---|---|---|---|---|---|
{{upcomingBooking.invoiceId}} | {{upcomingBooking.startDate| date:\\'dd/MM/yyyy\\'}} - {{upcomingBooking.endDate| date:\\'dd/MM/yyyy\\'}} {{upcomingBooking.startDate | date :\\'dd/MM/yyyy\\'}} | {{upcomingBooking.startDate| date:\\'dd/MM/yyyy\\'}} - {{upcomingBooking.endDate| date:\\'dd/MM/yyyy\\'}} {{upcomingBooking.startDate| date:\\'dd/MM/yyyy\\'}} | {{vm.bookingStatus(upcomingBooking.status)}} | {{upcomingBooking.invoice.amount | currency: \\'£\\'}} | Amend/Cancel|Confirm | Amend/Cancel |
To confirm, cancel or amend bookings please use a desktop pc
Previous amount due: £{{vm.confirmedBooking.invoice.amount}}
Please select which method you would prefer us to use when communicating with you
Note: Fields which are marked with * are required fields
We have emailed you a link which confirms and finalises your registration, as soon as you can click on the link and you will be able to fully access your portal, see current booking progress and search for other roles.
Note: Fields which are marked with * are required fields
Get £{{vm.voucher.value}} off your first booking with code:
{{vm.voucher.code}}