{"version":3,"sources":["assets/mainLogo.png","assets/profile-placeholder.jpg","assets/alternativeLogo.png","assets/whiteLogo.png","assets/campus01.jpg","assets/locoSamiCuy.jpeg","assets/fonts/Calibri Regular.ttf","store/session/actions.js","utils/storage.js","utils/session.js","store/session/reducer.js","store/applications/actions.js","store/applications/reducer.js","store/alerts/actions.js","store/alerts/reducer.js","store/messages/actions.js","store/messages/reducer.js","store/reducer.js","api/index.js","store/session/sagas.js","store/messages/sagas.js","store/alerts/sagas.js","store/applications/sagas.js","store/index.js","store/sagas.js","store/alerts/selectors.js","components/user-nav/styles.js","constants/roles.js","components/user-nav/index.js","utils/getAcronym.js","components/header-side-nav/styles.js","components/header-side-nav/listItems.js","components/header-side-nav/languageSelector.js","components/header-side-nav/index.js","components/dialog-header/index.js","components/dialog-header/styles.js","components/checkbox-field/index.js","components/checkbox-field/styles.js","components/select-field/index.js","utils/index.js","components/upload-field/index.js","components/upload-field/styles.js","components/protected-route/index.js","components/confimation-dialog/index.js","components/cards-form/index.js","store/session/selectors.js","components/terms-agreement/index.js","components/terms-agreement/styles.js","components/flex-checkbox-group/index.js","components/flex-checkbox-group/styles.js","components/info-table/index.js","components/info-table/styles.js","components/horizontal-stepper/styles.js","components/horizontal-stepper/mobile-stepper.js","components/horizontal-stepper/index.js","components/alert-snackbar/index.js","components/alert-snackbar/styles.js","screens/login/index.js","screens/login/styles.js","screens/profile/select-adress.js","screens/register/index.js","screens/register/styles.js","screens/recover-password/styles.js","screens/recover-password/recover-password-change.js","utils/b6aToUtf8.js","screens/recover-password/index.js","screens/landing/index.js","screens/landing/styles.js","screens/payment/index.js","screens/redirect/index.js","screens/redirect/styles.js","screens/mobility-in/profile/index.js","screens/foreign-user-auth/index.js","screens/recomendations/styles.js","screens/recomendations/accept-recomendation.js","store/messages/selectors.js","store/applications/selectors.js","components/hoc/withRole.js","utils/navigation.js","screens/calls-list/index.js","screens/calls-list/styles.js","screens/agreements-list/styles.js","screens/agreements-list/agreement-info.js","screens/agreements-list/agreement-consideration.js","screens/agreements-list/index.js","screens/common/student/academic-data/index.js","screens/common/student/academic-data/styles.js","screens/common/student/personal-information/index.js","screens/common/student/agreement-data/index.js","screens/common/student/agreement-data/styles.js","screens/intention-letter/index.js","screens/intention-letter/styles.js","screens/recomendations/ask-recomendation.js","screens/common/mobility-in/alumno-observacion.js","screens/common/mobility-in/upload-document.js","screens/application-info/styles.js","screens/application-info/commitment-act.js","screens/application-info/documentation-row.js","screens/application-info/additional-documentation.js","screens/application-info/requirements.js","screens/common/student/courses-section/index.js","screens/application-info/index.js","screens/interviews/interviews-date.js","screens/interviews/interviews-list.js","screens/interviews/styles.js","screens/interviews/index.js","screens/results/stepper/index.js","screens/results/stepper/styles.js","screens/results/application-results.js","screens/results/styles.js","screens/results/index.js","screens/mobility-in/agreements-list/styles.js","screens/mobility-in/agreements-list/agreement-info.js","screens/mobility-in/agreements-list/index.js","screens/common/mobility-in/foreign-personal-info.js","screens/common/mobility-in/foreign-academic-info.js","screens/common/mobility-in/agreement-data.js","screens/mobility-in/student-postulation/index.js","screens/mobility-in/results/index.js","screens/common/mobility-in/nominee-form.js","screens/common/mobility-in/nominees.js","screens/mobility-in/nomination/index.js","components/multiselect-field/index.js","screens/additional-tasks/styles.js","screens/additional-tasks/task-row.js","screens/additional-tasks/syllabus-row.js","screens/additional-tasks/syllabus.js","screens/additional-tasks/tasks-lists.js","screens/additional-tasks/required-documents.js","screens/mobility-in/summary/index.js","screens/additional-tasks/index.js","navigation/call-router/index.js","screens/profile/styles.js","screens/profile/update.js","screens/profile/change-password.js","screens/profile/index.js","screens/reports/index.js","screens/reports/styles.js","components/custom-toolbar/index.js","components/custom-body-row/index.js","components/custom-select-actions-header/index.js","screens/common/student/agreements-management/styles.js","screens/common/student/agreements-management/agreements-management-form.js","screens/common/student/agreements-management/index.js","screens/calls-management/call-form.js","screens/calls-management/index.js","screens/calls-management/styles.js","screens/agreements-management/styles.js","screens/agreements-management/additional-tasks.js","utils/arrayToExcel.js","screens/agreements-management/courses-dialog.js","utils/fileToBase64.js","screens/agreements-management/agreement-type-form.js","screens/agreements-management/agreement-form.js","screens/agreements-management/index.js","screens/dictum/deliberation.js","screens/dictum/index.js","screens/dictum/styles.js","components/custom-header/index.js","screens/mobility-in/dictum/index.js","screens/mobility-in/applications-management/index.js","screens/common/non-student/approval/index.js","screens/common/non-student/approval/styles.js","screens/common/non-student/director-interview/director-interview-form.js","screens/common/non-student/director-interview/styles.js","screens/common/non-student/director-interview/index.js","screens/out-applications-management/input-cell.js","screens/out-applications-management/index.js","screens/out-applications-management/styles.js","screens/applications-management/index.js","screens/applications-management/styles.js","navigation/app/index.js","navigation/app/styles.js","screens/roles-picker/index.js","screens/roles-picker/styles.js","navigation/index.js","serviceWorker.js","i18n.js","index.js"],"names":["module","exports","NS","TOKEN_LS_NAME","ROLE_LS_NAME","actionTypes","SET_USERINFO","LOGIN_SUCCESS","LOGIN_SUCCESS_FINISHED","LOGOUT_USER","LOGOUT_SUCCESS","FETCH_USER_DATA","SET_MENU","TOKEN_HAS_EXPIRED","GMAIL_LOGOUT","GMAIL_LOGOUT_SUCCESS","actions","fetchUserData","type","loginSuccess","payload","loginSuccessFinished","setMenu","setUserInfo","logoutUser","tokenHasExpired","logoutSuccess","gmailLogout","gmailLogoutSuccess","setInStorage","key","value","serializedValue","JSON","stringify","localStorage","setItem","err","getFromStorage","getItem","parse","removeFromStorage","removeItem","setAuthCookie","sessionToken","document","cookie","removeAuthCookie","split","forEach","eqPos","indexOf","name","substr","initialToken","idRol","initialAccessToken","isAuthenticated","undefined","initialState","role","token","menu","userInfo","autDatosPersonales","accessToken","sessionReducer","state","arguments","length","action","SET_APPLICATION","SET_USER_APPLICATION","SET_STEPPER","REQUEST_APPLICATION","REQUEST_APPLICATION_DATA","REQUEST_STEPPER","SET_ONGOING_AGREEMENT","requestApplicationData","setApplication","setUserApplication","setOngoingAgreement","setStepper","requestApplication","requestStepper","application","userApplication","idUsuario","agreement","basicDetails","extraInformation","callInformation","stepper","applicationsReducer","SET_NOTIFICATIONS","setNotifications","messages","notifications","alertsReducer","FETCH_NOTIFICATIONS","fetchNotifications","messagesReducer","rootReducer","history","combineReducers","router","connectRouter","session","applications","alerts","coreApi","axios","create","baseURL","process","iedApi","ApiRequest","constructor","instance","api","config","getCustomHeaders","this","getCookie","cname","ca","decodeURIComponent","i","c","charAt","substring","at","url","filter","params","post","data","method","options","success","error","self","loading","headers","Promise","resolve","reject","request","then","resp","mensajes","id","isInsert","includes","isUpdate","isDelete","isCancel","store","dispatch","alertsActions","map","msg","epoch","Date","getTime","sessionActions","test","catch","response","responseData","Resource","defaultRequest","functionsIn","func","_len","rest","Array","_key","apply","Academic","Auth","Notifications","Person","MenuCore","Core","MenuApp","NotificationsApp","Applications","Agreements","Calls","Mobility","fetchUserInfo","idEscuela","userInfoResponse","resultado","userInfoResultado","put","replace","fetchMenu","menuResponse","sessionSagas","takeLatest","all","call","push","messagesSagas","alertsSagas","fetchApplicationInfo","callData","idPostulacion","isVirtual","applicationResponse","applicationResultado","fetchStepperInfo","stepperResponse","stepperResultado","applicationSagas","createHashHistory","sagaMiddleware","createSagaMiddleware","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","middlewares","applyMiddleware","routerMiddleware","createStore","reducer","run","applicationsSagas","notificationsSelector","createSelector","theme","ROLE_ESTUDIANTE","ROLE_ESTUDIANTE_EXTRANJERO","ROLE_DOCENTE","ROLE_DRIC","ROLE_ASISTENTE_DRIC","ROLE_DIRECTOR_ESCUELA","ROLE_COORDINADOR_CONVENIO","ROLE_REPRESENTANTE_INTERNACIONALIZACION","ROLE_FREEMOVER","ROLE_PSICOPEDAGOGICO","ROLE_DIRECTOR_GESTION_ACADEMICA","ROLE_DIRECTOR_PREGRADO","MOBILITY_ROLES","STUDENT_ROLES","OUT_ADMIN_ROLES","IN_ADMIN_ROLES","OUT_ROLES","UserNav","React","PureComponent","anchorEl","handleClick","event","setState","currentTarget","handleClose","handleLogout","async","props","render","classes","t","isEmpty","fullName","matches","match","join","slice","getAcronym","nombres","apellidos","isExtranjero","createElement","Fragment","Hidden","smDown","Grid","container","direction","justify","alignItems","item","Typography","component","variant","align","color","className","userName","codigo","escuela","IconButton","onClick","Avatar","alt","src","foto","avatarDefault","avatar","Menu","open","Boolean","onClose","anchorOrigin","vertical","horizontal","transformOrigin","getContentAnchorEl","MenuItem","LogoutIcon","mdUp","userInfoContainer","ExpansionPanel","square","elevation","expanderContainer","ExpansionPanelSummary","expandIcon","ExpandMoreIcon","IconButtonProps","content","expanderTitle","bigAvatar","ExpansionPanelDetails","spacing","xs","closeSessionContainer","Button","mobileLogout","size","fontSize","mapDispatchToProps","withConnect","connect","s","withRouter","withStyles","marginLeft","unit","margin","width","height","palette","secondary","contrastText","fontWeight","paddingRight","textTransform","marginTop","backgroundColor","flexFlow","textAlign","withTranslation","toolbar","toolbarIcon","display","justifyContent","mixins","appBar","zIndex","drawer","transition","transitions","easing","sharp","duration","leavingScreen","appBarShift","enteringScreen","menuButton","marginRight","common","white","menuButtonHidden","logo","flexGrow","logoMobile","position","left","drawerPaper","whiteSpace","backgroundImage","campusBackground","backgroundSize","backgroundPositionX","backgroundRepeat","breakpoints","only","drawerPaperClose","overflowX","up","textLogo","menuItemText","menuItemContainer","navDivider","languageSelect","customSelect","padding","customSelectRoot","borderBottom","menuItem","mapIcons","home","HomeIcon","web","HelpIcon","DocumentIcon","forum","ForumIcon","calendar","CalendarIcon","activity","ActivityIcon","states","StatesIcon","idea","IdeaIcon","search","SearchIcon","cog","SettingsIcon","list","ListIcon","alert","NotificationImportantIcon","suitcase","BriefcaseIcon","airplane","LinkItem","_ref","titulo","to","openDrawer","Icon","icono","ErrorIcon","Tooltip","title","placement","ListItem","button","Link","classNames","pathname","applicationsData","console","log","ListItemIcon","root","ListItemText","primary","primaryTypographyProps","homeNavigation","defaultHome","styles","_ref2","itemHome","find","itemCalls","itemAgreements","itemReports","itemConfig","i18n","language","localLanguage","changeLanguage","FormControl","style","flexDirection","Language","Select","argin","onChange","selectedLanguage","target","input","Input","disableUnderline","inputProps","select","MenuProps","PaperProps","IconComponent","ArrowDropDown","Object","assign","Header","Component","super","handleDrawerOpen","handleDrawerClose","AppBar","Toolbar","disableGutters","aria-label","MenuIcon","logoDefaultWhite","LanguageSelector","Drawer","paper","ChevronLeftIcon","Divider","List","MenuItems","SwipeableDrawer","onOpen","logoWhite","DialogHeader","DialogTitle","disableTypography","closeButton","CloseIcon","defaultProps","right","top","grey","CheckboxField","selected","disabled","keys","useState","useEffect","selectedKeys","values","formControl","option","FormControlLabel","control","Checkbox","checked","label","SelectField","fullWidth","setValue","selectProps","InputLabel","isFunction","fileToBase64","file","reader","FileReader","readAsDataURL","onload","result","onerror","downloadBlob","archivo","nombre","hash","base64","filename","mimeType","fetch","res","arrayBuffer","buf","File","fileDownload","byString","o","a","n","x","getFieldValue","rowData","columnDef","lookup","field","UploadField","maxSize","accept","maxWidth","nombreArchivo","setError","fileMaxsize","buttonProps","CloudUploadIcon","rightIcon","persist","files","newlabel","truncatedLabel","FormHelperText","withSession","location","others","isRedirect","isRecomendacion","isConfiguration","isRecoverPassword","Route","Redirect","confirmationDialog","onConfirm","helperText","Dialog","disableRestoreFocus","WarningIcon","DialogContent","DialogActions","handleConfirm","CardsForm","openVideo","videoId","routeTo","link","description","codVideo","imagen","bind","handleCloseVideo","cards","obj","Card","card","CardActionArea","CardMedia","media","image","CardContent","gutterBottom","CardActions","ModalVideo","channel","youtube","showinfo","autoplay","modestbranding","controls","start","origin","playlist","rel","loop","cc_load_policy","iv_load_policy","isOpen","getSession","usernameSelector","username","roleSelector","TermsAgreement","requiredIds","consentimientos","consentimiento","opcional","idConsentimiento","checkboxsConsentimientos","handleChange","newSubmitValue","every","r","canSubmit","acceptedIds","onAcceptTerms","consentimientosAceptados","autorizacion","shouldComponentUpdate","_nextProps","nextState","isEqual","termsContainer","paragraph","subtitle","ol","href","sessionSelectors","fontStyle","textDecorationLine","paddingLeft","marginBottom","paddingBottom","textJustify","lineHeight","listStyleType","displayError","numberSelectedOptions","minSelectedOptions","maxSelectedOptions","FlexCheckboxGroup","prevState","newValues","newSelectedOptions","selectedOptions","customHelperText","readOnly","FormGroup","sm","InputBase","required","customInput","Number","MAX_SAFE_INTEGER","caretColor","InfoTable","isLoading","labelWidth","tableWrapper","CircularProgress","Table","table","TableBody","row","TableRow","TableCell","scope","tableHeader","background","default","stepperRoot","border","main","overflow","down","stepRoot","flex","stepHorizontal","stepCompleted","cursor","borderColor","stepIconActive","borderRadius","stepLabelRoot","stepLabel","borderStyle","borderWidth","stepLabelContainer","stepIconRoot","stepIconContainer","stepLabelAlternative","stepLabelActive","stepSelected","textDecoration","userSelect","header","mobileStepper","stepperNavBtn","mobileStepperDot","mobileStepperDots","alignSelf","mobileStepperDotActive","textAlternative","mobileStepTitle","transform","TextMobileStepper","activeStep","steps","estado","componentDidMount","activeSteps","step","maxSteps","MobileStepper","classnames","dot","dots","dotActive","nextButton","KeyboardArrowLeft","KeyboardArrowRight","backButton","withTheme","HorizontalStepper","selectedStep","getSelectedStep","active","navigateWithNoRestriction","xsDown","Stepper","connector","index","Step","idStep","e","completed","StepLabel","alternativeLabel","iconContainer","labelContainer","StepIconProps","smUp","getDerivedStateFromProps","prevSelectedStep","AlertSnackbar","reason","componentDidUpdate","prevProps","message","currentEpoch","prevEpoch","descripcion","toUpperCase","Snackbar","alertBox","autoHideDuration","ContentProps","close","flexWrap","info","warning","SignIn","password","apptoken","handleSubmit","preventDefault","get","requestData","ip","roles","loginContainer","md","lg","Paper","ButtonBase","loginRedirection","logoDefault","loginLogo","loginByMail","RightArrowIcon","arrowIcon","onSubmit","TextField","submit","registerContainer","registerLink","loginMobileCollapse","loginMobileCollaspseBtn","boxShadow","paddingTop","SelectAddress","fetchData","codProvincia","codDepartamento","codPais","country","province","department","district","resultadoPaises","nivel","resultadoDepartamentos","idUbigeo","resultadoProvincias","resultadoDistritos","notifyChange","codDistrito","updateDepartments","updateProvinces","updateDistricts","isMobilityIn","Register","genderTypes","documentTypes","tipoDocumento","nroDocumento","apellidoPaterno","apellidoMaterno","sexo","fechaNacimiento","direccion","celular","telefono","emailPersonal","facebook","whatsapp","acceptsUserInformation","institucion","programa","promedio","semestre","accesoCorreo","confirmPassword","handleChangeAddress","address","email","recomendationTitleContainer","registerTitle","registerLogoMobile","registerForm","TableToolbar","textField","DateTimePicker","moment","date","format","registerTitleContainer","form","alertContainer","RecoverPasswordChange","setAlertNotifications","repassword","alertNotifications","CssBaseline","alertsSelectors","b64_to_utf8","str","cleaned","atob","char","charCodeAt","toString","padStart","parseQuery","queryString","query","pairs","pair","RecoverPassword","handleSubmitSuccess","user","usuario","appToken","jsonQuery","String","htmlFor","autoComplete","autoFocus","LandingScreen","openModal","DialogContentText","leftContent","mobileLogoContainer","mobileLogo","rightContent","logoSami","landingBackground","inline","welcomeText","moreInformation","socialLinks","socialLink","FontAwesomeIcon","icon","faTwitterSquare","faFacebookSquare","faPinterestSquare","light","opacity","Payment","RedirectScreen","goToLogin","goToApp","parseInt","rol","MobilityInProfile","haveAcademicInfo","idTipoDocumento","promedioPonderado","personalInfo","academicInfo","correoPersonal","ForeignUserAuth","overflowY","btnAlignment","btnBack","recomendationTitle","recomandationForm","recomendationSubmitBtnUIcon","recomendationLogoMobile","thanksValidation","thanksValidationImg","thanksValidationText","recommendationOptions","AcceptRecomendation","handleCheckboxGroupChange","motivo","explicacion","conformidad","cualidades","cualidadesAdicionales","schoolsList","selectedSchool","selectedRecommendation","ipPayload","idsCualidades","idsCualidadesAdicionales","escuelaProfesor","recomendacion","tipo","invalidLink","qualitiesLabels","finalArray","labelsPayload","idEscuelaAlumno","explicacionError","disableCapitalize","nombreEstudiante","InputProps","emailEstudiante","escuelaAlumno","quality","idCualidad","some","cualidad","convocatoria","convenio","multiline","rows","minLength","maxLength","InputLabelProps","shrink","recomendationOption","SendIcon","getApplications","applicationSelector","documentsManagerOpenSelector","documentsManagerOpen","withRole","WrappedComponent","RoleAware","RoleAwareComponent","hoistNonReactStatics","rootPath","mobilityInNavigateTo","10","15","13","16","11","12","14","CallsList","getStudentColumns","modalidad","hidden","isWidthDown","getForeignStudentColumns","getAdminInColumns","onClickCall","idConvocatoria","applicationsActions","navigateTo","getColumns","calls","tooltip","VisibilityIcon","fechaInicio","fechaFin","columns","ActionsTable","actionsTitle","canSearch","canFilterColumns","canFilter","canPrint","showTitle","canExport","materialTableOptions","paging","withWidth","tabsRoot","tabRoot","tabLabel","selectedTab","universityLogo","unversityCardContainer","universityName","universityDescription","maxHeight","dateFieldsWrapper","AgreementInfo","agreementInfo","pais","idioma","tipoBeca","sitioWeb","Markup","AgreementConsideration","agreementConsideration","AgreementsList","callId","agreementsPayload","agreements","selectedAgreement","idAsociacion","idInstitucionUbigeo","onClickAgreement","becaIndex","findIndex","column","estadoIndex","splice","escuelaIndex","callName","startDate","endDate","tabValue","canApply","onClickRow","isLoadingInfo","infoRef","current","scrollIntoView","idConvenioConvocatoria","idCurso","consideraciones","handleTabChange","renderTitle","idsEscuelas","showEscuela","removable","createRef","onSelect","selectedRow","canSelect","exportFileName","localization","ref","Tabs","indicatorColor","textColor","Tab","0","1","2","descripcionCurso","FormActions","Fab","fabButton","AddIcon","AcademicInformation","loadData","userId","labels","planEstudios","creditosAprobados","rankingPertenece","cursosTercera","amonestaciones","k","val","dataEntry","ponderados","ponderado","ponderadosIndex","componentWillUpdate","academicDataContainer","PersonalInformation","toLowerCase","AgreementData","institutionsPayload","universidades","selectedUniversities","universidad","idUniversidad","universitiesByAssociation","agreementsByCall","selectedOutUniversities","idInstitucion","universidadByCall","opcion","universitiesByCall","newselectedUniversities","optionIndex","handleOutUniversityChange","openConfirmation","_data$universidades","_data$universidades$f","_data$universidades2","selectable","canDeleteAgreement","isOutApplication","hideExtraRows","universidadByCallSize","DeleteIcon","TableHead","convenioInstitucion","isUndefined","universityAgreementSelect","universidadOption","universitySelect","ConfirmationDialog","countWords","trim","potentialWord","IntentionLetter","miPostulacion","idRequisito","newData","letterContent","carta","modificadoFecha","enviado","intervalId","setInterval","updateLetter","actualContent","maxWordsNumber","wordsLeft","sent","componentWillUnmount","clearInterval","spellCheck","bottomIndicators","actionsContainer","actionBtn","childWindow","write","print","PdfIcon","minWidth","AskRecomendation","nombreDocente","emailDocente","recomendationPayload","AlumnoObservacion","alumnoObservacion","handleSave","requirement","observado","renderObservadoInput","isStudent","UploadIdentityDocument","handleFileChange","archivoNombre","updateDate","fecha","supportedRoles","plantilla","nombrePlantilla","DownloadIcon","terms","actionContainer","CommitmentAct","actaFile","fileObject","formato","acta","resultadoCompromise","applicationsSelectors","DocumentationRow","checkValidation","onSave","isValid","handleDelete","onDelete","archivoHash","idDocumentoAdicional","documentationTypes","SaveIcon","AditionalRequirements","forms","additionalDocumention","showAddRow","requirementId","ev","callback","prototype","hasOwnProperty","handleAddRow","ApplicationRequirements","onCheckRequirements","requirements","selectedRequirement","onClickRequirement","showLetter","showRecommendation","commitmentAct","showAdditionalDocumentation","showPhotography","showDocumentCopy","showLanguageDocument","showNotesCertificate","handleShowAdditionalDocumentation","currentIdPostulacion","cellStyle","observacion","CheckIcon","AgendaIcon","TimeIcon","actionsColumnIndex","UploadDocument","AdditionalDocumentation","courses","setCourses","setIsLoading","canEdit","updateSelectedStep","fetchCourses","course","deleteAllCourses","filtering","ApplicationInfo","formRef","reportValidity","updateCanApply","applicationPayload","conformidadProceso","canDelete","AcademicData","CoursesSection","InterviewsDate","idEvaluacion","idPostulante","valueDate","setValueDate","setFieldValue","idCampo","myId","salida","getInterviewDate","InterviewsLists","onClickInterview","interview","googleCalendarLink","interviews","idEntrevista","onLoadData","fechaEntrevista","googleCalendarLinkPost","Interviews","handleLoadData","showNext","InterviewsList","stepContainer","wrapIcon","wrapSuccessIcon","status","ApplicationResults","acceptItem","RequirementsStepper","acceptanceContainer","leftIcon","Results","aceptacionEstudiante","aceptacion","idDictamen","isApt","changeCanAccept","canAccept","mostrarConsentimientos","universitySelected","RadioGroup","Radio","labelPlacement","scroll","linkMallaCurricular","HTMLRender","AgreementsListIn","handleScroll","setTimeout","handleRowClick","handleAgreementClick","activeCall","activeCalls","isInteger","renderContentFromApplication","ongoingAgreement","renderContentFromOngoingAgreement","beca","fromApplication","Postulation","canContinue","reduce","acc","NomineeForm","handleUpdateCourse","newCourseIds","courseIds","courseIndex","courseId","filteredDocumentTypes","doc","_documentTypes$","handleBlur","isSubmitting","institution","modalContent","onBlur","entry","paternalLastname","maternalLastname","birthday","gender","program","average","semester","editable","canEditRow","conformity","withFormikComponent","withFormik","displayName","mapPropsToValues","documentType","setSubmitting","agreementDetails","idCursos","reload","NomineesList","_this","nominees","openNomineeDialog","handleSelect","nominee","showDialog","handleNomineeClose","disableEnforceFocus","Nomination","handleNomineeSelected","nomineeSelected","applicationActions","MultiSelectField","items","disableItems","multiple","renderValue","actionsWrapper","formWrapper","customCells","InputWrapper","renderBefore","renderAfter","DownloadFileButton","DownloadFileIcon","LinkWrapper","_ref3","OpenInNewIcon","TaskRow","handleChangeFile","handleDownload","openNewTab","onSaveSeguro","onSaveObservacion","tipoRequisito","tipoItem","handleSaveObservado","renderAlumnoObservacion","renderObservado","renderPlantilla","renderInputs","ViewIcon","itemsSeleccionados","observaciones","SyllabusRow","parseFileName","nombreSilaboDestino","silaboDestino","idSilabo","escuelaDestino","cursoDestino","Syllabus","syllabi","university","showExtraRow","universidadDestino","silabos","silaboDestinoNombre","cursoOrigen","silaboOrigen","silaboOrigenNombre","handleSubmitSyllabus","TasksLists","tasks","handleClickTask","task","selectedTask","handleSaveSeguro","seguroMedico","seguroMedicoNombre","onClickTask","RequiredDocumentsLists","principal","handleSaveObservacion","Summary","TasksList","AdditionalTasks","CallRouter","handleDialogOpen","openDialog","handleDialogClose","handleNavigation","handleNavigationFromIndex","idx","isUsuarioIn","renderOutRoutes","routerProps","ProtectedRoute","path","renderInRoutes","MobilityInAgreementsList","MobilityInStudentPostulation","MobilityInResults","MobilityInSummary","MobilityInNomination","isExact","prevIsExact","isInAdmin","withSpecificRole","infoTableContainer","tipoDocumentoItems","UpdateProfile","initialData","cleanData","defaults","ChangePassword","alertActions","keysPersonalInformation","keysContactInformation","distrito","getTableData","Profile","contactInfo","handleOpen","dialogIndex","TableLabel","DegreeReport","infoTableData","graduationPromData","promData","formatLegend","totales","totals","sort","b","anio","total_estudiantes","estudiantes_movilidad","total_egresados","reportsContainer","titleMargin","ResponsiveContainer","chartContainer","BarChart","CartesianGrid","strokeDasharray","XAxis","dataKey","YAxis","Legend","formatter","Bar","stackId","fill","LineChart","Line","stroke","withDricRole","MTableToolbar","defaultExportCsv","export","exportAllData","renderData","CsvBuilder","setDelimeter","exportDelimiter","setColumns","addRows","exportFile","exportCsv","exportButtonAnchorEl","columnsButtonAnchorEl","renderSearch","searchFieldAlignment","searchField","searchText","onSearchChanged","placeholder","searchPlaceholder","startAdornment","InputAdornment","searchTooltip","icons","Search","endAdornment","ResetSearch","searchFieldStyle","renderDefaultActions","columnsButton","showColumnsTitle","showColumnsAriaLabel","ViewColumn","addRemoveColumns","col","tableData","onColumnsChanged","exportButton","exportTitle","exportAriaLabel","Export","exportName","components","Actions","isFreeAction","renderSelectedActions","selectedRows","renderActions","showTextRowsSelected","nRowsSelected","highlight","toolbarButtonAlignment","spacer","lighten","text","dark","MTableBodyRow","rotateIconStyle","renderColumns","groupOrder","columnOrder","Cell","di","actionsCellStyle","renderSelectionColumn","checkboxProps","selectionProps","treeDataMaxLevel","stopPropagation","onRowSelected","level","renderDetailPanelColumn","CustomIcon","detailPanel","showDetailPanel","onToggleDetailPanel","DetailPanel","panel","iconButton","animation","openIcon","getStyle","rowStyle","onRowClick","hasAnyEditingRow","selection","endPos","isTreeData","childRows","isTreeExpanded","onTreeExpandChanged","detailPanelColumnAlignment","onEditingCanceled","onEditingApproved","rowProps","hover","panelIndex","isArray","editing","EditRow","mode","Row","colSpan","MTableHeader","renderHeader","sorting","TableSortLabel","orderBy","orderDirection","onOrderChange","headerStyle","renderActionsHeader","renderSelectionHeader","showSelectAllCheckbox","indeterminate","selectedCount","dataCount","onAllSelected","renderDetailPanelColumnCell","hasSelection","actionsHeaderIndex","hasDetailPanel","inputField","AgreementsManagementForm","selectedAgreements","fechaInicioSemestre","editComponent","initialDate","toDate","min","onSelectionChange","updateAgreement","oldData","vacantes","insertAgreements","convenios","agreementData","idConvenioTipoBeca","idConvenio","onEdit","CustomBodyRow","CustomHeader","CustomToolbar","AgreementsManagement","deleteAgreement","handleModalClose","openAgreementDialog","prevIdConvocatoria","currentIdConvocatoria","CallForm","mobilityTypes","callStates","submodalities","callType","callState","deliberationDate","submodalidad","fechaDeliberacion","body","subModalidad","CallsManagement","selectedCall","detailCall","editCall","openCallDialog","deleteCall","handleCallClose","EditIcon","bottomTabsRoot","submitButton","float","universityCardContainer","tableTitle","noMargin","editInput","processData","tiposBeca","tarea","validateParams","handleItemTypeChange","fieldProps","prevColumns","newColumns","forceUpdate","updateTask","idTareaAdicional","idTipoItem","idsTiposBeca","tareasAdicionales","deleteTask","addTask","tipoMovilidad","itemTypes","scholarships","onRowUpdate","onRowAdd","onRowDelete","arrayToExcel","convertArrayToTable","apiArray","fileName","downloadFile","downloadURL","downloadLink","appendChild","download","click","xmlTable","tableBlob","Blob","URL","createObjectURL","createFileUrl","createXMLTable","processType","setOpenConfirmation","selectedAction","setSelectedAction","idTipo","handleToggleCourse","columnsToExport","dataToExport","temp","formatData","UploadIcon","base64Only","AgreementTypeForm","loadingCourses","coursesValues","coursesItems","nombreCurso","formData","richProps","isHTML","schools","escuelas","becas","becasFromBackend","numeroDocumento","RichEditor","CoursesDialog","convertFromRaw","EditorState","Draft","getBottomFormData","dataConvenio","dataCoordinador","dataTareas","idTipoDefault","idRepresentante","tareas","richEditorStyles","customHeaderOne","customHeaderTwo","customHeaderThree","customHeaderFour","customHeaderFive","customHeaderSix","customUnstyled","addStylesToRichEditorState","richEditorState","blockStyleFn","block","getType","stateToHTML","createWithContent","getCurrentContent","AgreementForm","handleChangeSelect","calculateBottomFormsState","tiposConvenio","prevBottomForms","inData","outData","currentBottomTabs","bottomForms","bottomTab","getMatchfromId","array","filterArrayById","outDataConvenio","datosConvenios","outDataCoordinador","coordinador","outDataTareas","inDataConvenio","inDataCoordinador","inDataTareas","handleMultiSelect","tipos","handleAssociationUniversityChange","idUniversidadAsociacion","responsable","renderInfoTab","institutionTypes","FormLabel","idTipoInstitucion","nombreUniversidad","tiposConvenioFromBackend","fechaVencimiento","handleConsiderationsChange","renderConsiderationsTab","renderBottomTabs","tab","renderBottomForm","handleBottomFormDataChange","newFormData","inRef","outRef","nombresRepresentante","apellidoPaternoRepresentante","apellidoMaternoRepresentante","numeroDocumentoRepresentante","tipoDocumentoRepresentante","emailRepresentante","telefonoRepresentante","upperTab","institutions","currentAgreement","editAgreement","Deliberation","deliberationData","optionsPayload","deliberadores","actualDictum","approval","dictamen","Dictum","deliberationPayload","cartaHash","cartaAceptacionNombre","seguroHash","aceptacionUniversidad","dictamenFinal","conformidadDictamen","universities","actualUniversity","studentAcceptance","universityAcceptance","filePermiso","archivoPermisoNombre","archivoPermiso","file64","handleDeliberationChange","cartaAceptacion","group","newOrderDirection","rowSpan","newLocalization","superColumns","showActionsColumn","firstRow","secondRow","visibleColumns","hasSuperColumn","columnIds","columnId","p","deliberacion","ApplicationsManagement","scrollIntoStepper","stepperRef","behavior","applicationType","currentCall","applicationState","myTasks","idTipoValid","isFinite","idConvocatoriaValid","estadoValid","misTareas","onClickApplication","selectedApplicationRow","handleStepNavigation","actionsTableRef","superColumn","isAnotherCall","isAnotherState","myTasksHasChanged","filters","headerProps","MobilityInPostulation","MobilityInDictum","idCalificacion","calificacion","isCalification","puntaje","InputDefault","LightTooltip","shadows","gradeEquivalences","3","DirectorInterviewForm","criterias","recomendaciones","equivalencia","handleCriteriaChange","criterio","idCriterio","valor","minimo","maximo","idCriterios","valores","total","curr","rubrica","totalEquivalence","range","invalid","detailCell","errorText","InfoIcon","infoIcon","wideInput","lastSpacing","verticalAlign","DirectorInterview","InputCell","parseFloat","edit","maxValue","isRK","max","interviewIds","calificationIds","calificationIdsWithIcon","concat","getCalificationRole","getFieldByidEvaluacion","customFilterColumn","term","calificaciones","cartaIntencion","applicationWithTableData","recomendacionDocente","autorizacionNotarial","documentacionAdicional","fontSizeSmall","grade","calificationRole","estudiante","getIcon","selectedApplication","showDirectorInterview","initialApplications","actualRole","showApproval","approvalData","isDictum","newActiveStep","calificationsMap","calification","exportVal","calificationField","rowField","codigoPersona","currentApplication","myApplication","4","8","9","customFilterAndSearch","filterDictamenColumn","filterCellStyle","postulacionContainer","printFormat","customDiv","Approval","directorInterviewContent","callsPayload","actualCall","applicationStatesPayload","applicationStates","actualApplicationState","renderFilters","types","actualType","typesPayload","otherProps","MobilityInManagement","MobilityOutManagement","AppRouter","redirectToHome","fetchMessagesNotifications","messageNotifications","reports","HeaderSideNav","appBarSpacer","not","NotificationMessage","Reports","DricManagement","InManagement","messagesActions","messagesSelectors","tableContainer","h5","RolesPicker","_","AccountIcon","ConnectedRouter","exact","LoginScreen","RegisterScreen","RecoverPasswordScreen","PaymentScreen","isLocalhost","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","use","initReactI18next","init","resources","es","translation","en","lng","fallbackLng","interpolation","escapeValue","react","useSuspense","wait","renderApp","Application","I18nextProvider","MuiThemeProvider","materialTheme","Provider","App","ReactDOM","getElementById","addEventListener","contentType","ready","unregister","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.b2992c27.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/mainLogo.5ab0a2f0.png\";","module.exports = __webpack_public_path__ + \"static/media/profile-placeholder.ba1883b4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/alternativeLogo.7d5f6761.png\";","module.exports = __webpack_public_path__ + \"static/media/whiteLogo.25ad4a5e.png\";","module.exports = __webpack_public_path__ + \"static/media/campus01.b76630b6.jpg\";","module.exports = __webpack_public_path__ + \"static/media/locoSamiCuy.15ce7ec8.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/Calibri Regular.5d7c31b2.ttf\";","const NS = 'MOBILITY_SESSION';\n\nexport const TOKEN_LS_NAME = `${NS}/TOKEN`;\nexport const ROLE_LS_NAME = `${NS}/ROLE`;\nexport const ACCESS_TOKEN_LS_NAME = `${NS}/ACCESS_TOKEN`;\nexport const LANGUAGE = 'LANGUAGE';\n\nexport const actionTypes = {\n SET_USERINFO: `${NS}/SET_USERINFO`,\n LOGIN_SUCCESS: `${NS}/LOGIN_SUCCESS`,\n LOGIN_SUCCESS_FINISHED: `${NS}/LOGIN_SUCCESS_FINISHED`,\n LOGOUT_USER: `${NS}/LOGOUT_USER`,\n LOGOUT_SUCCESS: `${NS}/LOGOUT_SUCCESS`,\n FETCH_USER_DATA: `${NS}/FETCH_USER_DATA`,\n SET_MENU: `${NS}/SET_MENU`,\n TOKEN_HAS_EXPIRED: `${NS}/TOKEN_HAS_EXPIRED`,\n GMAIL_LOGOUT: `${NS}/GMAIL_LOGOUT`,\n GMAIL_LOGOUT_SUCCESS: `${NS}/GMAIL_LOGOUT_SUCCESS`,\n};\n\nconst actions = {\n fetchUserData: () => ({ type: actionTypes.FETCH_USER_DATA }),\n loginSuccess: payload => ({ type: actionTypes.LOGIN_SUCCESS, payload }),\n loginSuccessFinished: payload => ({ type: actionTypes.LOGIN_SUCCESS_FINISHED, payload }),\n setMenu: payload => ({ type: actionTypes.SET_MENU, payload }),\n setUserInfo: payload => ({ type: actionTypes.SET_USERINFO, payload }),\n logoutUser: payload => ({ type: actionTypes.LOGOUT_USER, payload }),\n tokenHasExpired: payload => ({ type: actionTypes.TOKEN_HAS_EXPIRED, payload }),\n logoutSuccess: () => ({ type: actionTypes.LOGOUT_SUCCESS }),\n gmailLogout: () => ({ type: actionTypes.GMAIL_LOGOUT }),\n gmailLogoutSuccess: () => ({ type: actionTypes.GMAIL_LOGOUT_SUCCESS }),\n};\n\nexport default actions;\n","export const setInStorage = (key, value) => {\n try {\n const serializedValue = JSON.stringify(value);\n localStorage.setItem(key, serializedValue);\n } catch (err) {}\n};\n\nexport const getFromStorage = (key) => {\n try {\n const value = localStorage.getItem(key);\n if (value === null) {\n return undefined;\n }\n return JSON.parse(value);\n } catch (err) {\n return undefined;\n }\n};\n\nexport const removeFromStorage = (key) => {\n try {\n localStorage.removeItem(key);\n } catch (err) {}\n};\n","export const setAuthCookie = (sessionToken) => {\n document.cookie = `sessionToken=${sessionToken};`;\n};\n\nexport const removeAuthCookie = () => {\n // remove all cookies\n const cookies = document.cookie.split(';');\n\n cookies.forEach((cookie) => {\n const eqPos = cookie.indexOf('=');\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n });\n};\n","import { actionTypes, TOKEN_LS_NAME, ROLE_LS_NAME, ACCESS_TOKEN_LS_NAME } from './actions';\nimport { getFromStorage } from '../../utils/storage';\nimport { setAuthCookie } from '../../utils/session';\n\nconst initialToken = getFromStorage(TOKEN_LS_NAME);\nconst idRol = getFromStorage(ROLE_LS_NAME);\nconst initialAccessToken = getFromStorage(ACCESS_TOKEN_LS_NAME);\nconst isAuthenticated = initialToken !== undefined && idRol !== undefined;\n\nif (isAuthenticated) {\n setAuthCookie(initialToken);\n}\n\nconst initialState = {\n isAuthenticated,\n role: {\n idRol: idRol || 0,\n },\n token: initialToken || '',\n menu: {},\n userInfo: {\n autDatosPersonales: true,\n },\n accessToken: initialAccessToken || '',\n};\n\nconst sessionReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.SET_USERINFO:\n return {\n ...state,\n userInfo: { ...action.payload },\n };\n case actionTypes.LOGIN_SUCCESS_FINISHED:\n return {\n ...state,\n ...action.payload,\n isAuthenticated: true,\n };\n case actionTypes.LOGOUT_SUCCESS:\n return {\n ...state,\n isAuthenticated: false,\n role: {\n idRol: 0,\n },\n token: '',\n menu: {},\n userInfo: {},\n };\n case actionTypes.SET_MENU:\n return {\n ...state,\n ...action.payload,\n };\n case actionTypes.GMAIL_LOGOUT_SUCCESS:\n return {\n ...state,\n accessToken: '',\n };\n default:\n return state;\n }\n};\n\nexport default sessionReducer;\n","const NS = 'MOBILITY_APPLICATIONS';\n\nexport const actionTypes = {\n SET_APPLICATION: `${NS}/SET_APPLICATION`,\n SET_USER_APPLICATION: `${NS}/SET_USER_APPLICATION`,\n SET_STEPPER: `${NS}/SET_STEPPER`,\n REQUEST_APPLICATION: `${NS}/REQUEST_APPLICATION`,\n REQUEST_APPLICATION_DATA: `${NS}/REQUEST_APPLICATION_DATA`,\n REQUEST_STEPPER: `${NS}/REQUEST_STEPPER`,\n SET_ONGOING_AGREEMENT: `${NS}/SET_ONGOING_AGREEMENT`,\n};\n\nconst actions = {\n requestApplicationData: payload => ({ type: actionTypes.REQUEST_APPLICATION_DATA, payload }),\n setApplication: payload => ({ type: actionTypes.SET_APPLICATION, payload }),\n setUserApplication: payload => ({ type: actionTypes.SET_USER_APPLICATION, payload }),\n setOngoingAgreement: payload => ({ type: actionTypes.SET_ONGOING_AGREEMENT, payload }),\n setStepper: payload => ({ type: actionTypes.SET_STEPPER, payload }),\n requestApplication: payload => ({ type: actionTypes.REQUEST_APPLICATION, payload }),\n requestStepper: payload => ({ type: actionTypes.REQUEST_STEPPER, payload }),\n};\n\nexport default actions;\n","import { actionTypes } from './actions';\n\nconst initialState = {\n application: {},\n // with `agreement` we can keep track of the selected agreement that will be used\n // to create future nominations in MOVILIDAD IN.\n userApplication: {\n idUsuario: 0,\n },\n agreement: {\n basicDetails: {},\n extraInformation: {},\n callInformation: {},\n },\n stepper: [],\n};\n\nconst applicationsReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.SET_APPLICATION:\n return {\n ...state,\n application: { ...action.payload },\n };\n case actionTypes.SET_USER_APPLICATION:\n return {\n ...state,\n userApplication: { ...action.payload },\n };\n case actionTypes.SET_STEPPER:\n return {\n ...state,\n stepper: [...action.payload],\n };\n case actionTypes.SET_ONGOING_AGREEMENT:\n return {\n ...state,\n agreement: {\n basicDetails: { ...action.payload.basicDetails },\n extraInformation: { ...action.payload.extraInformation },\n callInformation: { ...action.payload.callInformation },\n },\n };\n default:\n return state;\n }\n};\n\nexport default applicationsReducer;\n","const NS = 'MOBILITY_ALERTS';\n\nexport const actionTypes = {\n SET_NOTIFICATIONS: `${NS}/SET_NOTIFICATIONS`,\n};\n\nconst actions = {\n setNotifications: messages => ({\n type: actionTypes.SET_NOTIFICATIONS,\n notifications: messages,\n }),\n};\n\nexport default actions;\n","import { actionTypes } from './actions';\n\nconst initialState = {\n notifications: [],\n};\n\nconst alertsReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.SET_NOTIFICATIONS:\n return {\n ...state,\n notifications: action.notifications,\n };\n default:\n return state;\n }\n};\n\nexport default alertsReducer;\n","const NS = 'MOBILITY_MESSAGES';\n\nexport const actionTypes = {\n FETCH_NOTIFICATIONS: `${NS}/FETCH_NOTIFICATIONS`,\n SET_NOTIFICATIONS: `${NS}/SET_NOTIFICATIONS`,\n};\n\nconst actions = {\n setNotifications: notifications => ({\n type: actionTypes.SET_NOTIFICATIONS,\n notifications,\n }),\n fetchNotifications: () => ({ type: actionTypes.FETCH_NOTIFICATIONS }),\n};\n\nexport default actions;\n","import { actionTypes } from './actions';\n\nconst initialState = {\n notifications: [],\n};\n\nconst messagesReducer = (state = initialState, action) => {\n switch (action.type) {\n case actionTypes.SET_NOTIFICATIONS:\n return {\n ...state,\n notifications: action.notifications,\n };\n default:\n return state;\n }\n};\n\nexport default messagesReducer;\n","import { combineReducers } from 'redux';\nimport { connectRouter } from 'connected-react-router';\nimport session from './session/reducer';\nimport applications from './applications/reducer';\nimport alerts from './alerts/reducer';\nimport messages from './messages/reducer';\n\nconst rootReducer = history => combineReducers({\n router: connectRouter(history),\n session,\n applications,\n alerts,\n messages,\n});\n\nexport default rootReducer;\n","import axios from 'axios';\n\nimport { functionsIn } from 'lodash';\n\nimport store from '../store';\nimport alertsActions from '../store/alerts/actions';\nimport sessionActions from '../store/session/actions';\n\n// Axios object created with the core API\nconst coreApi = axios.create({\n baseURL: process.env.REACT_APP_CORE_API_BASE_URL,\n});\n\n// Axios object created with the Mobility API\nconst iedApi = axios.create({\n baseURL: process.env.REACT_APP_IED_API_BASE_URL,\n});\n\n/**\n * ApiRequest is a general purpose class to handle the connection to APIs.\n * By using axios, it establishes the general REST methods so it is possible\n * to perform `POST` operations to the target url.\n *\n * @export\n * @class ApiRequest\n * @category Components\n */\nexport class ApiRequest {\n config = {};\n\n constructor(instance, api) {\n this.config.url = instance.url;\n this.instance = instance;\n this.api = api;\n }\n\n /**\n * Get custom headers for the request interaction process.\n *\n * @memberof ApiRequest\n */\n getCustomHeaders = () => {\n return {\n 'Access-Control-Allow-Origin': '*',\n sessionToken: document.cookie ? this.getCookie('sessionToken') : \"''\",\n };\n }\n\n getCookie = (cname) => {\n const name = cname + \"=\";\n const decodedCookie = decodeURIComponent(document.cookie);\n const ca = decodedCookie.split(';');\n for (let i = 0; i < ca.length; i += 1) {\n let c = ca[i];\n // eslint-disable-next-line\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n // eslint-disable-next-line\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n }\n\n /**\n * Modify the target URL and returns a new instance of `ApiRequest`.\n *\n * @memberof ApiRequest\n */\n at = (url) => {\n this.config.url = `${this.config.url}${url}/`;\n return this;\n };\n\n /**\n * Filter the request by adding query params.\n *\n * @memberof ApiRequest\n */\n filter = (params) => {\n this.config.params = params;\n return this;\n };\n\n /**\n * Perform a `POST` to the target URL.\n */\n post = (data) => {\n this.config.data = data;\n this.config.method = 'post';\n return this.action();\n };\n\n /**\n * Perform a REST `OPTIONS` call to the target URL.\n *\n * @memberof ApiRequest\n */\n options = () => {\n this.config.method = 'options';\n return this.action();\n };\n\n /**\n * Main method.\n * This will be called always and is the one making the actual request.\n * On success, it connects to the store and update the `alerts` reducer.\n *\n * @memberof ApiRequest\n */\n action = (success, error) => {\n const self = this;\n this.instance.loading = true;\n const headers = (this.config.data && this.config.data.headers) || this.getCustomHeaders();\n this.config.headers = headers;\n return new Promise((resolve, reject) => {\n self.api.request(this.config)\n .then((resp) => {\n this.instance.loading = false;\n success && success(resp.data);\n const { mensajes } = resp.data;\n const { id } = mensajes[0];\n if (id === '0') {\n resolve(resp.data);\n const isInsert = this.config.url.includes('insert');\n const isUpdate = this.config.url.includes('update') && !this.config.url.includes('update-intention-letter');\n const isDelete = this.config.url.includes('delete');\n const isCancel = this.config.url.includes('cancel');\n if (isInsert || isUpdate || isDelete || isCancel) {\n // TODO: Find a better way to update components by not using current epoch\n store.dispatch(\n alertsActions.setNotifications(\n mensajes.map((msg) => {\n msg.epoch = new Date().getTime();\n return msg;\n }),\n ),\n );\n }\n } else {\n store.dispatch(\n alertsActions.setNotifications(\n mensajes.map((msg) => {\n msg.epoch = new Date().getTime();\n return msg;\n }),\n ),\n );\n if (id === '2') {\n // Token expired\n store.dispatch(sessionActions.tokenHasExpired());\n reject(mensajes);\n } else if (/\\/insert-person\\//.test(self.config.url)) {\n resolve(resp.data);\n } else {\n reject(mensajes);\n }\n }\n })\n .catch((resp) => {\n if (!resp || !resp.response) {\n this.instance.loading = false;\n reject({});\n } else {\n const responseData = resp.response.data;\n this.instance.loading = false;\n reject(responseData);\n }\n });\n });\n }\n}\n\n/**\n * Resources are created to handle connection to well-known endpoints\n * so it avoids the new to instantiate them every time.\n *\n * @class Resource\n * @category Components\n */\nclass Resource {\n constructor(url, api = iedApi) {\n this.url = url;\n const defaultRequest = new ApiRequest(this.url, api);\n functionsIn(defaultRequest).forEach((func) => {\n // eslint-disable-next-line func-names\n this[func] = function (...rest) {\n return new ApiRequest(this, api)[func].apply(this, rest);\n };\n });\n }\n}\n\nexport const Academic = new Resource('academic/', coreApi);\nexport const Auth = new Resource('auth/', coreApi);\nexport const Notifications = new Resource('notifications/', coreApi);\nexport const Person = new Resource('person/', coreApi);\nexport const MenuCore = new Resource('menu/', coreApi);\nexport const Core = new Resource('core/', coreApi);\n\nexport const MenuApp = new Resource('menu/');\nexport const NotificationsApp = new Resource('notifications/');\nexport const Applications = new Resource('applications/');\nexport const Agreements = new Resource('agreements/');\nexport const Calls = new Resource('calls/');\nexport const Mobility = new Resource('mobility/');\n","import {\n all,\n call,\n put,\n takeLatest,\n} from 'redux-saga/effects';\nimport { push, replace } from 'connected-react-router';\nimport actions, {\n actionTypes,\n TOKEN_LS_NAME,\n ROLE_LS_NAME,\n ACCESS_TOKEN_LS_NAME,\n LANGUAGE,\n} from './actions';\nimport { MenuCore, Person, Auth } from '../../api';\nimport { removeAuthCookie, setAuthCookie } from '../../utils/session';\nimport { removeFromStorage, setInStorage } from '../../utils/storage';\n\nexport function* fetchUserInfo(idEscuela) {\n /*\n Generator which retrieves the User information.\n This info is used in the right uppper side of the application\n */\n const userInfoResponse = yield Person.at('get-user-info').post({ idEscuela });\n const { resultado: userInfoResultado } = userInfoResponse;\n yield put(actions.setUserInfo(userInfoResultado));\n if (!userInfoResultado.autDatosPersonales) {\n yield put(replace('/app/perfil'));\n }\n}\n\nfunction* fetchMenu() {\n /*\n Generator which retrieves the Left Menu in the application\n */\n const menuResponse = yield MenuCore.at('get-menu').post();\n const { resultado: { menu } } = menuResponse;\n yield put(actions.setMenu({ menu }));\n}\n\nfunction* fetchUserData() {\n /*\n This generator will retrieve all the data after the user hase logged in.\n All the tasks here are loaded in parallel.\n */\n yield all([\n call(fetchUserInfo, 0),\n call(fetchMenu),\n ]);\n}\n\nfunction* logoutUser() {\n try {\n yield call(removeFromStorage, TOKEN_LS_NAME);\n yield call(removeFromStorage, ROLE_LS_NAME);\n yield call(removeFromStorage, LANGUAGE);\n yield Auth.at('logout').post({});\n yield call(removeAuthCookie);\n yield put(actions.logoutSuccess());\n yield put(push('/login'));\n } catch (err) {}\n}\n\nfunction* gmailLogout() {\n try {\n yield call(removeFromStorage, ACCESS_TOKEN_LS_NAME);\n yield put(actions.gmailLogoutSuccess());\n } catch (err) {}\n}\n\nfunction* tokenHasExpired() {\n try {\n yield call(removeFromStorage, TOKEN_LS_NAME);\n yield call(removeFromStorage, ROLE_LS_NAME);\n yield call(removeFromStorage, LANGUAGE);\n yield call(removeAuthCookie);\n yield put(actions.logoutSuccess());\n yield put(push('/login'));\n } catch (err) {}\n}\n\nfunction* loginSuccess(action) {\n const { token, role: { idRol }, accessToken } = action.payload;\n yield call(setInStorage, TOKEN_LS_NAME, token);\n yield call(setInStorage, ROLE_LS_NAME, idRol);\n yield call(setInStorage, ACCESS_TOKEN_LS_NAME, accessToken);\n yield call(setAuthCookie, token);\n yield put(actions.loginSuccessFinished(action.payload));\n yield put(push('/app'));\n}\n\nconst sessionSagas = [\n takeLatest(actionTypes.FETCH_USER_DATA, fetchUserData),\n takeLatest(actionTypes.LOGOUT_USER, logoutUser),\n takeLatest(actionTypes.TOKEN_HAS_EXPIRED, tokenHasExpired),\n takeLatest(actionTypes.LOGIN_SUCCESS, loginSuccess),\n takeLatest(actionTypes.GMAIL_LOGOUT, gmailLogout),\n];\n\nexport default sessionSagas;\n","import { put, takeLatest } from 'redux-saga/effects';\nimport actions, { actionTypes } from './actions';\nimport { Notifications } from '../../api';\n\nfunction* fetchNotifications() {\n const payload = yield Notifications.at('get-notifications').post();\n const { resultado: notifications } = payload;\n yield put(actions.setNotifications(notifications));\n}\n\nconst messagesSagas = [\n takeLatest(actionTypes.FETCH_NOTIFICATIONS, fetchNotifications),\n];\n\nexport default messagesSagas;\n","const alertsSagas = [\n];\n\nexport default alertsSagas;\n","import { all, call, put, takeLatest } from 'redux-saga/effects';\nimport { fetchUserInfo } from '../session/sagas';\nimport actions, { actionTypes } from './actions';\n\nimport { MenuApp, Applications } from '../../api';\n\nfunction* fetchApplicationInfo(callData) {\n const { idPostulacion, isVirtual } = callData;\n const applicationResponse = yield Applications.at('get-application').post({\n idPostulacion,\n });\n const { resultado: applicationResultado } = applicationResponse;\n applicationResultado.isVirtual = isVirtual;\n yield put(actions.setApplication(applicationResultado));\n}\n\nfunction* fetchStepperInfo(idPostulacion) {\n const stepperResponse = yield MenuApp.at('get-steps').post({\n idPostulacion: (idPostulacion !== null && idPostulacion !== undefined) ? idPostulacion : 0,\n });\n const { resultado: stepperResultado } = stepperResponse;\n yield put(actions.setStepper(stepperResultado));\n}\n\nfunction* requestStepper(action) {\n const { payload } = action;\n const { idPostulacion } = payload;\n yield call(fetchStepperInfo, idPostulacion);\n}\n\nfunction* requestApplication(action) {\n const { payload } = action;\n const { idEscuela } = payload;\n\n yield all([\n call(fetchUserInfo, idEscuela),\n call(fetchApplicationInfo, payload),\n ]);\n}\n\nfunction* requestApplicationData(action) {\n const { payload } = action;\n yield call(fetchApplicationInfo, payload);\n}\n\nconst applicationSagas = [\n takeLatest(actionTypes.REQUEST_APPLICATION, requestApplication),\n takeLatest(actionTypes.REQUEST_STEPPER, requestStepper),\n takeLatest(actionTypes.REQUEST_APPLICATION_DATA, requestApplicationData),\n];\n\nexport default applicationSagas;\n","import { applyMiddleware, createStore, compose } from 'redux';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { createHashHistory } from 'history';\nimport { routerMiddleware } from 'connected-react-router';\nimport logger from 'redux-logger';\nimport createSagaMiddleware from 'redux-saga';\n\nimport reducer from './reducer';\nimport rootSaga from './sagas';\n\nexport const history = createHashHistory();\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\nconst middlewares = applyMiddleware(\n routerMiddleware(history),\n // Uncomment the next line in dev mode\n // logger,\n sagaMiddleware,\n);\n\nconst initialState = {};\n\nconst store = createStore(\n reducer(history),\n initialState,\n composeEnhancers(middlewares),\n);\n\nsagaMiddleware.run(rootSaga);\n\nexport default store;\n","import { all } from 'redux-saga/effects';\n\nimport sessionSagas from './session/sagas';\nimport messagesSagas from './messages/sagas';\nimport alertsSagas from './alerts/sagas';\nimport applicationsSagas from './applications/sagas';\n\nexport default function* rootSaga() {\n yield all([\n ...sessionSagas,\n ...messagesSagas,\n ...alertsSagas,\n ...applicationsSagas,\n ]);\n}\n","import { createSelector } from 'reselect';\n\nconst getAlerts = store => store.alerts;\n\nconst notificationsSelector = createSelector(\n getAlerts,\n alerts => alerts.notifications,\n);\n\nexport default {\n notificationsSelector,\n};\n","export default theme => ({\n avatar: {\n marginLeft: theme.spacing.unit * 2,\n },\n bigAvatar: {\n margin: '10px auto',\n width: 50,\n height: 50,\n },\n userInfoContainer: {\n margin: '15px 0',\n color: theme.palette.secondary.contrastText,\n },\n userName: {\n fontWeight: 'bold',\n paddingRight: '0 !important',\n },\n mobileLogout: {\n textTransform: 'capitalize',\n fontSize: 12,\n marginTop: theme.spacing.unit,\n },\n expanderContainer: {\n backgroundColor: 'transparent',\n },\n expanderTitle: {\n flexFlow: 'column',\n margin: 0,\n },\n closeSessionContainer: {\n textAlign: 'center',\n },\n});\n","import { indexOf } from 'lodash';\nimport { MOBILITY_ROLES } from '@ucsp/material';\n\nexport const {\n ROLE_ESTUDIANTE,\n ROLE_ESTUDIANTE_EXTRANJERO,\n ROLE_DOCENTE,\n ROLE_DRIC,\n ROLE_ASISTENTE_DRIC,\n ROLE_DIRECTOR_ESCUELA,\n ROLE_COORDINADOR_CONVENIO,\n ROLE_REPRESENTANTE_INTERNACIONALIZACION,\n ROLE_FREEMOVER,\n ROLE_PSICOPEDAGOGICO,\n ROLE_DIRECTOR_GESTION_ACADEMICA,\n ROLE_DIRECTOR_PREGRADO,\n} = MOBILITY_ROLES;\n\nexport const STUDENT_ROLES = [ROLE_ESTUDIANTE, ROLE_ESTUDIANTE_EXTRANJERO];\nexport const OUT_ADMIN_ROLES = [\n ROLE_DRIC,\n ROLE_ASISTENTE_DRIC,\n ROLE_DIRECTOR_ESCUELA,\n ROLE_PSICOPEDAGOGICO,\n ROLE_DIRECTOR_GESTION_ACADEMICA,\n ROLE_DIRECTOR_PREGRADO,\n];\nexport const IN_ADMIN_ROLES = [ROLE_REPRESENTANTE_INTERNACIONALIZACION, ROLE_COORDINADOR_CONVENIO];\nexport const NON_STUDENT_ROLES = [];\nexport const OUT_ROLES = [\n ROLE_ESTUDIANTE,\n ROLE_DOCENTE,\n ROLE_DRIC,\n ROLE_ASISTENTE_DRIC,\n ROLE_DIRECTOR_ESCUELA,\n ROLE_COORDINADOR_CONVENIO,\n ROLE_REPRESENTANTE_INTERNACIONALIZACION,\n ROLE_PSICOPEDAGOGICO,\n ROLE_DIRECTOR_GESTION_ACADEMICA,\n ROLE_DIRECTOR_PREGRADO,\n];\n\n// Checks if is an student role.\nexport const isStudent = role => indexOf(STUDENT_ROLES, role) >= 0;\n\n// Function to create a mocked role given an string username.\nexport const createMockRole = ({ username }) => {\n const role = {\n idUsuario: 0,\n nombre: 'Mocked role',\n };\n switch (username) {\n case 'extranjero':\n role.idRol = ROLE_ESTUDIANTE_EXTRANJERO;\n break;\n case 'dric':\n role.idRol = ROLE_DRIC;\n break;\n case 'directorescuela':\n role.idRol = ROLE_DIRECTOR_ESCUELA;\n break;\n case 'psicologo':\n role.idRol = ROLE_PSICOPEDAGOGICO;\n break;\n case 'representante':\n role.idRol = ROLE_REPRESENTANTE_INTERNACIONALIZACION;\n break;\n default:\n role.idRol = ROLE_ESTUDIANTE;\n break;\n }\n return role;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { isEmpty } from 'lodash';\n\nimport {\n Avatar,\n Grid,\n Typography,\n Hidden,\n IconButton,\n Button,\n Menu,\n MenuItem,\n ExpansionPanel,\n ExpansionPanelSummary,\n ExpansionPanelDetails,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport LogoutIcon from '@material-ui/icons/PowerSettingsNew';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport getAcronym from '../../utils/getAcronym';\nimport sessionActions from '../../store/session/actions';\nimport styles from './styles';\nimport { avatarDefault } from '../../images';\nimport { ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../constants/roles';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component that renders the user information on the top of the screen.\n *\n * @class UserNav\n * @extends {React.PureComponent}\n * @category Components\n */\nclass UserNav extends React.PureComponent {\n /**\n * UserNav state.\n * @type {object}\n * @property {object} anchorEl The DOM element used to set the position of the menu.\n */\n state = {\n anchorEl: null,\n }\n\n // Handles the user click and changes the state.\n handleClick = (event) => {\n this.setState({ anchorEl: event.currentTarget });\n };\n\n // Handles the close action and changes the state.\n handleClose = () => {\n this.setState({ anchorEl: null });\n };\n\n // Handles the logout action.\n handleLogout = async () => {\n this.handleClose();\n const { logoutUser } = this.props;\n logoutUser();\n }\n\n render() {\n const { userInfo, classes, role, t } = this.props;\n const { anchorEl } = this.state;\n\n if (isEmpty(userInfo)) {\n return null;\n }\n\n const firstName = userInfo.nombres ? userInfo.nombres.substr(0, userInfo.nombres.indexOf(' ')) : '';\n const lastName = userInfo.apellidos ? userInfo.apellidos.substr(0, userInfo.apellidos.indexOf(' ')) : '';\n const fullName = getAcronym(`${firstName} ${lastName}`);\n const isExtranjero = role === ROLE_ESTUDIANTE_EXTRANJERO || role === ROLE_FREEMOVER;\n return (\n \n \n \n \n \n {`${userInfo.nombres || ''} ${userInfo.apellidos || ''}`}\n \n {( !isExtranjero && (\n \n {`${t(\"Código\")} ${userInfo.codigo || ''} | ${userInfo.escuela || ''}`}\n \n ))}\n \n \n \n \n \n \n \n \n {t(\"Cerrar sesión\")}\n \n \n \n \n \n \n
\n \n }\n IconButtonProps={{ color: 'inherit' }}\n classes={{\n content: classes.expanderTitle,\n }}\n >\n \n {!userInfo.foto ? fullName : null}\n \n \n {`${userInfo.nombres} ${userInfo.apellidos}`}\n \n \n \n \n \n {(!isExtranjero && (\n \n {`${t(\"Código\")} ${userInfo.codigo || ''}`}\n \n ))}\n \n \n \n {userInfo.escuela}\n \n \n \n \n \n {t(\"Cerrar sesión\")}\n \n \n \n \n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = s => ({\n userInfo: s.session.userInfo,\n role: s.session.role.idRol,\n});\n\nconst mapDispatchToProps = {\n logoutUser: sessionActions.logoutUser,\n};\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\n\nUserNav.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n userInfo: PropTypes.shape({}).isRequired,\n logoutUser: PropTypes.func.isRequired,\n role: PropTypes.number.isRequired,\n};\n\nexport default compose(\n withRouter,\n withConnect,\n withStyles(styles),\n withTranslation()\n)(UserNav);\n","export default function getAcronym(fullName) {\n const matches = fullName.match(/\\b(\\w)/g);\n const acronym = matches ? matches.join('').slice(0, 2) : '';\n return acronym;\n}\n","import { campusBackground } from '../../images';\nconst drawerWidth = 250;\nconst drawerMobileWidth = 300;\n\nexport default theme => ({\n toolbar: {\n paddingRight: 10, // keep right padding when drawer closed\n },\n toolbarIcon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n ...theme.mixins.toolbar,\n },\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n },\n appBarShift: {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n menuButton: {\n marginLeft: 12,\n marginRight: 36,\n color: theme.palette.common.white,\n },\n menuButtonHidden: {\n display: 'none',\n },\n logo: {\n display: 'flex',\n flexGrow: 1,\n },\n logoMobile: {\n position: 'absolute',\n left: 20,\n },\n drawerPaper: {\n position: 'relative',\n whiteSpace: 'nowrap',\n width: drawerWidth,\n backgroundImage: `linear-gradient(rgba(100, 14, 27, 0.8), rgba(100, 14, 27, 0.8)), url(${campusBackground})`,\n backgroundSize: 'cover',\n backgroundPositionX: '66%',\n backgroundRepeat: 'no-repeat',\n [theme.breakpoints.only('xs')]: {\n width: drawerMobileWidth,\n },\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerPaperClose: {\n overflowX: 'hidden',\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n width: theme.spacing.unit * 7,\n [theme.breakpoints.up('sm')]: {\n width: theme.spacing.unit * 9,\n },\n },\n userInfo: {\n marginTop: 30,\n },\n textLogo: {\n fontWeight: 1000,\n flexGrow: 1,\n textAlign: 'right',\n },\n menuItemText: {\n color: theme.palette.secondary.contrastText,\n },\n menuItemContainer: {\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\n },\n },\n navDivider: {\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n width: '100%',\n },\n languageSelect: {\n color: 'white',\n fontSize: 14,\n },\n customSelect: {\n padding: '4px 0 0 0',\n },\n customSelectRoot: {\n display: 'inline-flex',\n borderBottom: 'none',\n alignItems: 'center',\n },\n menuItem: {\n fontSize: 14,\n padding: \"2px 13px\"\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEmpty, find } from 'lodash';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n ListItem,\n ListItemIcon,\n ListItemText,\n Tooltip,\n} from '@material-ui/core';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport SearchIcon from '@material-ui/icons/Search';\nimport HomeIcon from '@material-ui/icons/Home';\nimport NotificationImportantIcon from '@material-ui/icons/NotificationImportant';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport HelpIcon from '@material-ui/icons/Help';\nimport DocumentIcon from '@material-ui/icons/InsertDriveFile';\nimport ForumIcon from '@material-ui/icons/Forum';\nimport CalendarIcon from '@material-ui/icons/CalendarToday';\nimport ActivityIcon from '@material-ui/icons/Toc';\nimport StatesIcon from '@material-ui/icons/TrackChanges';\nimport IdeaIcon from '@material-ui/icons/WbIncandescent';\nimport BriefcaseIcon from '@material-ui/icons/WorkOutline';\nimport ListIcon from '@material-ui/icons/List';\n\nimport { Link } from 'react-router-dom';\n\nimport styles from './styles';\nimport {\n ROLE_ESTUDIANTE,\n ROLE_COORDINADOR_CONVENIO,\n ROLE_REPRESENTANTE_INTERNACIONALIZACION,\n ROLE_ESTUDIANTE_EXTRANJERO,\n ROLE_FREEMOVER,\n} from '../../constants/roles';\nimport { Applications } from '../../api';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\n// Map icons comming from backend to the corresponfing material icon.\nconst mapIcons = {\n home: HomeIcon,\n web: HelpIcon,\n document: DocumentIcon,\n forum: ForumIcon,\n calendar: CalendarIcon,\n activity: ActivityIcon,\n states: StatesIcon,\n idea: IdeaIcon,\n search: SearchIcon,\n cog: SettingsIcon,\n list: ListIcon,\n alert: NotificationImportantIcon,\n suitcase: BriefcaseIcon,\n airplane: CalendarIcon,\n};\n\n// Render a item inside the menu.\nconst LinkItem = ({ item, titulo, to, classes, openDrawer, history, role, autDatosPersonales}) => {\n const Icon = mapIcons[item.icono] || ErrorIcon;\n return (\n \n {\n if (autDatosPersonales) {\n if (role === ROLE_ESTUDIANTE) {\n Applications.at('get-my-applications').post()\n .then((payload) => {\n const { resultado } = payload;\n history.push({\n pathname: to,\n state: {\n applicationsData: resultado,\n },\n });\n }).catch((error) => {\n console.log('Error', error);\n });\n } else {\n history.push({\n pathname: to,\n });\n }\n }\n }}\n >\n \n \n \n \n \n \n );\n};\n\n\n// Handles the redirect to home of each role.\nconst homeNavigation = (role, defaultHome) => {\n switch (role) {\n case ROLE_ESTUDIANTE:\n return defaultHome;\n case ROLE_FREEMOVER:\n return defaultHome;\n case ROLE_ESTUDIANTE_EXTRANJERO:\n return defaultHome;\n case ROLE_COORDINADOR_CONVENIO:\n return defaultHome;\n case ROLE_REPRESENTANTE_INTERNACIONALIZACION:\n return defaultHome;\n default:\n return '/app/administracion';\n }\n};\n\n// Component that handles the rendering of the menu items.\nconst MenuItems = ({\n menu,\n role,\n classes,\n openDrawer,\n application,\n history,\n autDatosPersonales,\n t\n}) => {\n if (isEmpty(menu)) {\n return null;\n }\n const itemHome = find(menu, { titulo: 'Inicio' });\n const itemCalls = find(menu, { titulo: 'Convocatorias' });\n const itemAgreements = find(menu, { titulo: 'Convenios' });\n const itemReports = find(menu, { titulo: 'Tablero' });\n const itemConfig = find(menu, { titulo: 'Configuración' });\n const defaultHome = '/app/convocatoria';\n\n return (\n
\n {itemHome && }\n {itemCalls && }\n {itemAgreements && }\n {itemReports && }\n {itemConfig && }\n
\n );\n};\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles.\n * @property {array} menu Initial menu that comes from backend.\n * @property {number} role Actual user role.\n * @property {bool} openDrawer Handles the opening of the drawer.\n * @property {object} application Data of the user application.\n */\nMenuItems.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n menu: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({})).isRequired, PropTypes.shape({})]),\n role: PropTypes.number.isRequired,\n openDrawer: PropTypes.bool.isRequired,\n application: PropTypes.shape({}).isRequired,\n};\n\nexport default compose(\n connect(s => ({\n menu: s.session.menu,\n role: s.session.role.idRol,\n application: s.applications.application,\n autDatosPersonales: s.session.userInfo.autDatosPersonales,\n })),\n withStyles(styles),\n withTranslation())(MenuItems);\n","import React from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { Select, MenuItem, FormControl, withStyles, Input } from '@material-ui/core';\nimport { compose } from 'redux';\nimport styles from './styles';\nimport { ArrowDropDown, Language } from '@material-ui/icons';\nimport { getFromStorage, setInStorage } from '../../utils/storage';\nimport { LANGUAGE } from '../../store/session/actions';\n\nfunction LanguageSelector({ i18n, classes, language }) {\n const handleChange = (event) => {\n const selectedLanguage = event.target.value;\n setInStorage(LANGUAGE, selectedLanguage)\n i18n.changeLanguage(selectedLanguage);\n };\n\n const localLanguage = getFromStorage(LANGUAGE) \n if (localLanguage !==i18n.language){\n i18n.changeLanguage(localLanguage);\n }\n\n\n return (\n \n \n \n \n );\n}\n\n\nexport default compose(\n withTranslation(),\n withStyles(styles),\n)(LanguageSelector);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n AppBar,\n Toolbar,\n IconButton,\n Grid,\n Drawer,\n List,\n Divider,\n Hidden,\n SwipeableDrawer,\n Typography,\n} from '@material-ui/core';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\n\nimport { logoDefaultWhite, logoWhite } from '../../images';\nimport UserNav from '../user-nav';\nimport MenuItems from './listItems';\nimport styles from './styles';\nimport LanguageSelector from './languageSelector';\nimport { ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER, ROLE_REPRESENTANTE_INTERNACIONALIZACION } from '../../constants/roles';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\n/**\n * Header App component.\n *\n * @class Header\n * @extends {React.Component}\n * @category Components\n */\nclass Header extends React.Component {\n constructor(props) {\n super(props);\n /**\n * Header state.\n * @type {object}\n * @property {bool} openDrawer whether the drawer is open.\n */\n this.state = {\n openDrawer: false,\n };\n }\n\n /**\n * Open the drawer on the left side.\n *\n * @memberof Header\n */\n handleDrawerOpen = () => {\n this.setState({ openDrawer: true });\n };\n\n /**\n * Closes the drawer on the left side.\n *\n * @memberof Header\n */\n handleDrawerClose = () => {\n this.setState({ openDrawer: false });\n };\n\n render() {\n const {\n classes,\n history,\n role\n } = this.props;\n const {\n openDrawer,\n } = this.state;\n const isExtranjero = role === ROLE_ESTUDIANTE_EXTRANJERO || role === ROLE_FREEMOVER || role=== ROLE_REPRESENTANTE_INTERNACIONALIZACION;\n return (\n \n \n \n \n \n \n \n \n UCSP\n \n \n \n
\n \"Universidad\n
\n \n \n \n {isExtranjero &&\n \n \n }\n
\n
\n \n \n \n
\n \n \n \n
\n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\nconst withConnect = connect(s => ({\n role: s.session.role.idRol,\n}));\n\n/**\n * propTypes\n * @property {object} classes Styles to apply.\n */\nHeader.propTypes = {\n classes: PropTypes.shape().isRequired,\n role: PropTypes.number.isRequired,\n};\n\nexport default compose(withConnect, withStyles(styles))(Header);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Typography from '@material-ui/core/Typography';\n\nimport styles from './styles';\n\n/**\n * Component to standarize the header of the modals all over the app.\n *\n * @module DialogHeader\n * @category Components\n */\nfunction DialogHeader(props) {\n const {\n classes,\n title,\n onClose,\n } = props;\n return (\n \n \n {title}\n \n {\n onClose\n ? (\n \n \n \n )\n : null\n }\n \n );\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles.\n * @property {string} title The main title of the header.\n * @property {function} onClose The method to close the current modal.\n */\nDialogHeader.propTypes = {\n classes: PropTypes.shape().isRequired,\n title: PropTypes.string.isRequired,\n onClose: PropTypes.func,\n};\n\nDialogHeader.defaultProps = {\n onClose: () => {},\n};\n\nexport default withStyles(styles)(DialogHeader);\n","export default theme => ({\n closeButton: {\n position: 'absolute',\n right: theme.spacing.unit,\n top: theme.spacing.unit,\n color: theme.palette.grey[500],\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { indexOf } from 'lodash';\nimport {\n FormControl,\n FormControlLabel,\n Checkbox,\n withStyles,\n} from '@material-ui/core';\n\nimport styles from './styles';\n\n/**\n * Checkbox component that allow to create comma separated values. This component uses React hooks.\n *\n * @module CheckboxField\n * @category Components\n */\nconst CheckboxField = ({\n classes,\n options,\n selected,\n onChange,\n disabled,\n}) => {\n const keys = {};\n for (let i = 0; i < options.length; i += 1) {\n keys[options[i][0]] = indexOf(selected, options[i][0]) >= 0;\n }\n const [state, setState] = React.useState(keys);\n\n const handleChange = name => (event) => {\n setState({ ...state, [name]: event.target.checked });\n };\n\n React.useEffect(\n () => {\n const selectedKeys = [];\n for (let i = 0; i < options.length; i += 1) {\n if (state[options[i][0]]) {\n selectedKeys.push(options[i][0]);\n }\n }\n if (onChange !== null) {\n onChange({\n target: {\n values: selectedKeys,\n },\n });\n }\n },\n );\n\n return (\n \n {options.map(option => (\n \n )}\n label={option[1]}\n />\n ))}\n \n );\n};\n\nCheckboxField.defaultProps = {\n selected: [],\n onChange: null,\n disabled: false,\n};\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles.\n * @property {array} options Options that the user can select.\n * @property {array} selected Previuosly selected values.\n * @property {function} onChange The method to change selected values.\n * @property {bool} disabled To render the field in disable mode.\n */\nCheckboxField.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n options: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))).isRequired,\n selected: PropTypes.arrayOf(PropTypes.string),\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n};\n\nexport default withStyles(styles)(CheckboxField);\n","export default () => ({});\n","import React from 'react';\nimport { isFunction } from 'lodash';\nimport PropTypes from 'prop-types';\nimport {\n FormControl,\n Select,\n MenuItem,\n InputLabel,\n} from '@material-ui/core';\n\n\n/**\n * Select Module that allow to create comma separated values.\n *\n * @module SelectField\n * @param {object} props\n * @category Components\n */\nconst SelectField = (props) => {\n const {\n fullWidth,\n label,\n options,\n selected,\n onChange,\n } = props;\n const [value, setValue] = React.useState(selected);\n\n function handleChange(event) {\n setValue(event.target.value);\n if (isFunction(onChange)) {\n onChange(event);\n }\n }\n const selectProps = { ...props };\n delete selectProps.options;\n delete selectProps.selected;\n delete selectProps.label;\n\n return (\n \n { label && (\n {label}\n ) }\n \n {options.map(item => (\n \n {item[1]}\n \n ))}\n \n \n );\n};\n\nSelectField.defaultProps = {\n onChange: null,\n label: '',\n fullWidth: false,\n selected: '',\n};\n\n/**\n * propTypes\n * @property {function} onChange To be called when the user selects an item.\n * @property {string} label Field label.\n * @property {array} options Items to select.\n * @property {bool} fullWidth To change the with of the component.\n * @property {object} selected Items previously selected.\n */\nSelectField.propTypes = {\n onChange: PropTypes.func,\n label: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n ),\n ).isRequired,\n fullWidth: PropTypes.bool,\n selected: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nexport default SelectField;\n","import fileDownload from 'js-file-download';\nimport {\n Core,\n} from '../api';\n\n\nexport function base64ToFile(base64, filename, mimeType) {\n return (fetch(base64)\n .then(res => res.arrayBuffer())\n .then(buf => new File([buf], filename, { type: mimeType }))\n );\n}\n\nexport function fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n}\n\nexport const downloadBlob = async (hash) => {\n const {\n resultado: {\n archivo,\n nombre,\n },\n } = await Core.at('download-blob').post({ hash });\n base64ToFile(archivo).then((file) => {\n fileDownload(file, nombre);\n });\n};\n\nexport const byString = (o, s) => {\n if (!s) {\n return;\n }\n s = s.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n s = s.replace(/^\\./, ''); // strip a leading dot\n const a = s.split('.');\n for (let i = 0, n = a.length; i < n; ++i) {\n const x = a[i];\n if (o && x in o) {\n o = o[x];\n } else {\n return;\n }\n }\n return o;\n};\n\n\nexport const getFieldValue = (rowData, columnDef, lookup = true) => {\n let value = (typeof rowData[columnDef.field] !== 'undefined' ? rowData[columnDef.field] : byString(rowData, columnDef.field));\n if (columnDef.lookup && lookup) {\n value = columnDef.lookup[value];\n }\n\n return value;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n FormHelperText,\n withStyles,\n} from '@material-ui/core';\n\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\n\nimport { fileToBase64 } from '../../utils';\n\nimport styles from './styles';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\nconst defaultMaxSize = 2;\n\n/**\n * Component allows to upload a field. It uses React hooks.\n *\n * @module UploadField\n * @param {object} props\n * @category Components\n */\nconst UploadField = (props) => {\n const { classes, maxSize } = props;\n const {\n accept,\n label,\n onChange,\n maxWidth,\n t\n } = props;\n const [state, setState] = React.useState({\n nombreArchivo: '', archivo: '', label,\n });\n const [error, setError] = React.useState('');\n let fileMaxsize = maxSize ? maxSize : defaultMaxSize;\n const buttonProps = { ...props };\n delete buttonProps.accept;\n delete buttonProps.type;\n delete buttonProps.label;\n delete buttonProps.maxWidth;\n\n const handleChange = (event) => {\n event.persist();\n const nombreArchivo = event.target.value;\n if (event.target.files.length > 0) {\n const file = event.target.files[0];\n if (file.size > fileMaxsize * 1024 * 1024) {\n setError(t(`Error tamaño del archivo`, {size: fileMaxsize}));\n } else {\n setError('');\n const newlabel = event.target.files[0].name;\n const truncatedLabel = newlabel.length > maxWidth ? `${newlabel.substr(0, maxWidth - 3)}...` : newlabel;\n setState({ nombreArchivo, label: truncatedLabel });\n fileToBase64(event.target.files[0]).then((archivo) => {\n onChange({ nombreArchivo: newlabel, archivo });\n });\n }\n } else {\n setState({ nombreArchivo, label: props.label });\n onChange({ nombreArchivo, archivo: '' });\n }\n };\n\n return (\n
\n \n {t(state.label)}\n \n \n \n {error && {error}}\n\n
\n );\n};\n\nUploadField.defaultProps = {\n accept: '',\n maxWidth: 30,\n};\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles.\n * @property {string} accept File extensions to be accepted.\n * @property {string} label Field label.\n * @property {function} onChange To be called when the user uploads a file.\n * @property {number} maxWidth Maximum width of the field.\n */\nUploadField.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n accept: PropTypes.string,\n label: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n maxWidth: PropTypes.number,\n};\n\nexport default compose(withStyles(styles), withTranslation())(UploadField);\n","export default theme => ({\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Redirect, Route } from 'react-router-dom';\n\n/**\n * A PrivateRoute component is intended to make Routes accesible only for\n * logged users.\n *\n * @module ProtectedRoute\n * @param {object} props\n * @category Components\n */\nconst ProtectedRoute = (props) => {\n const {\n isAuthenticated,\n location,\n ...others\n } = props;\n\n const isRedirect = location.pathname.search('redirect') >= 0;\n const isRecomendacion = location.pathname.search('recomendacion') >= 0;\n const isConfiguration = location.pathname.search('configuration') >= 0;\n const isRecoverPassword = location.pathname.search('recover-password') >= 0;\n\n if (!isAuthenticated && !isRedirect && !isRecomendacion && !isRecoverPassword && !isConfiguration && location.pathname!='/login' && location.pathname!='/registro') {\n console.log('Redirijo a /');\n return (\n \n );\n }\n return ;\n};\n\n/**\n * propTypes\n * @property {bool} isAuthenticated Value that comes from the redux store.\n * @property {object} location Object that contains the location of the user inside the app.\n */\nProtectedRoute.propTypes = {\n isAuthenticated: PropTypes.bool.isRequired,\n location: PropTypes.shape({}).isRequired,\n};\n\nconst mapStateToProps = s => ({\n isAuthenticated: s.session.isAuthenticated,\n location: s.router.location,\n});\n\nconst withSession = connect(mapStateToProps);\n\nexport default withSession(ProtectedRoute);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DialogHeader } from '..';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport {\n Dialog,\n DialogContent,\n DialogActions,\n Button,\n withStyles,\n Grid,\n} from '@material-ui/core';\n\n/**\n * Component to handle the confirmation of an action. It renders a modal\n * to ask the user confirmation.\n *\n * @module confirmationDialog\n * @param {object} props\n * @category Components\n */\nfunction confirmationDialog(props) {\n const {\n onConfirm,\n onClose,\n helperText,\n open,\n } = props;\n\n // Handles the confirmation of the user.\n const handleConfirm = () => {\n onConfirm();\n onClose();\n };\n\n return (\n \n \n \n \n \n \n \n Confirmación\n \n \n \n )}\n onClose={onClose}\n />\n \n {`${helperText}`}\n \n \n \n Confirmar\n \n \n \n );\n}\n\n/**\n * propTypes\n * @property {function} onConfirm The method to be call when the user confirms the action.\n * @property {function} onClose The method to be called after the user confirms the action.\n * @property {string} helperText Custom text to be shown inside the modal.\n * @property {bool} open Variable to open the modal.\n */\nconfirmationDialog.propTypes = {\n onConfirm: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n helperText: PropTypes.string,\n open: PropTypes.bool.isRequired,\n};\n\nconfirmationDialog.defaultProps = {\n helperText: 'La acción que va a realizar es irreversible, ¿está seguro de continuar?',\n};\n\nexport default withStyles()(confirmationDialog);\n","import React from 'react';\n\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core/styles';\nimport styles from './styles';\nimport ModalVideo from 'react-modal-video';\n\nimport Card from '@material-ui/core/Card';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\n\n\nclass CardsForm extends React.PureComponent {\n constructor (props) {\n super(props)\n this.state = {\n openVideo: false,\n videoId: '',\n data: [\n {\n title: \"Sami\",\n description: \"Video de presentación de Sami\",\n codVideo: \"8XnOwXx3rw0\",\n type: 'video',\n link: \"http://i.ytimg.com/vi/8XnOwXx3rw0/hqdefault.jpg\",\n imagen: \"http://i.ytimg.com/vi/8XnOwXx3rw0/hqdefault.jpg\",\n }\n ]\n }\n \n this.openVideo = this.openVideo.bind(this);\n this.handleCloseVideo = this.handleCloseVideo.bind(this);\n }\n\n openVideo = videoId => () => {\n this.setState({ videoId: [videoId], openVideo:true });\n }\n handleCloseVideo(){\n this.setState({openVideo:false})\n }\n routeTo = link => () =>{\n window.open(link);\n }\n \n render() {\n const { classes} = this.props;\n const cards = this.state.data.map((obj, i)=>{\n return (\n obj.type=='video' ? (\n
\n \n \n \n \n \n {obj.title}\n \n \n {obj.description}\n \n \n \n \n \n \n \n \n
) : (\n
\n \n \n \n \n \n {obj.title}\n \n \n {obj.description}\n \n \n \n \n \n \n \n \n
))\n }\n \n );\n return (\n \n
\n \n \n
\n
\n {cards}\n
\n
\n
\n );\n }\n}\n\n\nexport default withStyles(styles)(CardsForm);\n","import { createSelector } from 'reselect';\n\nconst getSession = store => store.session;\n\nconst usernameSelector = createSelector(\n getSession,\n session => session.username,\n);\n\nconst roleSelector = createSelector(\n getSession,\n session => session.role.idRol,\n);\n\nexport default {\n usernameSelector,\n roleSelector,\n};\n","\nimport React from 'react';\nimport { isEqual } from 'lodash';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Button, DialogContent, FormControl, Link, Typography } from '@material-ui/core';\nimport CheckboxField from '../checkbox-field';\nimport sessionActions from '../../store/session/actions';\nimport sessionSelectors from '../../store/session/selectors';\n\nimport styles from './styles';\nimport { Person } from '../../api';\nimport { compose } from 'redux';\n\n/*\n Select Module that show the Terms and Agreements model separated values.\n \n @module TermsAgreement\n @param {object} props\n @category Components\n */\n\nclass TermsAgreement extends React.Component {\n\n constructor(props) {\n super(props)\n this.state = {\n canSubmit: false,\n acceptedIds: []\n }\n }\n\n requiredIds = this.props.consentimientos\n .filter(consentimiento => !consentimiento.opcional)\n .map(consentimiento => consentimiento.idConsentimiento)\n\n checkboxsConsentimientos = this.props.consentimientos.map(consentimiento => {\n return [consentimiento.idConsentimiento, `${consentimiento.consentimiento} ${!consentimiento.opcional ? \" *\" : null}`]\n })\n\n shouldComponentUpdate(_nextProps, nextState) {\n if (isEqual(nextState, this.state)) {\n return false;\n }\n return true;\n }\n\n handleChange = (response) => {\n const newSubmitValue = this.requiredIds.every(r => response.target.values.includes(r)) ? true : false;\n this.setState({ canSubmit: newSubmitValue });\n if (this.state.acceptedIds != response.target.values) {\n this.setState({ acceptedIds: response.target.values });\n }\n }\n\n onAcceptTerms = async (values) => {\n const consentimientosAceptados = values.map((value) => {\n return {\n idConsentimiento: value,\n autorizacion: true,\n }\n })\n await Person.at('update-user-authorization').post({\n consentimientos: consentimientosAceptados\n })\n this.props.fetchUserData();\n }\n\n render() {\n const {\n classes,\n } = this.props;\n const { canSubmit, acceptedIds } = this.state;\n\n return (\n \n
\n CONSENTIMIENTO EXPRESO DE USO Y TRATAMIENTO DE DATOS PERSONALES\n LA UNIVERSIDAD CATÓLICA SAN PABLO (en adelante, LA UNIVERSIDAD)\n ubicada en Urb. Campiña Paisajista H-32, Arequipa, en el marco de la Ley N°29733, Ley de Protección de Datos Personales, su reglamento, modificatorias y normas complementarias vigentes, me ha informado que será RESPONSABLE del uso, tratamiento y seguridad de\n los datos personales que voluntariamente le proporciono, los cuales serán tratados para los usos y finalidades que se\n detallan en el presente documento.\n\n I. DE LOS DATOS PERSONALES SUJETOS A TRATAMIENTO\n
\n LA UNIVERSIDAD tratará mis datos personales conforme a la siguiente clasificación:\n
    \n
  1. De carácter identificativo: nombres y apellidos, dirección de correo electrónico, dirección del domicilio, firma, número de teléfono, imagen y voz, tipo y número de documento de identidad, código de alumno, datos de persona de contacto, parentesco de la persona de contacto.
  2. \n
  3. De características personales: Estado civil, fecha y lugar de nacimiento, nacionalidad, sexo, edad, datos académicos, complexión física.
  4. \n
  5. De carácter social: Tópicos de interés.
  6. \n
  7. Datos sensibles: Vida afectiva o familiar, información relativa a la salud física y mental.
  8. \n
\n
\n II. DE LA FINALIDAD\n
\n LA UNIVERSIDAD me ha informado que la finalidad por la que recopila mis datos personales es:\n
    \n
  1. Ejecutar, gestionar y administrar las actividades correspondientes a mi participación en el programa de movilidad estudiantil.
  2. \n
  3. lmacenar mis datos personales en el Banco de Datos denominado \"MOVILIDAD ESTUDIANTIL” con Código de Registro: RNPDP-PJP N°26292, de titularidad de LA UNIVERSIDAD.
  4. \n
  5. Usar, brindar y/o transferir esta información a los proveedores de servicios tecnológicos que contraten con LA UNIVERSIDAD, así como a autoridades y terceros autorizados por ley.
  6. \n
  7. Cumplir con fines estadísticos e históricos para LA UNIVERSIDAD.
  8. \n
  9. Brindar y/o transferir mis datos personales de carácter académico relacionados a mi rendimiento académico contenidos en el banco de datos mencionado en el punto (b) del presente subtítulo, a mi universidad de origen.
  10. \n
  11. Usar, brindar y/o transferir esta información para dar cumplimiento a las obligaciones y/o requerimientos que se generen en virtud de las normas vigentes en el ordenamiento jurídico peruano, incluyendo, las del sistema de prevención de lavado de activos y financiamiento del terrorismo y normas prudenciales.
  12. \n
  13. Efectuar invitaciones para el llenado de encuestas sobre los servicios educativos que brinda LA UNIVERSIDAD para fines estadísticos.
  14. \n
\n
\n III. DE\tLOS\tDERECHOS\tDE\tACCESO\tRECTIFICACIÓN\tCANCELACIÓN\tY OPOSICIÓN ARCO\n \n LA UNIVERSIDAD me ha informado que podré ejercer mis derechos de Acceso, Rectificación, Cancelación y Oposición a través de la siguiente página https://ucsp.edu.pe/solicitud-de-derechos-arco/ y/o a través de cualquiera de los canales establecidos en la página web de LA UNIVERSIDAD.\n \n IV. TRANSFERENCIA Y ENCARGO DE TRATAMIENTO DE DATOS PERSONALES\n \n LA UNIVERSIDAD podrá transferir mis datos personales dentro del territorio nacional y en el extranjero, por cualquier medio, a sus subsidiarias, personas jurídicas vinculadas, a sus proveedores de servicios, sean personas naturales o jurídicas, con la finalidad de dar cumplimiento a las actividades mencionadas en el punto II. LA FINALIDAD. La relación de tales personas podrá ser consultada en la página https://ucsp.edu.pe/vive-san-pablo/universidad/transparencia/terceros-vinculados-en-el-tratamiento-de-datos-personales-de-la-ucsp/.\n \n V. DE LA NEGATIVA AL TRATAMIENTO O NEGATIVA A BRINDAR EL CONSENTIMIENTO\n \n LA UNIVERSIDAD me ha informado que de no prestar mi consentimiento no podrá almacenar mis datos personales ni cumplir con las finalidades enunciadas en el presente consentimiento, asimismo, LA UNIVERSIDAD me ha informado que cualquier otra finalidad no indispensable a las expuestas en el presente documento serán autorizadas por mi persona de manera libre e independiente.\n \n VI. DEL PLAZO DEL TRATAMIENTO DE DATOS PERSONALES\n \n Mis datos personales serán tratados por un lapso de tiempo indeterminado, o hasta que comunique a LA UNIVERSIDAD por los medios formales indicados en el presente consentimiento, a través del uso de mis derechos ARCO mi desistimiento al tratamiento.\n \n \n En señal de conformidad con lo antes expuesto, suscribo el presente “Consentimiento expreso de uso y tratamiento de datos personales” por propia voluntad.\n \n
\n \n \n \n \n
\n );\n }\n}\n\nconst mapDispatchToProps = {\n fetchUserData: sessionActions.fetchUserData,\n};\n\nconst withConnect = connect(s => ({\n role: sessionSelectors.roleSelector(s),\n consentimientos: s.session.userInfo.consentimientos\n}), mapDispatchToProps);\n\nexport default compose(\n withConnect,\n withStyles(styles)\n)(TermsAgreement);\n","export default theme => ({\n subtitle: {\n fontStyle: 'italic',\n textDecorationLine: 'underline',\n paddingLeft: 20,\n marginBottom: 20\n },\n paragraph: {\n fontStyle: 'italic',\n paddingBottom: 40,\n color: '#333',\n textAlign: 'justify',\n textJustify: 'inter-word',\n fontSize: '0.875rem',\n fontWeight: 400,\n lineHeight: 1.5\n },\n ol: {\n listStyleType: 'lower-alpha',\n marginBottom: 0\n },\n termsContainer: {\n margin: \"30px 30px 0 30px\"\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n FormControl,\n FormGroup,\n FormControlLabel,\n Checkbox,\n FormHelperText,\n withStyles,\n InputBase,\n Grid,\n} from '@material-ui/core';\nimport isFunction from 'lodash.isfunction';\nimport styles from './styles';\n\nfunction displayError(numberSelectedOptions, minSelectedOptions, maxSelectedOptions) {\n if (numberSelectedOptions < minSelectedOptions || numberSelectedOptions > maxSelectedOptions) {\n return true;\n }\n return false;\n}\n\n/**\n * Component to handle a group of checkboxes with a set of options.\n * - It can recieve a minimum number of options that MUST be selected.\n * - It can recieve a maximum number of options that can be selected.\n * - It shows an error when the number of selected options is out of\n * the boundaries defined by min and max number of options.\n * - It does not show an error if any restriction is recieved or if\n * the number of selected options is inside the boundaries defined\n * by min and max number of options.\n * - If the recieved min and max number of options are equal (n), it\n * shows an error when the number of selected options is not\n * exactly n.\n * @class FlexCheckboxGroup\n * @extends {React.Component}\n */\nclass FlexCheckboxGroup extends React.Component {\n constructor(props) {\n super(props);\n // Initializing the selectedOptions\n const selectedOptions = props.values.filter(value => value.value).map(value => value.id);\n /**\n * FlexCheckboxGroup state.\n * @type {object}\n * @property {array} values\n * @property {bool} error\n * @property {array} selectedOptions\n */\n this.state = {\n values: props.values,\n error: displayError(\n selectedOptions.length,\n props.minSelectedOptions,\n props.maxSelectedOptions,\n ),\n selectedOptions,\n };\n }\n\n /**\n * Handles the change of every checkbox\n * - It verifies if there is an error\n * - It calls onChange func given by props\n * - It changes the state\n * @memberof FlexCheckboxGroup\n */\n handleChange = id => (event) => {\n const { checked } = event.target;\n const { onChange, maxSelectedOptions, minSelectedOptions } = this.props;\n this.setState((prevState) => {\n const newValues = prevState.values.map((value) => {\n if (value.id === id) {\n return { ...value, value: checked };\n }\n return value;\n });\n let newSelectedOptions;\n if (checked) {\n newSelectedOptions = prevState.selectedOptions;\n newSelectedOptions.push(id);\n } else {\n newSelectedOptions = prevState.selectedOptions.filter(item => item !== id && item);\n }\n if (isFunction(onChange)) onChange(newSelectedOptions);\n return {\n values: newValues,\n selectedOptions: newSelectedOptions,\n error: displayError(newSelectedOptions.length, minSelectedOptions, maxSelectedOptions),\n };\n });\n }\n\n /**\n * Handles the rendering of the component\n * @memberof FlexCheckboxGroup\n */\n render() {\n const { classes, maxSelectedOptions, customHelperText, readOnly } = this.props;\n const { values, error } = this.state;\n\n return (\n \n \n \n \n \n {values.map(value => (\n \n }\n label={value.label}\n />\n \n ))}\n \n \n {error && (\n \n \n {customHelperText.length > 0\n ? customHelperText\n : `Seleccione ${maxSelectedOptions} elementos`}\n \n \n \n )}\n \n \n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n * @property {array} values Each object must be of the form:\n * {id: number, label: string, value: bool}\n * @property {function} onChange Function to be called when a checkbox value changed\n * @property {number} maxSelectedOptions Maximum number of options that can be selected\n * @property {number} minSelectedOptions Minimum number of options that MUST be selected\n */\nFlexCheckboxGroup.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n values: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n onChange: PropTypes.func.isRequired,\n maxSelectedOptions: PropTypes.number,\n minSelectedOptions: PropTypes.number,\n customHelperText: PropTypes.string,\n};\n\nFlexCheckboxGroup.defaultProps = {\n maxSelectedOptions: Number.MAX_SAFE_INTEGER,\n minSelectedOptions: 0,\n customHelperText: '',\n};\n\nexport default withStyles(styles)(FlexCheckboxGroup);\n","export default theme => ({\n customInput: {\n caretColor: 'transparent',\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport {\n CircularProgress,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Grid,\n} from '@material-ui/core';\n\nimport styles from './styles';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component to display a table with no interaction. The layout\n * for this component uses only two columns, with the first column\n * showing the label and the second one showing the desired value.\n */\nconst InfoTable = ({ classes, data, isLoading, height, labelWidth, t }) => (\n
\n { isLoading ? (\n 0) && { height }}>\n \n \n \n \n ) : (\n \n \n {data.map((row, id) => (\n \n \n {t(row.label)}\n \n \n {row.value}\n \n \n ))}\n \n
\n ) }\n\n
\n);\n\nInfoTable.defaultProps = {\n isLoading: false,\n height: 0,\n labelWidth: 40,\n};\n\n/**\n * propTypes\n * @property {object} classes Styles to apply to the component.\n * @property {array} data Data to display in the table.\n */\nInfoTable.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n data: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n isLoading: PropTypes.bool,\n height: PropTypes.number,\n labelWidth: PropTypes.number,\n};\n\nexport default compose(withStyles(styles), withTranslation())(InfoTable);\n","export default theme => ({\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n overflowX: 'auto',\n },\n row: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.background.default,\n },\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n tableHeader: {\n color: 'rgba(0, 0, 0, 0.54)',\n fontSize: '0.75rem',\n fontWeight: 'bold',\n },\n});\n","const desktopHeight = 40;\nconst mobileHeight = 60;\n\nexport default (theme) => ({\n stepperRoot: {\n backgroundColor: 'transparent',\n padding: 0,\n margin: [[24, 0]],\n border: `1px solid ${theme.palette.primary.main}`,\n overflow: 'hidden',\n [theme.breakpoints.only('xs')]: {\n paddingLeft: 0,\n paddingRight: 0,\n overflow: 'auto',\n margin: 0,\n },\n '&::before, &::after': {\n content: '\"\"',\n width: 20,\n backgroundColor: theme.palette.primary.main,\n zIndex: 0,\n height: desktopHeight,\n [theme.breakpoints.down('sm')]: {\n height: mobileHeight,\n },\n [theme.breakpoints.only('xs')]: {\n width: 0,\n },\n },\n },\n stepRoot: {\n display: 'flex',\n flex: 1,\n height: desktopHeight,\n [theme.breakpoints.down('sm')]: {\n height: mobileHeight,\n },\n },\n stepHorizontal: {\n paddingLeft: 0,\n paddingRight: 21,\n },\n stepCompleted: {\n cursor: 'pointer',\n background: theme.palette.primary.main,\n '& $stepLabel': {\n color: theme.palette.primary.contrastText,\n '&::before': {\n borderColor: `transparent ${theme.palette.background.default}`,\n },\n '&::after': {\n borderColor: `transparent ${theme.palette.primary.main}`,\n },\n },\n '& $stepIconRoot': {\n color: theme.palette.primary.contrastText,\n },\n },\n stepIconActive: {\n border: `1px solid ${theme.palette.primary.contrastText}`,\n borderRadius: '50%',\n },\n stepLabelRoot: {\n position: 'relative',\n width: '100%',\n zIndex: 0,\n justifyContent: 'center',\n },\n stepLabel: {\n color: theme.palette.primary.main,\n [theme.breakpoints.down('sm')]: {\n fontSize: 10,\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n borderStyle: 'solid',\n borderWidth: '21px 0 21px 20px',\n borderColor: `transparent ${theme.palette.primary.main}`,\n display: 'block',\n width: 0,\n zIndex: 0,\n right: -21,\n top: -1,\n [theme.breakpoints.down('sm')]: {\n borderWidth: `${mobileHeight / 2 + 1}px 0 ${mobileHeight / 2 + 1}px 20px`,\n },\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n borderStyle: 'solid',\n borderColor: `transparent ${theme.palette.background.default}`,\n display: 'block',\n width: 0,\n zIndex: 1,\n right: -20,\n top: -1,\n borderWidth: '21px 0 21px 20px',\n [theme.breakpoints.down('sm')]: {\n borderWidth: `${mobileHeight / 2 + 1}px 0 ${mobileHeight / 2 + 1}px 20px`,\n },\n },\n },\n stepLabelContainer: {\n zIndex: 0,\n width: 'auto',\n },\n stepIconRoot: {\n color: theme.palette.primary.main,\n [theme.breakpoints.down('sm')]: {\n height: 20,\n width: 20,\n },\n },\n stepIconContainer: {\n zIndex: 1,\n [theme.breakpoints.only('xs')]: {\n height: 18,\n width: 18,\n },\n [theme.breakpoints.only('sm')]: {\n height: 24,\n width: 24,\n },\n },\n stepLabelAlternative: {\n [theme.breakpoints.down('sm')]: {\n marginTop: '0 !important',\n },\n },\n stepLabelActive: {\n color: `${theme.palette.primary.contrastText} !important`,\n cursor: 'pointer',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 'auto',\n width: '100%',\n zIndex: -1,\n backgroundColor: theme.palette.primary.main,\n border: 'none',\n height: desktopHeight,\n cursor: 'pointer',\n [theme.breakpoints.down('sm')]: {\n height: mobileHeight,\n },\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n borderStyle: 'solid',\n borderColor: `transparent ${theme.palette.primary.main}`,\n display: 'block',\n width: 0,\n zIndex: 1,\n right: -15,\n top: 0,\n borderWidth: '20px 0 20px 15px',\n [theme.breakpoints.down('sm')]: {\n borderWidth: `${mobileHeight / 2}px 0 ${mobileHeight / 2}px 15px`,\n },\n },\n },\n stepSelected: {\n fontWeight: 'bold !important',\n textDecoration: 'underline',\n userSelect: 'none',\n },\n /**\n * Mobile Stepper styles\n */\n\n header: {\n display: 'flex',\n alignItems: 'center',\n height: 50,\n paddingLeft: theme.spacing.unit * 4,\n },\n mobileStepper: {\n backgroundColor: 'rgba(3, 47, 83, 0.8)',\n },\n stepperNavBtn: {\n color: theme.palette.primary.contrastText,\n },\n mobileStepperDot: {\n backgroundColor: 'white',\n },\n mobileStepperDots: {\n alignSelf: 'flex-end',\n },\n mobileStepperDotActive: {\n backgroundColor: theme.palette.textAlternative.main,\n },\n mobileStepTitle: {\n position: 'absolute',\n left: '50%',\n top: 2,\n transform: 'translateX(-50%)',\n color: theme.palette.primary.contrastText,\n },\n '@global': {\n main: {\n paddingBottom: `${theme.spacing.unit * 7}px !important`,\n },\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classnames from 'classnames';\nimport MobileStepper from '@material-ui/core/MobileStepper';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\n\nimport styles from './styles';\n\nclass TextMobileStepper extends React.Component {\n state = {\n activeStep: 0,\n };\n\n componentDidMount () {\n const { steps } = this.props;\n const activeSteps = steps.filter(step => step.estado === true);\n const activeStep = activeSteps.length > 0 ? activeSteps.length - 1 : 0;\n this.setState({\n activeStep,\n });\n }\n\n handleClick = direction => () => {\n const { onClick, steps } = this.props;\n const { activeStep } = this.state;\n switch (direction) {\n case 'next':\n if (steps.length - 1 > activeStep) {\n const futureStep = steps[activeStep + 1];\n if (futureStep.estado) {\n this.setState(prevState => ({\n activeStep: prevState.activeStep + 1,\n }), () => {\n const { activeStep } = this.state;\n onClick(steps[activeStep]);\n });\n }\n }\n break;\n case 'back':\n if (activeStep > 0) {\n const futureStep = steps[activeStep - 1];\n if (futureStep.estado) {\n this.setState(prevState => ({\n activeStep: prevState.activeStep - 1,\n }), () => {\n const { activeStep } = this.state;\n onClick(steps[activeStep]);\n });\n }\n }\n break;\n default:\n return;\n }\n }\n\n render() {\n const { classes, theme, steps } = this.props;\n const { activeStep } = this.state;\n const maxSteps = steps.length;\n return (\n \n \n Sig.\n {theme.direction === 'rtl' ? : }\n \n \n {steps[activeStep].titulo}\n \n \n }\n backButton={\n \n {theme.direction === 'rtl' ? : }\n Ant.\n \n }\n />\n );\n }\n}\n\nTextMobileStepper.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles, { withTheme: true })(TextMobileStepper);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport MobileStepper from './mobile-stepper';\nimport Hidden from '@material-ui/core/Hidden';\n\nimport styles from './styles';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Main stepper component. Will display the steps on top, controlling\n * the current step and also showing those that are already accomplished.\n */\n\n\nclass HorizontalStepper extends React.PureComponent {\n state = {\n selected: null,\n selectedStep: null,\n }\n\n handleClick(event, step) {\n const { onClick, navigateWithNoRestriction } = this.props;\n\n if (step.estado || navigateWithNoRestriction) {\n onClick(step);\n this.setState({ selected: step });\n }\n }\n\n getSelectedStep = () => {\n const { selectedStep, steps } = this.props;\n const { selected } = this.state;\n const activeSteps = steps.filter(step => step.estado === true);\n const active = activeSteps.length > 0 ? activeSteps.length - 1 : 0;\n if (selectedStep !== null && selected === null) {\n return {\n selected: selectedStep,\n active,\n }\n }\n if (selected !== null) {\n return {\n selected,\n active,\n }\n }\n return {\n selected: steps[active],\n active,\n };\n }\n\n static getDerivedStateFromProps = (props, state) => {\n if (props.selectedStep !== state.prevSelectedStep) {\n return {\n prevSelectedStep: props.selectedStep,\n selected: null,\n }\n }\n }\n\n render() {\n const {\n steps,\n onClick,\n classes,\n t\n } = this.props;\n\n if (steps.length === 0) {\n return null;\n }\n\n const { active, selected } = this.getSelectedStep();\n\n return (\n \n \n \n {steps.map((step, index) => (\n this.handleClick(e, step)}\n classes={{\n root: classes.stepRoot,\n completed: classes.stepCompleted,\n horizontal: classes.stepHorizontal,\n }}\n >\n \n {t(step.titulo)}\n \n \n ))}\n \n \n \n \n \n \n );\n }\n}\n\nHorizontalStepper.defaultProps = {\n steps: [],\n onClick: () => null,\n selectedStep: null,\n navigateWithNoRestriction: false,\n};\n\n/**\n * propTypes\n * @property {shape} classes Styles to apply.\n * @property {array} steps Steps to display.\n * @property {object} selectedStep Initial selected step.\n * @property {function} onClick To be call at every click action.\n * @property {bool} navigateWithNoRestriction Become the navigation clickable at any step.\n */\nHorizontalStepper.propTypes = {\n classes: PropTypes.shape().isRequired,\n steps: PropTypes.arrayOf(PropTypes.shape({\n idStep: PropTypes.number,\n titulo: PropTypes.string,\n estado: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n })),\n selectedStep: PropTypes.shape({\n idStep: PropTypes.number,\n titulo: PropTypes.string,\n estado: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n }),\n onClick: PropTypes.func,\n navigateWithNoRestriction: PropTypes.bool,\n};\n\nexport default compose(withStyles(styles), withTranslation())(HorizontalStepper);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport styles from './styles';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component to display an alert/error/success message on the top right\n * corner of the screen.\n *\n * @class AlertSnackbar\n * @extends {React.Component}\n */\nclass AlertSnackbar extends React.Component {\n /**\n * Alert snackbar state.\n * @type {object}\n * @property {bool} open whether the snackbar is open.\n */\n state = {\n open: true,\n };\n\n componentDidUpdate(prevProps) {\n // TODO: Find a better way to update components by not using current epoch\n const { message: { epoch: currentEpoch } } = this.props;\n const { message: { epoch: prevEpoch } } = prevProps;\n if (prevEpoch !== currentEpoch) {\n this.setState({\n open: true,\n });\n }\n }\n\n /**\n * Closes the snackbar.\n * @memberof AlertSnackbar\n */\n handleClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n this.setState({\n open: false,\n });\n }\n\n render() {\n const { open } = this.state;\n const {\n classes,\n duration,\n message = {},\n t\n } = this.props;\n\n const { descripcion = '', titulo = '' } = message;\n let variant= '';\n switch (titulo.toUpperCase()) {\n case 'OK':\n variant = 'success';\n break;\n case 'WARNING':\n variant = 'warning';\n case 'ERROR':\n default:\n variant = 'error';\n }\n\n return (\n {t(descripcion)}}\n action={[\n \n \n ,\n ]}\n />\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Styles to apply to the html elements.\n * @property {object} message Message to display.\n * @property {number} duration Number of miliseconds the message will appear.\n */\nAlertSnackbar.propTypes = {\n classes: PropTypes.shape().isRequired,\n message: PropTypes.shape().isRequired,\n duration: PropTypes.number,\n};\n\nAlertSnackbar.defaultProps = {\n duration: 10000,\n};\n\nexport default compose(withStyles(styles), withTranslation())(AlertSnackbar);\n","export default theme => ({\n close: {\n padding: theme.spacing.unit / 2,\n },\n alertBox: {\n top: 0,\n right: 0,\n position: 'relative',\n margin: '10px 0',\n },\n success: {\n flexWrap: 'nowrap',\n backgroundColor: theme.palette.success.main,\n },\n error: {\n flexWrap: 'nowrap',\n backgroundColor: theme.palette.error.main,\n },\n info: {\n flexWrap: 'nowrap',\n backgroundColor: theme.palette.info.main,\n },\n warning: {\n flexWrap: 'nowrap',\n backgroundColor: theme.palette.warning.main,\n },\n});\n","import React from \"react\";\nimport axios from \"axios\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\nimport {\n Button,\n Grid,\n Paper,\n TextField,\n Typography,\n ButtonBase,\n Hidden,\n ExpansionPanel,\n ExpansionPanelSummary,\n ExpansionPanelDetails,\n} from \"@material-ui/core\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\nimport RightArrowIcon from \"@material-ui/icons/ArrowForwardIos\";\n\nimport { Auth } from \"../../api\";\nimport actions from \"../../store/session/actions\";\nimport { logoDefault } from \"../../images\";\nimport styles from \"./styles\";\n\nclass SignIn extends React.PureComponent {\n state = {\n username: \"\",\n password: \"\",\n apptoken: process.env.REACT_APP_MOVILIDAD_APP_TOKEN,\n };\n\n componentDidMount() {\n const { token, history } = this.props;\n if (token && token.length > 0) {\n history.replace(\"/app\");\n }\n }\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n handleSubmit = (event) => {\n const { dispatch, history } = this.props;\n event.preventDefault();\n\n axios.get(\"https://ipapi.co/json/\").then((response) => {\n const requestData = { ...this.state };\n requestData.ip = response.data.ip;\n Auth.at(\"login\")\n .post(requestData)\n .then((payload) => {\n const {\n resultado: { sessionToken: token, roles },\n } = payload;\n if (roles.length === 1) {\n const role = {\n idRol: roles[0].idRol,\n };\n dispatch(actions.loginSuccess({ token, role }));\n } else if (roles.length > 1) {\n history.replace({\n pathname: \"/roles\",\n state: { requestData, roles },\n });\n }\n });\n });\n };\n\n render() {\n const { classes, token, accessToken, dispatch } = this.props;\n const { username, password } = this.state;\n\n /* If there is an invalid token, but a valid accessToken,\n it means the user has logged out or the token has expired (invalid token)\n and the user logged in using gmail (valid accessToken)\n then the user is logged out from their gmail account.\n */\n const wasLoggedInWithGmail =\n (!token || (token && token.length === 0)) &&\n accessToken &&\n accessToken.length > 0;\n if (wasLoggedInWithGmail) {\n dispatch(actions.gmailLogout());\n }\n\n return (\n \n \n \n \n \n \n \n Accede a tu cuenta\n \n \n \n \n \n \n Ingresa con tu\n
\n San Pablo Mail\n \n
\n \n
\n \n \n \n O Ingresa con las Credenciales Proporcionadas\n \n \n \n
\n \n \n \n Ingresar\n \n \n ¿Olvidaste tu contraseña?\n \n
\n \n No tienes cuenta y deseas postular a nuestros\n programas de movilidad. \n \n Regístrate aquí.\n \n \n
\n \n
\n
\n \n \n }\n classes={{\n content: classes.loginMobileCollaspseBtn,\n }}\n >\n \n O Ingresa con las Credenciales Proporcionadas\n \n \n \n
\n \n \n \n Ingresar\n \n \n ¿Olvidaste tu contraseña?\n \n
\n \n No tienes cuenta y deseas postular a nuestros\n programas de movilidad. \n \n Regístrate aquí.\n \n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes\n * @property {function} dispatch Allows to call redux actions.\n */\nSignIn.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n dispatch: PropTypes.func.isRequired,\n};\n\nexport default connect((s) => ({\n token: s.session.token,\n accessToken: s.session.accessToken,\n}))(withStyles(styles)(SignIn));\n\n","export default theme => ({\n '@global body': {\n overflow: 'auto',\n backgroundColor: theme.palette.primary.main,\n },\n loginRedirection: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n [theme.breakpoints.only('xs')]: {\n flexDirection: 'column',\n },\n },\n loginByMail: {\n display: 'flex',\n alignItems: 'center',\n },\n loginContainer: {\n height: '100vh',\n },\n loginLogo: {\n display: 'block',\n },\n paper: {\n padding: 30,\n },\n submit: {\n marginTop: theme.spacing.unit * 3,\n [theme.breakpoints.down('sm')]: {\n paddingLeft: theme.spacing.unit,\n paddingRight: theme.spacing.unit,\n },\n },\n arrowIcon: {\n color: theme.palette.primary.main,\n marginLeft: theme.spacing.unit,\n },\n loginMobileCollapse: {\n boxShadow: 'none',\n border: `1px solid ${theme.palette.secondary.main}`,\n borderRadius: 4,\n '&:before': {\n backgroundColor: 'unset',\n },\n },\n loginMobileCollaspseBtn: {\n margin: '15px 0',\n },\n registerContainer: {\n paddingTop: theme.spacing.unit * 2,\n },\n registerLink: {\n color: theme.palette.primary.main,\n },\n});\n","import React from 'react';\nimport { isFunction } from 'lodash';\nimport {\n Grid,\n} from '@material-ui/core';\nimport {\n SelectField,\n} from '../../components';\n\nimport { Person } from '../../api';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component to handle the selection of the options of the address. It is used by the components listed bellow.\n * @see Perfil.UpdateProfile\n *\n * @class SelectAddress\n * @extends {React.PureComponent}\n * @memberof Perfil\n * @category Screens\n */\nclass SelectAddress extends React.PureComponent {\n\n constructor(props) {\n super(props);\n this.state = {\n country: [],\n department: [],\n province: [],\n district: [],\n ...props,\n };\n }\n\n async componentDidMount() {\n await this.fetchData();\n }\n\n fetchData = async () => {\n const {\n codProvincia,\n codDepartamento,\n codPais,\n } = this.state;\n let [country, province, department, district] = [[], [], [], []];\n const { resultado: resultadoPaises } = await Person.at('get-ubigeo-person').post({ nivel: 1 });\n country = resultadoPaises.map(x => ([x.id, x.nombre]));\n\n if (codPais) {\n const { resultado: resultadoDepartamentos } = await Person.at('get-ubigeo-person').post({ idUbigeo: codPais, nivel: 2 });\n department = resultadoDepartamentos.map(x => [x.id, x.nombre]);\n }\n if (codDepartamento) {\n const { resultado: resultadoProvincias } = await Person.at('get-ubigeo-person').post({ idUbigeo: codDepartamento, nivel: 3 });\n province = resultadoProvincias.map(x => [x.id, x.nombre]);\n }\n if (codProvincia) {\n const { resultado: resultadoDistritos } = await Person.at('get-ubigeo-person').post({ idUbigeo: codProvincia, nivel: 4 });\n district = resultadoDistritos.map(x => [x.id, x.nombre]);\n }\n\n this.setState({\n country,\n department,\n province,\n district,\n });\n }\n\n notifyChange = () => {\n const { codPais, codDepartamento, codProvincia, codDistrito } = this.state;\n const { onChange } = this.props;\n if (isFunction(onChange)) {\n onChange([codPais, codDepartamento, codProvincia, codDistrito]);\n }\n }\n\n handleChange = name => (event) => {\n const { value } = event.target;\n if (name === 'codPais') {\n this.updateDepartments(value);\n }\n if (name === 'codDepartamento') {\n this.updateProvinces(value);\n }\n if (name === 'codProvincia') {\n this.updateDistricts(value);\n }\n if (name === 'codDistrito') {\n this.setState({\n codDistrito: value,\n }, this.notifyChange);\n }\n }\n\n updateDepartments = async (idUbigeo) => {\n const { resultado } = await Person.at('get-ubigeo-person').post({ idUbigeo, nivel: 2 });\n const department = resultado.map(x => [x.id, x.nombre]);\n this.setState({\n codPais: idUbigeo,\n codDepartamento: 0,\n codProvincia: 0,\n codDistrito: 0,\n department,\n province: [],\n district: [],\n }, this.notifyChange);\n }\n\n updateProvinces = async (idUbigeo) => {\n const { resultado } = await Person.at('get-ubigeo-person').post({ idUbigeo, nivel: 3 });\n const province = resultado.map(x => [x.id, x.nombre]);\n this.setState({\n codDepartamento: idUbigeo,\n codProvincia: 0,\n codDistrito: 0,\n province,\n district: [],\n }, this.notifyChange);\n }\n\n updateDistricts = async (idUbigeo) => {\n const { resultado } = await Person.at('get-ubigeo-person').post({ idUbigeo, nivel: 4 });\n const district = resultado.map(x => [x.id, x.nombre]);\n this.setState({\n codProvincia: idUbigeo,\n codDistrito: 0,\n district,\n }, this.notifyChange);\n }\n\n render() {\n const {\n country,\n department,\n province,\n district,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n } = this.state;\n const { isMobilityIn, t } = this.props;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\n\nexport default withTranslation()(SelectAddress);\n","import React from 'react';\nimport axios from 'axios';\nimport * as moment from 'moment';\nimport {\n Grid,\n Paper,\n TextField,\n FormHelperText,\n FormControl,\n FormControlLabel,\n Checkbox,\n DialogActions,\n Button,\n Hidden,\n Typography,\n MenuItem,\n} from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Core, Mobility } from '../../api';\n\nimport {\n DateTimePicker,\n TableToolbar,\n} from '../../components';\nimport { logoDefault } from '../../images';\nimport SelectAddress from '../profile/select-adress';\nimport styles from './styles';\n\nclass Register extends React.Component {\n state = {\n genderTypes: [\n { id: 'M', nombre: 'Masculino' },\n { id: 'F', nombre: 'Femenino' },\n ],\n documentTypes: [],\n ip: '',\n apptoken: process.env.REACT_APP_MOVILIDAD_APP_TOKEN,\n tipoDocumento: '',\n nroDocumento: '',\n nombres: '',\n apellidoPaterno: '',\n apellidoMaterno: '',\n sexo: '',\n fechaNacimiento: new Date(),\n direccion: '',\n celular: '',\n telefono: '',\n emailPersonal: '',\n facebook: '',\n whatsapp: '',\n acceptsUserInformation: '',\n codPais: '',\n codDepartamento: '',\n codProvincia: '',\n codDistrito: '',\n institucion: '',\n programa: '',\n promedio: '',\n semestre: '',\n accesoCorreo: '',\n password: '',\n confirmPassword: '',\n };\n\n /**\n * handle event when the component is mounted\n */\n async componentDidMount() {\n const { data: { ip } } = await axios.get('https://ipapi.co/json/');\n const { resultado: documentTypes } = await Core.at('get-identity-document-types').post();\n this.setState({\n ip,\n documentTypes,\n });\n }\n\n handleChange = name => (event) => {\n if (name === 'acceptsUserInformation') {\n this.setState({ [name]: event.target.checked });\n } else {\n this.setState({ [name]: event.target.value });\n }\n };\n\n\n handleChangeAddress = (address) => {\n const [codPais, codDepartamento, codProvincia, codDistrito] = address;\n this.setState({\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n });\n }\n\n handleSubmit = async (event) => {\n event.preventDefault();\n const { history } = this.props;\n const {\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n fechaNacimiento,\n sexo,\n tipoDocumento,\n nroDocumento,\n emailPersonal,\n direccion,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n celular,\n telefono,\n facebook,\n whatsapp,\n institucion,\n programa,\n promedio,\n semestre,\n password,\n confirmPassword,\n ip,\n apptoken,\n } = this.state;\n\n if (password !== confirmPassword) {\n return;\n }\n\n await Mobility.at('register-person').post({\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n fechaNacimiento,\n sexo,\n tipoDocumento,\n nroDocumento,\n email: emailPersonal,\n direccion,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n telefono,\n celular,\n facebook,\n whatsapp,\n institucion,\n programa,\n promedio,\n semestre,\n password,\n ip,\n apptoken,\n });\n\n history.push('/login');\n }\n\n render() {\n const { classes } = this.props;\n const {\n genderTypes,\n documentTypes,\n tipoDocumento,\n nroDocumento,\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n sexo,\n celular,\n telefono,\n emailPersonal,\n facebook,\n whatsapp,\n acceptsUserInformation,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n fechaNacimiento,\n direccion,\n institucion,\n programa,\n promedio,\n semestre,\n accesoCorreo,\n password,\n confirmPassword,\n } = this.state;\n\n return (\n \n \n \n \"\"\n \n REGISTRO\n \n \n \n \n \n \"\"\n \n \n \n REGISTRO\n \n \n \n \n \n \n
\n \n \n \n \n \n {documentTypes.map(option => (\n \n {option.nombre}\n \n ))}\n \n \n \n \n \n \n {\n this.setState({ fechaNacimiento: date.format('YYYY-MMM-DD') });\n }}\n margin=\"normal\"\n />\n \n \n {genderTypes.map(option => (\n \n {option.nombre}\n \n ))}\n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n {\n password && confirmPassword && password !== confirmPassword && (\n * Las contraseñas no coinciden.\n )\n }\n \n \n\n \n \n )}\n // label=\"Estoy de acuerdo con el tratamiento de mis datos personales\"\n label={}\n />\n \n \n \n \n \n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(Register);\n","export default theme => ({\n '@global body': {\n overflow: 'auto',\n backgroundColor: '#FAFAFA',\n },\n registerForm: {\n margin: '30px 0',\n },\n registerTitleContainer: {\n position: 'relative',\n },\n registerTitle: {\n position: 'absolute',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n registerLogoMobile: {\n display: 'block',\n margin: '0 auto',\n },\n});\n","export default theme => ({\n '@global body': {\n overflow: 'auto',\n },\n main: {\n width: 'auto',\n display: 'block', // Fix IE 11 issue.\n marginLeft: theme.spacing.unit * 3,\n marginRight: theme.spacing.unit * 3,\n [theme.breakpoints.up(400 + theme.spacing.unit * 3 * 2)]: {\n width: 400,\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n paper: {\n marginTop: theme.spacing.unit * 8,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px ${theme.spacing.unit * 3}px`,\n },\n avatar: {\n margin: theme.spacing.unit,\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: '100%', // Fix IE 11 issue.\n marginTop: theme.spacing.unit,\n },\n submit: {\n marginTop: theme.spacing.unit * 3,\n },\n alertContainer: {\n position: 'absolute',\n top: 32,\n right: 32,\n },\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { isFunction } from 'lodash';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport {\n TextField,\n Typography,\n Grid,\n Paper,\n CssBaseline,\n Button,\n} from '@material-ui/core';\nimport styles from './styles';\nimport alertsActions from '../../store/alerts/actions';\nimport alertsSelectors from '../../store/alerts/selectors';\nimport { Auth } from '../../api';\n\n/**\n * Recover Password Change\n * @class Recover Password Change\n * @extends {React.Componen}\n * @memberof PasswordRecovering\n * @category Common Screens\n */\nexport class RecoverPasswordChange extends Component {\n constructor(props) {\n super(props);\n this.state = {\n password: '',\n repassword: '',\n };\n }\n\n /**\n * handle component mount event\n * @memberof RecoverPasswordChange\n */\n componentDidMount() {\n const { setAlertNotifications } = this.props;\n // clean alerts\n setAlertNotifications([]);\n }\n\n /**\n * change input change\n * @memberof RecoverPasswordChange\n */\n handleChange = name => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n /**\n * validate and submit passwords to server\n * @memberof RecoverPasswordChange\n */\n handleSubmit = (event) => {\n event.preventDefault();\n const { setAlertNotifications, onSubmit, history } = this.props;\n const { password, repassword } = this.state;\n if (password !== repassword) {\n setAlertNotifications([{\n codigo: '1',\n titulo: 'OK',\n descripcion: 'Las contraseñas no coinciden',\n epoch: new Date().getTime(),\n }]);\n } else {\n Auth.at('update-external-password').post(this.state).then(() => {\n if (isFunction(onSubmit)) {\n onSubmit();\n }\n }).catch(() => {\n history.replace('/login/');\n });\n }\n }\n\n render() {\n const { password, repassword } = this.state;\n const { classes, alertNotifications } = this.props;\n return (\n
\n \n \n \n \n \n Restablecer Contraseña\n \n \n \n \n Ingresa una nueva contraseña\n \n \n
\n \n \n\n \n Restablecer\n \n \n
\n
\n
\n );\n }\n}\n\nRecoverPasswordChange.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n};\n\nconst mapStateToProps = state => ({\n alertNotifications: alertsSelectors.notificationsSelector(state),\n});\n\nconst mapDispatchToProps = {\n setAlertNotifications: alertsActions.setNotifications,\n};\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(\n withConnect,\n withStyles(styles),\n)(RecoverPasswordChange);\n","export function b64_to_utf8(str) {\n const decoded = window.atob(str);\n const cleaned = decoded.replace(/[\\x00-\\x1F\\x7F]/g, \"\");\n return decodeURIComponent(\n cleaned.split(\"\").map(char => `%${char.charCodeAt(0).toString(16).padStart(2, \"0\")}`).join(\"\")\n );\n}\n\nexport function parseQuery(queryString) {\n const query = {};\n const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\n for (let i = 0; i < pairs.length; i += 1) {\n const pair = pairs[i].split('=');\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\n }\n return query;\n}\n","import axios from 'axios';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport Button from '@material-ui/core/Button';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport FormControl from '@material-ui/core/FormControl';\nimport Grid from '@material-ui/core/Grid';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport styles from './styles';\nimport { Auth } from '../../api';\nimport alertsActions from '../../store/alerts/actions';\nimport alertsSelectors from '../../store/alerts/selectors';\nimport { AlertSnackbar } from '../../components';\nimport { CircularProgress } from '@material-ui/core';\nimport RecoverPasswordChange from './recover-password-change';\nimport { b64_to_utf8, parseQuery } from '../../utils/b6aToUtf8';\n\n\nclass RecoverPassword extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n user: '',\n loading: true,\n };\n }\n\n componentDidMount() {\n const { history, dispatch, match: { params: { query } } } = this.props;\n if (!query) {\n const { setAlertNotifications } = this.props;\n // clean alerts\n setAlertNotifications([]);\n } else {\n try {\n const jsonQuery = parseQuery(b64_to_utf8(query));\n const { token } = jsonQuery;\n if (token) {\n // storage.setSessionForExternalAssesor(token);\n document.cookie = `sessionToken=${token};`;\n this.setState({ loading: false });\n }\n } catch {\n history.replace('/login/');\n }\n }\n\n }\n\n handleChange = name => (event) => {\n const { value } = event.target;\n this.setState({ [name]: value });\n }\n\n handleSubmitSuccess = () => {\n const { history } = this.props;\n history.replace('/login/');\n }\n\n handleSubmit = (event) => {\n event.preventDefault();\n const { user } = this.state;\n const { setAlertNotifications } = this.props;\n\n axios.get('https://ipapi.co/json/').then((response) => {\n const { resultado, mensajes } = Auth.at('validate-user').post({\n usuario: user,\n appToken: process.env.REACT_APP_MOVILIDAD_APP_TOKEN,\n ip: response.data.ip,\n }).then(({ resultado, mensajes }) => {\n setAlertNotifications(\n mensajes.map((msg) => {\n msg.epoch = new Date().getTime();\n return msg;\n }),\n )\n })\n })\n }\n\n render() {\n const { history, classes, alertNotifications, match: { params: { query } } } = this.props;\n const { loading, user } = this.state;\n\n if (query) {\n if (loading) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n } else {\n return (\n
\n \n
\n {\n alertNotifications\n .map(msg => )\n }\n
\n \n \n \n \n Reestablecer Contraseña\n \n \n \n \n Ingresa tu cuenta de correo\n \n \n
\n \n Nombre de usuario\n \n \n\n \n Ingresar\n \n \n Volver\n \n \n
\n
\n
\n );\n }\n }\n}\n\nRecoverPassword.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n setAlertNotifications: PropTypes.func.isRequired,\n alertNotifications: PropTypes.arrayOf().isRequired,\n};\n\nconst mapStateToProps = state => ({\n alertNotifications: alertsSelectors.notificationsSelector(state),\n});\n\nconst mapDispatchToProps = {\n setAlertNotifications: alertsActions.setNotifications,\n};\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(\n withConnect,\n withStyles(styles),\n)(RecoverPassword);\n","import React from 'react';\n\nimport { Link } from 'react-router-dom';\n\nimport Typography from '@material-ui/core/Typography';\nimport Hidden from '@material-ui/core/Hidden';\nimport IconButton from '@material-ui/core/IconButton';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core/styles';\nimport BriefcaseIcon from '@material-ui/icons/CardTravel';\nimport {\n faTwitterSquare,\n faFacebookSquare,\n faPinterestSquare,\n} from '@fortawesome/fontawesome-free-brands';\nimport { logoDefaultWhite } from '../../images';\nimport { logoSami } from '../../images';\nimport styles from './styles';\nimport {\n DialogContent,\n DialogContentText,\n Dialog,\n} from '@material-ui/core';\n\nimport { DialogHeader } from '../../components';\nimport { CardsForm } from '../../components';\n\nclass LandingScreen extends React.PureComponent {\n constructor (props) {\n super(props)\n this.state = {\n isOpen: false\n }\n this.openModal = this.openModal.bind(this);\n this.handleClose = this.handleClose.bind(this);\n \n }\n\n openModal () {\n this.setState({isOpen: true})\n }\n \n handleClose(){\n this.setState({isOpen: false})\n }\n render() {\n const { classes } = this.props;\n const {\n isOpen\n } = this.state;\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \"logo\"\n \n \n \n \n \"logo\"\n \n \n \n \n \"logo\"\n \n MOVILIDAD\n ESTUDIANTIL\n \n\n \n \n Puedes iniciar tu proceso de inscripción a los Programas de Movilidad presionando el botón Ingresar.\n \n \n \n \n \n Si deseas obtener más información sobre los detalles del procedimiento de inscripción puedes hacer clic en el botón \"Conocer Más\".\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\n\nexport default withStyles(styles)(LandingScreen);\n","import { red } from \"@material-ui/core/colors\";\n\nexport default theme => ({\n '@global body': {\n overflow: 'auto',\n },\n root: {\n height: '100vh',\n },\n main: {\n height: '100vh',\n },\n leftContent: {\n backgroundColor: theme.palette.primary.main,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n rightContent: {\n padding: 80,\n alignSelf: 'center',\n position: 'relative',\n [theme.breakpoints.only('xs')]: {\n padding: 50,\n textAlign: 'center',\n },\n },\n mobileLogoContainer: {\n backgroundColor: theme.palette.primary.main,\n textAlign: 'center',\n },\n mobileLogo: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit * 3,\n },\n title: {\n [theme.breakpoints.only('xs')]: {\n fontSize: 30,\n lineHeight: '35px',\n },\n },\n welcomeText: {\n [theme.breakpoints.only('xs')]: {\n fontSize: 22,\n lineHeight: '25px',\n },\n },\n moreInformation: {\n lineHeight: 1.5,\n fontSize: '1.2rem',\n },\n socialLinks: {\n marginTop: theme.spacing.unit * 2,\n [theme.breakpoints.only('xs')]: {\n justifyContent: 'center',\n },\n },\n socialLink: {\n color: theme.palette.secondary.light,\n },\n landingBackground: {\n position: 'absolute',\n // left: '85%',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%,-50%)',\n fontSize: 500,\n zIndex: -1,\n opacity: 0.2,\n [theme.breakpoints.only('xs')]: {\n fontSize: 300,\n },\n width: '35%',\n height: '80%',\n // bottom: '-36%',\n // height: '43%',\n },\n});\n","import React from 'react';\n\n\nconst Payment = () => (\n
Pantalla de Pago
\n);\n\nexport default Payment;\n","import React from 'react';\nimport axios from 'axios';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport {\n Grid,\n CircularProgress,\n} from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport actions from '../../store/session/actions';\nimport { Auth } from '../../api';\nimport alertsActions from '../../store/alerts/actions';\nimport styles from './styles';\nimport { b64_to_utf8, parseQuery } from '../../utils/b6aToUtf8';\n\n\n/**\n * Component that handles the redirect action after San Pablo login.\n *\n * @class RedirectScreen\n * @extends {React.Component}\n * @category Screens\n */\nclass RedirectScreen extends React.PureComponent {\n componentDidMount() {\n const { dispatch, match: { params: { query } } } = this.props;\n // Uncomment the next line in dev mode\n // console.log('QUERY:', query);\n if (!query) {\n return this.goToLogin();\n }\n try {\n const jsonQuery = parseQuery(b64_to_utf8(query));\n const { token, rol, error } = jsonQuery;\n if (token && rol && !error) {\n axios.get('https://ipapi.co/json/').then((response) => {\n Auth.at('get-session').post({\n token,\n ip: response.data.ip,\n apptoken: process.env.REACT_APP_MOVILIDAD_APP_TOKEN,\n }).then((data) => {\n const { resultado: { sessionToken, accessToken } } = data;\n document.cookie = `sessionToken=${sessionToken};`;\n return this.goToApp(sessionToken, rol, accessToken);\n });\n });\n } else if (error === '1') {\n dispatch(\n alertsActions.setNotifications(\n [{\n titulo: 'Error',\n id: '1',\n descripcion: 'Hubo un error inesperado',\n epoch: new Date().getTime(),\n }],\n ),\n );\n return this.goToLogin();\n } else if (error === '2') {\n dispatch(\n alertsActions.setNotifications(\n [{\n titulo: 'Error',\n id: '1',\n descripcion: 'No autorizado',\n epoch: new Date().getTime(),\n }],\n ),\n );\n return this.goToLogin();\n }\n } catch {\n return this.goToLogin();\n }\n }\n\n goToLogin = () => {\n const { history } = this.props;\n history.replace('/login/');\n return true;\n }\n\n goToApp = (token, role, accessToken) => {\n const { dispatch } = this.props;\n const idRol = parseInt(role);\n dispatch(actions.loginSuccess({ token, role: { idRol }, accessToken }));\n }\n\n render() {\n const { classes } = this.props;\n return (\n \n \n \n );\n }\n}\n\nexport default compose(\n connect(null),\n withStyles(styles),\n)(RedirectScreen);\n","export default () => ({\n container: {\n height: '100vh',\n },\n});\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { isFunction } from 'lodash';\nimport * as moment from 'moment';\nimport {\n Grid,\n Paper,\n TextField,\n FormHelperText,\n FormControl,\n FormControlLabel,\n Checkbox,\n DialogActions,\n Button,\n MenuItem,\n} from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Person, Core, Academic, Auth } from '../../../api';\nimport sessionActions from '../../../store/session/actions';\nimport {\n DateTimePicker,\n TableToolbar,\n} from '../../../components';\nimport SelectAddress from '../../profile/select-adress';\nimport { withTranslation } from 'react-i18next';\n\n/**\n *\n *\n * @class MobilityIn-Profile\n * @extends {React.Component}\n * @category Screens\n */\nclass MobilityInProfile extends React.Component {\n state = {\n genderTypes: [\n { id: 'M', nombre: 'Masculino' },\n { id: 'F', nombre: 'Femenino' },\n ],\n autDatosPersonales: false,\n documentTypes: [],\n tipoDocumento: '',\n nroDocumento: '',\n nombres: '',\n apellidoPaterno: '',\n apellidoMaterno: '',\n sexo: '',\n fechaNacimiento: new Date(),\n direccion: '',\n celular: '',\n telefono: '',\n email: '',\n facebook: '',\n whatsapp: '',\n codPais: '',\n codDepartamento: '',\n codProvincia: '',\n codDistrito: '',\n institucion: '',\n programa: '',\n promedio: '',\n semestre: '',\n accesoCorreo: '',\n password: '',\n confirmPassword: '',\n haveAcademicInfo:0,\n };\n\n /**\n * handle event when the component is mounted\n */\n async componentDidMount() {\n const idUsuario = 0;\n const { resultado: documentTypes } = await Core.at('get-identity-document-types').post();\n const { resultado: personalInfo } = await Person.at('get-personal-info').post({ idUsuario });\n const { resultado: academicInfo } = await Academic.at('get-academic-info').post({ idUsuario });\n\n this.setState({\n documentTypes,\n tipoDocumento: personalInfo.idTipoDocumento || '',\n nroDocumento: personalInfo.nroDocumento || '',\n nombres: personalInfo.nombres || '',\n apellidoPaterno: personalInfo.apellidoPaterno || '',\n apellidoMaterno: personalInfo.apellidoMaterno || '',\n sexo: personalInfo.sexo || '',\n fechaNacimiento: personalInfo.fechaNacimiento ? new Date(personalInfo.fechaNacimiento) : new Date(),\n direccion: personalInfo.direccion || '',\n celular: personalInfo.celular || '',\n telefono: personalInfo.telefono || '',\n email: personalInfo.email || '',\n facebook: personalInfo.facebook || '',\n whatsapp: personalInfo.whatsapp || '',\n codPais: personalInfo.codPais || 0,\n codDepartamento: personalInfo.codDepartamento || 0,\n codProvincia: personalInfo.codProvincia || 0,\n codDistrito: personalInfo.codDistrito || 0,\n institucion: academicInfo.institucion || '',\n programa: academicInfo.programa || '',\n promedio: academicInfo.promedioPonderado || '',\n semestre: academicInfo.semestre || '',\n accesoCorreo: personalInfo.correoPersonal || '',\n autDatosPersonales: personalInfo.autDatosPersonales || false,\n haveAcademicInfo : academicInfo.length,\n });\n }\n\n handleChange = name => (event) => {\n if (name === 'autDatosPersonales') {\n this.setState({ [name]: event.target.checked });\n } else {\n this.setState({ [name]: event.target.value });\n }\n };\n\n\n handleChangeAddress = (address) => {\n const [codPais, codDepartamento, codProvincia, codDistrito] = address;\n this.setState({\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n });\n }\n\n handleSubmit = async (event) => {\n event.preventDefault();\n const {\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n fechaNacimiento,\n sexo,\n tipoDocumento,\n nroDocumento,\n email,\n direccion,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n celular,\n telefono,\n facebook,\n whatsapp,\n institucion,\n programa,\n promedio,\n semestre,\n password,\n confirmPassword,\n accesoCorreo,\n autDatosPersonales,\n } = this.state;\n\n if (password.length > 0 && password !== confirmPassword) {\n return;\n }\n\n await Person.at('update-all-personal-info').post({\n idTipoDocumento: tipoDocumento,\n nroDocumento,\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n fechaNacimiento: fechaNacimiento.format ? fechaNacimiento.format('YYYY-MM-DD') : moment(fechaNacimiento).format('YYYY-MM-DD'),\n direccion,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n email,\n sexo,\n telefono,\n celular,\n facebook,\n whatsapp,\n autDatosPersonales,\n emailPersonal: accesoCorreo,\n });\n\n await Academic.at('update-academic-info').post({\n institucion,\n programa,\n semestre,\n promedioPonderado: promedio,\n });\n\n if (password.length > 0) {\n await Auth.at('update-password-authenticated').post({\n password,\n });\n }\n const { onSubmit, fetchUserData } = this.props;\n onSubmit();\n\n if (isFunction(fetchUserData)) {\n fetchUserData();\n }\n }\n\n render() {\n const { classes, t } = this.props;\n const {\n genderTypes,\n documentTypes,\n tipoDocumento,\n nroDocumento,\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n sexo,\n celular,\n telefono,\n email,\n facebook,\n whatsapp,\n autDatosPersonales,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n fechaNacimiento,\n direccion,\n institucion,\n programa,\n promedio,\n semestre,\n accesoCorreo,\n password,\n confirmPassword,\n haveAcademicInfo,\n } = this.state;\n\n console.log('Date from state', fechaNacimiento);\n\n return (\n \n \n
\n \n \n \n \n \n {documentTypes.map(option => (\n \n {t(option.nombre)}\n \n ))}\n \n \n \n \n \n \n {\n this.setState({ fechaNacimiento: date });\n }}\n margin=\"normal\"\n />\n \n \n {genderTypes.map(option => (\n \n {option.nombre}\n \n ))}\n \n \n \n {haveAcademicInfo && (\n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n 0}\n fullWidth\n label={t(\"Confirmar Contraseña\")}\n className={classes.textField}\n type=\"password\"\n value={confirmPassword}\n onChange={this.handleChange('confirmPassword')}\n margin=\"normal\"\n />\n {\n password && confirmPassword && password !== confirmPassword && (\n * {t(\"Las contraseñas no coinciden.\")}\n )\n }\n \n \n\n \n \n )}\n label={t(\"Estoy de acuerdo con el tratamiento de mis datos personales\")}\n />\n \n \n \n \n \n
\n
\n
\n );\n }\n}\n\nMobilityInProfile.propTypes = {\n onSubmit: PropTypes.func,\n};\n\nMobilityInProfile.defaultProps = {\n onSubmit: () => null,\n};\n\nconst mapDispatchToProps = {\n fetchUserData: sessionActions.fetchUserData,\n};\n\nconst withConnect = connect(null, mapDispatchToProps);\n\nexport default compose(\n withConnect,\n withStyles(),\n withTranslation()\n)(MobilityInProfile);\n","import React from 'react';\nimport {\n Grid,\n CircularProgress,\n} from '@material-ui/core';\n\nimport MobilityInProfile from '../mobility-in/profile';\nimport { b64_to_utf8, parseQuery } from '../../utils/b6aToUtf8';\n\n\n/**\n * Component that handles the configuration view for foreign users.\n *\n * @class ForeignUserAuth\n * @extends {React.Component}\n * @category Screens\n */\nclass ForeignUserAuth extends React.PureComponent {\n state = {\n loading: true,\n };\n\n componentDidMount() {\n const { dispatch, match: { params: { query } } } = this.props;\n if (!query) {\n return this.goToLogin();\n }\n try {\n const jsonQuery = parseQuery(b64_to_utf8(query));\n const { token } = jsonQuery;\n if (token) {\n document.cookie = `sessionToken=${token};`;\n this.setState({ loading: false });\n }\n } catch {\n return this.goToLogin();\n }\n }\n\n goToLogin = () => {\n const { history } = this.props;\n history.replace('/login/');\n return true;\n }\n\n handleSubmitSuccess = () => {\n const { history } = this.props;\n history.replace('/login/');\n }\n\n render() {\n const { loading } = this.state;\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n return (\n
\n \n
\n );\n }\n}\n\nexport default ForeignUserAuth;\n","export default theme => ({\n '@global body': {\n overflow: 'auto',\n },\n btnAlignment: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n btnBack: {\n marginRight: theme.spacing.unit,\n },\n recomendationTitleContainer: {\n position: 'relative',\n },\n recomendationTitle: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n recomandationForm: {\n margin: '30px 0',\n },\n recomendationSubmitBtnUIcon: {\n marginLeft: theme.spacing.unit,\n },\n recomendationLogoMobile: {\n display: 'block',\n margin: '0 auto',\n },\n customInput: {\n caretColor: 'transparent',\n },\n thanksValidation: {\n backgroundColor: theme.palette.primary.main,\n height: '100vh',\n color: theme.palette.primary.contrastText,\n },\n thanksValidationImg: {\n display: 'block',\n margin: [[0, 'auto', 50]],\n },\n thanksValidationText: {\n fontWeight: 'bold',\n marginBottom: 60,\n },\n});\n","import React from 'react';\nimport axios from 'axios';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport {\n Grid,\n Typography,\n TextField,\n FormControlLabel,\n Checkbox,\n Button,\n Divider,\n Hidden,\n FormHelperText,\n FormControl,\n InputBase,\n MenuItem,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport { isEmpty } from 'lodash';\nimport { logoDefault, logoDefaultWhite } from '../../images';\nimport { TableToolbar, CheckBoxGroup } from '../../components';\nimport { Applications, Mobility, Academic } from '../../api';\nimport styles from './styles';\nimport FlexCheckboxGroup from '../../components/flex-checkbox-group';\n\n/**\n * Groups all the class and functional components related to the AceptarRecomendacion screen.\n * @see {@link AcceptRecomendation} main component\n * @namespace AceptarRecomendacion\n * @category Screens\n */\n\nconst recommendationOptions = [\n {\n id: 'R',\n nombre: 'Recomiendo al estudiante'\n },\n {\n id: 'F',\n nombre: 'Recomiendo fuertemente al estudiante'\n }\n]\n\n/**\n * Component to handle a recomendation that is recieved by a professor\n * @class AcceptRecomendation\n * @extends {React.Component}\n * @category Screens\n */\nclass AcceptRecomendation extends React.Component {\n constructor(props) {\n super(props);\n /**\n * AcceptRecomendation state.\n * @type {object}\n * @property {string} motivo\n * @property {string} explicacion\n * @property {bool} conformidad\n * @property {array} cualidades\n * @property {array} cualidadesAdicionales\n * @property {array} qualitiesLabels\n * @property {array} otherQualitiesLabels\n */\n this.state = {\n motivo: '',\n explicacion: '',\n conformidad: false,\n cualidades: [],\n qualitiesLabels: [],\n token: '',\n invalidLink: false,\n schoolsList: [],\n selectedSchool: '',\n selectedRecommendation: '',\n type: '',\n };\n this.data = {};\n }\n\n async componentDidMount() {\n let token = '';\n let type = '';\n if (this.props.location.search.substring(1)) {\n const partsArray = this.props.location.search.substring(1).split('&');\n const finalArray = partsArray.map((item) => item.split('='));\n if (finalArray[0]) {\n token = finalArray[0][1];\n }\n if (finalArray[1]) {\n type = finalArray[1][1];\n }\n }\n\n console.log('values', token, type);\n\n try {\n const payload = await Applications.at('get-teacher-recommendation-unique-link').post({\n token,\n });\n const { resultado } = payload;\n const labelsPayload = await Mobility.at('get-qualities').post({ headers: { sessionToken: token } });\n const {\n motivo,\n explicacion,\n conformidad,\n cualidades,\n cualidadesAdicionales,\n escuelaProfesor,\n idEscuelaAlumno\n } = resultado;\n this.data = resultado;\n let schoolsList = false;\n if (type === '2') {\n schoolsList = await Academic.at('get-schools').post({ headers: { sessionToken: token } });\n }\n this.setState({\n motivo,\n explicacion: explicacion || '',\n conformidad,\n token,\n escuelaProfesor,\n // The data comes as coma separated values inside a string\n cualidades: cualidades && cualidades.split(',').map(value => parseInt(value)),\n cualidadesAdicionales: cualidadesAdicionales && cualidadesAdicionales.split(',').map(value => parseInt(value)),\n qualitiesLabels: labelsPayload.resultado.cualidades,\n schoolsList: schoolsList ? schoolsList.resultado : [],\n type,\n selectedSchool: idEscuelaAlumno,\n\n });\n } catch (error) {\n this.setState({ invalidLink: true });\n }\n }\n\n /**\n * Handles the change of inputs that are not CheckboxGroup\n * @memberof AcceptRecomendation\n */\n handleChange = name => (event) => {\n if (name !== 'conformidad') {\n const { value } = event.target;\n this.setState({ [name]: value });\n } else {\n const { checked } = event.target;\n this.setState({ [name]: checked });\n }\n }\n\n /**\n * Handles the change of inputs that are CheckboxGroup\n * @memberof AcceptRecomendation\n */\n handleCheckboxGroupChange = name => (selectedOptions) => {\n this.setState({ [name]: selectedOptions });\n }\n\n /**\n * Handles the submit of the form\n * @memberof AcceptRecomendation\n */\n handleSubmit = async (event) => {\n event.preventDefault();\n const {\n motivo,\n explicacion,\n conformidad,\n cualidades,\n cualidadesAdicionales,\n token,\n schoolsList,\n selectedSchool,\n selectedRecommendation,\n type,\n } = this.state;\n const ipPayload = await axios.get('https://ipapi.co/json/');\n const { data } = ipPayload;\n let idsCualidades = '';\n if (cualidades && cualidades.length > 0) {\n idsCualidades = cualidades.join(',');\n }\n let idsCualidadesAdicionales = '';\n if (cualidadesAdicionales && cualidadesAdicionales.length > 0) {\n idsCualidadesAdicionales = `,${cualidadesAdicionales.join(',')}`;\n }\n let escuelaProfesor = schoolsList.find(item => item.id === selectedSchool);\n if (escuelaProfesor) {\n escuelaProfesor = escuelaProfesor.nombre;\n }\n await Applications.at('update-teacher-confirmation').post({\n token,\n ip: data.ip,\n escuelaProfesor: schoolsList.length > 0 ? escuelaProfesor : selectedSchool,\n motivo,\n explicacion,\n conformidad,\n cualidades: `${idsCualidades}${idsCualidadesAdicionales}`,\n headers: { sessionToken: token },\n recomendacion: selectedRecommendation,\n tipo: type,\n });\n this.setState({ invalidLink: true });\n }\n\n /**\n * Handles the rendering of the component\n * @memberof AcceptRecomendation\n */\n render() {\n const { classes } = this.props;\n const {\n motivo,\n explicacion,\n conformidad,\n qualitiesLabels,\n cualidades,\n invalidLink,\n schoolsList,\n selectedRecommendation,\n type,\n } = this.state;\n\n const explicacionError = explicacion.length < 50 || explicacion.length > 500;\n\n return (\n \n {!invalidLink && (\n \n
\n \n \n \n \"\"\n \n RECOMENDACIÓN\n \n \n \n \n \n \"\"\n \n \n \n RECOMENDACIÓN\n \n \n \n \n \n {!invalidLink && !isEmpty(this.data) && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {qualitiesLabels.length > 0 && (\n ({\n id: quality.idCualidad,\n value: cualidades && cualidades.some(cualidad => cualidad === quality.idCualidad),\n label: quality.descripcion,\n }))\n }\n minSelectedOptions={1}\n maxSelectedOptions={5}\n customHelperText=\"* Seleccione mínimo 1 y máximo 5 cualidades\"\n onChange={this.handleCheckboxGroupChange('cualidades')}\n />\n )}\n \n \n \n \n \n \n \n {(explicacionError)\n && (\n \n * Considere que el mínimo de caracteres a ingresar es 50 y el máximo es 500.\n \n )}\n \n {explicacionError && (\n \n )}\n \n \n \n {type === '2' && (\n \n \n \n {recommendationOptions.map((recomendationOption, index) => (\n {recomendationOption.nombre}\n ))}\n \n \n \n )}\n \n \n \n \n )}\n label=\"Considero que el estudiante cuyos datos aparecen en la presente pantalla,\n es un(a) excelente candidato(a) para representar a la Universidad\n Católica San Pablo en el Programa de Movilidad Estudiantil, razón por\n la cual respaldo completamente su postulación.\"\n />\n \n \n \n \n \n )}\n \n
\n
\n )}\n {/** Shows the invalid link view */}\n {invalidLink && (\n \n \"\"\n \n ¡Gracias!\n \n \n Su recomendación fue enviada.\n \n \n )}\n
\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n */\nAcceptRecomendation.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n};\n\nexport default withStyles(styles)(AcceptRecomendation);\n","import { createSelector } from 'reselect';\n\nconst getMessages = store => store.messages;\n\nconst notificationsSelector = createSelector(\n getMessages,\n messages => messages.notifications,\n);\n\nexport default {\n notificationsSelector,\n};\n","import { createSelector } from 'reselect';\n\nconst getApplications = store => store.applications;\n\nconst applicationSelector = createSelector(\n getApplications,\n applications => applications.application,\n);\n\nconst documentsManagerOpenSelector = createSelector(\n getApplications,\n applications => applications.documentsManagerOpen,\n);\n\nexport default {\n applicationSelector,\n documentsManagerOpenSelector,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { indexOf, isEmpty } from 'lodash';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\n\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\nconst withRole = (roles = []) => (WrappedComponent) => {\n /**\n * Component used to add information to other components\n * about the role of the current logged in user.\n *\n * @class RoleAware\n * @extends {React.PureComponent}\n * @category Components\n */\n class RoleAware extends React.PureComponent {\n componentDidMount() {\n const { history, role, token } = this.props;\n if (isEmpty(token) || indexOf(roles, role) < 0) {\n history.replace('/login/');\n }\n }\n\n render() {\n const {\n role,\n history,\n ...others\n } = this.props;\n\n return (\n \n );\n }\n }\n\n /**\n * propTypes\n * @property {object} history Browser history object.\n * @property {number} role Role for current user.\n * @property {string} token Token for current user.\n */\n RoleAware.propTypes = {\n history: PropTypes.shape().isRequired,\n role: PropTypes.number.isRequired,\n token: PropTypes.string.isRequired,\n };\n\n const mapStateToProps = (s) => {\n return {\n role: s.session.role.idRol,\n token: s.session.token,\n };\n };\n\n const withConnect = connect(mapStateToProps);\n const RoleAwareComponent = compose(withConnect, withRouter)(RoleAware);\n\n return hoistNonReactStatics(RoleAwareComponent, WrappedComponent);\n};\n\nexport default withRole;\n","const rootPath = '/app/convocatoria/';\n\nexport const mobilityInNavigateTo = {\n 10: `${rootPath}convenios`,\n 15: `${rootPath}postulacion`,\n 13: `${rootPath}resultados`,\n 16: `${rootPath}estudia-ucsp`,\n};\n\nexport default {\n 10: `${rootPath}convenios`,\n 11: `${rootPath}postulacion`,\n 12: `${rootPath}entrevistas`,\n 13: `${rootPath}resultados`,\n 14: `${rootPath}extranjero`,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport { indexOf } from 'lodash';\nimport { withStyles } from '@material-ui/core/styles';\nimport withWidth, { isWidthDown } from '@material-ui/core/withWidth';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport applicationsActions from '../../store/applications/actions';\nimport { IN_ADMIN_ROLES, ROLE_ESTUDIANTE, ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../constants/roles';\nimport styles from './styles';\n\nimport { Calls, MenuApp } from '../../api';\nimport { ActionsTable } from '../../components';\nimport navigateTo, { mobilityInNavigateTo } from '../../utils/navigation';\nimport { Typography, Grid } from '@material-ui/core';\n\n\n/**\n * Groups all the class and functional components related to the ListaConvocatorias screen.\n * @see {@link CallsList} main component\n * @namespace ListaConvocatorias\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link ListaConvocatorias} screen that displays the list of calls.\n *\n * @class CallsList\n * @extends {React.Component}\n * @category Screens\n */\nclass CallsList extends React.Component {\n constructor(props) {\n super(props);\n /**\n * CallsList topic state.\n * @type {object}\n * @property {array} calls Some data of the calls.\n */\n this.state = {\n calls: [],\n };\n\n this.actions = [\n () => {\n return {\n tooltip: 'Ver',\n icon: VisibilityIcon,\n onClick: this.onClickCall,\n };\n },\n ];\n\n\n }\n\n getStudentColumns = width => (\n [\n { title: 'Convocatoria', field: 'nombre' },\n {\n title: 'Submodalidad',\n field: 'modalidad',\n render: rowData => (rowData.modalidad === 'P' ? 'Presencial' : 'Virtual'),\n },\n { title: 'Estado', field: 'estado' },\n { title: 'Fecha Cierre', field: 'fechaFin', hidden: isWidthDown('sm', width) },\n ]\n );\n\n getForeignStudentColumns = width => {\n const {t} = this.props;\n return (\n [\n { title: t('Convocatoria'), field: 'nombre' },\n {\n title: t('Submodalidad'),\n field: 'modalidad',\n render: rowData => (rowData.modalidad === 'P' ? t('Presencial') : t('Virtual')),\n },\n { title: t('Estado'), field: 'estado', render: rowData => t(rowData.estado)},\n { title: t('Fecha Cierre'), field: 'fechaFin', hidden: isWidthDown('sm', width) },\n ]\n )\n };\n\n getAdminInColumns = width => (\n [\n { title: 'Convocatoria', field: 'nombre' },\n {\n title: 'Submodalidad',\n field: 'modalidad',\n render: rowData => (rowData.modalidad === 'P' ? 'Presencial' : 'Virtual'),\n },\n { title: 'Estado', field: 'estado' },\n { title: 'Fecha Cierre', field: 'fechaFin', hidden: isWidthDown('sm', width) },\n { title: 'Nominados', field: 'nominados', hidden: isWidthDown('sm', width) },\n ]\n );\n\n async componentDidMount() {\n const { applications } = this.props;\n /**\n * Get current active calls, and filter the user calls\n * so we can display only actives in the modal.\n * */\n const calls = applications.map((call) => {\n if (call.idPostulacion === 0) {\n return {\n ...call,\n nombre: (\n \n {call.nombre}\n \n \n Nueva\n \n \n \n ),\n fechaInicio: moment(call.fechaInicio).format('DD/MM/YYYY'),\n fechaFin: moment(call.fechaFin).format('DD/MM/YYYY'),\n };\n }\n return {\n ...call,\n fechaInicio: moment(call.fechaInicio).format('DD/MM/YYYY'),\n fechaFin: moment(call.fechaFin).format('DD/MM/YYYY'),\n };\n });\n this.setState({ calls });\n }\n\n onClickCall = (event, call) => {\n const { dispatch, history, role } = this.props;\n const { idPostulacion, idEscuela, idConvocatoria, modalidad } = call;\n\n /**\n * After one call is selected, we need to retrieve the menu steps for the postulation.\n */\n MenuApp.at('get-steps').post({ idPostulacion })\n .then(({ resultado: steps }) => {\n const activeSteps = steps.filter(step => step.estado === true);\n // idStep for first step is 10\n const FIRST_STEP_ID = 10;\n\n // if the role is MOBILITY_IN_ADMIN_ROLE, the first step will always be 10.\n let activeStep;\n if (indexOf(IN_ADMIN_ROLES, role) >= 0) {\n activeStep = FIRST_STEP_ID;\n // } else if (role === ROLE_ESTUDIANTE_EXTRANJERO) {\n // // TODO: verify this\n // activeStep = 15; // go directly to the postulation\n } else {\n /* if (role === ROLE_ESTUDIANTE_EXTRANJERO) {\n activeStep = FIRST_STEP_ID;\n }\n else{ */\n const { length } = activeSteps;\n activeStep = length > 0 ? activeSteps[length - 1].idStep : FIRST_STEP_ID;\n // }\n }\n\n if (idPostulacion !== null && idEscuela !== null) {\n dispatch(applicationsActions.setApplication({\n idPostulacion,\n idEscuela,\n idConvocatoria,\n isVirtual: modalidad === 'V',\n }));\n }\n dispatch(applicationsActions.setStepper(steps));\n if (indexOf([ROLE_ESTUDIANTE, ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER], role) >= 0) {\n // if student, request application data from the server.\n dispatch(applicationsActions.requestApplication({ idPostulacion, idEscuela, isVirtual: modalidad === 'V' }));\n }\n\n if (role === ROLE_ESTUDIANTE) {\n history.push(navigateTo[activeStep]);\n } else {\n // else redirect to IN routes.\n history.push(mobilityInNavigateTo[activeStep]);\n }\n });\n }\n\n /**\n * Depending on the role, the columns displayed will difer.\n */\n getColumns = () => {\n const { role, width } = this.props;\n if (indexOf([ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER], role) >= 0) {\n return this.getForeignStudentColumns(width);\n }\n if (indexOf(IN_ADMIN_ROLES, role) >= 0) {\n return this.getAdminInColumns(width);\n }\n return this.getStudentColumns(width);\n }\n\n /**\n * Handles the change of tabs\n * @memberof CallsList\n */\n render() {\n const { t } = this.props;\n const { calls } = this.state;\n const columns = this.getColumns();\n\n return (\n \n );\n }\n}\n\n/**\n * PropTypes\n * applications: list of calls the user has postulated. (Obtanined from `get-my-applications`).\n * role: Id of the user role.\n */\nCallsList.propTypes = {\n applications: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n role: PropTypes.number.isRequired,\n history: PropTypes.shape().isRequired,\n dispatch: PropTypes.func.isRequired,\n width: PropTypes.string.isRequired,\n};\n\nexport default compose(\n connect(null),\n withWidth(),\n withTranslation(),\n withStyles(styles),\n)(CallsList);\n","export default theme => ({\n\n});\n","export default theme => ({\n tabsRoot: {\n borderBottom: '1px solid #e8e8e8',\n marginBottom: theme.spacing.unit * 2,\n },\n tabRoot: {\n color: theme.palette.primary.light,\n '&:hover': {\n color: theme.palette.primary.main,\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n },\n },\n tabLabel: {\n padding: '6px 32px',\n [theme.breakpoints.down('sm')]: {\n padding: '6px 20px',\n },\n },\n selectedTab: {\n fontWeight: 'bold',\n '&:hover': {\n backgroundColor: theme.palette.background.paper,\n },\n },\n universityLogo: {\n height: 100,\n width: 100,\n },\n unversityCardContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: 24,\n [theme.breakpoints.only('xs')]: {\n flexDirection: 'column',\n },\n },\n universityName: {\n padding: '0 16px',\n [theme.breakpoints.only('xs')]: {\n marginTop: 8,\n },\n },\n universityDescription: {\n maxHeight: 400,\n overflow: 'auto',\n },\n dateFieldsWrapper: {\n [theme.breakpoints.down('sm')]: {\n marginBottom: 20,\n },\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\nimport { isEmpty } from 'lodash';\nimport {\n Grid,\n Typography,\n withStyles,\n Card,\n} from '@material-ui/core';\nimport { InfoTable } from '../../components';\n\nimport styles from './styles';\n\n\n/**\n * Component to display the information about an agreement.\n *\n * @function AgreementInfo\n * @memberof ListaConvenios\n * @see AgreementsList\n */\nfunction AgreementInfo({ classes, agreementInfo }) {\n return (\n \n \n \n \n \n \n {\n !isEmpty(agreementInfo) && (\n \n )\n }\n \n {isEmpty(agreementInfo) ? '' : agreementInfo.sitioWeb}\n \n \n \n Descripción\n \n
\n {!isEmpty(agreementInfo) && }\n
\n
\n
\n );\n}\n\n/**\n * propTypes\n * @memberof ListaConvenios.AgreementInfo\n * @property {object} classes Classes used by styles\n * @property {object} agreementInfo Information of an agreement\n */\nAgreementInfo.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n agreementInfo: PropTypes.shape({}),\n};\n\nAgreementInfo.defaultProps = {\n agreementInfo: {},\n};\n\nexport default withStyles(styles)(AgreementInfo);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Grid,\n} from '@material-ui/core';\nimport styles from './styles';\n\n/**\n * Component to display the considerations about an agreement.\n *\n * @function AgreementConsideration\n * @memberof ListaConvenios\n * @see AgreementsList\n */\nfunction AgreementConsideration({ classes, agreementConsideration }) {\n return (\n \n \n \n \n \n );\n}\n\n/**\n * propTypes\n * @memberof ListaConvenios.AgreementConsideration\n * @property {object} classes Classes used by styles\n * @property {string} agreementConsideration Considerations of an agreement\n */\nAgreementConsideration.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n agreementConsideration: PropTypes.string,\n};\n\nAgreementConsideration.defaultProps = {\n agreementConsideration: '',\n};\n\nexport default withStyles(styles)(AgreementConsideration);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport { isEmpty } from 'lodash';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Paper,\n Grid,\n TextField,\n Tabs,\n Tab,\n Fab,\n CircularProgress,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport AddIcon from '@material-ui/icons/Add';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\n\nimport applicationsActions from '../../store/applications/actions';\nimport AgreementInfo from './agreement-info';\nimport AgreementConsideration from './agreement-consideration';\nimport styles from './styles';\nimport { Agreements, Calls, Applications, MenuApp } from '../../api';\nimport { FormActions, ActionsTable } from '../../components';\nimport { STUDENT_ROLES } from '../../constants/roles';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Groups all the class and functional components related to the ListaConvenios screen, the\n * first step in the MobilityOut process.\n * @see {@link AgreementsList} main component\n * @namespace ListaConvenios\n * @category Screens\n */\n\n/**\n * Main component of {@link ListaConvenios} screen that displays the list of agreements.\n *\n * @class AgreementsList\n * @extends {React.Component}\n * @category Screens\n */\nclass AgreementsList extends React.Component {\n constructor(props) {\n super(props);\n const { userInfo: { idsEscuelas } } = props;\n const showEscuela = idsEscuelas && idsEscuelas.split(',').length > 1;\n /**\n * AgreementsList topic state.\n * @type {object}\n * @property {array} agreements Some data of the agreements.\n * @property {array} data All data of the agreements.\n * @property {array} calls Calls to filter results.\n * @property {number} callId Id of the selected call.\n * @property {array} startDates Start dates to filter results.\n * @property {number} startDateId Id of the selected start date.\n * @property {array} endDates End dates to filter results.\n * @property {number} endDateId Id of the selected end date.\n * @property {number} tabValue Value of the selected tab.\n * @property {object} agreementInfo Information about an agreement.\n * @property {string} agreementConsideration Considerations about an agreement.\n */\n this.state = {\n agreements: [],\n calls: [],\n callId: 0,\n callName: '',\n startDate: '',\n endDate: '',\n tabValue: 0,\n agreementInfo: {},\n agreementConsideration: '',\n selectedAgreement: null,\n canApply: true,\n isVirtual: false,\n columns: [\n { title: 'País/Región', field: 'pais' },\n { title: 'Institución', field: 'institucion', removable: false },\n { title: 'Beca', field: 'beca' },\n { title: 'Escuela', field: 'escuela', hidden: !showEscuela },\n { title: 'Estado', field: 'estado' },\n { title: 'Idioma', field: 'idioma' },\n ],\n isLoadingInfo: false,\n };\n\n this.infoRef = React.createRef();\n\n this.actions = [\n {\n tooltip: 'Detalles',\n icon: VisibilityIcon,\n onClick: this.onClickAgreement,\n },\n ];\n this.columns = [];\n }\n\n async componentDidMount() {\n const { userInfo: { idsEscuelas }, application: { idConvocatoria } } = this.props;\n const callsPayload = await Calls.at('get-active-calls').post();\n const calls = callsPayload.resultado;\n this.setState({ calls });\n this.setState({ callId: idConvocatoria });\n this.fetchData(idConvocatoria);\n }\n\n /**\n * Fetch the data of the agreements from the server\n * @memberof AgreementsList\n */\n fetchData = async (callId) => {\n const { application, role } = this.props;\n const { calls, columns } = this.state;\n const call = calls.filter(item => item.idConvocatoria === callId);\n const agreementsPayload = await Agreements.at('get-agreements-by-call').post({\n idConvocatoria: callId,\n });\n let { resultado: agreements } = agreementsPayload;\n\n const selectedAgreement = !isEmpty(application)\n && application.idAsociacion\n && agreements.find(item => item.idInstitucionUbigeo === application.idAsociacion);\n if (selectedAgreement) {\n this.onClickAgreement({}, selectedAgreement);\n if (!STUDENT_ROLES.includes(role)) {\n agreements = [selectedAgreement];\n }\n }\n const isVirtual = call[0] && (call[0].modalidad.includes('V') || call[0].modalidad.includes('Virtual'));\n if (isVirtual) {\n const becaIndex = columns.findIndex(column => column.title === 'Beca');\n columns[becaIndex] = { title: 'Curso', field: 'curso' };\n const estadoIndex = columns.findIndex(column => column.title === 'Estado');\n columns.splice(estadoIndex, 1);\n }\n const escuelaIndex = columns.findIndex(column => column.title === 'Escuela');\n columns[escuelaIndex].hidden = false;\n\n this.setState({\n agreements,\n callId,\n callName: call[0] && call[0].nombre,\n startDate: call[0] && call[0].fechaInicio,\n endDate: call[0] && call[0].fechaFin,\n selectedAgreement,\n isVirtual,\n tabValue: isVirtual ? 2 : 0,\n canApply: !selectedAgreement || isVirtual,\n columns,\n });\n }\n\n /**\n * When an agreement is selected\n * @memberof AgreementsList\n */\n onClickRow = (event, row) => {\n const { isLoadingInfo } = this.state;\n if (!isLoadingInfo) {\n this.onClickAgreement(event, row);\n this.infoRef.current.scrollIntoView();\n }\n }\n\n /**\n * Handles click of Agreement detail\n * @memberof AgreementsList\n */\n onClickAgreement = async (event, agreement) => {\n this.setState({ isLoadingInfo: true, selectedAgreement: agreement });\n const { isVirtual } = this.state;\n const params = {\n idConvenioConvocatoria: agreement.idConvenioConvocatoria,\n idInstitucionUbigeo: agreement.idInstitucionUbigeo,\n };\n if (isVirtual) {\n params.idCurso = agreement.idCurso;\n }\n const payload = await Agreements.at('get-info-agreement').post(params);\n const { resultado } = payload;\n this.setState({ selectedAgreement: agreement, agreementInfo: resultado, agreementConsideration: resultado.consideraciones, isLoadingInfo: false });\n this.infoRef.current.scrollIntoView();\n }\n\n /**\n * Handles the change of the filters\n * @memberof AgreementsList\n */\n handleChange = name => (event) => {\n this.setState({ [name]: event.target.value });\n if (name === 'callId') {\n this.fetchData(event.target.value);\n }\n }\n\n /**\n * Handles the change of tabs\n * @memberof AgreementsList\n */\n handleTabChange = (event, value) => {\n this.setState({ tabValue: value });\n };\n\n\n /**\n * Handles the submit action\n * @memberof AgreementsList\n */\n handleSubmit = async (event) => {\n event.preventDefault();\n const { dispatch, history } = this.props;\n const { selectedAgreement: { idConvenioConvocatoria, idEscuela, idInstitucionUbigeo, idCurso }, isVirtual, callId } = this.state;\n const params = {\n idConvenioConvocatoria,\n idEscuela,\n idInstitucionUbigeo,\n };\n if (isVirtual) {\n params.idCurso = idCurso;\n }\n try {\n const payload = await Applications.at('insert-application').post(params);\n const { resultado } = payload;\n // dispatch(applicationsActions.requestApplication({ idPostulacion: resultado.idPostulacion }));\n dispatch(applicationsActions.setApplication({ idPostulacion: resultado.idPostulacion, isVirtual, idConvocatoria: callId }));\n MenuApp.at('get-steps').post({ idPostulacion: resultado.idPostulacion })\n .then((menuResponse) => {\n const { resultado: steps } = menuResponse;\n dispatch(applicationsActions.setStepper(steps));\n history.push('postulacion');\n });\n } catch (e) { }\n };\n\n renderTitle = () => {\n const {\n callName,\n startDate,\n endDate,\n } = this.state;\n const { application: { idConvocatoria }, classes, t } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see ListaConvenios.AgreementInfo\n * @see ListaConvenios.AgreementConsideration\n * @memberof AgreementsList\n */\n render() {\n const {\n agreements,\n tabValue,\n agreementInfo,\n agreementConsideration,\n selectedAgreement,\n canApply,\n columns,\n isVirtual,\n isLoadingInfo,\n } = this.state;\n const { classes, role, t } = this.props;\n return (\n \n \n \n {\n if (!isLoadingInfo) {\n this.onClickAgreement(e, row);\n }\n },\n },\n ]}\n actionsTitle={t(\"Detalles\")}\n onSelect={this.onClickRow}\n selectedRow={selectedAgreement}\n options={{\n canSearch: true,\n canSelect: true,\n showTitle: true,\n }}\n materialTableOptions={{\n paging: true,\n exportFileName: 'Lista_de_convenios',\n }}\n localization={{\n ...t(\"table\")\n }} />\n
\n \n \n \n \n \n \n \n {isVirtual && (\n \n )}\n \n {!isLoadingInfo ? ({\n 0: ,\n 1: ,\n 2: ,\n }[tabValue]\n ) : (\n
\n \n
\n )}\n
\n
\n \n {t(\"Mensaje Lista de Convocatoria\")}\n \n {!!STUDENT_ROLES.includes(role) && !!selectedAgreement && !!canApply && (\n
\n \n \n {!isVirtual ? : }\n {!isVirtual ? t('Conocer más') : t('Agregar curso')}\n \n \n
\n )}\n \n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n * @property {number} role\n */\n\nAgreementsList.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n role: PropTypes.number.isRequired,\n};\n\nexport default compose(\n connect(s => ({\n role: s.session.role.idRol,\n userInfo: s.session.userInfo,\n application: s.applications.application,\n })),\n withStyles(styles),\n withTranslation()\n)(AgreementsList);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\nimport {\n Paper,\n withStyles,\n} from '@material-ui/core';\n\nimport { Academic } from '../../../../api';\n\nimport {\n TableToolbar,\n InfoTable,\n} from '../../../../components';\nimport sessionSelectors from '../../../../store/session/selectors';\n\nimport styles from './styles';\n\n/**\n * Shows a summary about academic information.\n * @class AcademicInformation\n * @extends {React.Component}\n * @category Screens\n */\nclass AcademicInformation extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n data: [],\n };\n }\n\n componentDidMount() {\n const { userId, idEscuela } = this.props;\n this.loadData(userId, idEscuela);\n }\n\n componentWillUpdate(props) {\n const { userId, idEscuela } = this.props;\n if (props.userId !== userId || props.idEscuela !== idEscuela) {\n this.loadData(props.userId, props.idEscuela);\n }\n }\n\n loadData = (userId, idEscuela) => {\n const params = { idEscuela };\n const keys = [\n 'escuela',\n 'planEstudios',\n 'semestre',\n 'creditosAprobados',\n 'ponderados',\n 'rankingPertenece',\n 'cursosTercera',\n 'amonestaciones',\n ];\n const labels = {\n escuela: 'Programa Profesional',\n planEstudios: 'Plan de Estudios',\n semestre: 'Semestre',\n creditosAprobados: 'Créditos Aprobados',\n rankingPertenece: 'Ranking',\n cursosTercera: 'Cursos de 3ra y 4ta Matrícula',\n amonestaciones: 'Amonestaciones',\n };\n\n if (userId !== null) {\n params.idUsuario = userId;\n }\n Academic.at('get-academic-application').post(params).then((result) => {\n const academicInfo = keys.map(k => result.resultado[k]);\n const data = [];\n academicInfo.forEach((val, index) => {\n const dataEntry = {};\n dataEntry.id = keys[index];\n dataEntry.label = labels[keys[index]];\n dataEntry.value = val;\n return data.push(dataEntry);\n });\n const ponderados = [\n {\n id: 'ponderado1',\n label: 'Ponderado último semestre',\n value: result.resultado.ponderados[0] && result.resultado.ponderados[0].ponderado,\n },\n {\n id: 'ponderado2',\n label: 'Ponderado penúltimo semestre',\n value: result.resultado.ponderados[1] && result.resultado.ponderados[1].ponderado,\n },\n ];\n const ponderadosIndex = data.findIndex(item => item.id === 'ponderados');\n data.splice(ponderadosIndex, 1, ...ponderados);\n this.setState({ data });\n });\n }\n\n /**\n * Handles the rendering of the component\n * @memberof AcademicInformation\n */\n render() {\n const { data } = this.state;\n const { classes } = this.props;\n return (\n \n \n \n \n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes to manage custom styles.\n */\nAcademicInformation.propTypes = {\n classes: PropTypes.shape().isRequired,\n userId: PropTypes.number,\n};\n\nAcademicInformation.defaultProps = {\n userId: null,\n};\n\nconst withConnect = connect(state => ({\n role: sessionSelectors.roleSelector(state),\n idEscuela: state.applications.application.idEscuela,\n}));\n\nexport default compose(\n withStyles(styles),\n withConnect,\n)(AcademicInformation);\n","export default theme => ({\n academicDataContainer: {\n padding: theme.spacing.unit * 2,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport * as moment from 'moment';\nimport {\n Paper,\n} from '@material-ui/core';\n\nimport { Person } from '../../../../api';\n\nimport {\n TableToolbar,\n InfoTable,\n} from '../../../../components';\nimport sessionSelectors from '../../../../store/session/selectors';\n\n/**\n * Component to display tabulated user information.\n *\n * @class PersonalInformation\n * @extends {React.Component}\n * @category Screens\n */\nclass PersonalInformation extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n data: [],\n };\n }\n\n componentDidMount() {\n const { userId } = this.props;\n this.loadData(userId);\n }\n\n componentWillUpdate(props) {\n const { userId } = this.props;\n if (props.userId !== userId) {\n this.loadData(props.userId);\n }\n }\n\n\n loadData = (userId) => {\n const params = {};\n const keys = [\n 'nroDocumento',\n 'nombres',\n 'apellidos',\n 'fechaNacimiento',\n 'celular',\n 'nacDepartamento',\n ];\n const labels = [\n 'Documento de Identidad',\n 'Nombres',\n 'Apellidos',\n 'Fecha de Nacimiento',\n 'Teléfono Móvil',\n 'Lugar de Nacimiento',\n ];\n\n if (userId !== null) {\n params.idUsuario = userId;\n }\n\n Person.at('get-personal-info').post(params).then((result) => {\n result.resultado.apellidos = `${result.resultado.apellidoPaterno} ${result.resultado.apellidoMaterno}`;\n const personalInfo = keys.map(k => result.resultado[k]);\n const data = [];\n personalInfo.forEach((val, index) => {\n const dataEntry = {};\n dataEntry.id = index;\n dataEntry.label = labels[index];\n dataEntry.value = val;\n if (labels[index].toLowerCase().includes('fecha')) {\n dataEntry.value = moment(val).format('DD/MMM/YYYY');\n }\n\n return data.push(dataEntry);\n });\n this.setState({ data });\n });\n }\n\n /**\n * Handles the rendering of the component\n * @memberof PersonalInformation\n */\n render() {\n const { data } = this.state;\n return (\n \n \n \n \n );\n }\n}\n\n/**\n * propTypes\n * @property {number} userId User ID\n */\nPersonalInformation.propTypes = {\n userId: PropTypes.number,\n};\n\nPersonalInformation.defaultProps = {\n userId: null,\n};\n\nexport default connect(state => ({\n role: sessionSelectors.roleSelector(state),\n}))(PersonalInformation);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Paper,\n Table,\n TableHead,\n TableCell,\n TableBody,\n Select,\n MenuItem,\n FormControl,\n FormHelperText,\n InputBase,\n Grid,\n IconButton,\n Tooltip,\n} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { TableToolbar, TableRow, ConfirmationDialog } from '../../../../components';\nimport applicationsActions from '../../../../store/applications/actions';\nimport { Agreements, Applications, Mobility } from '../../../../api';\n\nimport styles from './styles';\n\n/**\n * Component to display the information of an agreement.\n *\n * @class AgreementData\n * @extends {React.Component}\n * @category Screens\n */\nclass AgreementData extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n data: {},\n selectedUniversities: [],\n universitiesByAssociation: [],\n selectedOutUniversities: [],\n universitiesByCall: [],\n openConfirmation: false,\n };\n }\n\n componentDidMount = async () => {\n this.fetchData();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps !== this.props) {\n this.fetchData();\n }\n }\n\n fetchData = async () => {\n const { idPostulacion } = this.props;\n const payload = await Applications.at('get-application').post({\n idPostulacion,\n });\n const { resultado } = payload;\n this.setState({ data: resultado });\n\n const institutionsPayload = await Mobility.at('get-institutions-by-association').post({\n idAsociacion: resultado.idAsociacion,\n });\n const { resultado: universidades } = institutionsPayload;\n const selectedUniversities = [];\n resultado.universidades.forEach(universidad => selectedUniversities.push(universidad.idUniversidad));\n this.setState({ selectedUniversities, universitiesByAssociation: universidades });\n\n const agreementsByCall = await Agreements.at('get-agreements-by-call-options').post({\n idConvocatoria: resultado.idConvocatoria,\n idPostulacion\n });\n\n const selectedOutUniversities = [];\n if (resultado.idInstitucion) {\n resultado.universidades.map((universidad) => {\n let universidadByCall = agreementsByCall.resultado.find((value) => value.idConvenioConvocatoria == universidad.idConvenioConvocatoria)\n if (universidadByCall) {\n selectedOutUniversities[universidad.opcion - 1] = universidadByCall;\n }\n })\n };\n this.setState({ selectedOutUniversities, universitiesByCall: agreementsByCall.resultado });\n }\n\n /**\n * Handles the change of the selected university options.\n * @memberof AgreementData\n */\n handleChange = index => (event) => {\n const { idPostulacion } = this.props;\n this.setState((prevState) => {\n const newselectedUniversities = prevState.selectedUniversities.map((option, optionIndex) => {\n if (index === optionIndex) {\n return event.target.value;\n }\n if (option === event.target.value) {\n return '';\n }\n return option;\n });\n Applications.at('update-application-institution').post({\n idPostulacion,\n idInstitucion: event.target.value,\n opcion: index + 1,\n }).then(() => {\n this.fetchData();\n return { selectedUniversities: newselectedUniversities };\n });\n });\n }\n\n /**\n * Handles the change of the selected out university options.\n * @memberof AgreementData\n */\n handleOutUniversityChange = index => (event) => {\n const { idPostulacion, isVirtual, dispatch } = this.props;\n const universidad = event.target.value;\n const newselectedUniversities = this.state.selectedOutUniversities.map((option, optionIndex) => {\n if (index === optionIndex) {\n return event.target.value;\n }\n return option;\n });\n Applications.at('update-application-institution-options').post({\n idPostulacion,\n idUniversidad: universidad?.idUniversidad || 0,\n idConvenioConvocatoria: universidad.idConvenioConvocatoria || 0,\n opcion: index + 1,\n }).then(() => {\n if (isVirtual) {\n dispatch(applicationsActions.requestApplicationData({\n idPostulacion: idPostulacion,\n isVirtual: isVirtual\n }));\n }\n this.fetchData();\n this.setState({ selectedOutUniversities: newselectedUniversities });\n });\n }\n\n handleClick = async () => {\n const { idPostulacion, history, dispatch } = this.props;\n await Applications.at('delete-application').post({ idPostulacion });\n dispatch(applicationsActions.setApplication({}));\n dispatch(applicationsActions.requestStepper({ idPostulacion: null }));\n if (typeof history !== 'undefined') history.push('/app/convocatoria');\n }\n\n /**\n * Handles the rendering of the component\n * @memberof AgreementData\n */\n render() {\n const { classes, selectable, canDeleteAgreement, isOutApplication, hideExtraRows, isVirtual } = this.props;\n const { data, selectedUniversities, universitiesByAssociation, openConfirmation, universitiesByCall, selectedOutUniversities } = this.state;\n const universidadByCallSize = isVirtual ? 1 : 2;\n return (\n \n \n \n {canDeleteAgreement && (\n \n \n \n \n this.setState({ openConfirmation: true })}>\n \n \n \n \n \n \n )}\n \n
\n \n \n \n Convocatoria\n {!hideExtraRows && País / Región}\n Asociación / Institucion\n {hideExtraRows ? (\n selectable && universitiesByCall ? (\n universitiesByCall.slice(0, universidadByCallSize).map((universidad, index) => (\n \n {`Universidad Opción ${index + 1}`}\n \n ))\n ) : (\n !selectable &&\n selectedOutUniversities?.map((universidad, index) => (\n \n {`Universidad Opción ${index + 1}`}\n \n ))\n )\n ) : (\n selectedOutUniversities && (\n \n Universidad Seleccionada\n \n )\n )}\n\n {selectable\n ? universitiesByAssociation?.slice(0, 3).map((universidad, index) => (\n \n {`Universidad Opción ${index + 1}`}\n \n ))\n : data.idInstitucion === 0 &&\n data.universidades?.map((universidad, index) => (\n \n {`Universidad Opción ${index + 1}`}\n \n ))}\n {!hideExtraRows && Beca}\n Estado\n {!hideExtraRows && Idioma}\n \n \n \n \n {data.convocatoria}\n {!hideExtraRows && {data.pais}}\n {data.convenioInstitucion}\n\n {/* Out Universities Select */}\n {hideExtraRows &&\n selectable &&\n universitiesByCall?.slice(0, universidadByCallSize).map((universidad, index) => {\n const isUndefined = selectedOutUniversities?.[index] === undefined;\n return (\n \n \n \n {/* {index !== 0 && (\n \n Ninguna\n \n )} */}\n {universitiesByCall.map((universidadOption) => (\n \n {universidadOption.nombre}\n \n ))}\n \n {isUndefined && index === 0 && (\n <>\n * Seleccione una opción\n \n \n )}\n {isVirtual && * Al cambiar de universidad se eliminaran todos los cursos.\n }\n \n \n );\n })}\n\n {/* Selected Out Universities */}\n {hideExtraRows &&\n !selectable &&\n isOutApplication &&\n selectedOutUniversities?.map((universidad) => (\n {universidad.nombre}\n ))}\n\n {/* Selected University */}\n {!hideExtraRows && selectedOutUniversities && data.universidades && (\n \n {data.universidades.find((value) => value.idUniversidad === data?.idInstitucion)?.nombre}\n \n )}\n\n {/* Universities Select */}\n {selectable &&\n universitiesByAssociation?.slice(0, 3).map((universidad, index) => {\n const isUndefined = selectedUniversities?.[index] === undefined;\n return (\n \n \n \n {universitiesByAssociation.map((universidadOption) => (\n \n {universidadOption.nombre}\n \n ))}\n \n {isUndefined && (\n <>\n * Seleccione una opción\n \n \n )}\n \n \n );\n })}\n\n {/* Universities List (Non-Selectable) */}\n {!selectable &&\n data.idInstitucion === 0 &&\n data.universidades?.map((universidad) => (\n {universidad.nombre}\n ))}\n\n {!hideExtraRows && {data.tipoBeca}}\n {data.estado}\n {!hideExtraRows && {data.idioma}}\n \n \n
\n
\n this.setState({ openConfirmation: false })} />\n
\n );\n }\n}\n\nAgreementData.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n canDeleteAgreement: PropTypes.bool,\n isOutApplication: PropTypes.bool,\n};\n\nAgreementData.defaultProps = {\n canDeleteAgreement: false,\n};\n\nexport default compose(\n connect(null),\n withStyles(styles),\n)(AgreementData);\n","export default theme => ({\n universitySelect: {\n fontSize: 13,\n maxWidth: 190,\n },\n universityAgreementSelect: {\n fontSize: 13,\n maxWidth: 250,\n },\n customInput: {\n caretColor: 'transparent',\n },\n});\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport {\n Typography,\n TextField,\n Grid,\n withStyles,\n Button,\n DialogActions,\n} from '@material-ui/core';\nimport PdfIcon from '@material-ui/icons/PictureAsPdfOutlined';\nimport { isFunction } from 'lodash';\nimport styles from './styles';\nimport { Applications } from '../../api';\nimport { STUDENT_ROLES } from '../../constants/roles';\n\n/**\n * Counts the number of spanish words inside a given string.\n * Limitations:\n * 1) Spanish compound words are read as separate words: post-doctorado // 2 words\n * 2) Emails are read as separate words: example@example.com // 3 words\n * @param {string} value\n * @returns {number}\n * @memberof Postula.IntentionLetter\n */\nfunction countWords(value) {\n if (value === '' || value === null || value === undefined) {\n return 0;\n }\n return (\n value.toLowerCase()\n // Delete trailing spaces\n .trim()\n // Replace spanish characters\n .replace(/(á|é|í|ó|ú|ñ)/g, 'n')\n // Split only when a word boundary or an undersocore is found\n .split(/(\\b|_)/)\n // If any readable character is found, is considered a word\n // eslint-disable-next-line\n .filter((potentialWord) => {\n if (potentialWord.match(/[0-9a-z]/g)) return potentialWord;\n }).length\n );\n}\n\n/**\n *\n * Component that allows the user to write and send an intention letter.\n * @class IntentionLetter\n * @extends {React.Component}\n * @memberof Postula\n * @see Postula.ApplicationRequirements\n * @category Screens\n */\nclass IntentionLetter extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n letterContent: '',\n wordsLeft: 0,\n sent: 0,\n modificadoFecha: '',\n actualContent: '',\n };\n }\n\n async componentDidMount() {\n await this.fetchData();\n }\n\n componentWillUnmount() {\n const { role } = this.props;\n const { sent } = this.state;\n if (STUDENT_ROLES.includes(role) && sent === 0) {\n clearInterval(this.intervalId);\n }\n }\n\n fetchData = async () => {\n const {miPostulacion, role, application: { idPostulacion }, idRequisito } = this.props;\n var newData = {};\n if(miPostulacion){\n newData = {\n idRequisito,\n idPostulacion : miPostulacion.idPostulacion,\n }\n\n }\n else{\n newData = {\n idRequisito,\n idPostulacion,\n }\n }\n const payload = await Applications.at('get-intention-letter').post(newData);\n const { resultado } = payload;\n const letterContent = resultado.carta;\n const { modificadoFecha } = resultado;\n const maxWordsNumber = 720;\n if (STUDENT_ROLES.includes(role) && resultado.enviado === 0) {\n this.intervalId = setInterval(this.updateLetter, 15000);\n }\n this.setState({\n actualContent: letterContent,\n letterContent,\n maxWordsNumber,\n wordsLeft: maxWordsNumber - countWords(resultado.carta),\n sent: resultado.enviado,\n modificadoFecha,\n });\n }\n\n /**\n * Handles the change of the letter content\n * @memberof Postula.IntentionLetter\n */\n handleChange = (event) => {\n const { value } = event.target;\n const { maxWordsNumber } = this.state;\n const wordsLeft = maxWordsNumber - countWords(value);\n\n if (wordsLeft >= 0) {\n this.setState({ letterContent: value, wordsLeft });\n }\n }\n\n updateLetter = async () => {\n const { application: { idPostulacion }, idRequisito } = this.props;\n const { letterContent, actualContent } = this.state;\n if (letterContent !== actualContent) {\n await Applications.at('update-intention-letter').post({\n idPostulacion,\n idRequisito,\n carta: letterContent,\n enviado: 0,\n });\n await this.fetchData();\n }\n }\n\n handleSubmit = async (event) => {\n event.preventDefault();\n const { application: { idPostulacion }, idRequisito } = this.props;\n const { onClose } = this.props;\n const { letterContent } = this.state;\n await Applications.at('update-intention-letter').post({\n idPostulacion,\n idRequisito,\n carta: letterContent,\n enviado: 1,\n });\n if (isFunction(onClose)) {\n onClose();\n }\n }\n\n /**\n * Handles the rendering of the component\n * @memberof Postula.IntentionLetter\n */\n render() {\n const { classes, role } = this.props;\n const { letterContent, wordsLeft, sent, modificadoFecha } = this.state;\n\n return (\n
\n \n \n {\n STUDENT_ROLES.includes(role) && sent === 0\n ? (\n \n \n INSTRUCCIONES\n \n \n Escribe el ensayo en el editor de texto. El\n ensayo se guarda automáticamente y puedes\n actualizarlo posteriormente. Cuando este listo\n puedes presionar el botón Enviar para cumplir\n con el requisito. Una vez enviado ya no se\n podrá modificar.\n \n \n
\n {`Palabras restantes: ${wordsLeft}`}\n {`Última Actualización: ${moment(modificadoFecha).format('DD/MM/YYYY hh:mm A')}`}\n
\n
\n )\n : (\n \n {letterContent}\n \n )\n }\n \n {\n const childWindow = window.open('', 'childWindow', 'location=yes, menubar=yes, toolbar=yes');\n childWindow.document.open();\n childWindow.document.write('');\n childWindow.document.write(letterContent.replace(/\\n/gi, '
'));\n childWindow.document.write('');\n childWindow.print();\n childWindow.document.close();\n childWindow.close();\n }}\n >\n \n Exportar a PDF\n \n {\n STUDENT_ROLES.includes(role) && sent === 0 && (\n \n ENVIAR\n \n )\n }\n
\n
\n
\n
\n );\n }\n}\n\n/**\n * propTypes\n * @memberof Postula.IntentionLetter\n * @property {object} classes Classes used by styles\n * @property {function} onClose\n * @property {number} role\n * @property {number} idRequisito\n * @property {object} application Data of the current user application\n */\nIntentionLetter.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n onClose: PropTypes.func.isRequired,\n role: PropTypes.number.isRequired,\n idRequisito: PropTypes.number.isRequired,\n application: PropTypes.shape({}).isRequired,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withStyles(styles),\n)(IntentionLetter);\n","export default theme => ({\n bottomIndicators: {\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: 20,\n [theme.breakpoints.down('xs')]: {\n flexFlow: 'column',\n },\n },\n actionsContainer: {\n [theme.breakpoints.down('xs')]: {\n flexFlow: 'column',\n },\n },\n actionBtn: {\n minWidth: 150,\n [theme.breakpoints.down('xs')]: {\n marginBottom: theme.spacing.unit,\n width: '100%',\n },\n },\n});\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n TextField,\n Grid,\n Typography,\n FormControlLabel,\n Checkbox,\n Button,\n DialogActions,\n} from '@material-ui/core';\nimport { isFunction } from 'lodash';\nimport { Applications, Mobility } from '../../api';\nimport styles from './styles';\nimport { STUDENT_ROLES, ROLE_DRIC, ROLE_ASISTENTE_DRIC } from '../../constants/roles';\nimport { TableToolbar, FlexCheckboxGroup } from '../../components';\n\n/**\n * Component to handle a recomendation that is sent by a student\n * @class AskRecomendation\n * @extends {React.Component}\n * @memberof Postula\n * @see Postula.ApplicationRequirements\n * @category Screens\n */\nclass AskRecomendation extends React.Component {\n constructor(props) {\n super(props);\n /**\n * AcceptRecomendation state.\n * @type {object}\n * @memberof Postula.AskRecomendation\n * @property {string} nombreDocente\n * @property {string} emailDocente\n * @property {bool} conformidad\n */\n this.state = {\n nombreDocente: '',\n emailDocente: '',\n conformidad: false,\n idPostulacion: props.application.idPostulacion,\n escuelaProfesor: '',\n nombreEstudiante: '',\n emailEstudiante: '',\n explicacion: '',\n motivo: '',\n cualidades: '',\n convocatoria: '',\n convenio: '',\n qualitiesLabels: [],\n };\n }\n\n async componentDidMount() {\n const {miPostulacion, application, idRequisito } = this.props;\n var newData = {};\n if(miPostulacion){\n newData = {\n idRequisito,\n idPostulacion : miPostulacion.idPostulacion,\n }\n }\n else{\n newData = {\n idRequisito,\n idPostulacion: application.idPostulacion,\n }\n }\n const payload = await Applications.at('get-info-teacher-recommendation').post(newData);\n const { resultado } = payload;\n const {\n nombreDocente,\n emailDocente,\n conformidad,\n } = resultado;\n\n const recomendationPayload = await Applications.at('get-teacher-recommendation').post(newData);\n const {\n escuelaProfesor,\n nombreEstudiante,\n emailEstudiante,\n explicacion,\n motivo,\n cualidades,\n convocatoria,\n convenio,\n } = recomendationPayload.resultado;\n const labelsPayload = await Mobility.at('get-qualities').post({ idPostulacion: application.idPostulacion });\n this.setState({\n nombreDocente,\n emailDocente,\n conformidad,\n escuelaProfesor,\n nombreEstudiante,\n emailEstudiante,\n explicacion,\n motivo,\n cualidades: cualidades && cualidades.split(',').map(value => parseInt(value)),\n convocatoria,\n convenio,\n qualitiesLabels: labelsPayload.resultado.cualidades,\n });\n }\n\n /**\n * Handles the change of inputs\n * @memberof Postula.AskRecomendation\n */\n handleChange = name => (event) => {\n if (name !== 'conformidad') {\n const { value } = event.target;\n this.setState({ [name]: value });\n } else {\n const { checked } = event.target;\n this.setState({ [name]: checked });\n }\n }\n\n /**\n * Handles the submit action of the form\n * @memberof Postula.AskRecomendation\n */\n handleSubmit = async (event) => {\n event.preventDefault();\n const { onClose, idRequisito } = this.props;\n await Applications.at('update-info-teacher-recommendation').post({ ...this.state, idRequisito });\n if (isFunction(onClose)) {\n onClose();\n }\n }\n\n /**\n * Handles the rendering of the component\n * @memberof Postula.AskRecomendation\n */\n render() {\n const { classes, role, readOnly } = this.props;\n const {\n nombreDocente,\n emailDocente,\n conformidad,\n escuelaProfesor,\n nombreEstudiante,\n emailEstudiante,\n explicacion,\n motivo,\n cualidades,\n convocatoria,\n convenio,\n qualitiesLabels,\n } = this.state;\n const disabled = !STUDENT_ROLES.includes(role) || readOnly;\n return (\n
\n \n \n \n \n \n \n \n {!STUDENT_ROLES.includes(role) && (\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {qualitiesLabels.length > 0 && (\n ({\n id: quality.idCualidad,\n value: cualidades && cualidades.some(cualidad => cualidad === quality.idCualidad),\n label: quality.descripcion,\n }))\n }\n readOnly\n />\n )}\n \n \n \n \n \n
\n \n
\n
\n )}\n \n \n NOTA: El estado del requisito permanecerá en estado \"Pendiente\" hasta que\n el docente acepte la recomendación enviada\n \n \n )}\n label=\"Doy conformidad que he conversado previamente con el/la docente\n para solicitar autorización para la presente recomendación\n y que esta ha sido aceptada\"\n />\n \n {STUDENT_ROLES.includes(role) && !disabled && (\n \n \n * Al presionar Enviar, se comunicará por email al docente su solicitud de\n recomendación para que pueda aceptarla o desestimarla.\n \n \n \n \n \n )}\n
\n\n
\n );\n }\n}\n\n/**\n * propTypes\n * @memberof Postula.AskRecomendation\n * @property {object} classes Classes used by styles\n * @property {function} onClose\n */\nAskRecomendation.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withStyles(styles),\n)(AskRecomendation);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {\n Typography,\n Button,\n TextField,\n Grid,\n DialogActions,\n} from '@material-ui/core';\nimport { Agreements } from '../../../api';\nimport { isFunction } from 'lodash';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component to handle the upload of the identity document\n *\n * @class MobilityIn-AlumnoObservacion\n * @extends {React.Component}\n * @category Screens\n */\nclass AlumnoObservacion extends React.Component {\n constructor(props) {\n super(props);\n const { requirement } = props;\n this.state = {\n alumnoObservacion: requirement && requirement.alumnoObservacion,\n };\n }\n\n\n handleChange = (event) => {\n this.setState({\n alumnoObservacion: event.target.value,\n });\n };\n\n\n handleSave = async () => {\n const {\n onClose,\n requirement: {\n idRequisito,\n },\n application: {\n idPostulacion,\n }\n } = this.props;\n const { alumnoObservacion } = this.state;\n let payload = {\n idRequisito,\n idPostulacion,\n observado: true,\n alumnoObservacion: alumnoObservacion,\n };\n\n await Agreements.at('update-additional-task-observation').post(payload);\n\n if (isFunction(onClose)) {\n onClose();\n }\n }\n\n renderObservadoInput = () => {\n const { requirement } = this.props;\n if (requirement?.estado == \"Cumplido\" && !requirement?.observado) {\n return (\n \n \n \n \n \n \n \n \n\n )\n } else if (requirement?.alumnoObservacion) {\n return (\n \n {requirement.alumnoObservacion}\n \n )\n }\n }\n\n /**\n * Handles the rendering of the component\n * @memberof MobilityIn-AlumnoObservacion\n */\n render() {\n const { isStudent, requirement, t } = this.props;\n\n return (\n
\n {t(\"OBSERVACIÓN\")} \n {\n isStudent && requirement?.observado &&\n \n {requirement.alumnoObservacion}\n \n }\n {\n !isStudent && this.renderObservadoInput()\n }\n
\n )\n }\n}\n\n/**\n * propTypes\n * @memberof MobilityIn-AlumnoObservacion\n * @property {object} classes Classes used by styles\n * @property {function} onClose\n */\nAlumnoObservacion.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n application: PropTypes.shape().isRequired,\n requirement: PropTypes.shape().isRequired,\n role: PropTypes.number.isRequired,\n isStudent: PropTypes.bool.isRequired,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withTranslation()\n)(AlumnoObservacion);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {\n Grid,\n Typography,\n Button,\n DialogActions,\n} from '@material-ui/core';\nimport DownloadIcon from '@material-ui/icons/CloudDownload';\nimport * as moment from 'moment';\n\nimport { isFunction } from 'lodash';\nimport { Agreements, Applications } from '../../../api';\nimport { ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../../constants/roles';\nimport { UploadField } from '../../../components';\nimport { downloadBlob } from '../../../utils';\nimport AlumnoObservacion from './alumno-observacion';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component to handle the upload of the identity document\n *\n * @class MobilityIn-UploadIdentityDocument\n * @extends {React.Component}\n * @category Screens\n */\nclass UploadIdentityDocument extends React.Component {\n constructor(props) {\n super(props);\n const { requirement } = props;\n this.state = {\n archivo: requirement && requirement.archivo ? requirement.archivo : '',\n archivoNombre: requirement && requirement.nombre && requirement.archivo ? requirement.nombre.trim().split(' ').join('-').toLowerCase() : '',\n updateDate: requirement && requirement.fecha ? requirement.fecha : null,\n observado: requirement && requirement.observado,\n alumnoObservacion: requirement && requirement.alumnoObservacion,\n };\n }\n\n\n handleFileChange = ({ archivo, nombreArchivo }) => {\n this.setState({\n archivo,\n archivoNombre: nombreArchivo,\n updateDate: moment().format('DD/MM/YYYY'),\n });\n };\n\n /**\n * Handles the submit action of the form\n * @memberof MobilityIn-UploadIdentityDocument\n */\n handleSubmit = async (event) => {\n event.preventDefault();\n const { onClose, requirement: { idRequisito, observado }, application: { idPostulacion } } = this.props;\n const { archivo, archivoNombre } = this.state;\n\n await Applications.at('insert-personal-documents').post({\n archivo,\n archivoNombre,\n idPostulacion,\n idRequisito,\n });\n\n if (observado) {\n await Agreements.at('update-additional-task-observation').post({\n idRequisito,\n idPostulacion,\n observado: false,\n alumnoObservacion: \"\",\n });\n }\n\n if (isFunction(onClose)) {\n onClose();\n }\n }\n\n /**\n * Handles the rendering of the component\n * @memberof MobilityIn-UploadIdentityDocument\n */\n render() {\n const { role, readOnly, requirement, onClose, t, accept } = this.props;\n const { updateDate } = this.state;\n const supportedRoles = [ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER];\n const disabled = !supportedRoles.includes(role) || readOnly;\n\n return (\n
\n \n \n \n {t(\"Fecha de actualización\")}: \n {updateDate || '-'}\n \n \n {requirement?.plantilla && supportedRoles.includes(role) &&\n \n {t(\"Plantilla\")}:\n \n \n }\n \n \n {requirement?.archivo && (\n \n {t(\"Archivo\")}:\n \n \n )}\n {requirement?.estado !== \"Cumplido\" && supportedRoles.includes(role) && (\n \n \n \n )}\n {requirement?.estado !== \"Cumplido\" && supportedRoles.includes(role) && !disabled && (\n \n \n \n \n \n )}\n \n \n {(requirement?.observado || (!supportedRoles.includes(role) && requirement?.estado == \"Cumplido\")) &&\n \n \n \n }\n \n
\n );\n }\n}\n\n/**\n * propTypes\n * @memberof MobilityIn-UploadIdentityDocument\n * @property {object} classes Classes used by styles\n * @property {function} onClose\n */\nUploadIdentityDocument.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n onClose: PropTypes.func.isRequired,\n application: PropTypes.shape().isRequired,\n requirement: PropTypes.shape().isRequired,\n role: PropTypes.number.isRequired,\n readOnly: PropTypes.bool.isRequired,\n accept: PropTypes.string,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withTranslation()\n)(UploadIdentityDocument);\n","export default theme => ({\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n actions: {\n display: 'flex',\n },\n terms: {\n paddingTop: theme.spacing.unit * 3,\n paddingLeft: theme.spacing.unit * 3,\n [theme.breakpoints.down('sm')]: {\n paddingLeft: 0,\n },\n },\n actionContainer: {\n marginTop: 28,\n },\n actionBtn: {\n minWidth: 150,\n margin: 0,\n [theme.breakpoints.down('xs')]: {\n marginBottom: theme.spacing.unit,\n width: '100%',\n },\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\nimport {\n Grid,\n Typography,\n DialogContent,\n DialogActions,\n Button,\n CircularProgress,\n} from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport DownloadIcon from '@material-ui/icons/CloudDownload';\nimport { DialogHeader, UploadField } from '../../components';\nimport { Applications } from '../../api';\nimport applicationsSelectors from '../../store/applications/selectors';\nimport { downloadBlob } from '../../utils';\n\nimport styles from './styles';\nimport { STUDENT_ROLES } from '../../constants/roles';\n\n/**\n * Component taht renders the Commitment Acts. It is used by the components listed bellow.\n * @see Postula.ApplicationRequirements\n *\n * @class CommitmentAct\n * @extends {React.PureComponent}\n * @memberof Postula\n * @category Screens\n */\nclass CommitmentAct extends React.PureComponent {\n state = {\n isLoading: true,\n nombreArchivo: '',\n actaFile: null,\n archivo: '',\n };\n\n async componentDidMount() {\n const { miPostulacion, idRequisito, application: { idPostulacion } } = this.props;\n var newData = {};\n if(miPostulacion){\n newData = {\n idRequisito,\n idPostulacion : miPostulacion.idPostulacion,\n }\n }\n else{\n newData = {\n idRequisito,\n idPostulacion,\n }\n }\n const { resultado: { formato: acta } } = await Applications.at('get-compromise-format').post(newData);\n const { resultado: resultadoCompromise } = await Applications.at('get-compromise').post(newData);\n const { acta: actaFile } = resultadoCompromise;\n this.setState({ acta, actaFile, isLoading: false });\n }\n\n handleChange = (fileObject) => {\n this.setState(fileObject);\n };\n\n handleSubmit = () => {\n const { onClose, idRequisito, application: { idPostulacion } } = this.props;\n const { archivo, nombreArchivo } = this.state;\n const payload = {\n idRequisito,\n idPostulacion,\n archivo,\n nombreArchivo,\n };\n this.setState({ isLoading: true }, () =>{\n Applications.at('update-compromise').post(payload).then(() => {\n onClose();\n }).catch((err) => {\n this.setState({ isLoading: false, archivo: '', nombreArchivo: '' });\n });\n });\n }\n\n render() {\n const { classes, onClose, readOnly, role } = this.props;\n const {\n isLoading,\n acta,\n actaFile,\n archivo,\n } = this.state;\n\n const disabled = !STUDENT_ROLES.includes(role) || readOnly;\n\n return (\n \n \n \n {isLoading ? (\n \n \n \n \n \n ) : (\n \n \n \n \n Fecha de Actualización\n \n \n \n
    \n
  1. \n

    Descargue el formato de Acta de Compromiso presionando el botón.

    \n \n \n \n \n \n { actaFile !== null && (\n \n )}\n \n \n\n
  2. \n
  3. \n

    Complete los datos solicitados e imprima una copia.

    \n
  4. \n
  5. \n

    Los padres o apoderados deberán firmalar y legalizarla notarialmente.

    \n
  6. \n
  7. \n

    Escanee la carta después de legalizarla y cargue en el sistema el archivo presionando el botón.

    \n\n \n
  8. \n
\n
\n )}\n
\n {archivo !== '' && !isLoading && (\n \n \n Enviar\n \n \n )}\n
\n );\n }\n}\n\nconst withConnect = connect(state => ({\n application: applicationsSelectors.applicationSelector(state),\n role: state.session.role.idRol,\n}));\n\n/**\n * propTypes\n * @property {function} onClose\n * @property {number} idRequisito\n * @property {object} classes Classes used by styles\n * @property {object} application Current user application data\n */\nCommitmentAct.propTypes = {\n onClose: PropTypes.func.isRequired,\n idRequisito: PropTypes.number.isRequired,\n classes: PropTypes.shape({}).isRequired,\n application: PropTypes.shape({\n idPostulacion: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nexport default compose(\n withStyles(styles),\n withConnect,\n)(CommitmentAct);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmpty } from 'lodash';\nimport {\n TableCell,\n TableRow,\n TextField,\n IconButton,\n MenuItem,\n Button,\n withStyles,\n} from '@material-ui/core';\nimport SaveIcon from '@material-ui/icons/Save';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport { downloadBlob } from '../../utils';\nimport { UploadField, ConfirmationDialog } from '../../components';\n\nimport styles from './styles';\n\n/**\n * Additional Documentation Row.\n * Has its own class since each item is item is saved separetely.\n * It is used by the components listed bellow.\n * @see Postula.AdditionalDocumentation\n *\n * @class DocumentationRow\n * @extends {React.Component}\n * @memberof Postula\n * @category Screens\n */\nclass DocumentationRow extends React.PureComponent {\n constructor(props) {\n super(props);\n const { item } = props;\n this.state = {\n ...item,\n file: '',\n archivo: item.archivoNombre,\n openConfirmation: false,\n };\n }\n\n componentDidMount() {\n this.checkValidation();\n }\n\n /**\n * Handles on change each input\n * @memberof DocumentationRow\n */\n handleChange = name => (event) => {\n this.setState({ [name]: event.target.value }, () => {\n this.checkValidation();\n });\n };\n\n handleFileChange = ({ archivo, nombreArchivo }) => {\n this.setState({\n file: archivo,\n archivo: nombreArchivo,\n }, () => {\n this.checkValidation();\n });\n };\n\n /**\n * Handles the submit action\n * @memberof DocumentationRow\n */\n handleSave = async () => {\n const { onSave } = this.props;\n onSave(this.state);\n }\n\n checkValidation = () => {\n const {\n tipo, descripcion,\n } = this.state;\n const isValid = tipo && !isEmpty(descripcion);\n this.setState({ isValid });\n }\n\n handleDelete = () => {\n const { item, onDelete } = this.props;\n onDelete(item);\n }\n\n render() {\n const {\n descripcion,\n tipo,\n archivoNombre,\n archivoHash,\n isValid,\n idDocumentoAdicional,\n openConfirmation,\n } = this.state;\n const {\n documentationTypes,\n classes,\n } = this.props;\n\n return (\n \n \n \n \n \n \n {documentationTypes.map(option => (\n \n {option.nombre}\n \n ))}\n \n \n \n { !isEmpty(archivoHash) && (\n \n ) }\n \n \n \n \n \n \n \n \n {idDocumentoAdicional && (\n this.setState({ openConfirmation: true })}>\n \n \n )}\n \n this.setState({ openConfirmation: false })} />\n \n );\n }\n}\n\nDocumentationRow.defaultProps = {\n item: {\n archivo: '',\n },\n onDelete: null,\n};\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n * @property {object} item Information of Additional documentation\n * @property {array} documentationTypes Types of the extra documentation\n * @property {function} onSave\n * @property {function} onDelete\n */\nDocumentationRow.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n item: PropTypes.shape({}),\n documentationTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n onSave: PropTypes.func.isRequired,\n onDelete: PropTypes.func,\n};\n\n\nexport default withStyles(styles)(DocumentationRow);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Button,\n Table,\n TableHead,\n TableCell,\n TableRow,\n TableBody,\n DialogActions,\n CircularProgress,\n Grid,\n} from '@material-ui/core';\n\nimport DocumentationRow from './documentation-row';\nimport styles from './styles';\nimport { STUDENT_ROLES } from '../../constants/roles';\n\n\nimport {\n Applications,\n Mobility,\n} from '../../api';\n\n/**\n * Component that renders additional documentation. It is used by the components listed bellow.\n * @see Postula.ApplicationRequirements\n *\n * @class AdditionalDocumentation\n * @extends {React.PureComponent}\n * @memberof Postula\n * @category Screens\n */\nclass AditionalRequirements extends React.PureComponent {\n state = {\n forms: {},\n documentationTypes: [],\n additionalDocumention: [],\n showAddRow: false,\n isLoading: false,\n }\n\n componentDidMount() {\n this.loadData();\n }\n\n loadData = async () => {\n this.setState({ isLoading: true });\n const { application: { idPostulacion } } = this.props;\n const { resultado: documentationTypes } = await Mobility.at('get-documentation-types').post();\n const newData = {\n idPostulacion,\n };\n const { resultado: additionalDocumention } = await Applications.at(\n 'get-additional-documentation',\n ).post(newData);\n this.setState({ documentationTypes, additionalDocumention, isLoading: false });\n }\n\n handleChange = (requirementId, ev) => {\n const { forms } = this.state;\n forms[requirementId] = {\n archivo: ev.target.value,\n };\n this.setState({ forms });\n }\n\n handleSave = (item) => {\n const { application: { idPostulacion } } = this.props;\n const {\n idDocumentoAdicional,\n tipo,\n descripcion,\n file: archivo,\n archivo: archivoNombre,\n } = item;\n let callback;\n if (Object.prototype.hasOwnProperty.call(item, 'idDocumentoAdicional')) {\n callback = Applications.at('update-additional-documentation').post({\n idDocumentoAdicional,\n tipo,\n descripcion,\n archivo,\n archivoNombre,\n });\n } else {\n callback = Applications.at('insert-additional-documentation').post({\n idPostulacion,\n tipo,\n descripcion,\n archivo,\n archivoNombre,\n });\n }\n callback.then(() => {\n this.loadData();\n this.setState({ showAddRow: false });\n });\n }\n\n handleAddRow = () => {\n const { showAddRow } = this.state;\n this.setState({ showAddRow: !showAddRow });\n }\n\n handleDelete = (item) => {\n const { idDocumentoAdicional } = item;\n\n Applications.at('delete-additional-documentation').post({\n idDocumentoAdicional,\n }).then(() => {\n this.loadData();\n });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see Postula.DocumentationRow\n * @memberof Postula.AdditionalDocumentation\n */\n render() {\n const {\n additionalDocumention,\n documentationTypes,\n showAddRow,\n isLoading,\n } = this.state;\n const {\n classes,\n readOnly,\n role,\n } = this.props;\n\n if (isLoading) {\n return (\n \n \n \n \n \n );\n }\n\n return (\n \n \n \n \n Descripción\n Estado\n Archivo\n Subir\n \n \n \n \n {additionalDocumention.map(item => (\n \n ))}\n { showAddRow && (\n \n ) }\n \n
\n \n \n {showAddRow ? 'Cancelar' : 'Agregar Requisito'}\n \n \n
\n );\n }\n}\n\nconst withConnect = connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n}));\n\nexport default compose(\n withConnect,\n withStyles(styles),\n)(AditionalRequirements);\n","import React from 'react';\nimport { compose } from 'redux';\nimport PropTypes from 'prop-types';\nimport { isFunction } from 'lodash';\nimport {\n Paper,\n withStyles,\n Typography,\n DialogContent,\n Dialog,\n} from '@material-ui/core';\nimport withWidth, { isWidthDown } from '@material-ui/core/withWidth';\nimport * as moment from 'moment';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport CheckIcon from '@material-ui/icons/Check';\nimport AgendaIcon from '@material-ui/icons/PlaylistAddCheck';\nimport TimeIcon from '@material-ui/icons/AccessTime';\nimport { TableToolbar, ActionsTable, DialogHeader } from '../../components';\n\nimport IntentionLetter from '../intention-letter';\nimport AskRecomendation from '../recomendations/ask-recomendation';\nimport { Applications } from '../../api';\nimport UploadDocument from '../common/mobility-in/upload-document';\nimport CommitmentAct from './commitment-act';\nimport styles from './styles';\nimport AdditionalDocumentation from './additional-documentation';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component to display the requirements of an application. It is used by the components listed bellow.\n * @see ApplicationInfo\n *\n * @class ApplicationRequirements\n * @extends {React.Component}\n * @memberof Postula\n * @category Screens\n */\nclass ApplicationRequirements extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n requirements: [],\n selectedRequirement: null,\n showLetter: false,\n showRecommendation: false,\n commitmentAct: false,\n showAdditionalDocumentation: false,\n showPhotography: false,\n showDocumentCopy: false,\n showLanguageDocument:false,\n };\n\n this.actions = [\n (row) => {\n if (row.idRequisito <= 5) {\n return null;\n }\n return {\n tooltip: 'Detalles',\n icon: VisibilityIcon,\n onClick: this.onClickRequirement,\n };\n },\n ];\n }\n\n async componentDidMount() {\n await this.fetchData();\n }\n\n async componentDidUpdate(prevProps) {\n const { idPostulacion: currentIdPostulacion } = this.props;\n if (prevProps.idPostulacion !== currentIdPostulacion) {\n await this.fetchData();\n }\n }\n\n fetchData = async () => {\n const { idPostulacion, onCheckRequirements } = this.props;\n if (typeof idPostulacion === 'undefined') return;\n\n const payload = await Applications.at('get-requirements-application').post({\n idPostulacion,\n });\n const { resultado } = payload;\n let canApply = resultado.length > 0;\n const requirements = resultado.map((requirement) => {\n requirement.fecha = moment(requirement.fecha).format('DD/MM/YYYY');\n if (requirement.estado === 'Pendiente') canApply = false;\n return requirement;\n });\n if (isFunction(onCheckRequirements)) onCheckRequirements(canApply);\n this.setState({ requirements, selectedRequirement: null });\n }\n\n onClickRequirement = (event, requirement) => {\n const { idRequisito } = requirement;\n\n switch (idRequisito) {\n case 6:\n this.setState({ showLetter: true, idRequisito, selectedRequirement: requirement });\n break;\n case 7:\n this.setState({ showRecommendation: true, idRequisito, selectedRequirement: requirement });\n break;\n case 8:\n this.setState({ commitmentAct: true, idRequisito });\n break;\n case 9:\n this.setState({ showAdditionalDocumentation: true });\n break;\n case 10:\n this.setState({ showLetter: true, idRequisito, selectedRequirement: requirement });\n break;\n case 11:\n this.setState({ showRecommendation: true, idRequisito, selectedRequirement: requirement });\n break;\n case 12:\n this.setState({ showPhotography: true, selectedRequirement: requirement });\n break;\n case 13:\n this.setState({ showDocumentCopy: true, selectedRequirement: requirement });\n break;\n case 14:\n this.setState({ showLanguageDocument: true, selectedRequirement: requirement });\n break;\n case 1026:\n this.setState({ showNotesCertificate: true, selectedRequirement: requirement });\n break;\n default:\n return null;\n }\n }\n\n handleShowAdditionalDocumentation = () => {\n this.setState({ showAdditionalDocumentation: true });\n }\n\n handleClose = name => () => {\n this.setState({ [name]: false });\n this.fetchData();\n }\n\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see Postula.IntentionLetter\n * @see Postula.AskRecomendation\n * @see Postula.CommitmentAct\n * @see Postula.AdditionalDocumentation\n * @memberof Postula.ApplicationRequirements\n */\n render() {\n const { classes, readOnly, title, isMobilityIn, t } = this.props;\n const {\n showLetter,\n showRecommendation,\n commitmentAct,\n idRequisito,\n requirements,\n showAdditionalDocumentation,\n showPhotography,\n showDocumentCopy,\n selectedRequirement,\n showNotesCertificate,\n showLanguageDocument,\n } = this.state;\n\n this.columns = [\n { title: t('Requisito'), field: 'nombre', render: (row) => t(row.nombre) },\n {\n title: t('Observaciones'),\n field: 'observacion',\n cellStyle: { whiteSpace: 'pre-line' },\n hidden: isWidthDown('sm', this.props.width),\n render: (row) => t(row.observacion)\n },\n { title: t('Fecha'), field: 'fecha', hidden: isWidthDown('sm', this.props.width) },\n {\n title: t('Estado'),\n field: 'estado',\n render: (row) => (\n
\n
{t(row.estado)}
\n {row.estado === 'Cumplido' && }\n {row.estado === 'Por Verificar' && }\n {row.estado === 'Pendiente' && }\n
\n ),\n },\n ];\n return (\n \n \n }\n options={{\n showTitle: true,\n }}\n actions={this.actions}\n actionsTitle={t(\"Detalles\")}\n materialTableOptions={{\n paging: false,\n exportFileName: 'Requisitos_de_Postulación',\n actionsColumnIndex: -1,\n }}\n localization={{\n ...t(\"table\")\n }}\n />\n \n * {t(\"Los requisitos en estado Por Verificar se evaluarán posteriormente a la postulación.\")}\n \n \n \n \n \n \n \n \n {isMobilityIn ?\n :\n \n }\n \n \n \n \n \n {isMobilityIn ?\n :\n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\n/**\n * propTypes\n * @memberof Postula.ApplicationRequirements\n * @property {object} classes Classes used by styles\n * @property {number} idPostulacion\n * @property {function} onCheckRequirements Function to check if all the requiremnts are completed\n * @property {bool} readOnly\n * @property {node} title\n */\nApplicationRequirements.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n idPostulacion: PropTypes.number.isRequired,\n onCheckRequirements: PropTypes.func,\n readOnly: PropTypes.bool,\n title: PropTypes.node,\n};\n\nApplicationRequirements.defaultProps = {\n onCheckRequirements: () => null,\n readOnly: true,\n};\n\nexport default compose(\n withWidth(),\n withStyles(styles),\n withTranslation()\n)(ApplicationRequirements);\n","import React from 'react';\nimport {\n Grid, Paper, Fab,\n} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/DeleteForeverRounded';\nimport AddIcon from '@material-ui/icons/Add';\n\nimport { ActionsTable, TableToolbar } from '../../../../components';\nimport { Applications } from '../../../../api';\nimport applicationsActions from '../../../../store/applications/actions';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\n\nfunction CoursesSection(props) {\n\n const [courses, setCourses] = React.useState([]);\n const [isLoading, setIsLoading] = React.useState(false);\n const { classes, history, idPostulacion, dispatch, canEdit, updateSelectedStep, t, application } = props;\n\n const handleDeleteApplication = async () => {\n try {\n await Applications.at('delete-application').post({ idPostulacion });\n dispatch(applicationsActions.setApplication({}));\n dispatch(applicationsActions.requestStepper({ idPostulacion: null }));\n if (typeof history !== 'undefined') history.push('/app/convocatoria');\n } catch (error) {\n console.log('Error', error);\n }\n };\n\n const fetchCourses = async () => {\n setIsLoading(true);\n try {\n const { resultado } = await Applications.at('get-application-courses').post({\n idPostulacion,\n });\n // if (resultado.length === 0 && canEdit) {\n // handleDeleteApplication();\n // } else {\n setCourses(resultado);\n // }\n } catch (error) { } finally {\n setIsLoading(false);\n }\n };\n\n const deleteAllCourses = async () => {\n setIsLoading(true);\n try {\n await Promise.all(\n courses.map(course =>\n Applications.at('delete-course-application').post({\n idCurso: course.idCurso,\n })\n )\n );\n fetchCourses();\n } catch (error) { } finally {\n setIsLoading(false);\n }\n };\n\n const deleteCourse = async (e, course) => {\n setIsLoading(true);\n try {\n await Applications.at('delete-course-application').post({\n idCurso: course.idCurso,\n });\n fetchCourses();\n } catch (error) { } finally {\n setIsLoading(false);\n }\n };\n\n React.useEffect(() => {\n fetchCourses();\n }, [idPostulacion]);\n\n React.useEffect(() => {\n deleteAllCourses();\n }, [application.idAsociacion]);\n\n return (\n \n \n \n \n {canEdit && (\n
\n updateSelectedStep(0)}\n >\n \n {t(\"Agregar curso\")}\n \n
\n )}\n
\n
\n );\n}\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n })),\n withTranslation(),\n)(CoursesSection);","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Grid, FormControl, FormControlLabel, Checkbox, Fab\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport AcademicData from '../common/student/academic-data';\nimport PersonalInformation from '../common/student/personal-information';\nimport AgreementData from '../common/student/agreement-data';\nimport ApplicationRequirements from './requirements';\nimport { FormActions } from '../../components';\nimport { Applications } from '../../api';\nimport styles from './styles';\nimport { ROLE_DRIC, STUDENT_ROLES, ROLE_ASISTENTE_DRIC } from '../../constants/roles';\nimport applicationsActions from '../../store/applications/actions';\nimport CoursesSection from '../common/student/courses-section';\n\n/**\n * Groups all the class and functional components related to the Postula screen, the\n * second step on the MobilityOut process.\n *\n * @see {@link ApplicationInfo} main component\n * @namespace Postula\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link Postula} that displays the information of an application.\n *\n * @class ApplicationInfo\n * @extends {React.Component}\n * @category Screens\n */\nclass ApplicationInfo extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n conformidad: false,\n canApply: false,\n readOnly: false,\n };\n this.formRef = React.createRef();\n }\n\n async componentDidMount() {\n const { application } = this.props;\n const applicationPayload = await Applications.at('get-application').post({\n idPostulacion: application.idPostulacion,\n });\n const { conformidadProceso: readOnly } = applicationPayload.resultado;\n this.setState({ readOnly, conformidad: readOnly });\n }\n\n /**\n * Handles the change of the checkbox\n * @memberof ApplicationInfo\n */\n handleChange = (event) => {\n this.setState({ conformidad: event.target.checked });\n }\n\n /**\n * Handles the submit action\n * @memberof ApplicationInfo\n */\n handleSubmit = async (event) => {\n event.preventDefault();\n if (this.formRef.current.reportValidity()) {\n const { application, history, dispatch } = this.props;\n const { conformidad } = this.state;\n await Applications.at('update-application-state').post({\n idPostulacion: application.idPostulacion,\n conformidad,\n });\n await dispatch(applicationsActions.requestStepper({ idPostulacion: application.idPostulacion }));\n history.push('entrevistas');\n } else {\n this.formRef.current.scrollIntoView();\n }\n };\n\n updateCanApply = (canApply) => {\n this.setState({ canApply });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see PersonalInformation\n * @see AcademicInformation\n * @see AgreementData\n * @see Postula.ApplicationRequirements\n * @memberof ApplicationInfo\n */\n render() {\n const { classes, role, application, userId, history, idEscuela, dispatch, updateSelectedStep } = this.props;\n const { idPostulacion, isVirtual } = application;\n const { conformidad, canApply, readOnly } = this.state;\n const selectable = !readOnly && (STUDENT_ROLES.includes(role) || role === ROLE_DRIC || role === ROLE_ASISTENTE_DRIC);\n const canDelete = !readOnly && STUDENT_ROLES.includes(role);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n
\n {isVirtual && (\n \n )}\n \n \n \n \n La Dirección de Relaciones Internacionales y Cooperación está monitoreando permanentemente la situación sanitaria de cada país y ciudad en donde se encuentran nuestros principales aliados en la movilidad académica internacional. En ese sentido, el Programa de Movilidad Estudiantil (PME) para 2021-02, en su modalidad presencial, se realizará siempre y cuando las condiciones de seguridad y salud nacional e internacional así lo permitan. En el caso de la Movilidad Académica Virtual (PME-V) para el 2021-02 se realizará con normalidad.\n \n \n
\n \n \n )}\n label=\"Doy mi conformidad para iniciar el proceso de Postulación con pleno\n conocimiento que la institución / Universidad (es) seleccionada (s)\n no podrán ser modificadas durante el proceso.\"\n />\n \n {STUDENT_ROLES.includes(role) && canApply && (\n \n \n \n Postular\n \n \n )}\n
\n
\n
\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n * @property {number} role\n */\nApplicationInfo.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n role: PropTypes.number.isRequired,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withStyles(styles),\n)(ApplicationInfo);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport { DateTimePicker} from '../../components';\nimport { STUDENT_ROLES, OUT_ADMIN_ROLES } from '../../constants/roles';\nimport { Applications } from '../../api';\n\nmoment.locale(\"en\");\n\nfunction InterviewsDate(props) {\n const { value, role, idEvaluacion, idPostulante } = props;\n const [valueDate, setValueDate] = React.useState(value);\n\n async function getInterviewDate(myId, date){\n const { resultado: salida } = await Applications.at('update-interview-date').post({\n idPostulante: idPostulante,\n idEvaluacion: myId,\n fecha: date,\n });\n }\n\n function setFieldValue(idCampo,date){\n setValueDate(date.format('YYYY-MM-DDTHH:mm:ss'));\n getInterviewDate(idCampo, date.format('YYYY-MM-DDTHH:mm:ss'));\n }\n\n\n if (STUDENT_ROLES.includes(role)) {\n return (\n {\n setFieldValue(idEvaluacion, date);\n }}\n />\n );\n }\n else if(OUT_ADMIN_ROLES.includes(role)){\n return (\n {\n setFieldValue(idEvaluacion, date);\n }}\n />\n );\n }\n}\n\nexport default InterviewsDate;\n\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Paper, Typography } from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\n\nimport { Applications } from '../../api';\nimport { TableToolbar, ActionsTable } from '../../components';\nimport { STUDENT_ROLES } from '../../constants/roles';\nimport styles from './styles';\nimport * as moment from 'moment';\nimport InterviewsDate from './interviews-date';\n\nconst columns = [\n { title: 'Entrevista', field: 'nombre' },\n { title: 'Observaciones', field: 'observaciones' },\n { title: 'Fecha de Entrevista', field: 'fechaEntrevista' },\n { title: 'Estado', field: 'estado' },\n];\n\n/**\n * Component to display the list of additional tasks. It is used by the components listed bellow.\n * @see Interviews\n *\n * @class InterviewsLists\n * @extends {React.Component}\n * @memberof Entrevistas\n * @category Screens\n */\nclass InterviewsLists extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n interviews: [],\n googleCalendarLink: '',\n };\n const { role } = props;\n if (STUDENT_ROLES.includes(role)) {\n this.actions = [\n (row) => {\n\n // The only row that has action is the interview with DRIC role and it has idEntrevista 1\n if (row.idEntrevista !== 1 || row.estado === 'Cumplido') {\n return null;\n }\n return {\n tooltip: 'Agendar',\n icon: VisibilityIcon,\n onClick: this.onClickInterview,\n };\n },\n ];\n }\n }\n\n\n async componentDidMount() {\n const { role, application, onLoadData } = this.props;\n\n const payload = await Applications.at('get-application-interviews').post({\n idPostulacion: application.idPostulacion,\n });\n const { resultado } = payload;\n const interviews = resultado.map((interview) => {\n if (interview.fechaEntrevista === \"0001-01-01T00:00:00\") {\n interview.fechaEntrevista = moment(\"2020-01-01T00:00:00\").format('YYYY-MM-DD hh:mm:ss a');\n }\n else {\n interview.fechaEntrevista = ();\n }\n return interview;\n });\n\n const googleCalendarLinkPost = await Applications.at('get-google-calendar').post({});\n this.setState({ interviews, googleCalendarLink: googleCalendarLinkPost.resultado.link });\n onLoadData(interviews);\n }\n\n onClickInterview = async (event, interview) => {\n window.open(\n this.state.googleCalendarLink,\n '',\n 'width=800,height=640',\n );\n }\n\n\n\n render() {\n const { classes } = this.props;\n const { interviews } = this.state;\n return (\n \n }\n actions={this.actions}\n options={{\n showTitle: true,\n }}\n actionsTitle=\"Agendar\"\n materialTableOptions={{\n paging: false,\n exportFileName: 'Entrevistas',\n }}\n />\n \n * Las entrevistas se agendan una a la vez. Al asistir a la primera entrevista,\n se habilitarán las otras.\n \n \n );\n }\n}\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withStyles(styles),\n)(InterviewsLists);\n","export default theme => ({\n terms: {\n paddingTop: theme.spacing.unit * 3,\n paddingLeft: theme.spacing.unit * 3,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport {\n Grid,\n Fab,\n} from '@material-ui/core';\nimport * as moment from 'moment';\n\nimport SendIcon from '@material-ui/icons/Send';\nimport PersonalInformation from '../common/student/personal-information';\nimport AcademicData from '../common/student/academic-data';\nimport AgreementData from '../common/student/agreement-data';\nimport InterviewsList from './interviews-list';\nimport { FormActions } from '../../components';\nimport { STUDENT_ROLES, OUT_ADMIN_ROLES} from '../../constants/roles';\nimport applicationsActions from '../../store/applications/actions';\nimport { DateTimePicker, RichEditor } from '../../components';\nimport InterviewsDate from './interviews-date';\nimport CoursesSection from '../common/student/courses-section';\n\n/**\n * Groups all the class and functional components related to the Entrevistas screen, the third step of the MobilityOut process.\n * @see {@link Interviews} main component\n * @namespace Entrevistas\n * @category Screens\n */\n\n/**\n * Main component of the {@link Entrevistas} screen that displays the interviews.\n *\n * @class Interviews\n * @extends {React.PureComponent}\n * @category Screens\n */\nclass Interviews extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n showNext: false,\n };\n }\n\n handleClick = async () => {\n const { history, dispatch, application } = this.props;\n await dispatch(applicationsActions.requestStepper({ idPostulacion: application.idPostulacion }));\n history.push('resultados');\n }\n\n handleLoadData = (interviews) => {\n const { role} = this.props;\n for (let i = 0; i < interviews.length; i += 1) {\n if (interviews[i].estado === 'Pendiente') {\n this.setState({ showNext: false });\n return;\n }\n\n }\n this.setState({ showNext: true });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see PersonalInformation\n * @see AcademicInformation\n * @see AgreementData\n * @see Entrevistas.InterviewsLists\n * @memberof Interviews\n */\n render() {\n const { role, application, userId, idEscuela, history, classes, dispatch } = this.props;\n const { idPostulacion, isVirtual } = application;\n const { showNext } = this.state;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isVirtual && (\n \n )}\n \n \n \n {(STUDENT_ROLES.includes(role) && showNext) && (\n \n \n \n Resultados\n \n \n )}\n \n );\n }\n}\n\n/**\n * propTypes\n * @property {object} history Object that handles the redirection to other locations.\n * @property {number} userId\n * @property {number} role\n * @property {object} application Data of the current user application\n * @property {function} dispatch Allows to call redux actions.\n */\nInterviews.propTypes = {\n history: PropTypes.shape({}).isRequired,\n userId: PropTypes.number,\n role: PropTypes.number.isRequired,\n application: PropTypes.shape({}).isRequired,\n dispatch: PropTypes.func.isRequired,\n};\n\nInterviews.defaultProps = {\n userId: null,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n)(Interviews);\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\n\nimport {\n withStyles,\n Grid,\n} from '@material-ui/core';\nimport CheckIcon from '@material-ui/icons/Check';\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport styles from './styles';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\n\n/**\n * Component that shows the stepper for requirement.\n *\n * @function RequirementsStepper\n * @param {steps} current Steps\n * @param {classes} Styles from Material UI\n * @memberof Resultados\n * @category Screens\n */\nconst RequirementsStepper = ({ steps, classes, t }) => (\n \n {steps.map(step => (\n \n \n {step.status !== null && (\n step.status ? (\n \n ) : (\n \n )\n )}\n \n {t(step.label)}\n \n ))}\n \n);\n\nRequirementsStepper.propTypes = {\n steps: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.string.isRequired,\n status: PropTypes.bool.isRequired,\n })).isRequired,\n classes: PropTypes.shape({}).isRequired,\n};\n\nexport default compose(withStyles(styles), withTranslation())(RequirementsStepper);\n","export default theme => ({\n stepContainer: {\n textAlign: 'center',\n marginBottom: theme.spacing.unit,\n marginTop: theme.spacing.unit,\n },\n wrapIcon: {\n width: theme.spacing.unit * 8,\n height: theme.spacing.unit * 8,\n margin: 'auto',\n padding: theme.spacing.unit,\n borderRadius: theme.spacing.unit,\n backgroundColor: theme.palette.grey['600'],\n textAlign: 'center',\n marginBottom: theme.spacing.unit,\n },\n wrapSuccessIcon: {\n backgroundColor: theme.palette.primary.main,\n },\n icon: {\n fontSize: 48,\n color: 'white',\n },\n});\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button, Grid, Paper, Typography, withStyles } from \"@material-ui/core\";\n\nimport PdfIcon from \"@material-ui/icons/PictureAsPdf\";\nimport styles from \"./styles\";\n\nimport { TableToolbar } from \"../../components\";\nimport { Applications } from \"../../api\";\nimport { downloadBlob } from \"../../utils\";\n\nimport RequirementsStepper from \"./stepper\";\n\n/**\n * Component to display the results of the application. It is used by the components listed bellow.\n * @see Results\n *\n * @class ApplicationResults\n * @extends {React.Component}\n * @memberof Resultados\n * @category Screens\n */\nclass ApplicationResults extends React.PureComponent {\n state = {};\n\n componentDidMount() {\n const {\n application: { idPostulacion },\n } = this.props;\n Applications.at(\"get-acceptance-letter\")\n .post({ idPostulacion })\n .then((data) => {\n const {\n resultado: { archivo },\n } = data;\n this.setState({ archivo });\n });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see Resultados.RequirementsStepper\n * @memberof Resultados.ApplicationResults\n */\n render() {\n const { archivo } = this.state;\n const { steps, classes } = this.props;\n\n const acceptItem = steps.find(\n (item) => item.label === \"Aceptación de Beca\"\n );\n\n return (\n \n \n \n \n {acceptItem && acceptItem.status ? (\n \n Felicitaciones, su postulación al programa de movilidad del\n convenio seleccionado ha sido aprobada. Cuando esté disponible,\n podrá descargar la Carta de Presentación a la Universidad de\n destino presionando el botón PDF.\n \n ) : null}\n \n \n \n \n \n {archivo && (\n \n )}\n \n \n \n );\n }\n}\n\nApplicationResults.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n application: PropTypes.shape({\n idPostulacion: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nexport default withStyles(styles)(ApplicationResults);\n\n","export default (theme) => ({\n acceptanceContainer: {\n textAlign: 'right',\n },\n leftIcon: {\n marginRight: theme.spacing.unit,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport {\n Grid,\n Fab,\n Paper,\n FormControl,\n RadioGroup,\n FormControlLabel,\n Radio,\n Dialog,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport { Applications } from '../../api';\nimport { FormActions, TableToolbar, ConfirmationDialog } from '../../components';\nimport PersonalInformation from '../common/student/personal-information';\n\nimport AcademicData from '../common/student/academic-data';\nimport AgreementData from '../common/student/agreement-data';\nimport ApplicationResults from './application-results';\nimport { ROLE_ESTUDIANTE, STUDENT_ROLES } from '../../constants/roles';\nimport CoursesSection from '../common/student/courses-section';\nimport TermsAgreement from '../../components/terms-agreement';\nimport { indexOf } from 'lodash';\n\n/**\n * Groups all the class and functional components related to the Resultados screen, the fourth step of the MobilityOut process.\n * @see {@link Results} main component\n * @namespace Resultados\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link Resultados} screen that displays the results.\n *\n * @class Results\n * @extends {React.Component}\n * @category Screens\n */\nclass Results extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n aceptacion: 'false',\n canAccept: false,\n isApt: 0,\n steps: [],\n openConfirmation: false,\n };\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n fetchData = () => {\n const { application: { idPostulacion } } = this.props;\n Applications.at('get-acceptance-letter').post({ idPostulacion }).then((data) => {\n const { resultado: { aceptacionEstudiante } } = data;\n this.setState({ aceptacion: `${aceptacionEstudiante}` });\n });\n Applications.at('get-application').post({ idPostulacion }).then((data) => {\n const { resultado: { idDictamen } } = data;\n this.setState({ isApt: idDictamen });\n });\n Applications.at('get-application-results').post({ idPostulacion }).then((data) => {\n const { resultado } = data;\n const steps = resultado.map(i => ({\n label: i.nombre.replace('Pendiente ', ''),\n status: i.estado,\n }));\n this.setState({ steps });\n // If the 'Deliberacion' step is true and 'Aceptación de Beca' is false then the student can accept\n this.changeCanAccept(steps[2] && steps[2].status && steps[3] && !steps[3].status);\n });\n }\n\n handleClick = () => {\n const { history } = this.props;\n history.push('resultados');\n }\n\n handleChange = (event) => {\n this.setState({ aceptacion: event.target.value });\n }\n\n handleSubmit = () => {\n const { application: { idPostulacion } } = this.props;\n const { aceptacion } = this.state;\n Applications.at('update-student-acceptance').post({\n idPostulacion,\n aceptacion: aceptacion === 'true',\n }).then(async () => {\n this.fetchData();\n });\n }\n\n changeCanAccept = (canAccept) => {\n this.setState({ canAccept });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see PersonalInformation\n * @see AcademicInformation\n * @see AgreementData\n * @see Resultados.ApplicationResults\n * @memberof Results\n */\n render() {\n const { application, role, userId, idEscuela, classes, history, dispatch, consentimientos } = this.props;\n const { aceptacion, canAccept, isApt, steps, openConfirmation } = this.state;\n const isStudent = STUDENT_ROLES.includes(role);\n const mostrarConsentimientos = (indexOf([ROLE_ESTUDIANTE], role) >= 0) && consentimientos && !consentimientos.every(item => !item.opcional && item.autorizacion || item.opcional);\n const universitySelected = (steps[2] && steps[2].status && steps[3] && !steps[3].status) || steps[3] && steps[3].status\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {application.isVirtual && (\n \n )}\n \n \n \n {isApt === 1 && (\n \n \n \n \n \n \n }\n label=\"No\"\n labelPlacement=\"end\"\n />\n \n }\n label=\"Si\"\n labelPlacement=\"end\"\n />\n \n\n \n \n \n )}\n {isStudent && canAccept && isApt === 1 && (\n \n this.setState({ openConfirmation: true })}\n >\n \n Enviar\n \n \n )}\n \n \n \n this.setState({ openConfirmation: false })} />\n \n );\n }\n}\n\nResults.propTypes = {\n application: PropTypes.shape({\n idPostulacion: PropTypes.number.isRequired,\n }).isRequired,\n history: PropTypes.shape({}).isRequired,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n consentimientos: s.session.userInfo.consentimientos\n })),\n)(Results);\n","export default theme => ({\n tabsRoot: {\n borderBottom: '1px solid #e8e8e8',\n marginBottom: theme.spacing.unit * 2,\n },\n tabRoot: {\n color: theme.palette.primary.light,\n '&:hover': {\n color: theme.palette.primary.main,\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n },\n },\n tabLabel: {\n padding: '6px 32px',\n },\n selectedTab: {\n fontWeight: 'bold',\n '&:hover': {\n backgroundColor: theme.palette.background.paper,\n },\n },\n universityLogo: {\n height: 100,\n width: 100,\n },\n unversityCardContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: 24,\n },\n universityName: {\n padding: '0 16px',\n },\n universityDescription: {\n maxHeight: 400,\n overflow: 'auto',\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmpty } from 'lodash';\nimport {\n Grid,\n Typography,\n withStyles,\n Card,\n} from '@material-ui/core';\nimport { InfoTable, HTMLRender } from '../../../components';\n\nimport styles from './styles';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\n\n/**\n * Component to display the information about an agreement.\n * @memberof MobilityIn-AgreementsList\n * @function MobilityIn-AgreementInfo\n * @category Screens\n */\nfunction AgreementInfo({ classes, agreementInfo, t }) {\n return (\n \n \n {agreementInfo.linkMallaCurricular}\n ),\n },\n ]}\n />\n \n \n \n {\n !isEmpty(agreementInfo) && (\n \n )\n }\n \n {isEmpty(agreementInfo) ? '' : agreementInfo.sitioWeb}\n \n \n \n {t(\"Descripción\")}\n \n
\n {!isEmpty(agreementInfo) && }\n
\n
\n
\n );\n}\n\n/**\n * propTypes\n * @memberof MobilityIn-AgreementsList.MobilityIn-AgreementInfo\n * @property {object} classes Classes used by styles\n * @property {object} agreementInfo Information of an agreement\n */\nAgreementInfo.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n agreementInfo: PropTypes.shape({}),\n};\n\nAgreementInfo.defaultProps = {\n agreementInfo: {},\n};\n\nexport default compose(withStyles(styles), withTranslation())(AgreementInfo);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { indexOf, isEmpty } from 'lodash';\nimport {\n Paper,\n Grid,\n Tabs,\n Tab,\n Fab,\n TextField,\n withStyles,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport SearchIcon from '@material-ui/icons/Search';\nimport * as moment from 'moment';\nimport { FormActions, ActionsTable } from '../../../components';\nimport AgreementConsideration from '../../agreements-list/agreement-consideration';\nimport { Calls, Agreements } from '../../../api';\nimport applicationsActions from '../../../store/applications/actions';\n\nimport AgreementInfo from './agreement-info';\nimport styles from './styles';\nimport { IN_ADMIN_ROLES, ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../../constants/roles';\nimport { withTranslation } from 'react-i18next';\n\n\n/**\n * Component to display the list of agreements of mobility in.\n *\n * @class MobilityIn-AgreementsList\n * @extends {React.Component}\n * @category Screens\n */\nclass AgreementsListIn extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n activeCall: {\n nombre: '',\n fechaInicio: '',\n fechaFin: '',\n },\n agreements: [],\n selectedAgreement: null,\n agreementInfo: {},\n agreementConsideration: '',\n tabValue: 0,\n };\n this.infoRef = React.createRef();\n }\n\n async componentDidMount() {\n const { application, role } = this.props;\n const { resultado: activeCalls } = await Calls.at('get-active-calls').post();\n let idConvocatoria = 0;\n let activeCall = {};\n if (application && Number.isInteger(application.idConvocatoria)) {\n ({ idConvocatoria } = application);\n activeCall = activeCalls.filter(call => call.idConvocatoria === idConvocatoria);\n } else if (activeCalls.length > 0) {\n const [call] = activeCalls;\n ({ idConvocatoria } = call);\n }\n\n console.log('activeCalls', activeCalls);\n\n let { resultado: agreements } = await Agreements.at('get-agreements-by-call').post({\n idConvocatoria,\n idEscuela: 0,\n });\n\n const selectedAgreement = (\n !isEmpty(application)\n && application.idEscuela\n && agreements.find(item => item.idEscuela === application.idEscuela)\n );\n\n\n if (selectedAgreement) {\n this.handleAgreementClick({}, selectedAgreement);\n if (ROLE_ESTUDIANTE_EXTRANJERO === role || ROLE_FREEMOVER === role) {\n agreements = [selectedAgreement];\n }\n }\n /* this.setState({\n activeCall: activeCalls.length > 0 ? activeCalls[activeCalls.length-1] : {},\n agreements,\n }); */\n this.setState({\n activeCall: activeCall && activeCall[0] ? activeCall[0] : activeCalls[activeCalls.length - 1],\n agreements,\n });\n }\n\n handleScroll = () => {\n setTimeout(() => {\n if (this.infoRef && this.infoRef.current) {\n this.infoRef.current.scrollIntoView();\n }\n }, 500);\n }\n\n handleRowClick = (event, row) => {\n this.handleAgreementClick(event, row);\n this.setState({\n selectedAgreement: row,\n }, this.handleScroll);\n }\n\n handleAgreementClick = async (event, agreement) => {\n const { resultado: agreementInfo } = await Agreements.at('get-info-agreement').post({\n idConvenioConvocatoria: agreement.idConvenioConvocatoria,\n idInstitucionUbigeo: agreement.idInstitucionUbigeo,\n });\n agreementInfo.escuela = agreement.escuela;\n this.setState({\n selectedAgreement: agreement,\n agreementInfo,\n agreementConsideration: agreementInfo.consideraciones,\n }, this.handleScroll);\n }\n\n handleTabChange = (event, value) => {\n this.setState({ tabValue: value });\n };\n\n handleSubmit = async (event) => {\n event.preventDefault();\n const { history, dispatch, updateSelectedStep } = this.props;\n const { selectedAgreement, agreementInfo, activeCall } = this.state;\n\n dispatch(applicationsActions.setOngoingAgreement({\n basicDetails: selectedAgreement,\n extraInformation: agreementInfo,\n callInformation: activeCall,\n }));\n history.push('postulacion');\n // go to step located at 2nd index (start count from 0)\n updateSelectedStep(1);\n };\n\n renderTitle = () => {\n const { activeCall } = this.state;\n return (\n activeCall &&\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n render() {\n const {\n agreements,\n tabValue,\n agreementInfo,\n agreementConsideration,\n selectedAgreement,\n } = this.state;\n const { classes, role, t } = this.props;\n return (\n \n \n \n \n
\n \n \n \n \n \n \n \n \n {tabValue === 0\n ? \n : \n }\n \n \n {\n indexOf(IN_ADMIN_ROLES, role) >= 0 && selectedAgreement && (\n
\n \n \n \n Nominar\n \n \n
\n )\n }\n {\n (role === ROLE_ESTUDIANTE_EXTRANJERO || role === ROLE_FREEMOVER) && selectedAgreement && (\n
\n \n \n \n {t(\"Continuar\")}\n \n \n
\n )\n }\n \n );\n }\n}\n\nconst mapStateToProps = s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n});\n\nconst withConnect = connect(mapStateToProps);\nexport default compose(\n withConnect,\n withStyles(styles),\n withTranslation()\n)(AgreementsListIn);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\nimport * as moment from 'moment';\nimport {\n Paper,\n} from '@material-ui/core';\n\nimport { Person } from '../../../api';\n\nimport {\n TableToolbar,\n InfoTable,\n} from '../../../components';\nimport sessionSelectors from '../../../store/session/selectors';\n\n/**\n * Component to display tabulated user information.\n *\n * @class MobilityIn-PersonalInformation\n * @extends {React.Component}\n * @category Screens\n */\nclass PersonalInformation extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n data: [],\n };\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n componentDidUpdate(prevProps) {\n const { userId } = this.props;\n if (prevProps.userId !== userId) {\n this.fetchData();\n }\n }\n\n\n fetchData = () => {\n const { userId, t } = this.props;\n const params = {};\n const keys = [\n 'nroDocumento',\n 'nombres',\n 'apellidos',\n 'fechaNacimiento',\n 'sexo',\n 'email',\n ];\n const labels = [\n 'Pasaporte',\n 'Nombres',\n 'Apellidos',\n 'Fecha de Nacimiento',\n 'Sexo',\n 'Email',\n ];\n\n if (userId !== null) {\n params.idUsuario = userId;\n }\n\n Person.at('get-personal-info').post(params).then((result) => {\n result.resultado.apellidos = `${result.resultado.apellidoPaterno} ${result.resultado.apellidoMaterno}`;\n const personalInfo = keys.map(k => result.resultado[k]);\n const data = [];\n personalInfo.forEach((val, index) => {\n const dataEntry = {};\n dataEntry.id = index;\n dataEntry.label = labels[index];\n dataEntry.value = val;\n if (labels[index].toLowerCase().includes('fecha')) {\n dataEntry.value = moment(val).format('DD/MMM/YYYY');\n }\n\n return data.push(dataEntry);\n });\n this.setState({ data });\n });\n }\n\n /**\n * Handles the rendering of the component\n * @memberof MobilityIn-PersonalInformation\n */\n render() {\n const { data } = this.state;\n const { t } = this.props;\n\n return (\n \n \n \n \n );\n }\n}\n\n/**\n * propTypes\n * @memberof MobilityIn-PersonalInformation\n * @property {number} userId User ID\n */\nPersonalInformation.propTypes = {\n userId: PropTypes.number,\n};\n\nPersonalInformation.defaultProps = {\n userId: null,\n};\n\nexport default compose(\n connect(state => ({\n role: sessionSelectors.roleSelector(state),\n })),\n withTranslation()\n)(PersonalInformation);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\n\nimport {\n Paper,\n} from '@material-ui/core';\n\nimport { Academic } from '../../../api';\n\nimport {\n TableToolbar,\n InfoTable,\n} from '../../../components';\nimport sessionSelectors from '../../../store/session/selectors';\n\n/**\n * Shows a summary about academic information.\n * @class MobilityIn-AcademicInformation\n * @extends {React.Component}\n * @category Screens\n */\nclass AcademicInformation extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n data: [],\n };\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n componentDidUpdate(prevProps) {\n const { userId } = this.props;\n if (prevProps.userId !== userId) {\n this.fetchData();\n }\n }\n\n fetchData = () => {\n const { userId } = this.props;\n const params = {};\n const keys = [\n 'institucion',\n 'programa',\n 'promedioPonderado',\n 'semestre',\n ];\n const labels = [\n 'Institución',\n 'Programa Profesional (Major)',\n 'Promedio de Notas (GPA)',\n 'Semestre Actual',\n ];\n\n if (userId !== null) {\n params.idUsuario = userId;\n }\n\n Academic.at('get-academic-info').post(params).then((result) => {\n const academicInfo = keys.map(k => result.resultado[k]);\n const data = [];\n academicInfo.forEach((val, index) => {\n const dataEntry = {};\n dataEntry.id = index;\n dataEntry.label = labels[index];\n dataEntry.value = val;\n return data.push(dataEntry);\n });\n this.setState({ data });\n });\n }\n\n /**\n * Handles the rendering of the component\n * @memberof MobilityIn-AcademicInformation\n */\n render() {\n const { data } = this.state;\n const { t } = this.props;\n return (\n \n \n \n \n );\n }\n}\n\n/**\n * propTypes\n * @memberof MobilityIn-AcademicInformation\n * @property {object} classes Classes to manage custom styles.\n */\nAcademicInformation.propTypes = {\n userId: PropTypes.number,\n};\n\nAcademicInformation.defaultProps = {\n userId: null,\n};\n\nconst withConnect = connect(state => ({\n role: sessionSelectors.roleSelector(state),\n}));\n\nexport default compose(\n withConnect,\n withTranslation()\n)(AcademicInformation);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEmpty } from 'lodash';\nimport {\n Paper,\n Table,\n TableHead,\n TableCell,\n TableBody,\n} from '@material-ui/core';\nimport { TableToolbar, TableRow } from '../../../components';\nimport { withTranslation } from 'react-i18next';\nimport { compose } from 'redux';\n\n/**\n * Component to display the information of an agreement.\n *\n * @class MobilityIn-AgreementData\n * @extends {React.Component}\n * @category Screens\n */\nclass AgreementData extends React.PureComponent {\n\n renderContentFromApplication = () => {\n const { application, ongoingAgreement: { basicDetails }, t } = this.props;\n // \"escuela\" is always obtained from the ongoing agreement.\n return (\n \n {!isEmpty(application) ? application.convocatoria : ''}\n {!isEmpty(basicDetails) ? basicDetails.escuela : ''}\n {!isEmpty(application) ? t(application.tipoBeca) : ''}\n {!isEmpty(application) ? t(application.estado) : ''}\n {!isEmpty(application) ? t(application.idioma): ''}\n \n );\n }\n\n renderContentFromOngoingAgreement = () => {\n const { ongoingAgreement: { basicDetails, callInformation }, t } = this.props;\n return (\n \n {!isEmpty(callInformation) ? callInformation.nombre : ''}\n {!isEmpty(basicDetails) ? basicDetails.escuela : ''}\n {!isEmpty(basicDetails) ? t(basicDetails.beca) : ''}\n {!isEmpty(basicDetails) ? t(basicDetails.estado) : ''}\n {!isEmpty(basicDetails) ? t(basicDetails.idioma) : ''}\n \n );\n }\n\n /**\n * Handles the rendering of the component\n * @memberof MobilityIn-AgreementData\n */\n render() {\n const { fromApplication, t } = this.props;\n\n return (\n \n \n
\n \n \n \n {t(\"Convocatoria\")}\n {t(\"Escuela\")}\n {t(\"Beca\")}\n {t(\"Estado\")}\n {t(\"Idioma\")}\n \n \n \n {\n fromApplication\n ? this.renderContentFromApplication()\n : this.renderContentFromOngoingAgreement()\n }\n \n
\n
\n
\n );\n }\n}\n\nAgreementData.propTypes = {\n ongoingAgreement: PropTypes.shape().isRequired,\n application: PropTypes.shape().isRequired,\n fromApplication: PropTypes.bool,\n};\n\nAgreementData.defaultProps = {\n fromApplication: true,\n};\n\nconst mapStateToProps = s => ({\n ongoingAgreement: s.applications.agreement,\n application: s.applications.application,\n});\n\nconst withConnect = connect(mapStateToProps);\nexport default compose(withConnect, withTranslation())(AgreementData);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Grid, Fab,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport PersonalInformation from '../../common/mobility-in/foreign-personal-info';\nimport AcademicInformation from '../../common/mobility-in/foreign-academic-info';\nimport AgreementData from '../../common/mobility-in/agreement-data';\nimport ApplicationRequirements from '../../application-info/requirements';\nimport { FormActions } from '../../../components';\nimport { Applications } from '../../../api';\nimport { STUDENT_ROLES, ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../../constants/roles';\nimport applicationsActions from '../../../store/applications/actions';\nimport CoursesSection from '../../common/student/courses-section';\nimport { withTranslation } from 'react-i18next';\n\n/**\n * Component to display the information of an application.\n *\n * @class MobilityIn-Postulation\n * @extends {React.Component}\n * @category Screens\n */\nclass Postulation extends React.Component {\n constructor(props) {\n super(props);\n const { role } = props;\n this.state = {\n canApply: false,\n readOnly: role !== ROLE_ESTUDIANTE_EXTRANJERO && role !== ROLE_FREEMOVER,\n };\n }\n\n async componentDidMount() {\n const { application } = this.props;\n const applicationPayload = await Applications.at('get-application').post({\n idPostulacion: application.idPostulacion || 0,\n });\n }\n\n updateCanApply = (canApply) => {\n this.setState({ canApply });\n }\n\n handleSubmit = (event) => {\n const { history, dispatch, application } = this.props;\n event.preventDefault();\n // nominee is the current user, so use its data for future screens.\n dispatch(applicationsActions.setApplication({\n ...application,\n idUsuario: 0,\n }));\n history.push('resultados');\n }\n\n /**\n * Handles the rendering of the component\n * @memberof Postulation\n */\n render() {\n const { classes, role, application, userApplication, t } = this.props;\n const { idPostulacion } = application;\n const { canApply, readOnly } = this.state;\n const isInUser = [ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER].includes(role);\n\n // userId is 0 to get data from the logged user\n const userId = isInUser ? 0 : userApplication.idUsuario;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {application.isVirtual && }\n \n \n \n \n {STUDENT_ROLES.includes(role) && canApply && (\n \n \n \n {t(\"Enviar\")}\n \n \n )}\n \n \n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n */\nPostulation.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n role: PropTypes.number.isRequired,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n userApplication: s.applications.userApplication,\n })),\n withStyles(),\n withTranslation()\n)(Postulation);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Grid, Paper, Fab, Typography } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport { TableToolbar, FormActions } from '../../../components';\nimport RequirementsStepper from '../../results/stepper';\nimport { Applications } from '../../../api';\nimport AgreementData from '../../common/mobility-in/agreement-data';\nimport PersonalInformation from '../../common/mobility-in/foreign-personal-info';\nimport AcademicInformation from '../../common/mobility-in/foreign-academic-info';\nimport { ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../../constants/roles';\nimport { compose } from 'redux';\nimport { withTranslation } from 'react-i18next';\n\n/**\n *\n *\n * @class MobilityIn-Results\n * @extends {React.Component}\n * @category Screens\n */\nclass Results extends React.Component {\n state = {\n steps: [],\n }\n\n componentDidMount() {\n const { application } = this.props;\n Applications.at('get-application').post({\n idPostulacion: application.idPostulacion,\n });\n Applications.at('get-application-results').post({\n idPostulacion: application.idPostulacion,\n })\n .then((data) => {\n const { resultado } = data;\n const steps = resultado.map(i => ({\n label: i.nombre.replace('Pendiente ', ''),\n status: i.estado,\n }));\n this.setState({ steps });\n });\n }\n\n handleClick = (event) => {\n event.preventDefault();\n const { history, application } = this.props;\n Applications.at('update-student-acceptance').post({\n idPostulacion: application.idPostulacion,\n aceptacion: true,\n }).then(async () => {\n history.push('estudia-ucsp');\n }).catch((error) => {});\n }\n\n render() {\n const { steps } = this.state;\n const { role, userApplication, t } = this.props;\n const isInUser = [ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER].includes(role);\n\n const userId = isInUser ? 0 : userApplication.idUsuario;\n const canContinue = steps.reduce((acc, step) => acc && step.status, true);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {t(\"Felicitaciones Resultado Postulación\")}\n \n \n \n \n {\n canContinue && (\n \n \n \n {t(\"Estudia en UCSP\")}\n \n \n )\n }\n \n );\n }\n}\n\nResults.propTypes = {\n application: PropTypes.shape().isRequired,\n userApplication: PropTypes.shape().isRequired,\n role: PropTypes.number.isRequired,\n history: PropTypes.shape().isRequired,\n};\n\nconst mapStateToProps = s => ({\n application: s.applications.application,\n userApplication: s.applications.userApplication,\n role: s.session.role.idRol,\n});\n\nconst withConnect = connect(mapStateToProps);\nexport default compose(withConnect, withTranslation())(Results);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport * as moment from 'moment';\nimport { withFormik } from 'formik';\nimport {\n DialogActions,\n DialogContent,\n FormControl,\n Paper,\n Input,\n Button,\n Select,\n MenuItem,\n Grid,\n Table,\n TableRow,\n TableBody,\n TableCell,\n TextField,\n FormControlLabel,\n Checkbox,\n withStyles,\n} from '@material-ui/core';\nimport SaveIcon from '@material-ui/icons/SaveOutlined';\nimport { DateTimePicker, DialogHeader, TableToolbar, ActionsTable } from '../../../components';\nimport { Core, Person, Academic, Applications } from '../../../api';\nimport { ROLE_ESTUDIANTE_EXTRANJERO } from '../../../constants/roles';\nimport AgreementData from './agreement-data';\nimport { withTranslation } from 'react-i18next';\n\nconst styles = theme => ({\n modalContent: {\n padding: theme.spacing.unit * 3,\n },\n\n});\n\n\n/**\n * Dialog form to add new nominee\n *\n * @class MobilityIn-NomineeForm\n * @extends {React.Component}\n * @category Screens\n */\nclass NomineeForm extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n genderTypes: [\n { id: 'M', nombre: 'Masculino' },\n { id: 'F', nombre: 'Femenino' },\n ],\n documentTypes: [],\n userInfo: [],\n courses: [],\n };\n }\n\n /**\n * handle event when the component is mounted\n */\n async componentDidMount() {\n const { idConvenioConvocatoria } = this.props;\n try {\n const { resultado: documentTypes } = await Core.at('get-identity-document-types').post();\n const filteredDocumentTypes = documentTypes.filter(\n (doc) => doc.idTipoDocumento === 2\n );\n this.setState({\n documentTypes: filteredDocumentTypes,\n });\n } catch (e) {\n // show error\n }\n try {\n const { resultado: userInfo } = await Person.at('get-user-info').post({ idEscuela: 0 });\n this.setState({\n userInfo,\n });\n } catch (e) {\n // show error\n }\n try {\n const { resultado: courses } = await Applications.at('get-courses-agreement').post({ idConvenioConvocatoria });\n this.setState({\n courses,\n });\n } catch (e) {\n // show error\n }\n }\n\n handleUpdateCourse = async (newData) => {\n const { setFieldValue, values } = this.props;\n const newCourseIds = values.courseIds;\n const courseIndex = values.courseIds.findIndex(courseId => courseId === newData.idCurso);\n if (courseIndex > -1) {\n newCourseIds.splice(courseIndex, 1);\n } else {\n newCourseIds.push(newData.idCurso);\n }\n console.log('newCourseIds', newCourseIds);\n setFieldValue(newCourseIds);\n }\n\n /**\n * Render the component.\n */\n render() {\n const {\n values,\n handleChange,\n handleBlur,\n isSubmitting,\n handleSubmit,\n setFieldValue,\n onClose,\n classes,\n t\n } = this.props;\n\n const {\n documentTypes,\n genderTypes,\n userInfo,\n courses,\n } = this.state;\n\n values.institution = userInfo.institucion;\n\n return (\n
\n \n \n \n \n \n \n \n \n \n {t(\"Tipo de Documento\")}\n \n \n }\n value={documentTypes[0]?.id}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={isSubmitting}\n readOnly={true}\n >\n {\n documentTypes.map(entry => (\n \n {t(entry.nombre)}\n \n ))\n }\n\n \n \n \n \n \n {t(\"Nro. de Documento\")}\n \n \n \n \n \n {t(\"Nombres\")}\n \n \n \n \n \n {t(\"Apellido Paterno\")}\n \n \n \n \n \n {t(\"Apellido Materno\")}\n \n \n \n \n \n {t(\"Fecha de Nacimiento\")}\n \n \n {\n setFieldValue('birthday', date.format('YYYY-MM-DD'));\n }}\n disabled={isSubmitting}\n />\n \n \n \n \n {t(\"Sexo\")}\n \n \n }\n value={values.gender}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={isSubmitting}\n >\n {\n genderTypes.map(entry => (\n \n {t(entry.nombre)}\n \n ))\n }\n\n \n \n \n \n \n {t(\"Email\")}\n \n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n {t(\"Institución\")}\n \n \n \n \n \n {t(\"Programa Profesional (Major)\")}\n \n \n \n \n \n {t(\"Promedio de Notas (GPA)\")}\n \n \n \n \n \n {t(\"Semestre Actual\")}\n \n \n \n \n \n
\n
\n
\n \n \n \n \n \n (\n
\n this.handleUpdateCourse(rowData)} />\n
\n ),\n filtering: false,\n },\n { title: t('Escuela'), field: 'escuelaCurso', editable: 'never' },\n { title: t('Curso'), field: 'nombreCurso', editable: 'never' },\n { title: t('Descripción'), field: 'descripcionCurso', editable: 'never' },\n ]}\n title={}\n options={{\n showTitle: true,\n canEditRow: false,\n canPrint: false,\n canExport: false,\n canFilterColumns: false,\n }}\n actionsTitle={t(\"Acciones\")}\n materialTableOptions={{\n actionsColumnIndex: -1,\n filtering: false,\n }}\n isLoading={isSubmitting}\n localization={{\n ...t(\"table\")\n }}\n />\n
\n
\n \n \n setFieldValue('conformity', event.target.checked)}\n value=\"conformity\"\n color=\"primary\"\n />\n )}\n label={t(\"Conformidad nominacion\")}\n />\n \n\n \n
\n
\n\n \n \n \n {t(\"Guardar\")}\n \n \n \n );\n }\n}\n\n/**\n * Format values passed as props to be used as form data\n *\n * @function mapPropsToValues\n * @param {Object} props init props object.\n * @memberof MobilityIn-NomineeForm\n */\nconst mapPropsToValues = () => {\n return {\n documentType: 'S',\n document: '',\n name: '',\n paternalLastname: '',\n maternalLastname: '',\n birthday: new Date(),\n gender: 'M',\n email: '',\n institution: '',\n program: '',\n average: '',\n semester: '',\n conformity: false,\n courseIds: [],\n };\n};\n\n/**\n * handle submit form event\n * @param {Object} form data as an object\n * @param {Object} object containing setup attributes\n * @memberof MobilityIn-NomineeForm\n */\nconst handleSubmit = async (values, { props, setSubmitting }) => {\n const { onClose, ongoingAgreement: { basicDetails: agreementDetails } } = props;\n setSubmitting(true);\n try {\n const { resultado: userInfo } = await Person.at('insert-person').post({\n idRol: ROLE_ESTUDIANTE_EXTRANJERO,\n nombres: values.name,\n apellidoPaterno: values.paternalLastname,\n apellidoMaterno: values.maternalLastname,\n fechaNacimiento: values.birthday,\n sexo: values.gender,\n tipoDocumento: values.documentType,\n nroDocumento: values.document,\n email: values.email,\n direccion: '',\n codDistrito: 0,\n telefono: '',\n facebook: '',\n whatsapp: '',\n });\n\n await Academic.at('insert-academic-info').post({\n idUsuario: userInfo.idUsuario,\n institucion: values.institution,\n programa: values.program,\n semestre: values.semester,\n promedioPonderado: values.average,\n });\n await Applications.at('insert-nomination').post({\n idUsuario: userInfo.idUsuario,\n idConvenioConvocatoria: agreementDetails.idConvenioConvocatoria,\n idEscuela: agreementDetails.idEscuela,\n idCursos: values.courseIds.join(','),\n });\n } catch (error) {\n console.error('error', error);\n }\n setSubmitting(false);\n onClose({ reload: true });\n};\n\n/**\n * propTypes\n * @property {object} values Initial data for the form.\n * @property {function} handleChange On input change, update the value on the state.\n * @property {function} handleBlur On input blur, update the value on the state.\n * @property {boolean} isSubmitting Whether the form is being submitted.\n * @property {function} handleSubmit Action to perform on submit.\n */\nNomineeForm.propTypes = {\n classes: PropTypes.shape().isRequired,\n values: PropTypes.shape().isRequired,\n handleChange: PropTypes.func.isRequired,\n handleBlur: PropTypes.func.isRequired,\n isSubmitting: PropTypes.bool.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n onClose: PropTypes.func,\n};\n\nNomineeForm.defaultProps = {\n onClose: () => { },\n};\n\nconst withFormikComponent = withFormik({\n displayName: 'NomineeForm',\n mapPropsToValues,\n handleSubmit,\n});\n\nconst mapStateToProps = s => ({\n ongoingAgreement: s.applications.agreement,\n});\n\nconst withConnect = connect(mapStateToProps);\n\nexport default compose(\n withConnect,\n withFormikComponent,\n withStyles(styles),\n withTranslation()\n)(NomineeForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport * as moment from 'moment';\nimport { Grid, Paper, Button, Dialog } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddIcon from '@material-ui/icons/Add';\n\nimport { ActionsTable, TableToolbar } from '../../../components';\nimport { Applications } from '../../../api';\n\nimport NomineeForm from './nominee-form';\nimport { withTranslation } from 'react-i18next';\n\nconst styles = theme => ({\n actionsContainer: {\n justifyContent: 'flex-end',\n display: 'flex',\n },\n button: {\n margin: theme.spacing.unit,\n },\n leftIcon: {\n marginRight: theme.spacing.unit,\n },\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n});\n\n/**\n * Component to display the list of calls.\n *\n * @class MobilityIn-NomineesList\n * @extends {React.Component}\n * @category Screens\n */\nclass NomineesList extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n nominees: null,\n openNomineeDialog: false,\n };\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n /**\n * Helper method to fetch data from server to fill up the table.\n */\n fetchData = async () => {\n const { ongoingAgreement: { basicDetails } } = this.props;\n const { resultado } = await Applications.at('get-nominated-list').post({\n idConvenioConvocatoria: basicDetails.idConvenioConvocatoria,\n idEscuela: basicDetails.idEscuela,\n });\n const nominees = resultado.map((item) => {\n item.fecha = moment(item.fecha).format('YYYY/MM/DD');\n return item;\n });\n\n this.setState({\n nominees,\n openNomineeDialog: false,\n });\n }\n\n /**\n * Keep track of the current selected call.\n */\n handleSelect = (event, nominee) => {\n const { onSelect } = this.props;\n onSelect(event, nominee);\n }\n\n /**\n * Display dialog so edition can be made.\n */\n showDialog = name => () => {\n this.setState({\n [name]: true,\n });\n }\n\n /**\n * Handle edit modal close event\n */\n handleNomineeClose = ({ reload = false } = {}) => {\n this.setState({\n openNomineeDialog: false,\n }, () => {\n if (reload) {\n // on create or update, retrieve data again\n this.fetchData();\n }\n });\n }\n\n render() {\n const { classes, value: selected, ongoingAgreement: { basicDetails }, t } = this.props;\n const {\n nominees,\n openNomineeDialog,\n } = this.state;\n\n const columns = [\n { title: t('Estudiante'), field: 'nombre' },\n { title: t('Email'), field: 'email' },\n { title: t('Escuela'), field: 'escuela' },\n { title: t('Fecha'), field: 'fecha' },\n { title: t('Estado'), field: 'estado' },\n ];\n return (\n \n \n \n {\n nominees && (\n }\n onSelect={this.handleSelect}\n selectedRow={selected}\n options={{\n canSelect: true,\n canSearch: false,\n canFilterColumns: false,\n canFilter: false,\n canPrint: false,\n showTitle: true,\n canExport: false,\n }}\n materialTableOptions={{\n paging: false,\n }}\n />\n )\n }\n
\n \n {t(\"Agregar\")}\n \n \n
\n
\n
\n {\n \n \n \n }\n
\n );\n }\n}\n\nNomineesList.propTypes = {\n classes: PropTypes.shape().isRequired,\n // if provided, represents the highlighted row in the table.\n value: PropTypes.shape(),\n onSelect: PropTypes.func,\n ongoingAgreement: PropTypes.shape().isRequired,\n};\n\nNomineesList.defaultProps = {\n value: null,\n onSelect: () => null,\n};\n\nconst withConnect = connect(s => ({\n ongoingAgreement: s.applications.agreement,\n}));\n\nexport default compose(\n withConnect,\n withStyles(styles),\n withTranslation()\n)(NomineesList);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { indexOf } from 'lodash';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Grid, FormControl, FormControlLabel, Checkbox, Fab, Typography,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport NomineesList from '../../common/mobility-in/nominees';\nimport AgreementData from '../../common/mobility-in/agreement-data';\nimport ApplicationRequirements from '../../application-info/requirements';\nimport { FormActions, TableToolbar } from '../../../components';\nimport { IN_ADMIN_ROLES } from '../../../constants/roles';\nimport styles from './styles';\nimport { Applications } from '../../../api';\nimport applicationActions from '../../../store/applications/actions';\nimport { withTranslation } from 'react-i18next';\n\n/**\n *\n *\n * @class MobilityIn-Nomination\n * @extends {React.Component}\n * @category Screens\n */\nclass Nomination extends React.Component {\n constructor(props) {\n super(props);\n this.infoRef = React.createRef();\n this.state = {\n conformidad: false,\n nomineeSelected: null,\n canApply: false,\n };\n }\n\n handleChange = (event) => {\n this.setState({\n conformidad: event.target.checked,\n });\n }\n\n handleNomineeSelected = (event, nominee) => {\n this.setState({\n nomineeSelected: nominee,\n conformidad: nominee.conformidadProceso,\n }, this.handleScroll);\n }\n\n updateCanApply = (canApply) => {\n this.setState({ canApply });\n }\n\n handleSubmit = async (event) => {\n const { history, dispatch } = this.props;\n const { conformidad, nomineeSelected } = this.state;\n event.preventDefault();\n if (nomineeSelected.conformidadProceso) {\n // student was already postulated so nothing extra is required\n } else {\n await Applications.at('update-application-state').post({\n idPostulacion: nomineeSelected.idPostulacion,\n conformidad,\n });\n }\n\n dispatch(applicationActions.setApplication({\n idPostulacion: nomineeSelected.idPostulacion,\n }));\n dispatch(applicationActions.setUserApplication({\n idUsuario: nomineeSelected.idUsuario,\n }));\n dispatch(applicationActions.requestApplicationData({\n idPostulacion: nomineeSelected.idPostulacion,\n }));\n history.push('resultados');\n }\n\n handleScroll = () => {\n setTimeout(() => {\n if (this.infoRef && this.infoRef.current) {\n this.infoRef.current.scrollIntoView();\n }\n }, 500);\n }\n\n render() {\n const { classes, role, t } = this.props;\n const { conformidad, nomineeSelected, canApply } = this.state;\n\n return (\n \n \n \n \n \n \n \n
\n \n {\n nomineeSelected && (\n \n \n \n {t(\"Nominado\")}: \n {nomineeSelected.nombre}\n \n \n )}\n isMobilityIn={true}\n readOnly\n />\n\n )\n }\n \n {\n indexOf(IN_ADMIN_ROLES, role) >= 0\n && nomineeSelected\n && canApply\n && (\n \n
\n \n \n )}\n label={t(\"Doy mi conformidad para iniciar el proceso de Postulación del Estudiante seleccionado.\")}\n />\n \n \n \n \n {nomineeSelected.conformidadProceso ? 'Ver Resultados' : 'Postular'}\n \n \n
\n
\n )\n }\n \n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n */\nNomination.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n role: PropTypes.number.isRequired,\n};\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withStyles(styles),\n withTranslation()\n)(Nomination);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n FormControl,\n Checkbox,\n InputLabel,\n Input,\n ListItemText,\n Select,\n MenuItem,\n} from '@material-ui/core';\n\n/**\n * Component used to display a multi select field, with checkboxes next\n * to each entry in the select dropbox.\n *\n * @module MultiSelectField\n * @param {Object} props Data required to instantiate the component.\n * @category Components\n */\nconst MultiSelectField = (props) => {\n const {\n id,\n label,\n values,\n onChange,\n items,\n classes,\n disableItems,\n disabled,\n } = props;\n\n\n return (\n \n {label && {label}}\n }\n renderValue={(selected) => {\n const selectedItems = items.filter(s => selected.indexOf(s.id) > -1).map(s => s.nombre);\n return selectedItems.join(', ');\n }}\n >\n {items.map(item => (\n \n -1} />\n \n \n ))}\n \n \n );\n};\n\n/**\n * propTypes\n * @property {string} id Field identifier.\n * @property {string} label Field label.\n * @property {array} items Items to select.\n * @property {function} onChange To be called when the user selects an item.\n * @property {array} values Previously selected values.\n * @property {object} classes Classes used by styles.\n */\nMultiSelectField.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n onChange: PropTypes.func.isRequired,\n values: PropTypes.arrayOf(PropTypes.number).isRequired,\n classes: PropTypes.shape(),\n disableItems: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nMultiSelectField.defaultProps = {\n label: '',\n classes: {},\n disableItems: false,\n disabled: false,\n};\n\nexport default MultiSelectField;\n","export default theme => ({\n actionsWrapper: {\n display: 'flex',\n },\n formWrapper: {\n display: 'flex',\n alignItems: 'center',\n },\n customCells: {\n minWidth: 190,\n maxWidth: 190,\n },\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport {\n Checkbox,\n TableCell,\n TableRow,\n IconButton,\n TextField,\n withStyles,\n Hidden,\n Button,\n Typography\n} from '@material-ui/core';\n\nimport CheckIcon from '@material-ui/icons/Check';\nimport ViewIcon from '@material-ui/icons/RemoveRedEye';\nimport DownloadIcon from '@material-ui/icons/CloudDownload';\nimport DownloadFileIcon from '@material-ui/icons/CloudDownloadOutlined';\nimport SaveIcon from '@material-ui/icons/Save';\nimport OpenInNewIcon from '@material-ui/icons/OpenInNew';\nimport MultiSelectField from '../../components/multiselect-field';\nimport {\n SelectField,\n UploadField,\n} from '../../components';\n\nimport { downloadBlob, fileToBase64 } from '../../utils';\nimport styles from './styles';\nimport alertsActions from '../../store/alerts/actions';\nimport { withTranslation } from 'react-i18next';\n\nconst UPLOAD = 'upload';\nconst DOWNLOAD = 'download';\nconst SELECT = 'select';\nconst TEXT = 'text';\nconst CHECKBOX = 'checkbox';\nconst RADIO = 'radio';\nconst LINK = 'link';\n\n\n/**\n * Component which wraps the save icon next to fields.\n *\n * @method InputWrapper\n * @memberof TareasAdicionales.TaskRow\n */\nconst InputWrapper = withStyles(styles)(\n ({ classes, renderBefore, renderAfter, onSave }) => (\n
\n {renderBefore && renderBefore()}\n \n \n \n {renderAfter && renderAfter()}\n
\n ),\n);\n\nconst DownloadFileButton = withStyles(styles)(\n ({ classes, archivo, label, style }) => {\n const newlabel = label ? label : '';\n const maxWidth = 20;\n const truncatedLabel = newlabel.length > maxWidth ? `${newlabel.substr(0, maxWidth - 3)}...` : newlabel;\n\n return (\n downloadBlob(archivo)}\n >\n {truncatedLabel}\n \n \n )\n }\n);\n\nconst LinkWrapper = withStyles(styles)(\n ({ classes, renderAfter, link, onClick }) => (\n
\n \n \n \n {renderAfter()}\n
\n ),\n);\n\n/**\n * Component to display one task in the Task List.\n * This is a separate component since each row contains a form.\n * It is used by the components listed bellow.\n * @see TareasAdicionales.TasksLists\n *\n * @class TaskRow\n * @extends {React.PureComponent}\n * @memberof TareasAdicionales\n * @category Screens\n */\nclass TaskRow extends React.PureComponent {\n constructor(props) {\n super(props);\n const { item } = this.props;\n\n this.state = {\n items: item.itemsSeleccionados || '',\n archivo: '',\n nombreArchivo: '',\n observado: item.observado,\n alumnoObservacion: item.alumnoObservacion,\n };\n }\n\n /**\n * Handles on change each input\n * @memberof TareasAdicionales.TaskRow\n */\n handleChange = name => (event) => {\n this.setState({ [name]: event.target.value });\n\n if (name === 'nombreArchivo') {\n fileToBase64(event.target.files[0]).then((archivo) => {\n this.setState({ archivo });\n });\n }\n };\n\n handleChangeFile = (fileObject) => {\n this.setState(fileObject);\n }\n\n handleDownload = item => () => {\n const { dispatch } = this.props;\n const { formato } = item;\n if (formato) {\n downloadBlob(formato);\n } else {\n dispatch(alertsActions.setNotifications(\n [{\n titulo: 'Error',\n descripcion: 'No se encontró el archivo.',\n epoch: new Date().getTime(),\n }],\n ));\n }\n }\n\n openNewTab = (link) => {\n const { dispatch } = this.props;\n try {\n window.open(`${link}`, '_blank');\n } catch {\n dispatch(alertsActions.setNotifications(\n [{\n titulo: 'Error',\n descripcion: 'Link Inválido',\n epoch: new Date().getTime(),\n }],\n ));\n }\n };\n\n handleSave = () => {\n const {\n onSave,\n onSaveSeguro,\n onSaveObservacion,\n isStudent,\n item: {\n idRequisito,\n tipoRequisito,\n tipoItem,\n observado,\n },\n idPostulacion,\n isVirtual,\n isMobilityIn,\n } = this.props;\n const { archivo, nombreArchivo, items } = this.state;\n let payload = {\n idRequisito,\n idPostulacion,\n tipoRequisito,\n tipoItem,\n estado: 3,\n items,\n archivo,\n nombreArchivo,\n };\n if (isMobilityIn && isStudent && idRequisito === 18 && isVirtual) {\n onSaveSeguro(payload);\n }\n if (observado) {\n onSaveObservacion(\n {\n idRequisito,\n idPostulacion,\n observado: false,\n alumnoObservacion: \"\",\n }\n )\n }\n onSave(payload);\n }\n\n handleSaveObservado = () => {\n const {\n onSaveObservacion,\n item: {\n idRequisito,\n },\n idPostulacion,\n } = this.props;\n const { observado, alumnoObservacion } = this.state;\n let payload = {\n idRequisito,\n idPostulacion,\n observado,\n alumnoObservacion: alumnoObservacion,\n };\n\n onSaveObservacion(payload);\n }\n\n renderAlumnoObservacion = () => {\n const { item, isStudent } = this.props;\n\n const { observado, alumnoObservacion } = this.state\n if (item.estado == \"Cumplido\" && observado && !isStudent) {\n return (\n (\n observado && (\n \n )\n )}\n onSave={alumnoObservacion ? this.handleSaveObservado : null}\n />\n )\n } else if (item.alumnoObservacion) {\n return (\n \n {item.alumnoObservacion}\n \n )\n }\n }\n \n renderObservado = () => {\n const { item, isStudent } = this.props;\n const { observado } = this.state\n if (item.estado == \"Cumplido\" && !isStudent) {\n return (\n this.setState({ observado: checked })}\n />\n )\n } else if (item.observado) {\n return (\n
\n \n
\n )\n }\n }\n renderPlantilla = () => {\n const {\n item: {\n plantilla,\n nombrePlantilla\n },\n } = this.props;\n if (plantilla) {\n return (\n < DownloadFileButton style={{ minWidth: 90 }} archivo={plantilla} label={nombrePlantilla} />\n )\n }\n }\n renderInputs = () => {\n const { item, onClick, isStudent, classes, isVirtual, isMobilityIn, t } = this.props;\n if (!isStudent && item.tipoItem === UPLOAD) {\n item.tipoItem = DOWNLOAD;\n }\n if (isMobilityIn && isStudent && item.idRequisito === 18 && !isVirtual) {\n item.tipoItem = UPLOAD;\n }\n const {\n idRequisito,\n tipoItem,\n } = item;\n const {\n items,\n } = this.state;\n if (idRequisito === 15) {\n return (\n onClick(item)}>\n \n \n );\n }\n switch (tipoItem) {\n case SELECT:\n case RADIO:\n return (\n (\n item.items && (\n [x, x])}\n selected={item.itemsSeleccionados}\n onChange={this.handleChange('items')}\n className={classes.customCells}\n />\n )\n )}\n onSave={isStudent ? this.handleSave : null}\n />\n );\n case CHECKBOX:\n return (\n (\n item.items && (\n this.setState(prevState => (\n {\n items: prevState.items.length > 0\n ? `${prevState.items},${event.target.value}`\n : `${event.target.value}`,\n }))}\n items={item.items && item.items.split(',').map(x => ({ id: x, nombre: x }))}\n classes={{\n select: classes.customCells,\n }}\n />\n )\n )}\n onSave={isStudent ? this.handleSave : null}\n />\n );\n case DOWNLOAD:\n return (\n \n \n \n );\n case TEXT:\n return (\n (\n \n )}\n onSave={isStudent ? this.handleSave : null}\n />\n );\n case UPLOAD:\n return (\n item.estado !== \"Cumplido\" ?\n {\n return (\n \n \n \n )\n }}\n onSave={this.handleSave}\n renderAfter={() => {\n return (\n item.formato && (\n \n )\n )\n }\n }\n /> : item.formato && (\n \n )\n\n );\n case LINK:\n return (\n (\n this.openNewTab(item.items)}>Link\n )}\n onClick={() => this.openNewTab(item.items)}\n />\n );\n default:\n return null;\n }\n }\n\n render() {\n const {\n onSaveObservacion,\n isStudent,\n item: {\n nombre,\n observaciones,\n fecha,\n estado,\n },\n t\n } = this.props;\n return (\n \n \n \n {t(nombre)}\n {!onSaveObservacion && {observaciones}}\n {moment(fecha).format('DD/MM/YYYY')}\n {t(estado)}\n {onSaveObservacion && isStudent &&\n \n {this.renderPlantilla()}\n \n }\n {this.renderInputs()} \n {onSaveObservacion &&\n \n {this.renderObservado()}\n \n }\n {onSaveObservacion &&\n \n {this.renderAlumnoObservacion()}\n \n }\n \n \n \n \n \n {this.renderInputs()}\n \n {t(nombre)}\n {estado === 'Cumplido' ? : ''}\n \n \n \n );\n }\n}\n\nTaskRow.propTypes = {\n item: PropTypes.shape({}).isRequired,\n onSave: PropTypes.func.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nexport default compose(connect(), withStyles(styles), withTranslation())(TaskRow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { isEmpty } from 'lodash';\nimport {\n TableCell,\n TableRow,\n TextField,\n IconButton,\n withStyles,\n Typography,\n} from '@material-ui/core';\n\nimport SaveIcon from '@material-ui/icons/Save';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport DownloadFileIcon from '@material-ui/icons/CloudDownloadOutlined';\n\nimport {\n isStudent,\n ROLE_DRIC,\n ROLE_ASISTENTE_DRIC,\n} from '../../constants/roles';\n\nimport styles from './styles';\nimport {\n ConfirmationDialog,\n} from '../../components';\n\nimport sessionSelectors from '../../store/session/selectors';\nimport { downloadBlob } from '../../utils';\nimport { UploadField } from '../../components';\n\n\n/**\n * Component to display one row in the Syllabus Table.\n * This is a separate component since each row contains a form.\n * It is used by the components listed bellow.\n * @see TareasAdicionales.Syllabus\n * \n * @class SyllabusRow\n * @extends {React.PureComponent}\n * @memberof TareasAdicionales\n * @category Screens\n */\nclass SyllabusRow extends React.PureComponent {\n constructor(props) {\n super(props);\n const { item } = props;\n this.state = { ...item, openConfirmation: false, nombreArchivo: \"\" };\n }\n\n /**\n * Handles on change each input\n * @memberof TareasAdicionales.SyllabusRow\n */\n handleChange = name => (event) => {\n if (event.archivo) {\n this.setState({\n [name]: event.archivo, nombreArchivo: event.nombreArchivo\n });\n } else {\n this.setState({ [name]: event.target.value });\n }\n };\n\n /**\n * Handles the submit action\n * @memberof TareasAdicionales.SyllabusRow\n */\n handleSave = async () => {\n const { onSave } = this.props;\n onSave(this.state);\n this.setState({ archivo: '' });\n }\n\n componentDidUpdate(prevProps) {\n const { item } = this.props;\n if (item.nombreSilaboDestino !== prevProps.item.nombreSilaboDestino) {\n this.setState({ silaboDestino: item.silaboDestino, nombreSilaboDestino: item.nombreSilaboDestino })\n }\n }\n\n handleDelete = () => {\n const { item, onDelete } = this.props;\n onDelete(item);\n }\n\n parseFileName = (name) => {\n const maxWidth = 20;\n return name.length > maxWidth ? `${name.substr(0, maxWidth - 3)}...` : name;\n }\n\n render() {\n const {\n archivo,\n idSilabo,\n escuelaDestino,\n cursoDestino,\n silaboDestino,\n nombreSilaboDestino,\n openConfirmation,\n } = this.state;\n const { role, classes } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n \n
\n \n {!isEmpty(silaboDestino) && (\n downloadBlob(silaboDestino)}>\n {nombreSilaboDestino && this.parseFileName(nombreSilaboDestino)} \n \n \n )}\n
\n
\n
\n {/* \n \n \n \n \n \n \n \n
\n \n {!isEmpty(silaboOrigen) && (\n downloadBlob(silaboOrigen)}>\n \n {silaboOrigenNombre}\n \n )}\n
\n
\n
*/}\n {(isStudent(role) || role === ROLE_DRIC || role === ROLE_ASISTENTE_DRIC) ? (\n \n
\n \n \n \n {idSilabo > 0 && (\n this.setState({ openConfirmation: true })}>\n \n \n )}\n
\n
\n ) : }\n this.setState({ openConfirmation: false })} />\n
\n );\n }\n}\n\nSyllabusRow.defaultProps = {\n item: {\n idPostulacion: 0,\n },\n onDelete: null,\n};\n\n/**\n * propTypes\n * @memberof TareasAdicionales.SyllabusRow\n * @property {object} classes Classes used by styles\n * @property {object} item Syllabus Row\n * @property {func} onSave\n * @property {func} onDelete\n */\nSyllabusRow.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n role: PropTypes.number.isRequired,\n onSave: PropTypes.func.isRequired,\n item: PropTypes.shape({}),\n onDelete: PropTypes.func,\n};\n\nconst withConnect = connect(s => ({\n role: sessionSelectors.roleSelector(s),\n}));\n\nexport default compose(\n withConnect,\n withStyles(styles),\n)(SyllabusRow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n Grid,\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n DialogActions,\n DialogContent,\n} from '@material-ui/core';\n\nimport { DialogHeader } from '../../components';\n\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\nimport {\n isStudent,\n} from '../../constants/roles';\n\nimport SyllabusRow from './syllabus-row';\nimport sessionSelectors from '../../store/session/selectors';\nimport { Applications, NotificationsApp } from '../../api';\n\n/**\n * Component to display the list of syllabus.\n * It is used by the components listed bellow.\n * @see TareasAdicionales.TasksLists\n * \n * @class Syllabus\n * @extends {React.PureComponent}\n * @memberof TareasAdicionales\n * @category Screens\n */\nclass Syllabus extends React.PureComponent {\n state = {\n syllabi: [],\n university: '',\n showExtraRow: false,\n enviado: false,\n }\n\n componentDidMount() {\n this.loadData();\n }\n\n loadData = () => {\n const { application: { idPostulacion } } = this.props;\n\n Applications.at('get-syllabus').post({\n idPostulacion,\n }).then((data) => {\n const {\n resultado: {\n universidadDestino: university,\n silabos: syllabi,\n enviado,\n },\n } = data;\n this.setState({ university, syllabi, showExtraRow: false, enviado });\n });\n }\n\n handleAddRow = () => {\n const { showExtraRow } = this.state;\n this.setState({ showExtraRow: !showExtraRow });\n }\n\n handleSave = (item) => {\n let payload = {};\n const { application: { idPostulacion } } = this.props;\n payload = {\n idPostulacion,\n idSilabo: item.idSilabo,\n cursoDestino: item.cursoDestino,\n escuelaDestino: item.escuelaDestino,\n silaboDestino: item.archivo,\n silaboDestinoNombre: item.nombreArchivo,\n cursoOrigen: '',\n silaboOrigen: '',\n silaboOrigenNombre: '',\n };\n Applications.at('update-syllabus').post(payload).then(() => {\n this.loadData();\n });\n }\n\n handleDelete = (item) => {\n const { idSilabo } = item;\n Applications.at('delete-syllabus').post({ idSilabo }).then(() => {\n this.loadData();\n });\n }\n\n handleSubmitSyllabus = () => {\n const { application: { idPostulacion } } = this.props;\n NotificationsApp.at('sent-request-syllables').post({ idPostulacion });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see TareasAdicionales.SyllabusRow\n * @memberof TareasAdicionales.Syllabus\n */\n render() {\n const {\n syllabi,\n showExtraRow,\n enviado,\n } = this.state;\n const { role, onClose } = this.props;\n return (\n \n \n \n \n \n \n \n \n Escuela Profesional\n Curso\n Sílabo\n \n \n \n \n {syllabi.map(item => (\n \n ))}\n {showExtraRow && (\n \n )}\n \n
\n
\n
\n
\n \n \n {showExtraRow ? 'Cancelar' : 'Agregar Requerimiento'}\n \n {/* {!enviado && (\n \n Enviar\n \n )} */}\n \n
\n );\n }\n}\n\n\nSyllabus.propTypes = {\n role: PropTypes.number.isRequired,\n application: PropTypes.shape({\n idPostulacion: PropTypes.number.isRequired,\n }).isRequired,\n};\n\n\nexport default compose(\n connect(s => ({\n role: sessionSelectors.roleSelector(s),\n application: s.applications.application,\n })),\n)(Syllabus);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport {\n Paper,\n Dialog,\n Table,\n TableHead,\n TableCell,\n TableRow,\n TableBody,\n Hidden,\n} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport { Applications } from '../../api';\nimport { TableToolbar } from '../../components';\nimport TaskRow from './task-row';\n\nimport Syllabus from './syllabus';\nimport { STUDENT_ROLES } from '../../constants/roles';\nimport { withTranslation } from 'react-i18next';\n\n\n/**\n * Component to display the list of additional tasks.\n * It is used by the components listed bellow.\n * @see AdditionalTasks\n *\n * @class TasksLists\n * @extends {React.Component}\n * @memberof TareasAdicionales\n * @category Screens\n */\nclass TasksLists extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n tasks: [],\n selectedTask: 0,\n };\n\n this.actions = [\n {\n tooltip: 'Ver',\n icon: VisibilityIcon,\n onClick: this.onClickTask,\n },\n ];\n }\n\n async componentDidMount() {\n this.loadData();\n }\n\n loadData = async () => {\n const { application } = this.props;\n const payload = await Applications.at('get-additional-tasks').post({\n idPostulacion: application.idPostulacion,\n });\n const { resultado: tasks } = payload;\n this.setState({ tasks });\n }\n\n handleClickTask = (task) => {\n this.setState({ selectedTask: task.idRequisito });\n }\n\n handleSave = async (payload) => {\n try {\n await Applications.at('update-additional-task').post(payload);\n this.loadData();\n } catch (error) {}\n }\n\n handleSaveSeguro = async (payload) => {\n try {\n await Applications.at('update-health-insurance').post({\n idPostulacion: payload.idPostulacion,\n seguroMedico: payload.archivo,\n seguroMedicoNombre: payload.nombreArchivo,\n });\n this.loadData();\n } catch (error) {}\n }\n\n handleClose = () => {\n this.setState({ selectedTask: 0 });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see TareasAdicionales.TaskRow\n * @see TareasAdicionales.Syllabus\n * @memberof TareasAdicionales.TasksLists\n */\n render() {\n const { tasks, selectedTask } = this.state;\n const { application, role, isMobilityIn, t } = this.props;\n const { idPostulacion, isVirtual } = application;\n return (\n \n \n \n
\n \n \n \n \n {t(\"Tarea\")}\n {t(\"Observaciones\")}\n {t(\"Fecha\")}\n {t(\"Estado\")}\n {t(\"Detalles\")}\n \n \n \n {tasks.map((item) => {\n const isStudent = STUDENT_ROLES.includes(role);\n return (\n \n );\n })}\n \n
\n
\n \n \n \n \n Detalles\n Tarea\n Estado\n \n \n \n {tasks.map((item) => {\n const isStudent = STUDENT_ROLES.includes(role);\n return (\n \n );\n })}\n \n
\n
\n
\n
\n 0}\n onClose={this.handleClose}\n maxWidth=\"md\"\n >\n {selectedTask === 15 && (\n \n )}\n\n \n
\n );\n }\n}\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withTranslation()\n)(TasksLists);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport {\n Paper,\n Dialog,\n Table,\n TableHead,\n TableCell,\n TableRow,\n TableBody,\n Hidden,\n} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport { Agreements, Applications } from '../../api';\nimport { TableToolbar } from '../../components';\nimport TaskRow from './task-row';\n\nimport Syllabus from './syllabus';\nimport { STUDENT_ROLES } from '../../constants/roles';\nimport { withTranslation } from 'react-i18next';\n\n\n/**\n * Component to display the list of required documents.\n * It is used by the components listed bellow.\n * @see AdditionalTasks\n *\n * @class TasksLists\n * @extends {React.Component}\n * @memberof TareasAdicionales\n * @category Screens\n */\nclass RequiredDocumentsLists extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n tasks: [],\n selectedTask: 0,\n };\n this.actions = [\n {\n tooltip: 'Ver',\n icon: VisibilityIcon,\n onClick: this.onClickTask,\n },\n ];\n }\n\n async componentDidMount() {\n this.loadData();\n }\n\n componentDidUpdate(prevProps) {\n const { application } = this.props;\n if (application.idPostulacion !== prevProps.application.idPostulacion) {\n this.loadData()\n }\n }\n\n loadData = async () => {\n const { application } = this.props;\n const payload = await Applications.at('get-additional-tasks').post({\n idPostulacion: application.idPostulacion,\n principal: 1\n });\n const { resultado: tasks } = payload;\n this.setState({ tasks });\n }\n\n handleClickTask = (task) => {\n this.setState({ selectedTask: task.idRequisito });\n }\n\n handleSave = async (payload) => {\n try {\n await Applications.at('update-additional-task').post(payload);\n this.loadData();\n } catch (error) { }\n }\n\n handleSaveObservacion = async (payload) => {\n try {\n await Agreements.at('update-additional-task-observation').post(payload);\n this.loadData();\n } catch (error) { }\n }\n\n handleClose = () => {\n this.setState({ selectedTask: 0 });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see TareasAdicionales.TaskRow\n * @see TareasAdicionales.Syllabus\n * @memberof TareasAdicionales.TasksLists\n */\n render() {\n const { tasks, selectedTask } = this.state;\n const { application, role, isMobilityIn, t } = this.props;\n const { idPostulacion, isVirtual } = application;\n const isStudent = STUDENT_ROLES.includes(role);\n\n return (\n \n \n \n
\n \n \n \n \n {t(\"Tarea\")}\n {t(\"Fecha\")}\n {t(\"Estado\")}\n {isStudent && {t(\"Plantilla\")}}\n {t(\"Documento\")}\n {t(\"Observado\")}\n {t(\"Observacion\")}\n \n \n \n {tasks.map((item) => {\n return (\n \n );\n })}\n \n
\n
\n \n \n \n \n {t(\"Documento\")}\n {t(\"Tarea\")}\n {t(\"Estado\")}\n \n \n \n {tasks.map((item) => {\n const isStudent = STUDENT_ROLES.includes(role);\n return (\n \n );\n })}\n \n
\n
\n
\n
\n 0}\n onClose={this.handleClose}\n maxWidth=\"md\"\n >\n {selectedTask === 15 && (\n \n )}\n\n \n
\n );\n }\n}\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n role: s.session.role.idRol,\n })),\n withTranslation()\n)(RequiredDocumentsLists);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Grid } from '@material-ui/core';\nimport AgreementData from '../../common/mobility-in/agreement-data';\nimport PersonalInformation from '../../common/mobility-in/foreign-personal-info';\nimport AcademicInformation from '../../common/mobility-in/foreign-academic-info';\nimport TasksList from '../../additional-tasks/tasks-lists';\nimport RequiredDocumentsLists from '../../additional-tasks/required-documents';\nimport { ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../../constants/roles';\n\n/**\n *\n *\n * @class MobilityIn-Summary\n * @extends {React.Component}\n * @category Screens\n */\nclass Summary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n const { role, userApplication } = this.props;\n const isInUser = [ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER].includes(role);\n const userId = isInUser ? 0 : userApplication.idUsuario;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst mapStateToProps = s => ({\n application: s.applications.application,\n userApplication: s.applications.userApplication,\n});\n\nconst withConnect = connect(mapStateToProps);\nexport default withConnect(Summary);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport {\n Grid,\n} from '@material-ui/core';\nimport PersonalInformation from '../common/student/personal-information';\nimport AcademicData from '../common/student/academic-data';\nimport AgreementData from '../common/student/agreement-data';\nimport TasksList from './tasks-lists';\nimport CoursesSection from '../common/student/courses-section';\nimport RequiredDocumentsLists from './required-documents';\n\n/**\n * Groups all the class and functional components related to the TareasAdicionales screen, the\n * last step in the MobilityOut process.\n * @see {@link AdditionalTasks} main component\n * @namespace TareasAdicionales\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link TareasAdicionales} screen that displays the tasks\n * on the final step.\n *\n * @class AdditionalTasks\n * @extends {React.Component}\n * @category Screens\n */\nclass AdditionalTasks extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see PersonalInformation\n * @see AcademicInformation\n * @see AgreementData\n * @see TareasAdicionales.TasksLists\n * @memberof AdditionalTasks\n */\n render() {\n const { userId, application, idEscuela, classes, history, dispatch } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {application.isVirtual && (\n \n )}\n \n \n \n \n \n \n \n );\n }\n}\n\nexport default compose(\n connect(s => ({\n application: s.applications.application,\n })),\n)(AdditionalTasks);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { isEmpty, indexOf } from 'lodash';\n\nimport {\n Dialog,\n DialogContent,\n} from '@material-ui/core';\n\nimport { HorizontalStepper, ProtectedRoute } from '../../components';\n\nimport withRole from '../../components/hoc/withRole';\nimport TermsAgreement from '../../components/terms-agreement';\nimport sessionSelectors from '../../store/session/selectors';\nimport applicationsActions from '../../store/applications/actions';\n\nimport CallsList from '../../screens/calls-list';\nimport AgreementsList from '../../screens/agreements-list';\nimport ApplicationInfo from '../../screens/application-info';\nimport Interviews from '../../screens/interviews';\nimport Results from '../../screens/results';\n\nimport MobilityInAgreementsList from '../../screens/mobility-in/agreements-list';\nimport MobilityInStudentPostulation from '../../screens/mobility-in/student-postulation';\nimport MobilityInResults from '../../screens/mobility-in/results';\nimport MobilityInNomination from '../../screens/mobility-in/nomination';\nimport MobilityInSummary from '../../screens/mobility-in/summary';\n\nimport AdditionalTasks from '../../screens/additional-tasks';\nimport { Applications, Person } from '../../api';\n\nimport navigateTo, { mobilityInNavigateTo } from '../../utils/navigation';\nimport sessionActions from '../../store/session/actions';\n\nimport {\n ROLE_ESTUDIANTE,\n ROLE_ESTUDIANTE_EXTRANJERO,\n ROLE_REPRESENTANTE_INTERNACIONALIZACION,\n IN_ADMIN_ROLES,\n ROLE_FREEMOVER,\n} from '../../constants/roles';\n\n/**\n * Component that handles the navigation inside /app/convocatoria.\n *\n * @class CallRouter\n * @extends {React.Component}\n * @category Components\n */\nclass CallRouter extends React.PureComponent {\n constructor(props) {\n super(props);\n const {\n match: { isExact },\n consentimientos,\n } = props;\n /**\n * CallRouter state.\n * @type {object}\n * @property {array} applicationsData Stores the applications of the user.\n * @property {bool} openDialog Handles the openning of the dialog.\n */\n this.state = {\n applicationsData: [],\n openDialog: isExact,\n selectedStep: {},\n mostrarConsentimientos: this.mostrarConsentimientos()\n };\n }\n\n componentDidMount() {\n const { history, dispatch } = this.props;\n Applications.at('get-my-applications').post()\n .then((payload) => {\n const { resultado } = payload;\n if (resultado.length > 0) {\n this.setState({ applicationsData: resultado });\n } else {\n dispatch(applicationsActions.requestStepper({ idPostulacion: null }));\n history.replace('/app/convocatoria/convenios');\n }\n })\n .catch((error) => {\n console.log('login error', error);\n });\n }\n\n static getDerivedStateFromProps(props, state) {\n if (!isEmpty(props.location.state) && props.location.state.applicationsData !== state.applicationsData) {\n return {\n applicationsData: props.location.state.applicationsData,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps) {\n const prevIsExact = prevProps.match.isExact;\n const { match: { isExact }, steps, consentimientos } = this.props;\n if (prevIsExact !== isExact) {\n if (isExact === true) {\n this.handleDialogOpen();\n } else {\n this.handleDialogClose();\n }\n }\n // change the selected step\n if (steps && steps.length > 0 && prevProps.steps !== steps) {\n const activeSteps = steps.filter(step => step.estado === true);\n const selectedStep = activeSteps.length > 0 ? activeSteps[activeSteps.length - 1] : steps[0];\n console.log('selectedStep', selectedStep);\n this.setState({\n selectedStep,\n });\n }\n\n //revisa si se actualizaron los consentimientos \n const prevConsentimientos = prevProps.consentimientos;\n if (consentimientos != prevConsentimientos) {\n this.setState({\n mostrarConsentimientos: this.mostrarConsentimientos()\n });\n }\n }\n\n handleDialogOpen = () => {\n this.setState({ openDialog: true });\n };\n\n handleDialogClose = () => {\n this.setState({ openDialog: false });\n };\n\n handleNavigation = (step) => {\n const { history, role } = this.props;\n\n if (indexOf([\n ...IN_ADMIN_ROLES,\n ROLE_ESTUDIANTE_EXTRANJERO,\n ROLE_FREEMOVER,\n ], role) >= 0) {\n history.push(mobilityInNavigateTo[step.idStep]);\n } else {\n history.push(navigateTo[step.idStep]);\n }\n this.setState({\n selectedStep: step,\n });\n }\n\n handleNavigationFromIndex = (idx) => {\n const { steps } = this.props;\n if (steps.length > idx && steps[idx]) {\n this.handleNavigation(steps[idx]);\n }\n }\n\n isUsuarioIn = () => {\n const { role } = this.props;\n\n if (indexOf([ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER, ROLE_REPRESENTANTE_INTERNACIONALIZACION], role) >= 0) {\n return true;\n }\n return false;\n }\n\n mostrarConsentimientos = () => {\n const {consentimientos} = this.props;\n return this.isUsuarioIn() && consentimientos && !consentimientos.every(item => !item.opcional && item.autorizacion || item.opcional)\n }\n\n renderOutRoutes = () => {\n const { match, role } = this.props;\n\n const routerProps = {\n ...this.props,\n role,\n updateSelectedStep: this.handleNavigationFromIndex,\n };\n\n if (indexOf([ROLE_ESTUDIANTE], role) >= 0) {\n return [\n } />,\n } />,\n } />,\n } />,\n } />,\n ];\n }\n return null;\n }\n\n renderInRoutes = () => {\n const { match, role } = this.props;\n\n const routerProps = {\n ...this.props,\n role,\n updateSelectedStep: this.handleNavigationFromIndex,\n };\n if (indexOf([ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER], role) >= 0) {\n return [\n } />,\n } />,\n } />,\n } />,\n ];\n }\n if (indexOf(IN_ADMIN_ROLES, role) >= 0) {\n return [\n } />,\n } />,\n } />,\n } />,\n ];\n }\n\n return null;\n }\n\n render() {\n const { role, history, steps } = this.props;\n const { openDialog, applicationsData, selectedStep, mostrarConsentimientos } = this.state;\n\n return (\n \n {!isEmpty(steps) && (\n \n )}\n {this.renderOutRoutes()}\n {this.renderInRoutes()}\n\n {applicationsData.length > 0 && (\n \n \n \n \n \n )}\n \n \n \n\n \n );\n }\n}\n\n/**\n * propTypes\n * @property {object} match Object that contains the actual path.\n * @property {object} history Object that handles the redirection to other locations.\n * @property {array} steps Steps to be accomplished by the user.\n * @property {number} role Role of the logged user.\n * @property {function} dispatch Allows to call redux actions.\n * @property {bool} isStudent\n * @property {bool} isStudent\n */\nCallRouter.propTypes = {\n match: PropTypes.shape().isRequired,\n history: PropTypes.shape().isRequired,\n steps: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n role: PropTypes.number.isRequired,\n dispatch: PropTypes.func.isRequired,\n isStudent: PropTypes.bool,\n isInAdmin: PropTypes.bool,\n};\n\nCallRouter.defaultProps = {\n isStudent: false,\n isInAdmin: false,\n};\n\nconst withSpecificRole = withRole([\n ROLE_ESTUDIANTE,\n ROLE_ESTUDIANTE_EXTRANJERO,\n ROLE_FREEMOVER,\n ...IN_ADMIN_ROLES,\n]);\n\nconst mapDispatchToProps = {\n fetchUserData: sessionActions.fetchUserData,\n};\n\nconst withConnect = connect(s => ({\n role: sessionSelectors.roleSelector(s),\n steps: s.applications.stepper,\n consentimientos: s.session.userInfo.consentimientos\n}), mapDispatchToProps);\n\nexport default compose(\n withSpecificRole,\n withRouter,\n withConnect\n)(CallRouter);\n","export default theme => ({\n infoTableContainer: {\n padding: theme.spacing.unit * 2,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport * as moment from 'moment';\nimport { defaults, isFunction } from 'lodash';\nimport {\n TextField,\n FormControl,\n FormControlLabel,\n Checkbox,\n Button,\n MenuItem,\n} from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport sessionActions from '../../store/session/actions';\nimport { Person } from '../../api';\n\nimport {\n DateTimePicker,\n TableToolbar,\n} from '../../components';\nimport { OUT_ROLES } from '../../constants/roles';\nimport SelectAddress from './select-adress';\nimport styles from './styles';\n\n\nconst inputMargin = 'normal';\n\nconst tipoDocumentoItems = [\n { value: 'D', label: 'DNI' },\n { value: 'S', label: 'Pasaporte' },\n { value: 'E', label: 'Carnet de extranjería' },\n { value: 'M', label: 'Libreta Militar' },\n { value: 'R', label: 'RUC' },\n { value: 'B', label: 'Boleta Militar' },\n { value: 'P', label: 'Acta de Nacimiento' },\n { value: 'N', label: 'Sin Identificación' },\n { value: 'O', label: 'Otros (personas no residentes en Perú)' },\n];\n\nconst cleanData = (data) => {\n const { email: emailPersonal } = data;\n const { apellidoPaterno, apellidoMaterno } = data;\n let { fechaNacimiento } = data;\n fechaNacimiento = fechaNacimiento && fechaNacimiento.substr(0, 10);\n return {\n ...data,\n apellidoPaterno,\n apellidoMaterno,\n emailPersonal,\n fechaNacimiento,\n };\n};\n\n/**\n * Update profile info component. It is used by the components listed bellow.\n * @see Profile\n *\n * @class UpdateProfile\n * @extends {React.PureComponent}\n * @memberof Perfil\n * @category Screens\n */\nclass UpdateProfile extends React.PureComponent {\n constructor(props) {\n super(props);\n const { initialData } = props;\n const data = cleanData(initialData);\n this.state = defaults({}, data);\n }\n\n /**\n * handle input change\n */\n handleChange = name => (event) => {\n if (name === 'autDatosPersonales') {\n this.setState({ [name]: event.target.checked });\n } else {\n this.setState({ [name]: event.target.value });\n }\n };\n\n /**\n * save profile to servers\n */\n handleSubmit = (event) => {\n event.preventDefault();\n const { onSave, fetchUserData } = this.props;\n Person.at('update-all-personal-info').post(this.state).then(() => {\n if (isFunction(fetchUserData)) {\n fetchUserData();\n }\n if (isFunction(onSave)) {\n onSave();\n }\n });\n }\n\n handleChangeAddress = (address) => {\n const [codPais, codDepartamento, codProvincia, codDistrito] = address;\n this.setState({\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see Perfil.SelectAddress\n * @memberof Perfil.UpdateProfile\n */\n render() {\n const { role, classes } = this.props;\n\n const {\n idTipoDocumento,\n nroDocumento,\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n fechaNacimiento,\n direccion,\n celular,\n telefono,\n emailPersonal,\n facebook,\n whatsapp,\n sexo,\n email,\n autDatosPersonales,\n codPais,\n codDepartamento,\n codProvincia,\n codDistrito,\n } = this.state;\n\n const disabled = OUT_ROLES.includes(role);\n\n return (\n \n \n
\n \n {tipoDocumentoItems.map(option => (\n \n {option.label}\n \n ))}\n \n \n \n \n \n \n {\n this.setState({ fechaNacimiento: date.format('YYYY-MMM-DD') });\n }}\n margin={inputMargin}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n label=\"Estoy de acuerdo con el tratamiendo de mis datos personales\"\n />\n \n \n \n
\n );\n }\n}\n\nUpdateProfile.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n role: PropTypes.number.isRequired,\n onSave: PropTypes.func.isRequired,\n initialData: PropTypes.shape({}).isRequired,\n};\n\nconst mapDispatchToProps = {\n fetchUserData: sessionActions.fetchUserData,\n};\n\nexport default compose(\n connect(null, mapDispatchToProps),\n withStyles(styles),\n)(UpdateProfile);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { isFunction } from 'lodash';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Button,\n DialogActions,\n DialogContent,\n TextField,\n} from '@material-ui/core';\n\nimport { DialogHeader } from '../../components';\n\nimport { Auth } from '../../api';\nimport alertActions from '../../store/alerts/actions';\n\nimport styles from './styles';\n\n/**\n * Change password component\n * @class ChagePassword\n * @extends {React.PureComponent}\n * @memberof Perfil\n * @category Screens\n */\nclass ChangePassword extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n password: '',\n repassword: '',\n };\n }\n\n /**\n * change input change\n */\n handleChange = name => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n /**\n * validate and submit passwords to server\n */\n handleSubmit = (event) => {\n event.preventDefault();\n const { dispatch, onSave } = this.props;\n const { password, repassword } = this.state;\n if (password !== repassword) {\n dispatch(alertActions.setNotifications([{\n codigo: '1',\n titulo: 'OK',\n descripcion: 'Las contraseñas no coinciden',\n epoch: new Date().getTime(),\n }]));\n } else {\n Auth.at('update-external-password').post(this.state).then(() => {\n if (isFunction(onSave)) {\n onSave();\n }\n });\n }\n }\n\n /**\n * render component\n */\n render() {\n const { classes, onSave } = this.props;\n const { password, repassword } = this.state;\n\n return (\n
\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default compose(\n withStyles(styles),\n connect(null),\n)(ChangePassword);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport * as moment from 'moment';\nimport { isEmpty } from 'lodash';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Grid,\n Paper,\n Button,\n Dialog,\n FormControl,\n FormControlLabel,\n Checkbox,\n} from '@material-ui/core';\n\nimport {\n TableToolbar,\n InfoTable,\n} from '../../components';\n\nimport { ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER } from '../../constants/roles';\nimport sessionSelectors from '../../store/session/selectors';\nimport { Person } from '../../api';\n\nimport UpdateProfile from './update';\nimport ChangePassword from './change-password';\nimport styles from './styles';\n\n\nconst keysPersonalInformation = [\n 'tipoDocumento',\n 'nroDocumento',\n 'nombres',\n 'apellidos',\n 'fechaNacimiento',\n 'sexo',\n];\n\nconst keysContactInformation = [\n 'direccion',\n 'distrito',\n 'celular',\n 'telefono',\n 'email',\n 'facebook',\n 'whatsapp',\n];\n\n\nconst labels = {\n tipoDocumento: 'Tipo de Documento',\n nroDocumento: 'Número de Documento',\n nombres: 'Nombres',\n apellidos: 'Apellidos',\n fechaNacimiento: 'Fecha de Nacimiento',\n sexo: 'Sexo',\n direccion: 'Dirección',\n distrito: 'Ciudad',\n celular: 'Teléfono Móvil',\n telefono: 'Teléfono Fijo',\n email: 'Email Personal',\n facebook: 'Url del perfil de Facebook',\n whatsapp: 'Nro. Whatsapp',\n};\n\nconst getTableData = (data, keys) => (keys.map((key) => {\n let value = data[key];\n if (key.includes('fecha')) {\n value = moment(value).format('DD/MMM/YYYY');\n }\n return {\n id: key,\n label: labels[key],\n value,\n };\n}));\n\n/**\n * Groups all the class and functional components related to the Perfil screen.\n * @see {@link Profile} main component\n * @namespace Perfil\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link Perfil} screen that displays the user profile.\n * @class Profile\n * @extends {React.PureComponent}\n * @category Screens\n */\nclass Profile extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n dialogIndex: 0,\n data: {},\n personalInfo: [],\n contactInfo: [],\n };\n }\n\n /**\n * load server data when the component is mounted\n */\n componentDidMount() {\n this.loadData();\n }\n\n /**\n * fetch profile data from servers\n */\n loadData = () => {\n Person.at('get-personal-info').post({})\n .then((result) => {\n const { resultado: data } = result;\n const personalInfo = getTableData(data, keysPersonalInformation).map((info) => {\n if (info.id === 'apellidos') {\n return {\n id: 'apellidos',\n label: labels['apellidos'],\n value: `${data.apellidoPaterno} ${data.apellidoMaterno}`,\n };\n }\n return info;\n });\n const contactInfo = getTableData(data, keysContactInformation);\n this.setState({ data, personalInfo, contactInfo });\n });\n }\n\n /**\n * handle input change\n */\n handleChange = name => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n /**\n * open profile modal\n */\n handleOpen = (dialogIndex) => {\n this.setState({ dialogIndex });\n }\n\n /**\n * close profile modal\n */\n handleClose = () => {\n this.setState({ dialogIndex: 0 });\n this.loadData();\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see Perfil.UpdateProfile\n * @memberof Profile\n */\n render() {\n const { classes, role } = this.props;\n const {\n dialogIndex,\n personalInfo,\n contactInfo,\n data,\n } = this.state;\n\n return (\n \n \n \n {dialogIndex !== 1 && dialogIndex !== 2 && data.autDatosPersonales ? (\n \n \n \n \n \n

\n {/* \n \n )}\n label=\"Estoy de acuerdo con el tratamiendo de mis datos personales\"\n />\n */}\n \n \n \n {(role === ROLE_ESTUDIANTE_EXTRANJERO || role === ROLE_FREEMOVER) && (\n \n )}\n \n
\n \n ) : (\n \n {!isEmpty(data) && (\n \n )}\n \n )}\n
\n \n \n {dialogIndex === 2 && (\n \n )}\n \n
\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes\n * @property {number} role\n */\nProfile.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n role: PropTypes.number.isRequired,\n};\n\nconst withConnect = connect(state => ({\n role: sessionSelectors.roleSelector(state),\n autDatosPersonales: state.session.userInfo.autDatosPersonales,\n}));\n\nexport default compose(\n withStyles(styles),\n withConnect,\n)(Profile);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n Grid,\n Typography,\n Paper,\n} from '@material-ui/core';\n\nimport {\n LineChart,\n BarChart,\n Line,\n Bar,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from 'recharts';\n\nimport { InfoTable } from '../../components';\nimport withRole from '../../components/hoc/withRole';\nimport { ROLE_DRIC, ROLE_ASISTENTE_DRIC } from '../../constants/roles';\nimport styles from './styles';\nimport { Mobility } from '../../api';\n\n\nconst TableLabel = ({ title, subtitle }) => (\n \n {title}\n {subtitle}\n \n);\n\nTableLabel.propTypes = {\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n};\n\n/**\n * Groups all the class and functional components related to the Perfil screen.\n * @see {@link DegreeReport} main component\n * @namespace ReportesGraficos\n * @category Screens\n */\n\n/**\n * Degree summary report view.\n *\n * @class DegreeReport\n * @extends {React.Component}\n * @category Screens\n */\nclass DegreeReport extends React.Component {\n state = {\n infoTableData: [],\n graduationPromData: [],\n promData: [],\n };\n\n /**\n * On mount, fetch data from the board endpoints to display the correct data.\n */\n async componentDidMount() {\n const { resultado: { totales: totals } } = await Mobility.at('get-board-totals').post();\n const { resultado: graduationPromData } = await Mobility.at('get-board-graph1').post();\n const { resultado: promData } = await Mobility.at('get-board-graph2').post();\n graduationPromData.sort((a, b) => a.anio - b.anio);\n promData.sort((a, b) => a.anio - b.anio);\n\n const infoTableData = [{\n id: 1,\n label: ,\n value: totals.total_estudiantes,\n }, {\n id: 2,\n label: ,\n value: totals.estudiantes_movilidad,\n }, {\n id: 3,\n label: ,\n value: totals.total_egresados,\n }];\n\n\n this.setState({\n infoTableData,\n graduationPromData,\n promData,\n });\n }\n\n formatLegend = (entry) => {\n if (!entry) {\n return '';\n }\n if (entry === 'pme') {\n return entry.toUpperCase();\n }\n return entry[0].toUpperCase() + entry.slice(1);\n }\n\n render() {\n const { classes } = this.props;\n const { infoTableData, graduationPromData, promData } = this.state;\n\n return (\n \n \n \n \n PME POR PROMOCIÓN DE EGRESO\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n PME / EGRESADOS\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nDegreeReport.propTypes = {\n classes: PropTypes.shape().isRequired,\n};\n\nconst withDricRole = withRole([ROLE_DRIC, ROLE_ASISTENTE_DRIC]);\n\nexport default withDricRole(withStyles(styles)(DegreeReport));\n","export default theme => ({\n reportsContainer: {\n padding: theme.spacing.unit * 3,\n },\n titleMargin: {\n marginBottom: 20,\n },\n chartContainer: {\n transform: `translateX(${-3 * theme.spacing.unit}px)`,\n },\n});\n","import { Checkbox, FormControlLabel, IconButton, InputAdornment, Menu, MenuItem, TextField, Toolbar, Tooltip, Typography, withStyles } from '@material-ui/core';\nimport { lighten } from '@material-ui/core/styles/colorManipulator';\nimport classNames from 'classnames';\nimport { CsvBuilder } from 'filefy';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { compose } from 'redux';\n/* eslint-enable no-unused-vars */\n\nexport class MTableToolbar extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n columnsButtonAnchorEl: null,\n exportButtonAnchorEl: null\n };\n }\n\n defaultExportCsv = () => {\n const columns = this.props.columns\n .filter(columnDef => {\n return !columnDef.hidden && columnDef.field && columnDef.export !== false;\n });\n\n const dataToExport = this.props.exportAllData ? this.props.data : this.props.renderData;\n\n const data = dataToExport.map(rowData =>\n columns.map(columnDef => {\n return this.props.getFieldValue(rowData, columnDef);\n })\n );\n\n const builder = new CsvBuilder((this.props.exportFileName || this.props.title || 'data') + '.csv');\n builder\n .setDelimeter(this.props.exportDelimiter)\n .setColumns(columns.map(columnDef => columnDef.title))\n .addRows(data)\n .exportFile();\n }\n\n exportCsv = () => {\n if (this.props.exportCsv) {\n this.props.exportCsv(this.props.columns, this.props.data);\n } else {\n this.defaultExportCsv();\n }\n this.setState({ exportButtonAnchorEl: null });\n }\n\n renderSearch() {\n const localization = { ...MTableToolbar.defaultProps.localization, ...this.props.localization };\n if (this.props.search) {\n const { t } = this.props;\n return (\n this.props.onSearchChanged(event.target.value)}\n placeholder={localization.searchPlaceholder}\n color=\"inherit\"\n InputProps={{\n startAdornment: (\n \n \n \n \n \n ),\n endAdornment: (\n \n this.props.onSearchChanged(\"\")}\n >\n \n \n \n ),\n style: this.props.searchFieldStyle\n }}\n />\n );\n }\n else {\n return null;\n }\n }\n\n renderDefaultActions() {\n const localization = { ...MTableToolbar.defaultProps.localization, ...this.props.localization };\n return (\n
\n {this.props.columnsButton &&\n \n \n this.setState({ columnsButtonAnchorEl: event.currentTarget })}\n aria-label={localization.showColumnsAriaLabel}>\n\n \n \n \n this.setState({ columnsButtonAnchorEl: null })}>\n \n {localization.addRemoveColumns}\n \n {\n this.props.columns.map((col, index) => {\n return (\n \n {\n this.props.onColumnsChanged(col.tableData.id, !checked);\n }\n } />\n }\n />\n \n );\n })\n }\n \n \n }\n {this.props.exportButton &&\n \n \n this.setState({ exportButtonAnchorEl: event.currentTarget })}\n aria-label={localization.exportAriaLabel}>\n \n \n \n this.setState({ exportButtonAnchorEl: null })}\n >\n \n {localization.exportName}\n \n \n \n\n }\n a.isFreeAction)} components={this.props.components} />\n
\n );\n }\n\n renderSelectedActions() {\n return (\n \n !a.isFreeAction)} data={this.props.selectedRows} components={this.props.components} />\n \n );\n }\n\n renderActions() {\n const { classes } = this.props;\n\n return (\n
\n
\n {this.renderDefaultActions()}\n
\n
\n );\n }\n\n render() {\n const { classes } = this.props;\n const localization = { ...MTableToolbar.defaultProps.localization, ...this.props.localization };\n const title = this.props.showTextRowsSelected && this.props.selectedRows && this.props.selectedRows.length > 0 ? localization.nRowsSelected.replace('{0}', this.props.selectedRows.length) : this.props.showTitle ? this.props.title : null;\n return (\n 0 })}>\n {title &&
\n {title}\n
}\n {this.props.searchFieldAlignment === 'left' && this.renderSearch()}\n {this.props.toolbarButtonAlignment === 'left' && this.renderActions()}\n
\n {this.props.searchFieldAlignment === 'right' && this.renderSearch()}\n {this.props.toolbarButtonAlignment === 'right' && this.renderActions()}\n \n );\n }\n}\n\nMTableToolbar.defaultProps = {\n actions: [],\n columns: [],\n columnsButton: false,\n localization: {\n addRemoveColumns: 'Add or remove columns',\n nRowsSelected: '{0} row(s) selected',\n showColumnsTitle: 'Show Columns',\n showColumnsAriaLabel: 'Show Columns',\n exportTitle: 'Export',\n exportAriaLabel: 'Export',\n exportName: 'Export as CSV',\n searchTooltip: 'Search',\n searchPlaceholder: 'Search'\n },\n search: true,\n showTitle: true,\n showTextRowsSelected: true,\n toolbarButtonAlignment: 'right',\n searchFieldAlignment: 'right',\n searchText: '',\n selectedRows: [],\n title: 'No Title!'\n};\n\nMTableToolbar.propTypes = {\n actions: PropTypes.array,\n columns: PropTypes.array,\n columnsButton: PropTypes.bool,\n components: PropTypes.object.isRequired,\n getFieldValue: PropTypes.func.isRequired,\n localization: PropTypes.object.isRequired,\n onColumnsChanged: PropTypes.func.isRequired,\n onSearchChanged: PropTypes.func.isRequired,\n search: PropTypes.bool.isRequired,\n searchFieldStyle: PropTypes.object,\n searchText: PropTypes.string.isRequired,\n selectedRows: PropTypes.array,\n title: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n showTitle: PropTypes.bool.isRequired,\n showTextRowsSelected: PropTypes.bool.isRequired,\n toolbarButtonAlignment: PropTypes.string.isRequired,\n searchFieldAlignment: PropTypes.string.isRequired,\n renderData: PropTypes.array,\n data: PropTypes.array,\n exportAllData: PropTypes.bool,\n exportButton: PropTypes.bool,\n exportDelimiter: PropTypes.string,\n exportFileName: PropTypes.string,\n exportCsv: PropTypes.func,\n classes: PropTypes.object\n};\n\nexport const styles = theme => ({\n root: {\n paddingRight: theme.spacing.unit\n },\n highlight:\n theme.palette.type === 'light'\n ? {\n color: theme.palette.secondary.main,\n backgroundColor: lighten(theme.palette.secondary.light, 0.85)\n }\n : {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.secondary.dark\n },\n spacer: {\n flex: '1 1 10%'\n },\n actions: {\n color: theme.palette.text.secondary,\n },\n title: {\n flex: '0 0 auto'\n },\n searchField: {\n paddingLeft: theme.spacing.unit * 2\n }\n});\n\nexport default compose(withStyles(styles), withTranslation())(MTableToolbar);","import { Checkbox, TableCell, TableRow, IconButton, Icon, Tooltip } from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/* eslint-enable no-unused-vars */\n\n\nexport default class MTableBodyRow extends React.Component {\n renderColumns() {\n const mapArr = this.props.columns.filter(columnDef => !columnDef.hidden && !(columnDef.tableData.groupOrder > -1))\n .sort((a, b) => a.tableData.columnOrder - b.tableData.columnOrder)\n .map((columnDef, index) => {\n const value = this.props.getFieldValue(this.props.data, columnDef);\n return (\n \n );\n });\n return mapArr;\n }\n\n renderActions() {\n const actions = this.props.actions.filter(a => !a.isFreeAction);\n return (\n \n
\n \n
\n
\n );\n }\n renderSelectionColumn() {\n let checkboxProps = this.props.options.selectionProps || {};\n if(typeof checkboxProps === 'function') {\n checkboxProps = checkboxProps(this.props.data);\n }\n\n return (\n \n e.stopPropagation()}\n value={this.props.data.tableData.id.toString()}\n onChange={(event) => this.props.onRowSelected(event, this.props.path, this.props.data)}\n style={{\n paddingLeft: 9 + this.props.level * 9\n }}\n {...checkboxProps}\n />\n \n );\n }\n\n rotateIconStyle = isOpen => ({\n transform: isOpen ? 'rotate(90deg)' : 'none'\n });\n\n renderDetailPanelColumn() {\n\n const CustomIcon = ({ icon, style }) => typeof icon === \"string\" ? {icon} : React.createElement(icon, { style });\n\n if (typeof this.props.detailPanel == 'function') {\n return (\n \n {\n this.props.onToggleDetailPanel(this.props.path, this.props.detailPanel);\n event.stopPropagation();\n }}\n >\n \n \n \n );\n }\n else {\n return (\n \n
\n {this.props.detailPanel.map((panel, index) => {\n\n if (typeof panel === \"function\") {\n panel = panel(this.props.data);\n }\n\n const isOpen = (this.props.data.tableData.showDetailPanel || '').toString() === panel.render.toString();\n\n let iconButton = ;\n let animation = true;\n if (isOpen) {\n if (panel.openIcon) {\n iconButton = ;\n animation = false;\n }\n else if (panel.icon) {\n iconButton = ;\n }\n }\n else if (panel.icon) {\n iconButton = ;\n animation = false;\n }\n\n iconButton = (\n {\n this.props.onToggleDetailPanel(this.props.path, panel.render);\n event.stopPropagation();\n }}\n >\n {iconButton}\n );\n\n if (panel.tooltip) {\n iconButton = {iconButton};\n }\n\n return iconButton;\n })}\n
\n
\n );\n }\n }\n\n getStyle(index) {\n let style = {\n transition: 'all ease 300ms',\n };\n\n if (typeof this.props.options.rowStyle === \"function\") {\n style = {\n ...style,\n ...this.props.options.rowStyle(this.props.data, index)\n };\n }\n else if (this.props.options.rowStyle) {\n style = {\n ...style,\n ...this.props.options.rowStyle\n };\n }\n\n if (this.props.onRowClick) {\n style.cursor = 'pointer';\n }\n\n if (this.props.hasAnyEditingRow) {\n style.opacity = 0.2;\n }\n\n return style;\n }\n\n render() {\n const renderColumns = this.renderColumns();\n if (this.props.options.selection) {\n renderColumns.splice(0, 0, this.renderSelectionColumn());\n }\n \n if (this.props.actions && this.props.actions.filter(a => !a.isFreeAction).length > 0) {\n if (this.props.options.actionsColumnIndex === -1) {\n renderColumns.push(this.renderActions());\n } else if (this.props.options.actionsColumnIndex >= 0) {\n let endPos = 0;\n if (this.props.options.selection) {\n endPos = 1;\n }\n renderColumns.splice(this.props.options.actionsColumnIndex + endPos, 0, this.renderActions());\n }\n }\n\n if (this.props.isTreeData) {\n if (this.props.data.tableData.childRows && this.props.data.tableData.childRows.length > 0) {\n renderColumns.splice(0, 0, (\n \n {\n this.props.onTreeExpandChanged(this.props.path, this.props.data);\n event.stopPropagation();\n }}\n >\n \n \n \n ));\n }\n else {\n renderColumns.splice(0, 0, );\n }\n }\n\n // Lastly we add detail panel icon\n if (this.props.detailPanel) {\n if (this.props.options.detailPanelColumnAlignment === 'right') {\n renderColumns.push(this.renderDetailPanelColumn());\n } else {\n renderColumns.splice(0, 0, this.renderDetailPanelColumn());\n }\n }\n\n this.props.columns\n .filter(columnDef => columnDef.tableData.groupOrder > -1)\n .forEach(columnDef => {\n renderColumns.splice(0, 0, );\n });\n\n const {\n icons,\n data,\n columns,\n components,\n detailPanel,\n getFieldValue,\n isTreeData,\n onRowClick,\n onRowSelected,\n onTreeExpandChanged,\n onToggleDetailPanel,\n onEditingCanceled,\n onEditingApproved,\n options,\n hasAnyEditingRow,\n treeDataMaxLevel,\n ...rowProps } = this.props;\n\n return (\n <>\n {\n onRowClick && onRowClick(event, this.props.data,\n (panelIndex) => {\n let panel = detailPanel;\n if (Array.isArray(panel)) {\n panel = panel[panelIndex || 0].render;\n }\n\n onToggleDetailPanel(this.props.path, panel);\n });\n }}\n >\n {renderColumns}\n \n {this.props.data.tableData.childRows && this.props.data.tableData.isTreeExpanded &&\n this.props.data.tableData.childRows.map((data, index) => {\n if (data.tableData.editing) {\n return (\n { return !columnDef.hidden })}\n components={this.props.components}\n data={data}\n icons={this.props.icons}\n localization={this.props.localization}\n key={index}\n mode={data.tableData.editing}\n options={this.props.options}\n isTreeData={this.props.isTreeData}\n detailPanel={this.props.detailPanel}\n onEditingCanceled={onEditingCanceled}\n onEditingApproved={onEditingApproved}\n />\n );\n } else {\n return (\n \n );\n }\n })\n }\n {this.props.data.tableData && this.props.data.tableData.showDetailPanel &&\n \n \n {this.props.data.tableData.showDetailPanel(this.props.data)}\n \n \n }\n \n );\n }\n}\n\nMTableBodyRow.defaultProps = {\n actions: [],\n index: 0,\n data: {},\n options: {},\n path: []\n};\n\nMTableBodyRow.propTypes = {\n actions: PropTypes.array,\n icons: PropTypes.any.isRequired,\n index: PropTypes.number.isRequired,\n data: PropTypes.object.isRequired,\n detailPanel: PropTypes.oneOfType([PropTypes.func, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))]),\n hasAnyEditingRow: PropTypes.bool,\n options: PropTypes.object.isRequired,\n onRowSelected: PropTypes.func,\n path: PropTypes.arrayOf(PropTypes.number),\n treeDataMaxLevel: PropTypes.number,\n getFieldValue: PropTypes.func.isRequired,\n columns: PropTypes.array,\n onToggleDetailPanel: PropTypes.func.isRequired,\n onRowClick: PropTypes.func,\n onEditingApproved: PropTypes.func,\n onEditingCanceled: PropTypes.func,\n};\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n TableHead, TableRow, TableCell,\n TableSortLabel, Checkbox, withStyles\n} from '@material-ui/core';\n/* eslint-enable no-unused-vars */\n\nexport class MTableHeader extends React.Component {\n renderHeader() {\n const mapArr = this.props.columns.filter(columnDef => !columnDef.hidden && !(columnDef.tableData.groupOrder > -1))\n .sort((a, b) => a.tableData.columnOrder - b.tableData.columnOrder)\n .map((columnDef, index) => {\n let content = columnDef.title;\n\n if (columnDef.sorting !== false && this.props.sorting) {\n content = (\n {\n const orderDirection = columnDef.tableData.id !== this.props.orderBy ? 'asc' : this.props.orderDirection === 'asc' ? 'desc' : 'asc';\n this.props.onOrderChange(columnDef.tableData.id, orderDirection);\n }}\n >\n {content}\n \n );\n }\n\n return (\n \n {content}\n \n );\n });\n return mapArr;\n }\n\n renderActionsHeader() {\n const localization = { ...MTableHeader.defaultProps.localization, ...this.props.localization };\n return (\n \n {localization.actions}\n \n );\n }\n renderSelectionHeader() {\n return (\n \n {this.props.showSelectAllCheckbox &&\n 0 && this.props.selectedCount < this.props.dataCount}\n checked={this.props.dataCount > 0 && this.props.selectedCount === this.props.dataCount}\n onChange={(event, checked) => this.props.onAllSelected && this.props.onAllSelected(checked)}\n />\n }\n \n );\n }\n\n renderDetailPanelColumnCell() {\n return ;\n }\n\n render() {\n const headers = this.renderHeader();\n if (this.props.hasSelection) {\n headers.splice(0, 0, this.renderSelectionHeader());\n }\n\n if (this.props.actionsHeaderIndex >= 0) {\n let endPos = 0;\n if (this.props.hasSelection) {\n endPos = 1;\n }\n headers.splice(this.props.actionsHeaderIndex + endPos, 0, this.renderActionsHeader());\n } else if (this.props.actionsHeaderIndex === -1) {\n headers.push(this.renderActionsHeader());\n }\n\n if (this.props.hasDetailPanel) {\n if (this.props.detailPanelColumnAlignment === 'right') {\n headers.push(this.renderDetailPanelColumnCell());\n } else {\n headers.splice(0, 0, this.renderDetailPanelColumnCell());\n }\n }\n\n if (this.props.isTreeData > 0) {\n headers.splice(0, 0,\n \n );\n }\n\n this.props.columns\n .filter(columnDef => columnDef.tableData.groupOrder > -1)\n .forEach(columnDef => {\n headers.splice(0, 0, );\n });\n\n return (\n \n \n {headers}\n \n \n );\n }\n}\n\nMTableHeader.defaultProps = {\n dataCount: 0,\n hasSelection: false,\n headerStyle: {},\n selectedCount: 0,\n sorting: true,\n localization: {\n actions: 'Actions'\n },\n orderBy: undefined,\n orderDirection: 'asc',\n actionsHeaderIndex: 0,\n detailPanelColumnAlignment: \"left\"\n};\n\nMTableHeader.propTypes = {\n columns: PropTypes.array.isRequired,\n dataCount: PropTypes.number,\n hasDetailPanel: PropTypes.bool.isRequired,\n detailPanelColumnAlignment: PropTypes.string,\n hasSelection: PropTypes.bool,\n headerStyle: PropTypes.object,\n localization: PropTypes.object,\n selectedCount: PropTypes.number,\n sorting: PropTypes.bool,\n onAllSelected: PropTypes.func,\n onOrderChange: PropTypes.func,\n orderBy: PropTypes.number,\n orderDirection: PropTypes.string,\n actionsHeaderIndex: PropTypes.number,\n showActionsColumn: PropTypes.bool,\n showSelectAllCheckbox: PropTypes.bool,\n};\n\n\nexport const styles = theme => ({\n header: {\n position: 'sticky',\n top: 0,\n zIndex: 10,\n backgroundColor: theme.palette.background.paper, // Change according to theme,\n }\n});\n\nexport default withStyles(styles)(MTableHeader);\n","export default theme => ({\n actionsContainer: {\n justifyContent: 'flex-end',\n display: 'flex',\n },\n button: {\n margin: theme.spacing.unit,\n },\n leftIcon: {\n marginRight: theme.spacing.unit,\n },\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n formControl: {\n marginTop: 0,\n marginRight: theme.spacing.unit,\n },\n inputField: {\n padding: 2 * theme.spacing.unit - 2,\n width: 120,\n },\n});\n","\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport { isEmpty } from 'lodash';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport {\n DialogActions,\n DialogContent,\n Button,\n Grid,\n TextField,\n} from '@material-ui/core';\nimport SaveIcon from '@material-ui/icons/SaveOutlined';\nimport { DateTimePicker, ActionsTable } from '../../../../components';\nimport CustomToolbar from '../../../../components/custom-toolbar';\nimport CustomBodyRow from '../../../../components/custom-body-row';\nimport CustomHeader from '../../../../components/custom-select-actions-header';\nimport { Calls, Agreements } from '../../../../api';\nimport store from '../../../../store';\nimport alertsActions from '../../../../store/alerts/actions';\nimport styles from './styles';\n\n/**\n * Dialog form to add and edit agreements\n *\n * @class AgreementsManagementForm\n * @extends {React.Component}\n * @category Screens\n */\nclass AgreementsManagementForm extends React.Component {\n state = {\n agreements: null,\n selectedAgreements: [],\n };\n\n columns = [\n { title: 'País / Región', field: 'pais', editable: 'never' },\n { title: 'Institución', field: 'institucion', editable: 'never' },\n { title: 'Tipo de Beca', field: 'beca', editable: 'never' },\n {\n title: 'Fecha de Inicio de Semestre',\n field: 'fechaInicioSemestre',\n render: rowData => (rowData.fechaInicioSemestre ? moment(rowData.fechaInicioSemestre).format('DD/MM/YYYY') : ''),\n editComponent: (props) => {\n const initialDate = props.value ? new Date(props.value) : new Date();\n return {props.onChange(date.toDate())}} />;\n },\n },\n {\n title: 'Vacantes',\n field: 'vacantes',\n editComponent: (props) => {\n return (\n {event.persist(); props.onChange(event.target.value)}}\n />\n );\n },\n },\n { title: 'Idioma', field: 'idioma', editable: 'never' },\n ];\n\n /**\n * handle event when the component is mounted\n */\n componentDidMount() {\n this.fetchData();\n }\n\n /**\n * Helper method to fetch data.\n */\n fetchData = async () => {\n const { call: { idConvocatoria } } = this.props;\n\n const { resultado } = await Agreements.at('get-agreements-by-call-type').post({\n idConvocatoria,\n });\n\n const agreements = resultado.map((agreement) => {\n agreement.tableData = {\n checked: agreement.estado,\n };\n return agreement;\n });\n const selectedAgreements = agreements.filter(a => a.tableData.checked);\n this.setState({\n agreements,\n selectedAgreements,\n });\n }\n\n /**\n * Updates the current selected agreement.\n */\n onSelectionChange = (rows) => {\n this.setState({\n selectedAgreements: rows,\n });\n }\n\n /**\n * Helper method to update an agreement.\n */\n updateAgreement = (newData, oldData) => {\n return new Promise((resolve, reject) => {\n const { agreements } = this.state;\n const index = agreements.indexOf(oldData);\n newData.vacantes = parseInt(newData.vacantes);\n if (newData.vacantes < 0) {\n store.dispatch(alertsActions.setNotifications(\n [{\n titulo: 'Error',\n descripcion: 'No se puede ingresar un número de vacantes negativo',\n epoch: new Date().getTime(),\n }],\n ));\n return resolve();\n }\n newData.tableData = {\n checked: oldData.tableData.checked,\n };\n agreements[index] = newData;\n this.setState({ agreements }, () => {\n resolve();\n });\n });\n }\n\n /**\n * On SAVE, insert selected agreements into the current call.\n */\n insertAgreements = async () => {\n const { onClose, call: { idConvocatoria } } = this.props;\n const { selectedAgreements, agreements } = this.state;\n if (!isEmpty(selectedAgreements)) {\n const convenios = selectedAgreements.map((agreement) => {\n // we need to obtain the edited value from the agreements variable\n const agreementData = agreements\n .filter(a => (\n a.idConvenioTipoBeca === agreement.idConvenioTipoBeca\n && a.idConvenio === agreement.idConvenio\n ))[0];\n return {\n idConvenioTipoBeca: agreementData.idConvenioTipoBeca,\n vacantes: agreementData.vacantes,\n fecha: agreementData.fechaInicioSemestre,\n };\n });\n await Calls.at('insert-agreements-into-call').post({\n idConvocatoria,\n convenios,\n });\n onClose({ reload: true });\n } else {\n onClose();\n }\n }\n\n renderTitle = () => {\n const { call, classes } = this.props;\n return (\n \n \n \n \n \n \n );\n }\n\n /**\n * Render the component.\n */\n render() {\n const { agreements } = this.state;\n\n return (\n \n \n {\n agreements && (\n \n )\n }\n \n \n \n \n Guardar\n \n \n \n );\n }\n}\n\nAgreementsManagementForm.propTypes = {\n classes: PropTypes.shape().isRequired,\n call: PropTypes.shape().isRequired,\n onClose: PropTypes.func,\n};\n\nAgreementsManagementForm.defaultProps = {\n onClose: () => null,\n};\n\nexport default withStyles(styles)(AgreementsManagementForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport {\n Grid,\n Paper,\n Button,\n Dialog,\n TextField,\n} from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nimport { ActionsTable, TableToolbar, DialogHeader, ConfirmationDialog } from '../../../../components';\nimport { Agreements } from '../../../../api';\nimport AgreementsManagementForm from './agreements-management-form';\nimport styles from './styles';\n\n/**\n * Component to display the list of agreements.\n *\n * @class CommonAgreementsManagement\n * @extends {React.Component}\n * @category Screens\n */\nclass AgreementsManagement extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n agreements: null,\n selectedAgreement: null,\n openAgreementDialog: false,\n openConfirmation: false,\n };\n\n this.columns = [\n { title: 'País / Región', field: 'pais' },\n { title: 'Institución', field: 'institucion' },\n { title: 'Tipo de Beca', field: 'beca' },\n { title: 'Vacantes Ofertadas', field: 'vacantes' },\n { title: 'Vacantes Disponibles', field: 'vacantesDisponibles' },\n { title: 'Idioma', field: 'idioma' },\n ];\n }\n\n /**\n * Life cycle method.\n */\n componentDidMount() {\n this.fetchData();\n }\n\n /**\n * Life cycle method.\n * @param {Object} prevProps prevProps the component had.\n */\n componentDidUpdate(prevProps) {\n const { call: { idConvocatoria: prevIdConvocatoria } } = prevProps;\n const { call: { idConvocatoria: currentIdConvocatoria } } = this.props;\n if (currentIdConvocatoria !== prevIdConvocatoria) {\n this.fetchData();\n }\n }\n\n /**\n * Helper method to fetch data.\n */\n fetchData = async () => {\n const { call } = this.props;\n const { idConvocatoria } = call;\n const payload = await Agreements.at('get-agreements-by-call-bo').post({\n idConvocatoria,\n });\n const { resultado } = payload;\n const agreements = resultado.map((agreement) => {\n agreement.id = agreement.idConvenioConvocatoria;\n return agreement;\n });\n this.setState({\n agreements,\n selectedAgreement: null,\n });\n }\n\n /**\n * Callback to execute when a table row is clicked.\n */\n onClickRow = (event, row) => {\n this.setState({\n selectedAgreement: row,\n });\n }\n\n /**\n * Show dialog to edit/add process.\n */\n showDialog = name => () => {\n this.setState({\n [name]: true,\n });\n }\n\n /**\n * Method to perform so an agreement can be deleted.\n */\n deleteAgreement = async () => {\n const { selectedAgreement: { idConvenioConvocatoria } } = this.state;\n await Agreements.at('delete-agreement-from-call').post({\n idConvenioConvocatoria,\n });\n this.fetchData();\n }\n\n /**\n * Handle call modal close event\n */\n handleModalClose = ({ reload = false } = {}) => {\n this.setState({\n openAgreementDialog: false,\n }, () => {\n if (reload) {\n // on create or update, retrieve data again\n this.fetchData();\n }\n });\n }\n\n renderTitle = () => {\n const { call, classes } = this.props;\n return (\n \n \n \n \n \n \n \n \n \n );\n }\n\n render() {\n const { classes, call } = this.props;\n const { agreements, selectedAgreement, openAgreementDialog, openConfirmation } = this.state;\n\n return (\n \n \n {\n agreements && (\n \n )\n }\n
\n {\n selectedAgreement && (\n this.setState({ openConfirmation: true })}\n >\n Eliminar\n \n \n )\n }\n \n Agregar\n \n \n
\n
\n\n {\n \n \n \n \n }\n this.setState({ openConfirmation: false })} />\n
\n );\n }\n}\n\nAgreementsManagement.propTypes = {\n classes: PropTypes.shape().isRequired,\n call: PropTypes.shape().isRequired,\n};\n\nexport default compose(\n withStyles(styles),\n)(AgreementsManagement);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport { isEmpty } from 'lodash';\nimport { withFormik } from 'formik';\nimport {\n DialogActions,\n DialogContent,\n FormControl,\n InputLabel,\n Input,\n Button,\n Select,\n MenuItem,\n} from '@material-ui/core';\nimport SaveIcon from '@material-ui/icons/SaveOutlined';\nimport { DateTimePicker, DialogHeader } from '../../components';\nimport { Mobility, Calls } from '../../api';\n\n/**\n * Dialog form to add and edit calls. It is used by the components listed bellow.\n * @see CallsManagement\n *\n * @class CallForm\n * @extends {React.Component}\n * @memberof GestionConvocatorias\n * @category Screens\n */\nclass CallForm extends React.Component {\n state = {\n mobilityTypes: [],\n callStates: [],\n };\n\n submodalities = [\n {\n id: 0,\n nombre: 'Presencial',\n },\n {\n id: 1,\n nombre: 'Virtual',\n },\n ];\n\n /**\n * handle event when the component is mounted\n */\n async componentDidMount() {\n const { setFieldValue, call } = this.props;\n\n const { resultado: mobilityTypes } = await Mobility.at('get-mobility-types').post();\n const { resultado: callStates } = await Calls.at('get-call-states').post();\n this.setState({\n mobilityTypes,\n callStates,\n }, () => {\n if (isEmpty(call)) {\n setFieldValue('type', mobilityTypes[0].id);\n setFieldValue('state', callStates[0].id);\n } else {\n // look for state and type names since their API does not return the id\n const callType = mobilityTypes.filter(type => type.nombre.toUpperCase() === call.tipo.toUpperCase());\n const callState = callStates.filter(state => state.nombre.toUpperCase() === call.estado.toUpperCase());\n if (callType && callType[0]) {\n setFieldValue('type', callType[0].id);\n }\n if (callState && callState[0]) {\n setFieldValue('state', callState[0].id);\n }\n }\n });\n }\n\n /**\n * Render the component.\n */\n render() {\n const {\n values,\n handleChange,\n handleBlur,\n isSubmitting,\n handleSubmit,\n setFieldValue,\n onClose,\n } = this.props;\n\n const { mobilityTypes, callStates } = this.state;\n\n return (\n
\n \n \n \n Convocatoria\n \n \n\n \n Tipo\n }\n value={values.type}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={isSubmitting}\n >\n {\n mobilityTypes.map(entry => (\n \n {entry.nombre}\n \n ))\n }\n\n \n \n\n \n {\n setFieldValue('startDate', date.format('YYYY-MM-DD'));\n }}\n disabled={isSubmitting}\n />\n \n\n \n {\n setFieldValue('endDate', date.format('YYYY-MM-DD'));\n }}\n disabled={isSubmitting}\n />\n \n\n \n {\n setFieldValue('deliberationDate', date.format('YYYY-MM-DD'));\n }}\n disabled={isSubmitting}\n />\n \n\n \n Estado\n }\n value={values.state}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={isSubmitting}\n >\n {\n callStates.map(entry => (\n \n {entry.nombre}\n \n ))\n }\n \n \n \n Submodalidad\n }\n value={values.submodalidad}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={isSubmitting}\n >\n {\n this.submodalities.map(entry => (\n \n {entry.nombre}\n \n ))\n }\n \n \n \n\n \n \n \n Guardar\n \n \n \n );\n }\n}\n\nconst mapPropsToValues = (props) => {\n const { call } = props;\n let submodalidad = '';\n if (call) {\n if (call.modalidad === 'V') {\n submodalidad = 1;\n } else {\n submodalidad = 0;\n }\n }\n return {\n id: call ? call.idConvocatoria : null,\n name: call ? call.nombre : '',\n type: call ? call.tipo : '',\n startDate: call && moment(call.fechaInicio).isValid() ? moment(call.fechaInicio) : moment(),\n endDate: call && moment(call.fechaFin).isValid() ? moment(call.fechaFin) : moment(),\n deliberationDate: call && moment(call.fechaDeliberacion).isValid() ? moment(call.fechaDeliberacion) : moment(),\n state: call ? call.estado : '',\n submodalidad,\n };\n};\n\n/**\n * handle submit form event\n * @param {Object} form data as an object\n * @param {Object} object containing setup attributes\n * @memberof GestionConvocatorias.CallForm\n */\nconst handleSubmit = async (values, { props, setSubmitting }) => {\n const { onClose } = props;\n setSubmitting(true);\n const body = {\n nombre: values.name,\n tipo: values.type,\n fechaInicio: values.startDate,\n fechaFin: values.endDate,\n fechaDeliberacion: values.deliberationDate,\n estado: values.state,\n subModalidad: values.submodalidad === 0 ? 'P' : 'V',\n };\n\n if (values.id !== null) {\n // is update\n body.idConvocatoria = values.id;\n await Calls.at('update-call').post(body);\n } else {\n // is create\n await Calls.at('insert-call').post(body);\n }\n setSubmitting(false);\n onClose({ reload: true });\n};\n\n/**\n * propTypes\n * @memberof GestionConvocatorias.CallForm\n * @property {object} values Initial data for the form.\n * @property {function} handleChange On input change, update the value on the state.\n * @property {function} handleBlur On input blur, update the value on the state.\n * @property {boolean} isSubmitting Whether the form is being submitted.\n * @property {function} handleSubmit Action to perform on submit.\n * @property {function} setFieldValue Changes date values.\n * @property {object} call Data of a call.\n * @property {function} onClose\n */\nCallForm.propTypes = {\n values: PropTypes.shape().isRequired,\n handleChange: PropTypes.func.isRequired,\n handleBlur: PropTypes.func.isRequired,\n isSubmitting: PropTypes.bool.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n call: PropTypes.shape(),\n onClose: PropTypes.func,\n};\n\nCallForm.defaultProps = {\n call: null,\n onClose: () => {},\n};\n\nconst withFormikComponent = withFormik({\n displayName: 'CallForm',\n mapPropsToValues,\n handleSubmit,\n});\n\nexport default withFormikComponent(CallForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { isEmpty } from 'lodash';\nimport { Grid, Paper, Button, Dialog } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddIcon from '@material-ui/icons/Add';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport EditIcon from '@material-ui/icons/Edit';\nimport * as moment from 'moment';\nimport { Calls } from '../../api';\nimport { ActionsTable, TableToolbar, ConfirmationDialog } from '../../components';\nimport withRole from '../../components/hoc/withRole';\nimport { AgreementsManagement } from '../common/student';\nimport { ROLE_DRIC, ROLE_ASISTENTE_DRIC } from '../../constants/roles';\nimport styles from './styles';\nimport CallForm from './call-form';\n\n/**\n * Groups all the class and functional components related to the GestionConvocatorias screen.\n * @see {@link CallsManagement} main component\n * @namespace GestionConvocatorias\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link GestionConvocatorias} that displays the list of calls.\n *\n * @class CallsManagement\n * @extends {React.Component}\n * @category Screens\n */\nclass CallsManagement extends React.Component {\n constructor(props) {\n super(props);\n /**\n * We need two calls in state to handle selection and edition\n * separately.\n */\n this.state = {\n calls: null,\n selectedCall: null,\n detailCall: null,\n openCallDialog: false,\n openConfirmation: false,\n };\n\n this.columns = [\n { title: 'Periodo', field: 'nombre' },\n {\n title: 'Fecha Inicio',\n field: 'fechaInicio',\n render: rowData => moment(rowData.fechaInicio).format('DD/MM/YYYY'),\n },\n {\n title: 'Fecha Término',\n field: 'fechaFin',\n render: rowData => moment(rowData.fechaFin).format('DD/MM/YYYY'),\n },\n { title: 'Tipo', field: 'tipo' },\n { title: 'Estado', field: 'estado' },\n {\n title: 'SubModalidad',\n field: 'modalidad',\n render: rowData => (rowData.modalidad === 'P' ? 'Presencial' : 'Virtual'),\n },\n ];\n\n this.actions = [\n {\n tooltip: 'Editar',\n icon: EditIcon,\n onClick: this.editCall,\n },\n ];\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n /**\n * Helper method to fetch data from server to fill up the table.\n */\n fetchData = async () => {\n const payload = await Calls.at('get-calls').post();\n const { resultado } = payload;\n const calls = resultado.map((call) => {\n call.id = call.idConvocatoria;\n return call;\n });\n this.setState({\n calls,\n selectedCall: null,\n detailCall: null,\n });\n }\n\n /**\n * Keep track of the current selected call.\n */\n onClickRow = (event, row) => {\n this.setState({\n selectedCall: row,\n });\n }\n\n /**\n * Display dialog so edition can be made.\n */\n showDialog = name => () => {\n this.setState({\n [name]: true,\n });\n }\n\n /**\n * Callback function to perform on edit process.\n */\n editCall = (event, call) => {\n this.setState({\n detailCall: call,\n openCallDialog: true,\n });\n }\n\n /**\n * Callback function to perform on delete process.\n */\n deleteCall = async () => {\n const { selectedCall: { idConvocatoria } } = this.state;\n await Calls.at('delete-call').post({\n idConvocatoria,\n });\n this.fetchData();\n }\n\n /**\n * Handle edit modal close event\n */\n handleCallClose = ({ reload = false } = {}) => {\n this.setState({\n openCallDialog: false,\n detailCall: null,\n }, () => {\n if (reload) {\n // on create or update, retrieve data again\n this.fetchData();\n }\n });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see CommonAgreementsManagement\n * @see GestionConvocatorias.CallForm\n * @memberof CallsManagement\n */\n render() {\n const { classes } = this.props;\n const {\n calls,\n selectedCall,\n detailCall,\n openCallDialog,\n openConfirmation,\n } = this.state;\n\n return (\n \n \n \n {\n calls && (\n }\n onSelect={this.onClickRow}\n selectedRow={selectedCall}\n options={{\n showTitle: true,\n canSelect: true,\n canSearch: true,\n }}\n materialTableOptions={{\n exportFileName: 'Convocatorias',\n }}\n />\n )\n }\n
\n {\n selectedCall && (\n this.setState({ openConfirmation: true })}\n >\n Eliminar\n \n \n )\n }\n \n Agregar\n \n \n
\n
\n
\n\n {\n !(isEmpty(selectedCall)) && \n }\n\n {\n \n \n \n }\n this.setState({ openConfirmation: false })} />\n
\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n */\nCallsManagement.propTypes = {\n classes: PropTypes.shape().isRequired,\n};\n\nconst withDricRole = withRole([ROLE_DRIC, ROLE_ASISTENTE_DRIC]);\n\nexport default compose(\n withDricRole,\n withStyles(styles),\n)(CallsManagement);\n","export default theme => ({\n actionsContainer: {\n justifyContent: 'flex-end',\n display: 'flex',\n },\n button: {\n margin: theme.spacing.unit,\n },\n leftIcon: {\n marginRight: theme.spacing.unit,\n },\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n});\n","export default theme => ({\n actionsContainer: {\n justifyContent: 'flex-end',\n display: 'flex',\n },\n button: {\n margin: theme.spacing.unit,\n },\n leftIcon: {\n marginRight: theme.spacing.unit,\n },\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n tabsRoot: {\n borderBottom: '1px solid #e8e8e8',\n marginBottom: theme.spacing.unit * 2,\n },\n bottomTabsRoot: {\n marginTop: theme.spacing.unit * 2,\n },\n tabRoot: {\n color: theme.palette.primary.light,\n '&:hover': {\n color: theme.palette.primary.main,\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n },\n },\n tabLabel: {\n padding: '6px 32px',\n },\n selectedTab: {\n fontWeight: 'bold',\n '&:hover': {\n backgroundColor: theme.palette.background.paper,\n },\n },\n shrink: {\n transform: 'translate(0, 1.5px) scale(0.75)',\n transformOrigin: 'top left',\n },\n subtitle: {\n fontWeight: 'bold',\n margin: `${theme.spacing.unit}px 0 ${-0.5 * theme.spacing.unit}px`,\n },\n submitButton: {\n float: 'right',\n marginTop: theme.spacing.unit * 3,\n },\n universityLogo: {\n height: 100,\n width: 100,\n },\n universityCardContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n universityName: {\n padding: '0 16px',\n },\n tableTitle: {\n marginLeft: -3 * theme.spacing.unit,\n },\n noMargin: {\n margin: 0,\n },\n editInput: {\n fontSize: 13,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n MenuItem,\n TextField,\n withStyles,\n} from '@material-ui/core';\nimport { TableToolbar, ActionsTable, UploadField } from '../../components';\nimport MultiSelectField from '../../components/multiselect-field';\nimport { Agreements } from '../../api';\nimport styles from './styles';\nimport store from '../../store';\nimport alertsActions from '../../store/alerts/actions';\n\nconst processData = tasks => (\n tasks.map((task) => {\n const tipo = `${task.tipo}`.split(',').length > 0 ? parseInt(`${task.tipo}`.split(',')[0]) : parseInt(task.tipo);\n const tiposBeca = task.tiposBeca.split(',').map(b => parseInt(b));\n return {\n id: task.id,\n item: task.item,\n observaciones: task.observaciones,\n tarea: task.tarea,\n tipo: task.tipoItem,\n tiposBeca,\n };\n })\n);\n\nconst validateParams = (newData) => {\n if (newData.tipo === null || newData.tipo === undefined) {\n store.dispatch(alertsActions.setNotifications(\n [{\n titulo: 'Error',\n descripcion: 'Debe seleccionar una opción en Tipo Item',\n epoch: new Date().getTime(),\n }],\n ));\n return false;\n }\n\n if (!Array.isArray(newData.tiposBeca) || (Array.isArray(newData.tiposBeca) && newData.tiposBeca.size === 0)) {\n store.dispatch(alertsActions.setNotifications(\n [{\n titulo: 'Error',\n descripcion: 'Debe seleccionar almenos una opción en Tipo Beca',\n epoch: new Date().getTime(),\n }],\n ));\n return false;\n }\n\n return true;\n};\n\n/**\n * Dialog form to add and edit calls. It is used by the components listed bellow.\n * @see GestionConvenios.AgreementForm\n *\n * @class AdditionalTasksManagement\n * @extends {React.Component}\n * @memberof GestionConvenios\n * @category Screens\n */\nclass AdditionalTasks extends React.Component {\n constructor(props) {\n super(props);\n\n const columns = [\n { title: 'Tarea', field: 'tarea' },\n { title: 'Observaciones', field: 'observaciones' },\n {\n title: 'Tipo Item',\n field: 'tipo',\n render: (rowData) => {\n return props.itemTypes.find(type => type.id === rowData.tipo).nombre;\n },\n editComponent: fieldProps => (\n \n {props.itemTypes.map(item => (\n \n {item.nombre}\n \n ))}\n \n ),\n },\n {\n title: 'Tipos Beca',\n field: 'tiposBeca',\n render: (rowData) => {\n const { scholarships } = props;\n if (!Array.isArray(rowData.tiposBeca)) {\n return rowData.tiposBeca || '';\n }\n const selected = scholarships\n .filter(s => rowData.tiposBeca.indexOf(s.id) > -1)\n .map(s => s.nombre);\n return selected.join(', ');\n },\n editComponent: fieldProps => (\n fieldProps.onChange(event.target.value)}\n items={props.scholarships}\n classes={{\n root: props.classes.noMargin,\n input: props.classes.editInput,\n }}\n />\n ),\n },\n { title: 'Item', field: 'item' },\n {\n title: 'Item',\n field: 'file',\n hidden: true,\n editComponent: fieldProps => (\n fieldProps.onChange(data)}\n variant=\"contained\"\n size=\"small\"\n component=\"label\"\n />\n ),\n },\n ];\n\n this.state = {\n data: processData(props.tasks),\n columns,\n };\n }\n\n handleItemTypeChange = fieldProps => (event) => {\n fieldProps.onChange(event.target.value);\n const { columns: prevColumns } = this.state;\n const newColumns = prevColumns;\n if (event.target.value === 2) {\n // is download\n newColumns[4].hidden = true;\n newColumns[5].hidden = false;\n } else {\n newColumns[4].hidden = false;\n newColumns[5].hidden = true;\n }\n // we force update to avoid copying over the state and loose reference to the functions.\n this.setState({\n columns: newColumns,\n }, () => this.forceUpdate());\n }\n\n updateTask = async (newData) => {\n const { idConvenio } = this.props;\n let item = '';\n let nombreArchivo = '';\n if (newData.tipo === 2) {\n // is download\n const { file } = newData;\n ({ nombreArchivo } = file);\n ({ archivo: item } = file);\n } else {\n ({ item } = newData);\n }\n\n delete newData.file;\n\n if (!validateParams(newData)) {\n return new Promise((resolve, reject) => {\n resolve();\n });\n }\n\n await Agreements.at('update-additional-task').post({\n idTareaAdicional: newData.id,\n tarea: newData.tarea || '',\n observacion: newData.observaciones || '',\n idTipoItem: newData.tipo,\n idsTiposBeca: newData.tiposBeca.join(','),\n item,\n nombreArchivo,\n });\n\n const { resultado } = await Agreements.at('get-agreement').post({ idConvenio });\n\n return new Promise((resolve, reject) => {\n this.setState({ data: processData(resultado.tareasAdicionales) }, () => resolve());\n });\n }\n\n deleteTask = async (oldData) => {\n const { idConvenio } = this.props;\n await Agreements.at('delete-additional-task').post({\n idTareaAdicional: oldData.id,\n });\n\n const { resultado } = await Agreements.at('get-agreement').post({ idConvenio });\n\n return new Promise((resolve, reject) => {\n this.setState({ data: processData(resultado.tareasAdicionales) }, () => resolve());\n });\n }\n\n addTask = async (newData) => {\n const { idConvenio, tipoMovilidad } = this.props;\n let nombreArchivo = '';\n let item = '';\n if (newData.tipo === 2) {\n // is download\n const { file } = newData;\n ({ nombreArchivo } = file);\n ({ archivo: item } = file);\n } else {\n ({ item } = newData);\n }\n delete newData.file;\n\n if (!validateParams(newData)) {\n return new Promise((resolve, reject) => {\n resolve();\n });\n }\n\n await Agreements.at('insert-additional-task').post({\n idConvenio,\n tipoMovilidad,\n tarea: newData.tarea || '',\n observacion: newData.observaciones || '',\n idTipoItem: newData.tipo,\n idsTiposBeca: Array.isArray(newData.tiposBeca) ? newData.tiposBeca.join(',') : '',\n item,\n nombreArchivo,\n });\n\n const { resultado } = await Agreements.at('get-agreement').post({ idConvenio });\n\n return new Promise((resolve, reject) => {\n this.setState({ data: processData(resultado.tareasAdicionales) }, () => resolve());\n });\n }\n\n render() {\n const { data, columns } = this.state;\n\n return (\n }\n options={{\n showTitle: true,\n canEditRow: true,\n }}\n editable={{\n onRowUpdate: this.updateTask,\n onRowAdd: this.addTask,\n onRowDelete: this.deleteTask,\n }}\n materialTableOptions={{\n exportFileName: 'Tareas_Adicionales',\n }}\n />\n );\n }\n}\n\nAdditionalTasks.propTypes = {\n classes: PropTypes.shape().isRequired,\n tasks: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n scholarships: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n itemTypes: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n idConvenio: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n tipoMovilidad: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n};\n\nexport default withStyles(styles)(AdditionalTasks);\n","/* eslint-disable import/prefer-default-export */\nexport const arrayToExcel = (() => {\n // STEP 2: Append Table data to Spreadsheet XML Template.\n const createXMLTable = (table, fileName) => {\n const xmlTable = `\n \n \n \n \n \n \n ${table}\n
\n
\n
\n `;\n return xmlTable;\n };\n\n // STEP 3: Create fileURL from XML template for download\n const createFileUrl = (xmlTable) => {\n const tableBlob = new Blob([xmlTable], {\n type: 'application/vnd.ms-excel;base64,',\n });\n const downloadURL = URL.createObjectURL(tableBlob);\n return downloadURL;\n };\n\n // STEP 5: Create download link on button click\n const downloadFile = (downloadURL, fileName) => {\n const downloadLink = document.createElement('a');\n document.body.appendChild(downloadLink);\n downloadLink.download = fileName;\n downloadLink.href = downloadURL;\n downloadLink.click();\n };\n\n // STEP 1: Convert Array to HTML Table.\n return {\n convertArrayToTable: async (apiArray, fileName) => {\n // use keys from the first array object to form table column headers\n const tableHeaders = `${Object.keys(apiArray[0])\n .map((key) => `${key}`)\n .join('')}`;\n // now loop through all array objects to form table rows\n const tableRows = apiArray\n .map((obj) => [\n `${Object.keys(obj)\n .map(\n (key) =>\n `${\n obj[key] === null || obj[key] === '' ? '' : obj[key]\n }`,\n )\n .join('')}`,\n ])\n .join('');\n\n const table = `${tableHeaders}${tableRows}`;\n const xmlTable = createXMLTable(table, fileName).trim();\n const downloadURL = createFileUrl(xmlTable);\n downloadFile(downloadURL, fileName);\n },\n };\n})();\n","import React from 'react';\nimport {\n Grid,\n Dialog,\n DialogContent,\n DialogActions,\n Checkbox,\n Button,\n Select,\n MenuItem,\n IconButton,\n} from '@material-ui/core';\nimport UploadIcon from '@material-ui/icons/CloudUploadRounded';\nimport DeleteIcon from '@material-ui/icons/DeleteRounded';\nimport SendIcon from '@material-ui/icons/SendRounded';\nimport { CsvBuilder } from 'filefy';\nimport { ActionsTable, TableToolbar, ConfirmationDialog } from '../../components';\nimport fileToBase64 from '../../utils/fileToBase64';\nimport { arrayToExcel } from '../../utils/arrayToExcel';\nimport { Agreements } from '../../api';\nimport { getFieldValue } from '../../utils';\n\nexport default function CoursesSection(props) {\n const { openDialog, onClose, idConvenio, processType } = props;\n const [courses, setCourses] = React.useState([]);\n const [isSubmitting, setSubmitting] = React.useState(false);\n const [openConfirmation, setOpenConfirmation] = React.useState(false);\n const [selectedAction, setSelectedAction] = React.useState(0);\n\n const actions = [\n {\n value: 0,\n label: \"Desactivar todos los cursos\",\n },\n {\n value: 1,\n label: \"Activar todos los cursos\",\n },\n ];\n\n const fetchCourses = async () => {\n setSubmitting(true);\n try {\n const { resultado } = await Agreements.at('get-courses-by-agreement').post({\n idConvenio,\n idTipo: processType,\n });\n setCourses(resultado);\n } catch (error) {} finally {\n setSubmitting(false);\n }\n };\n\n const handleChange = async (event) => {\n setSubmitting(true);\n try {\n const file = event.target.files[0];\n const base64 = await fileToBase64(file);\n const base64Only = base64.split(',')[1];\n await Agreements.at('insert-courses-excel-by-agreement').post({\n idConvenio,\n nombre: file.name,\n archivo: base64Only,\n idTipo: processType,\n });\n fetchCourses();\n } catch (error) {\n // TODO: alert users about wrong base64 conversion\n } finally {\n setSubmitting(false);\n }\n };\n\n const handleInsertCourse = async (newData) => {\n setSubmitting(true);\n try {\n await Agreements.at('insert-course-by-agreement').post({\n idConvenio,\n idTipo: processType,\n ...newData,\n });\n fetchCourses();\n } catch (error) {} finally {\n setSubmitting(false);\n }\n }\n\n const handleUpdateCourse = async (newData) => {\n setSubmitting(true);\n try {\n await Agreements.at('update-course-by-agreement').post({\n idConvenio,\n ...newData,\n });\n fetchCourses();\n } catch (error) {} finally {\n setSubmitting(false);\n }\n };\n\n const handleDeleteCourse = async (oldData) => {\n setSubmitting(true);\n try {\n await Agreements.at('delete-course-by-agreement').post({\n idCurso: oldData.idCurso,\n });\n fetchCourses();\n } catch (error) {} finally {\n setSubmitting(false);\n }\n };\n\n const handleDeleteAllCourses = async () => {\n setSubmitting(true);\n try {\n await Agreements.at('delete-courses-by-agreement').post({\n idConvenio,\n idTipo: processType,\n });\n fetchCourses();\n } catch (error) {} finally {\n setSubmitting(false);\n }\n };\n\n function handleSelectChange(event) {\n setSelectedAction(event.target.value);\n }\n\n const handleToggleAllCourses = async () => {\n setSubmitting(true);\n try {\n await Agreements.at('update-status-of-courses').post({\n idCurso: courses ? courses.map(course => course.idCurso).join(',') : '',\n estado: !!selectedAction,\n });\n fetchCourses();\n } catch (error) {} finally {\n setSubmitting(false);\n }\n };\n\n const handleToggleCourse = async (idCurso, estado) => {\n setSubmitting(true);\n try {\n await Agreements.at('update-status-of-courses').post({\n idCurso,\n estado,\n });\n fetchCourses();\n } catch (error) {} finally {\n setSubmitting(false);\n }\n };\n\n const formatData = (rowData) => {\n rowData.estado = rowData.estado ? 'Activo' : 'Inactivo';\n return rowData;\n };\n\n React.useEffect(() => {\n fetchCourses();\n }, []);\n\n return (\n \n \n \n (\n
\n { handleToggleCourse(rowData.idCurso, !rowData.estado); }} checked={rowData.estado} />\n
\n ),\n editComponent: fieldProps => (\n
\n fieldProps.onChange(checked)} value={fieldProps.value} checked={fieldProps.value} />\n
\n ),\n filtering: false,\n },\n { title: 'Escuela', field: 'escuelaCurso' },\n { title: 'Curso', field: 'nombreCurso' },\n { title: 'Descripción', field: 'descripcionCurso' },\n ]}\n title={}\n options={{\n showTitle: true,\n canEditRow: true,\n canPrint: false,\n canExport: true,\n canFilterColumns: false,\n }}\n editable={{\n onRowUpdate: handleUpdateCourse,\n onRowAdd: handleInsertCourse,\n onRowDelete: handleDeleteCourse,\n }}\n actionsTitle=\"Acciones\"\n materialTableOptions={{\n actionsColumnIndex: -1,\n exportFileName: 'Cursos',\n exportAllData: true,\n exportCsv: (columns, data) => {\n const columnsToExport = columns\n .filter((columnDef) => {\n return !columnDef.hidden && columnDef.field && !columnDef.export;\n });\n /* const dataToExport = data.map((rowData) => {\n return columnsToExport.map(columnDef => getFieldValue(formatData(rowData), columnDef));\n }); */\n const dataToExport = data.map((rowData) => {\n const temp = {};\n columnsToExport.forEach((columnDef) => {\n temp[columnDef.field] = getFieldValue(formatData(rowData), columnDef);\n });\n return temp;\n });\n arrayToExcel.convertArrayToTable(dataToExport, 'Cursos.xls');\n /* const builder = new CsvBuilder('Cursos.csv');\n builder\n .setDelimeter(',')\n .setColumns(columnsToExport.map(columnDef => columnDef.title))\n .addRows(dataToExport)\n .exportFile(); */\n },\n }}\n isLoading={isSubmitting}\n />\n setOpenConfirmation(false)}\n helperText=\"Se eliminaran todos los registros excepto los que estén asociados a una postulación. Los cursos que estén asociados a una postulación se desmarcara la opción de visualización.\"\n />\n
\n
\n \n \n {actions.map(action => (\n \n {action.label}\n \n ))}\n \n \n \n \n setOpenConfirmation(true)}\n >\n \n Eliminar Cursos\n \n \n \n \n Cargar Cursos\n \n \n Cerrar\n \n \n \n );\n}\n","export default function getBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Grid,\n TextField,\n Typography,\n MenuItem,\n Fab,\n CircularProgress,\n} from '@material-ui/core';\nimport { RichEditor } from '../../components';\nimport MultiSelectField from '../../components/multiselect-field';\nimport UploadIcon from '@material-ui/icons/CloudUploadRounded';\nimport CoursesDialog from './courses-dialog';\nimport { Agreements } from '../../api';\n\n/**\n * Form to display agreement types information. It is used by the components listed bellow.\n * @see GestionConvenios.AgreementForm\n *\n * @class AgreementTypeForm\n * @extends {React.Component}\n * @memberof GestionConvenios\n * @category Screens\n */\nclass AgreementTypeForm extends React.Component {\n constructor(props) {\n super(props);\n const { formData } = props;\n const { descripcion } = formData;\n this.state = {\n openDialog: false,\n coursesItems: [],\n coursesValues: [],\n loadingCourses: false,\n };\n this.richProps = {\n placeholder: 'Descripción del Convenio',\n };\n if (descripcion) {\n try {\n this.richProps.content = JSON.parse(descripcion);\n } catch {\n // assume content is HTML\n this.richProps.content = descripcion;\n this.richProps.isHTML = true;\n }\n }\n }\n\n componentDidMount() {\n this.fetchCourses();\n }\n\n fetchCourses = async () => {\n const { idConvenio, processType } = this.props;\n this.setState({ loadingCourses: true });\n try {\n const { resultado } = await Agreements.at('get-courses-by-agreement').post({\n idConvenio,\n idTipo: processType,\n });\n const coursesValues = resultado.filter(course => course.estado).map(course => course.idCurso);\n const coursesItems = resultado.map(course => ({\n ...course,\n nombre: course.nombreCurso,\n id: course.idCurso,\n }))\n this.setState({ coursesItems, coursesValues });\n } catch (error) {} finally {\n this.setState({ loadingCourses: false });\n }\n };\n\n handleChange = name => (event) => {\n const { formData, onChange } = this.props;\n const newFormData = {\n ...formData,\n [name]: event.target.value,\n };\n onChange(newFormData);\n }\n\n render() {\n const { schools, scholarships, formData, idConvenio, processType } = this.props;\n const {\n escuelas,\n becas,\n becasFromBackend,\n nombres,\n apellidoPaterno,\n apellidoMaterno,\n email,\n telefono,\n whatsapp,\n numeroDocumento,\n tipoDocumento,\n } = formData;\n const { openDialog, coursesItems, coursesValues, loadingCourses } = this.state;\n\n return (\n \n \n \n\n {\n const match = becasFromBackend.some(i => i === item.id);\n return ({\n ...item,\n disabled: match,\n })\n })}\n />\n \n
\n this.setState({ openDialog: true })}\n >\n {!loadingCourses ? : }\n Actualizar\n \n
\n\n \n Coordinador\n \n\n \n \n \n \n \n \n \n \n DNI\n Pasaporte\n \n
\n \n \n \n {openDialog && (\n {\n this.fetchCourses();\n this.setState({ openDialog: false });\n }}\n idConvenio={idConvenio}\n processType={processType}\n />\n )}\n
\n );\n }\n}\n\nAgreementTypeForm.propTypes = {\n formData: PropTypes.shape().isRequired,\n schools: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n scholarships: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default AgreementTypeForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport { isEmpty } from 'lodash';\nimport { withFormik } from 'formik';\nimport classNames from 'classnames';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport Draft from 'draft-js';\nimport { stateToHTML } from 'draft-js-export-html';\nimport {\n Card,\n FormControl,\n FormLabel,\n FormControlLabel,\n Radio,\n RadioGroup,\n FormGroup,\n Checkbox,\n Button,\n Grid,\n TextField,\n MenuItem,\n Typography,\n Tabs,\n Tab,\n withStyles,\n InputLabel,\n Select,\n} from '@material-ui/core';\nimport { DateTimePicker, RichEditor } from '../../components';\nimport { Mobility, Agreements, Academic, Core } from '../../api';\nimport styles from './styles';\nimport AdditionalTasks from './additional-tasks';\nimport AgreementTypeForm from './agreement-type-form';\n\nimport alertsActions from '../../store/alerts/actions';\n\nconst { convertFromRaw, EditorState } = Draft;\nconst TIPO_CONVENIO_OUT_ID = 2;\nconst TIPO_CONVENIO_IN_ID = 1;\nconst TIPO_CONVENIO_OUT = 'Out';\nconst TIPO_CONVENIO_IN = 'In';\n\nconst getBottomFormData = (dataConvenio, dataCoordinador, dataTareas, idTipoDefault) => ({\n idTipo: dataConvenio ? dataConvenio.idTipo : idTipoDefault,\n becas: dataConvenio && dataConvenio.becas ? dataConvenio.becas.split(',').map(b => parseInt(b)) : [],\n becasFromBackend: dataConvenio && dataConvenio.becas ? dataConvenio.becas.split(',').map(b => parseInt(b)) : [],\n escuelas: dataConvenio && dataConvenio.escuelas ? dataConvenio.escuelas.split(',').map(s => parseInt(s)) : [],\n descripcion: dataConvenio ? dataConvenio.descripcion : '',\n nombres: dataCoordinador ? dataCoordinador.nombres : '',\n apellidoPaterno: dataCoordinador ? dataCoordinador.apellidoPaterno : '',\n apellidoMaterno: dataCoordinador ? dataCoordinador.apellidoMaterno : '',\n email: dataCoordinador ? dataCoordinador.email : '',\n telefono: dataCoordinador ? dataCoordinador.telefono : '',\n whatsapp: dataCoordinador ? dataCoordinador.whatsapp : '',\n idRepresentante: dataCoordinador ? dataCoordinador.idRepresentante : 0,\n tareas: dataTareas || [],\n numeroDocumento: dataCoordinador ? dataCoordinador.numeroDocumento : '',\n tipoDocumento: dataCoordinador ? dataCoordinador.tipoDocumento : 1,\n});\n\nconst richEditorStyles = {\n customHeaderOne: {\n fontSize: '18px',\n textAlign: 'center',\n },\n customHeaderTwo: {\n fontSize: '17px',\n },\n customHeaderThree: {\n fontSize: '16px',\n },\n customHeaderFour: {\n fontSize: '15px',\n },\n customHeaderFive: {\n fontSize: '14px',\n },\n customHeaderSix: {\n fontSize: '13px',\n },\n customUnstyled: {\n fontSize: '12px',\n },\n};\n\nconst addStylesToRichEditorState = (richEditorState) => {\n const options = {\n blockStyleFn: (block) => {\n switch (block.getType()) {\n case 'header-one':\n return { style: richEditorStyles.customHeaderOne };\n case 'header-two':\n return { style: richEditorStyles.customHeaderTwo };\n case 'header-three':\n return { style: richEditorStyles.customHeaderThree };\n case 'header-four':\n return { style: richEditorStyles.customHeaderFour };\n case 'header-five':\n return { style: richEditorStyles.customHeaderFive };\n case 'header-six':\n return { style: richEditorStyles.customHeaderSix };\n case 'unstyled':\n return { style: richEditorStyles.customUnstyled };\n default:\n }\n },\n };\n\n try {\n return stateToHTML(\n EditorState.createWithContent(convertFromRaw(JSON.parse(richEditorState))).getCurrentContent(),\n options,\n );\n } catch {\n // Asume is already a HTML with styles\n return richEditorState;\n }\n};\n\n/**\n * Dialog form to add and edit calls. It is used by the components listed bellow.\n * @see AgreementsManagement\n *\n * @class AgreementForm\n * @extends {React.Component}\n * @memberof GestionConvenios\n * @category Screens\n */\nclass AgreementForm extends React.Component {\n constructor(props) {\n super(props);\n const { values } = props;\n this.state = {\n upperTab: 0,\n bottomTab: false,\n mobilityTypes: [],\n institutions: [],\n institutionTypes: [],\n scholarships: [],\n schools: [],\n itemTypes: [],\n currentBottomTabs: [],\n bottomForms: {\n outData: {},\n inData: {},\n },\n };\n\n this.inRef = React.createRef();\n this.outRef = React.createRef();\n\n this.richProps = {\n placeholder: 'Descripción del Convenio',\n };\n if (values.consideraciones) {\n try {\n this.richProps.content = JSON.parse(values.consideraciones);\n } catch {\n // assume content is HTML\n this.richProps.content = values.consideraciones;\n this.richProps.isHTML = true;\n }\n }\n }\n\n /**\n * handle event when the component is mounted\n */\n handleChangeSelect = name => (event) => {\n this.setState({ [name]: event.target.value });\n }\n\n async componentDidMount() {\n const {\n agreement,\n setFieldValue,\n } = this.props;\n\n let mobilityTypes = [];\n let institutions = [];\n let institutionTypes = [];\n let scholarships = [];\n let schools = [];\n let itemTypes = [];\n\n\n try {\n const { resultado } = await Mobility.at('get-mobility-types').post();\n mobilityTypes = resultado;\n } finally {};\n\n try {\n const { resultado } = await Mobility.at('get-institutions').post();\n institutions = resultado;\n } finally {};\n\n try {\n const { resultado } = await Mobility.at('get-institutions-types').post();\n institutionTypes = resultado;\n } finally {};\n\n try {\n const { resultado } = await Mobility.at('get-scholarships').post();\n scholarships = resultado;\n } finally {};\n\n try {\n const { resultado } = await Academic.at('get-schools').post();\n schools = resultado;\n } finally {};\n\n try {\n const { resultado } = await Core.at('get-items-types').post();\n itemTypes = resultado;\n } finally {};\n\n const {\n currentBottomTabs,\n bottomForms,\n bottomTab,\n } = this.calculateBottomFormsState(agreement.tiposConvenio);\n\n setFieldValue('idUniversidadAsociacion', agreement.idInstitucion);\n this.setState({\n mobilityTypes,\n institutions,\n institutionTypes,\n scholarships,\n schools,\n itemTypes,\n currentBottomTabs,\n bottomForms,\n bottomTab,\n });\n }\n\n calculateBottomFormsState = (tiposConvenio, prevBottomForms = { inData: {}, outData: {} }) => {\n const { agreement } = this.props;\n // get tiposConvenio and determine which tabs should be rendered in the bottom.\n const currentBottomTabs = [];\n const bottomForms = {\n outData: {},\n inData: {},\n };\n let bottomTab = false;\n\n const getMatchfromId = (array, id) => {\n return array.filter(data => data.idTipo === id).length > 0\n ? array.filter(data => data.idTipo === id)[0]\n : null;\n };\n\n const filterArrayById = (array, id) => (\n array.filter(data => data.idTipo === id) || []\n );\n\n if (tiposConvenio && tiposConvenio.includes(TIPO_CONVENIO_OUT_ID)) {\n currentBottomTabs.push(TIPO_CONVENIO_OUT);\n if (isEmpty(prevBottomForms.outData)) {\n const outDataConvenio = getMatchfromId(agreement.datosConvenios, TIPO_CONVENIO_OUT_ID);\n const outDataCoordinador = getMatchfromId(agreement.coordinador, TIPO_CONVENIO_OUT_ID);\n const outDataTareas = filterArrayById(agreement.tareasAdicionales, TIPO_CONVENIO_OUT_ID);\n bottomForms.outData = getBottomFormData(outDataConvenio, outDataCoordinador, outDataTareas, TIPO_CONVENIO_OUT_ID);\n } else {\n bottomForms.outData = { ...prevBottomForms.outData };\n }\n bottomTab = TIPO_CONVENIO_OUT;\n }\n\n if (tiposConvenio && tiposConvenio.includes(TIPO_CONVENIO_IN_ID)) {\n currentBottomTabs.push(TIPO_CONVENIO_IN);\n if (isEmpty(prevBottomForms.inData)) {\n const inDataConvenio = getMatchfromId(agreement.datosConvenios, TIPO_CONVENIO_IN_ID);\n const inDataCoordinador = getMatchfromId(agreement.coordinador, TIPO_CONVENIO_IN_ID);\n const inDataTareas = filterArrayById(agreement.tareasAdicionales, TIPO_CONVENIO_IN_ID);\n bottomForms.inData = getBottomFormData(inDataConvenio, inDataCoordinador, inDataTareas, TIPO_CONVENIO_IN_ID);\n } else {\n bottomForms.inData = { ...prevBottomForms.inData };\n }\n if (!bottomTab) {\n bottomTab = TIPO_CONVENIO_IN;\n }\n }\n\n return {\n currentBottomTabs,\n bottomForms,\n bottomTab,\n };\n }\n\n handleMultiSelect = type => () => {\n const { values, setFieldValue } = this.props;\n const { bottomForms: prevBottomForms } = this.state;\n let tipos = values.tiposConvenio.slice();\n const isIncluded = tipos.includes(type.id);\n if (isIncluded) {\n // remove it\n tipos = tipos.filter(t => t !== type.id);\n } else {\n tipos.push(type.id);\n }\n setFieldValue('tiposConvenio', tipos);\n\n const {\n currentBottomTabs,\n bottomForms,\n bottomTab,\n } = this.calculateBottomFormsState(tipos, prevBottomForms);\n\n this.setState({\n currentBottomTabs,\n bottomForms,\n bottomTab,\n });\n }\n\n handleTabChange = name => (event, value) => {\n this.setState({ [name]: value });\n };\n\n handleAssociationUniversityChange = async (event) => {\n const idUniversidadAsociacion = event.target.value;\n const { setFieldValue, agreement } = this.props;\n setFieldValue('idUniversidadAsociacion', idUniversidadAsociacion);\n const keys = [\n 'nombres',\n 'apellidoPaterno',\n 'apellidoMaterno',\n 'email',\n 'telefono',\n 'idRepresentante',\n 'numeroDocumento',\n 'tipoDocumento',\n ];\n if (String(idUniversidadAsociacion) !== '0') {\n // one selected\n const { resultado } = await Agreements.at('get-university-representatives').post({\n idInstitucion: idUniversidadAsociacion,\n });\n keys.forEach(key => setFieldValue(`responsable.${key}`, resultado[key] !== null ? resultado[key] : ''));\n } else {\n // show fallback values\n keys.forEach(key => setFieldValue(`responsable.${key}`, agreement.responsable[key] !== null ? agreement.responsable[key] : ''));\n }\n }\n\n renderInfoTab = () => {\n const {\n values,\n handleChange,\n handleBlur,\n isSubmitting,\n classes,\n setFieldValue,\n } = this.props;\n\n const {\n institutionTypes,\n mobilityTypes,\n } = this.state;\n\n return (\n \n \n \n\n \n \n Tipo de Institución\n \n \n {institutionTypes.map(type => (\n }\n label={type.nombre}\n />\n ))}\n \n \n\n \n\n \n\n \n \n {values.universidades.map(universidad => (\n \n {universidad.nombreUniversidad}\n \n ))}\n \n\n \n\n \n \n \n Tipo de Convenio\n \n \n {mobilityTypes.map(type => (\n \n )}\n label={type.nombre}\n />\n ))}\n \n \n\n \n Responsable de Internacionalización\n \n\n \n \n \n \n \n \n \n DNI\n Pasaporte\n \n \n \n \n \n Logo y Sitio web\n \n \n \n {\n !isEmpty(values) && (\n \n )\n }\n\n \n {isEmpty(values.sitioWeb) ? '' : values.sitioWeb}\n \n \n \n\n \n \n \n\n \n \n {\n setFieldValue('fechaVencimiento', date.format('DD/MM/YYYY'));\n }}\n />\n \n \n \n );\n }\n\n handleConsiderationsChange = (event) => {\n const { setFieldValue } = this.props;\n setFieldValue('consideraciones', event.target.value);\n }\n\n renderConsiderationsTab = () => (\n \n \n \n \n \n );\n\n renderBottomTabs = () => {\n const { currentBottomTabs, bottomTab, bottomForms } = this.state;\n const { classes } = this.props;\n\n if (!isEmpty(currentBottomTabs)) {\n return (\n \n \n {\n currentBottomTabs.map(tab => (\n \n ))\n }\n \n {\n currentBottomTabs.map((tab) => {\n switch (tab) {\n case TIPO_CONVENIO_IN:\n return (\n bottomTab === TIPO_CONVENIO_IN\n && this.renderBottomForm(TIPO_CONVENIO_IN, bottomForms.inData)\n );\n case TIPO_CONVENIO_OUT:\n return (\n bottomTab === TIPO_CONVENIO_OUT\n && this.renderBottomForm(TIPO_CONVENIO_OUT, bottomForms.outData)\n );\n default:\n return null;\n }\n })\n }\n \n );\n }\n return null;\n }\n\n handleBottomFormDataChange = type => (data) => {\n const { bottomForms } = this.state;\n let newFormData;\n // eslint-disable-next-line default-case\n switch (type) {\n case TIPO_CONVENIO_OUT: {\n newFormData = {\n inData: { ...bottomForms.inData },\n outData: data,\n };\n break;\n }\n case TIPO_CONVENIO_IN: {\n newFormData = {\n outData: { ...bottomForms.outData },\n inData: data,\n };\n break;\n }\n }\n this.setState({\n bottomForms: newFormData,\n });\n }\n\n /**\n * Handles the rendering of the bottom part of the component using the components listed below.\n * @see GestionConvenios.AgreementTypeForm\n * @see GestionConvenios.AdditionalTasksManagement\n * @memberof GestionConvenios.AgreementForm\n */\n renderBottomForm = (type, formData) => {\n const { values, agreement } = this.props;\n const { schools, scholarships, itemTypes } = this.state;\n\n if (!isEmpty(formData)) {\n let ref;\n if (type === TIPO_CONVENIO_IN) {\n ref = this.inRef;\n } else {\n ref = this.outRef;\n }\n\n return (\n
\n \n \n \n \n
\n );\n }\n return null;\n }\n\n handleSubmit = async (event) => {\n event.preventDefault();\n const { values, setSubmitting, onClose, dispatch } = this.props;\n const { bottomForms } = this.state;\n\n const datosConvenios = [];\n const coordinador = [];\n let isValid = true;\n\n Object.keys(bottomForms).forEach((key) => {\n const formData = bottomForms[key];\n if (!isEmpty(formData)) {\n if (formData.escuelas.length === 0 || formData.becas.length === 0) {\n isValid = false;\n }\n datosConvenios.push({\n idTipo: formData.idTipo,\n escuelas: formData.escuelas.join(','),\n becas: formData.becas.join(','),\n descripcion: addStylesToRichEditorState(formData.descripcion),\n });\n\n coordinador.push({\n idTipo: formData.idTipo,\n idRepresentante: formData.idRepresentante,\n nombres: formData.nombres,\n apellidoPaterno: formData.apellidoPaterno,\n apellidoMaterno: formData.apellidoMaterno,\n email: formData.email,\n telefono: formData.telefono,\n whatsapp: formData.whatsapp,\n numeroDocumento: formData.numeroDocumento,\n tipoDocumento: formData.tipoDocumento,\n });\n }\n });\n\n if (!isValid) {\n return dispatch(alertsActions.setNotifications(\n [{\n titulo: 'Error',\n descripcion: 'Complete los campos requeridos',\n epoch: new Date().getTime(),\n }],\n ));\n }\n\n setSubmitting(true);\n try {\n await Agreements.at('update-agreement').post({\n idConvenio: values.idConvenio,\n idInstitucion: values.idUniversidadAsociacion || '0',\n consideraciones: addStylesToRichEditorState(values.consideraciones),\n logo: '',\n linkMallaCurricular: values.linkMallaCurricular,\n sitioWeb: values.sitioWeb,\n tiposConvenio: values.tiposConvenio.join(','),\n idRepresentante: values.responsable.idRepresentante,\n nombresRepresentante: values.responsable.nombres,\n apellidoPaternoRepresentante: values.responsable.apellidoPaterno,\n apellidoMaternoRepresentante: values.responsable.apellidoMaterno,\n numeroDocumentoRepresentante: values.responsable.numeroDocumento,\n tipoDocumentoRepresentante: values.responsable.tipoDocumento || 1,\n emailRepresentante: values.responsable.email,\n telefonoRepresentante: values.responsable.telefono,\n datosConvenios,\n coordinador,\n });\n onClose({ reload: true });\n } finally {\n setSubmitting(false);\n }\n }\n\n render() {\n const {\n classes,\n values,\n handleChange,\n } = this.props;\n const { upperTab } = this.state;\n\n return (\n
\n \n \n \n \n {upperTab === 0\n ? this.renderInfoTab()\n : this.renderConsiderationsTab()\n }\n\n {\n this.renderBottomTabs()\n }\n\n \n \n )}\n label=\"Estoy de acuerdo con enviar un email con las instrucciones\n para que los responsables y coordinadores puedan acceder al\n sistema\"\n />\n \n\n \n ACTUALIZAR\n \n \n );\n }\n}\n\n/**\n * Format values passed as props to be used as form data\n *\n * @function mapPropsToValues\n * @param {Object} props init props object.\n * @memberof GestionConvenios.AgreementForm\n */\nconst mapPropsToValues = (props) => {\n const { agreement } = props;\n return {\n ...agreement,\n responsable: {\n apellidoMaterno: agreement.responsable.apellidoMaterno || '',\n apellidoPaterno: agreement.responsable.apellidoPaterno || '',\n codigo: agreement.responsable.codigo || 0,\n email: agreement.responsable.email || '',\n idRepresentante: agreement.responsable.idRepresentante || 0,\n nombres: agreement.responsable.nombres || '',\n telefono: agreement.responsable.telefono || '',\n whatsapp: agreement.responsable.whatsapp || '',\n numeroDocumento: agreement.responsable.numeroDocumento || '',\n tipoDocumento: agreement.responsable.tipoDocumento || 1,\n },\n conformidad: true,\n tiposConvenio: agreement.tiposConvenio ? agreement.tiposConvenio.split(',').map(t => parseInt(t)) : '',\n tiposConvenioFromBackend: agreement.tiposConvenio ? agreement.tiposConvenio.split(',').map(t => parseInt(t)) : [],\n fechaVencimiento: moment(agreement.fechaVencimiento).isValid() ? moment(agreement.fechaVencimiento) : moment(),\n };\n};\n\n/**\n * propTypes\n * @memberof GestionConvenios.AgreementForm\n * @property {object} values Initial data for the form.\n * @property {function} handleChange On input change, update the value on the state.\n * @property {function} handleBlur On input blur, update the value on the state.\n * @property {boolean} isSubmitting Whether the form is being submitted.\n * @property {function} handleSubmit Action to perform on submit.\n */\nAgreementForm.propTypes = {\n classes: PropTypes.shape().isRequired,\n values: PropTypes.shape().isRequired,\n // handleChange: PropTypes.func.isRequired,\n handleBlur: PropTypes.func.isRequired,\n isSubmitting: PropTypes.bool.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n setFieldValue: PropTypes.func.isRequired,\n agreement: PropTypes.shape(),\n};\n\nAgreementForm.defaultProps = {\n agreement: null,\n};\n\nconst withFormikComponent = withFormik({\n displayName: 'AgreementForm',\n mapPropsToValues,\n});\n\nexport default compose(\n connect(null),\n withFormikComponent,\n withStyles(styles),\n)(AgreementForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { Grid, Paper, Dialog, DialogContent } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport EditIcon from '@material-ui/icons/Edit';\n\nimport { Agreements } from '../../api';\nimport { ActionsTable, TableToolbar } from '../../components';\nimport withRole from '../../components/hoc/withRole';\nimport { ROLE_DRIC, ROLE_ASISTENTE_DRIC } from '../../constants/roles';\nimport styles from './styles';\nimport AgreementForm from './agreement-form';\n\n/**\n * Groups all the class and functional components related to the GestionConvenios screen.\n * @see {@link AgreementsManagement} main component\n * @namespace GestionConvenios\n * @category Screens\n */\n\n/**\n * Main component of {@link GestionConvenios} screen that displays the list of agreements.\n *\n * @class AgreementsManagement\n * @extends {React.Component}\n * @category Screens\n */\nclass AgreementsManagement extends React.Component {\n constructor(props) {\n super(props);\n /**\n * We need two calls in state to handle selection and edition\n * separately.\n */\n this.state = {\n agreements: null,\n currentAgreement: null,\n showDialog: false,\n };\n\n this.columns = [\n { title: 'País / Región', field: 'pais' },\n { title: 'Institución', field: 'institucion' },\n { title: 'Tipo', field: 'tipo' },\n { title: 'Estado', field: 'estado' },\n { title: 'Idioma', field: 'idioma' },\n ];\n\n this.actions = [\n {\n tooltip: 'Detalles',\n icon: EditIcon,\n onClick: this.editAgreement,\n },\n ];\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n /**\n * Helper method to fetch data from server.\n */\n fetchData = async () => {\n const payload = await Agreements.at('get-agreements').post();\n const { resultado } = payload;\n const agreements = resultado.map((agreement) => {\n agreement.id = agreement.idConvenio;\n return agreement;\n });\n this.setState({\n agreements,\n currentAgreement: null,\n });\n }\n\n /**\n * Callback function to execute so selected agreement can be edited.\n */\n editAgreement = async (event, agreement) => {\n const { idConvenio } = agreement;\n const { resultado } = await Agreements.at('get-agreement').post({ idConvenio });\n this.setState({\n currentAgreement: resultado,\n showDialog: true,\n });\n }\n\n handleClose = ({ reload = false } = {}) => {\n this.setState({\n showDialog: false,\n }, () => {\n if (reload) {\n this.fetchData();\n }\n });\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see GestionConvenios.AgreementForm\n * @memberof AgreementsManagement\n */\n render() {\n const {\n agreements,\n currentAgreement,\n showDialog,\n } = this.state;\n\n return (\n \n \n \n {\n agreements && (\n }\n options={{\n showTitle: true,\n canSearch: true,\n }}\n materialTableOptions={{\n exportFileName: 'Convenios',\n }}\n />\n )\n }\n \n \n \n \n {\n currentAgreement && (\n \n )\n }\n \n \n \n );\n }\n}\n\nAgreementsManagement.propTypes = {\n classes: PropTypes.shape().isRequired,\n};\n\nconst withDricRole = withRole([ROLE_DRIC, ROLE_ASISTENTE_DRIC]);\n\nexport default compose(\n withDricRole,\n withStyles(styles),\n)(AgreementsManagement);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as moment from 'moment';\nimport {\n Paper,\n MenuItem,\n withStyles,\n FormControl,\n FormControlLabel,\n Checkbox,\n Select,\n} from '@material-ui/core';\nimport isFunction from 'lodash';\nimport { Applications, Mobility } from '../../api';\nimport { ActionsTable, TableToolbar } from '../../components';\n\n\nconst columns = [\n { title: 'Nombre', field: 'nombre', cellStyle: { width: 200 } },\n { title: 'Dictamen', field: 'dictamen', cellStyle: { width: 220 } },\n { title: 'Observaciones', field: 'observaciones' },\n { title: 'Fecha', field: 'fecha' },\n];\n\n/**\n * Component to handle the deliberation of the final dictum. It is used by the components listed bellow.\n * @see Dictum\n *\n * @class Deliberation\n * @extends {React.Component}\n * @memberof DictamenFinal\n * @category Screens\n */\nclass Deliberation extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n deliberationData: [],\n options: [],\n };\n }\n\n async fetchData() {\n const { idPostulacion } = this.props;\n const optionsPayload = await Mobility.at('get-statements-list').post();\n const { resultado: options } = optionsPayload;\n const payload = await Applications.at('get-application-deliberation').post({\n idPostulacion,\n });\n payload.resultado.deliberadores = payload.resultado.deliberadores.map(item => ({\n ...item,\n fecha: moment(item.fecha).format('DD/MM/YYYY'),\n }));\n const { deliberadores: deliberationData } = payload.resultado;\n this.setState({ deliberationData, options });\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n async componentDidUpdate(prevProps) {\n const { idPostulacion: currentIdPostulacion } = this.props;\n if (prevProps.idPostulacion !== currentIdPostulacion) {\n await this.fetchData();\n }\n }\n\n /**\n * Calls the onChange method given by props\n * @memberof DictamenFinal.Deliberation\n */\n handleChange = name => (event) => {\n const { onChange } = this.props;\n const value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;\n if (isFunction(onChange)) onChange(name, value);\n }\n\n /**\n * Handles the rendering of the Deliberation component\n * @memberof DictamenFinal.Deliberation\n */\n render() {\n const { actualDictum, approval, universidades, idInstitucion } = this.props;\n const { deliberationData, options } = this.state;\n if (deliberationData.length >= 3) {\n deliberationData[3] = ({\n nombre: 'Dictamen Final',\n dictamen: (\n options.length > 0 && (\n \n {options.map((option, index) => (\n {option.nombre}\n ))}\n \n )\n ),\n observaciones: (\n universidades.length > 0 && (\n \n {universidades.map((option, index) => (\n {option.nombre}\n ))}\n \n )\n )\n });\n }\n\n return (\n \n \n \n \n \n )}\n label=\"Doy mi conformidad para registrar el dictamen final\n para la postulación del estudiante. Se enviará un email\n al estudiante para informarle sobre el dictamen de su\n postulación y en caso que sea aprobada, se le solicitará\n la conformidad de aceptación de la beca.\"\n />\n \n \n );\n }\n}\n\n/**\n * propTypes\n * @memberof DictamenFinal.Deliberation\n * @property {number} actualDictum\n * @property {bool} approval\n * @property {function} onChange\n * @property {number} idPostulacion\n */\nDeliberation.propTypes = {\n actualDictum: PropTypes.number.isRequired,\n approval: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n idPostulacion: PropTypes.number.isRequired,\n universidades: PropTypes.object,\n};\n\nexport default withStyles()(Deliberation);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Grid,\n withStyles,\n Paper,\n RadioGroup,\n FormControlLabel,\n Radio,\n TextField,\n MenuItem,\n Fab,\n Button,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport DownloadIcon from '@material-ui/icons/CloudDownload';\nimport PersonalInformation from '../common/student/personal-information';\nimport AcademicData from '../common/student/academic-data';\nimport AgreementData from '../common/student/agreement-data';\nimport Deliberation from './deliberation';\nimport { TableToolbar, FormActions } from '../../components';\nimport { Applications } from '../../api';\nimport { downloadBlob, fileToBase64 } from '../../utils';\nimport RequirementsStepper from '../results/stepper';\n\nimport styles from './styles';\n\n/**\n * Groups all the class and functional components related to the DictamenFinal screen.\n * @see {@link Dictum} main component\n * @namespace DictamenFinal\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link DictamenFinal} screen that handles the final dictum.\n * @class Dictum\n * @extends {React.Component}\n * @category Screens\n */\nclass Dictum extends React.Component {\n constructor(props) {\n super(props);\n /**\n * Dictum state.\n * @type {object}\n * @property {string} studentAcceptance Acceptance of the student.\n * @property {string} universityAcceptance Acceptance of the university.\n * @property {array} universities List of univeristies.\n * @property {string} actualUniversity Selected university.\n * @property {number} dictamen Final dictum of DRIC role.\n * @property {bool} conformidad Agreement of DRIC role.\n * @property {string} file base64 of the uploaded file.\n * @property {file} archivo Uploaded file.\n * @property {array} steps Steps of the mobility process.\n */\n this.state = {\n studentAcceptance: 'no',\n universityAcceptance: 'no',\n universities: [],\n actualUniversity: '',\n dictamen: 3,\n conformidad: false,\n file: '',\n archivo: '',\n archivoNombre: '',\n filePermiso: '',\n archivoPermiso: '',\n archivoPermisoNombre: '',\n steps: [],\n };\n }\n\n async componentDidMount() {\n this.fetchData();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location) {\n this.fetchData();\n }\n }\n\n fetchData = async () => {\n const { location } = this.props;\n const { idPostulacion } = location.state;\n const deliberationPayload = await Applications.at('get-application-deliberation').post({\n idPostulacion,\n });\n const {\n cartaHash,\n cartaAceptacionNombre,\n seguroHash,\n seguroMedicoNombre,\n aceptacionEstudiante,\n aceptacionUniversidad,\n dictamenFinal,\n conformidadDictamen,\n } = deliberationPayload.resultado;\n const payload = await Applications.at('get-application').post({\n idPostulacion,\n });\n const { universidades: universities, idInstitucion } = payload.resultado;\n this.setState({\n universities,\n idInstitucion,\n actualUniversity: idInstitucion,\n cartaHash,\n cartaAceptacionNombre,\n seguroHash,\n seguroMedicoNombre,\n studentAcceptance: aceptacionEstudiante ? 'si' : 'no',\n universityAcceptance: aceptacionUniversidad ? 'si' : 'no',\n // dictamen value by default: En Lista de Espera (3)\n dictamen: dictamenFinal !== 0 ? dictamenFinal : 3,\n conformidad: conformidadDictamen,\n file: '',\n filePermiso: '',\n archivoNombre: '',\n archivoPermisoNombre: '',\n archivo: '',\n archivoPermiso: '',\n });\n Applications.at('get-application-results').post({ idPostulacion }).then((data) => {\n const { resultado } = data;\n const steps = resultado.map(i => ({\n label: i.nombre.replace('Pendiente ', ''),\n status: i.estado,\n }));\n this.setState({ steps });\n });\n }\n\n /**\n * Handles the change of the form elements\n * @memberof Dictum\n */\n handleChange = name => (event) => {\n event.persist();\n this.setState({\n [name]: event.target.value,\n }, () => {\n if (name === 'archivo' || name === 'archivoPermiso') {\n if (event.target.files.length > 0) {\n fileToBase64(event.target.files[0]).then((file) => {\n const file64 = name === 'archivo' ? 'file' : 'filePermiso';\n const fileName = name === 'archivo' ? 'archivoNombre' : 'archivoPermisoNombre';\n this.setState({ [file64]: file, [fileName]: event.target.files[0].name });\n });\n } else {\n this.setState({ file: '', filePermiso: '' });\n }\n }\n });\n }\n\n /**\n * Handles the change of the deliberation component\n * @memberof Dictum\n */\n handleDeliberationChange = (name, value) => {\n this.setState({ [name]: value });\n }\n\n /**\n * Handles the submit action of the form\n * @memberof Dictum\n */\n handleSubmit = async (event) => {\n event.preventDefault();\n const { location } = this.props;\n const { idPostulacion } = location.state;\n const {\n dictamen,\n conformidad,\n universityAcceptance,\n actualUniversity,\n file,\n filePermiso,\n archivoNombre,\n archivoPermisoNombre,\n universities\n } = this.state;\n const university = universities.find((value)=>value.idUniversidad==actualUniversity)\n await Applications.at('update-final-statement').post({\n idPostulacion,\n dictamen,\n conformidad,\n aceptacionUniversidad: universityAcceptance === 'si',\n idConvenioConvocatoria: university ? university.idConvenioConvocatoria : 0,\n idInstitucion: actualUniversity,\n cartaAceptacion: file,\n seguroMedico: filePermiso,\n cartaAceptacionNombre: archivoNombre,\n seguroMedicoNombre: archivoPermisoNombre,\n });\n this.fetchData();\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see PersonalInformation\n * @see AcademicInformation\n * @see AgreementData\n * @see Resultados.RequirementsStepper\n * @see DictamenFinal.Deliberation\n * @memberof Dictum\n */\n render() {\n const { classes, location } = this.props;\n const { idPostulacion, idUsuario, idEscuela } = location.state;\n const {\n studentAcceptance,\n universityAcceptance,\n universities,\n idInstitucion,\n actualUniversity,\n dictamen,\n conformidad,\n steps,\n archivo,\n archivoPermiso,\n cartaHash,\n cartaAceptacionNombre,\n seguroHash,\n seguroMedicoNombre,\n } = this.state;\n \n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {dictamen === 1 && (\n \n \n \n \n \n } label=\"No\" />\n } label=\"Si\" />\n \n \n \n \n \n \n \n \n \n } label=\"No\" />\n } label=\"Si\" />\n \n \n \n {idInstitucion == 0 && universities.length > 0 && (\n \n {universities.map((university, index) => (\n {university.nombre}\n ))}\n \n )}\n \n
\n \n \n \n
\n {cartaHash && (\n \n

\n \n

\n
\n )}\n
\n
\n
\n
\n
\n
\n )}\n \n \n \n Confirmar\n \n \n
\n
\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes\n * @property {object} location\n */\nDictum.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n location: PropTypes.shape({}).isRequired,\n};\n\nexport default withStyles(styles)(Dictum);\n","export default theme => ({\n customSelect: {\n minWidth: 190,\n },\n});\n","/* eslint-disable no-unused-vars */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n TableHead,\n TableRow,\n TableCell,\n TableSortLabel,\n Checkbox,\n withStyles,\n} from '@material-ui/core';\n/* eslint-enable no-unused-vars */\n\nexport class CustomHeader extends React.Component {\n renderHeader() {\n const {\n columns,\n sorting,\n orderBy,\n orderDirection,\n onOrderChange,\n classes,\n headerStyle,\n } = this.props;\n const mapArr = columns\n .filter(\n columnDef => !columnDef.hidden && !(columnDef.tableData.groupOrder > -1),\n )\n .sort((a, b) => a.tableData.columnOrder - b.tableData.columnOrder)\n .map((columnDef) => {\n let content = columnDef.title;\n\n if (columnDef.sorting !== false && sorting) {\n content = (\n {\n const newOrderDirection = columnDef.tableData.id !== orderBy ? 'asc' : orderDirection === 'asc' ? 'desc' : 'asc';\n onOrderChange(columnDef.tableData.id, newOrderDirection);\n }}\n >\n {content}\n \n );\n }\n\n return (\n \n {content}\n \n );\n });\n return mapArr;\n }\n\n renderActionsHeader() {\n const {\n classes,\n headerStyle,\n localization,\n } = this.props;\n const newLocalization = { ...CustomHeader.defaultProps.localization, ...localization };\n return (\n \n {newLocalization.actions}\n \n );\n }\n\n render() {\n const {\n superColumns,\n columns,\n showActionsColumn,\n actionsHeaderIndex,\n } = this.props;\n const headers = this.renderHeader();\n\n const firstRow = [];\n const secondRow = [];\n const visibleColumns = columns.filter(c => !c.hidden);\n visibleColumns.forEach((column, index) => {\n const hasSuperColumn = superColumns\n .filter(s => s.columnIds.find(id => (id === column.columnId)));\n if (hasSuperColumn.length > 0) {\n secondRow.push({\n id: index,\n component: headers[index],\n });\n if (!firstRow.find(p => p.id === hasSuperColumn[0].id)) {\n const colSpan = hasSuperColumn[0].columnIds\n .filter(id => visibleColumns\n .find(c => (c.columnId === id))).length;\n firstRow.push({\n id: hasSuperColumn[0].id,\n component: {hasSuperColumn[0].title},\n });\n }\n } else {\n firstRow.push({\n component: headers[index],\n });\n }\n });\n if (showActionsColumn) {\n if (actionsHeaderIndex >= 0) {\n firstRow.splice(\n actionsHeaderIndex,\n 0,\n {\n id: 'action',\n component: this.renderActionsHeader(),\n },\n );\n } else if (actionsHeaderIndex === -1 && !firstRow.find(p => p.id === 'action')) {\n firstRow.push({\n id: 'action',\n component: this.renderActionsHeader(),\n });\n }\n }\n\n return (\n \n \n {firstRow.map(header => header.component)}\n \n \n {secondRow.map(header => header.component)}\n \n \n );\n }\n}\n\nCustomHeader.defaultProps = {\n headerStyle: {},\n sorting: true,\n localization: {\n actions: 'Actions',\n },\n orderBy: undefined,\n orderDirection: 'asc',\n actionsHeaderIndex: 0,\n onOrderChange: () => {},\n showActionsColumn: false,\n};\n\nCustomHeader.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n superColumns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n headerStyle: PropTypes.shape({}),\n localization: PropTypes.shape({}),\n sorting: PropTypes.bool,\n onOrderChange: PropTypes.func,\n orderBy: PropTypes.number,\n orderDirection: PropTypes.string,\n actionsHeaderIndex: PropTypes.number,\n showActionsColumn: PropTypes.bool,\n};\n\nCustomHeader.defaultProps = {\n onOrderChange: () => {},\n showActionsColumn: false,\n};\n\nexport const styles = theme => ({\n header: {\n position: 'sticky',\n top: 0,\n zIndex: 10,\n backgroundColor: theme.palette.background.paper, // Change according to theme,\n },\n});\n\nexport default withStyles(styles)(CustomHeader);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport {\n Grid,\n Paper,\n Fab,\n Checkbox,\n FormControl,\n RadioGroup,\n FormControlLabel,\n Radio,\n Table,\n TableHead,\n TableBody,\n TableRow,\n Button,\n} from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport DownloadIcon from '@material-ui/icons/CloudDownload';\n\nimport { TableToolbar, FormActions, TableCell, UploadField } from '../../../components';\nimport { Applications } from '../../../api';\nimport RequirementsStepper from '../../results/stepper';\nimport AgreementData from '../../common/mobility-in/agreement-data';\nimport PersonalInformation from '../../common/mobility-in/foreign-personal-info';\nimport AcademicInformation from '../../common/mobility-in/foreign-academic-info';\nimport { downloadBlob } from '../../../utils';\n\n\n/**\n *\n *\n * @class MobilityIn-Dictum\n * @extends {React.Component}\n * @category Screens\n */\nclass Dictum extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n steps: [],\n aceptacion: '',\n conformidad: false,\n cartaAceptacion: {\n archivo: '',\n archivoNombre: '',\n },\n seguroMedico: {\n archivo: '',\n archivoNombre: '',\n },\n };\n }\n\n async componentDidMount() {\n const { application } = this.props;\n const { resultado } = await Applications.at('get-application-results').post({\n idPostulacion: application.idPostulacion,\n });\n const steps = resultado.map(i => ({\n label: i.nombre.replace('Pendiente ', ''),\n status: i.estado,\n }));\n const { resultado: deliberacion } = await Applications.at('get-application-deliberation').post({\n idPostulacion: application.idPostulacion,\n });\n this.setState({\n steps,\n aceptacion: String(deliberacion.dictamenFinal),\n cartaAceptacion: {\n archivo: deliberacion.cartaHash || '',\n archivoNombre: deliberacion.cartaAceptacionNombre || '',\n },\n seguroMedico: {\n archivo: deliberacion.seguroHash || '',\n archivoNombre: deliberacion.seguroMedicoNombre || '',\n },\n conformidad: Boolean(deliberacion.conformidadDictamen),\n });\n }\n\n handleChange = name => (event) => {\n if (name === 'conformidad') {\n this.setState({ [name]: event.target.checked });\n } else {\n this.setState({ [name]: event.target.value });\n }\n }\n\n handleFileChange = name => ({ archivo, nombreArchivo }) => {\n this.setState({\n [name]: {\n archivo,\n archivoNombre: nombreArchivo,\n },\n });\n };\n\n handleSubmit = async (event) => {\n event.preventDefault();\n const { application } = this.props;\n const { aceptacion, conformidad, cartaAceptacion, seguroMedico } = this.state;\n try {\n await Applications.at('update-final-statement').post({\n idPostulacion: application.idPostulacion,\n dictamen: aceptacion,\n conformidad,\n aceptacionUniversidad: aceptacion === '1',\n idInstitucion: 0,\n cartaAceptacion: cartaAceptacion.archivo,\n cartaAceptacionNombre: cartaAceptacion.archivoNombre,\n });\n await Applications.at('update-health-insurance').post({\n idPostulacion: application.idPostulacion,\n seguroMedico: seguroMedico.archivo,\n seguroMedicoNombre: seguroMedico.archivoNombre,\n });\n } catch (error) {}\n }\n\n render() {\n const { userApplication } = this.props;\n const {\n aceptacion,\n steps,\n cartaAceptacion,\n seguroMedico,\n conformidad,\n } = this.state;\n const userId = userApplication.idUsuario;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Tarea\n Archivo\n \n \n \n \n Carta de Aceptación\n \n
\n {cartaAceptacion.archivo && (\n \n \n \n )}\n \n \n \n
\n
\n
\n {/* Uncomment to add Seguro médico\n \n Seguro Médico\n \n
\n {seguroMedico.archivo && (\n \n \n \n )}\n \n \n \n
\n\n
\n
*/}\n
\n
\n
\n
\n \n \n \n \n \n \n }\n label=\"No aceptado\"\n labelPlacement=\"end\"\n />\n \n }\n label=\"Aceptado\"\n labelPlacement=\"end\"\n />\n \n\n \n \n \n \n
\n \n \n )}\n label=\"Doy mi conformidad para registrar el dictamen final para la postulación del estudiante.\n Se enviará un email al estudiante para informarle sobre el dictamen de su postulación.\"\n />\n \n \n \n \n Enviar\n \n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = s => ({\n application: s.applications.application,\n userApplication: s.applications.userApplication,\n});\n\nconst withConnect = connect(mapStateToProps);\nexport default withConnect(Dictum);\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\nimport {\n withStyles,\n Paper,\n} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\n\nimport Header from '../../../components/custom-header';\n\nimport MobilityInAgreementsList from '../agreements-list';\nimport MobilityInResults from '../results';\nimport MobilityInPostulation from '../student-postulation';\nimport MobilityInSummary from '../summary';\nimport MobilityInDictum from '../dictum';\n\nimport { TableToolbar, HorizontalStepper, ActionsTable } from '../../../components';\nimport { Applications, MenuApp } from '../../../api';\nimport applicationsActions from '../../../store/applications/actions';\nimport {\n ROLE_DRIC, ROLE_ASISTENTE_DRIC,\n} from '../../../constants/roles';\n\nlet superColumns = [\n {\n id: 0,\n title: 'Vacantes',\n columnIds: [3, 4],\n },\n];\n\n\n/**\n * Component to handle the management of the applications\n * @class MobilityIn-ApplicationsManagement\n * @extends {React.Component}\n * @memberof GestionPostulaciones\n * @category Screens\n */\nclass ApplicationsManagement extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n selectedApplicationRow: null,\n applications: [],\n activeStep: 0,\n steps: [],\n idUsuario: null,\n };\n\n this.actionsTableRef = React.createRef();\n this.stepperRef = React.createRef();\n\n this.columns = [\n { columnId: 0, title: 'Estudiante', field: 'estudiante', rowSpan: 2, superColumn: null },\n { columnId: 1, title: 'Institución', field: 'convenio', rowSpan: 2, superColumn: null },\n { columnId: 2, title: 'Tipo de Beca', field: 'tipoBeca', rowSpan: 2, superColumn: null },\n { columnId: 3, title: 'Ofertadas', field: 'vacantes', superColumn: 0, cellStyle: { textAlign: 'center' } },\n { columnId: 4, title: 'Disponibles', field: 'vacantesDisponibles', superColumn: 0, cellStyle: { textAlign: 'center' } },\n { columnId: 5, title: 'Escuela', field: 'escuela', rowSpan: 2, superColumn: null },\n { columnId: 6, title: 'Estado', field: 'estado', rowSpan: 2, superColumn: null },\n ];\n\n this.actions = [\n {\n tooltip: 'Ver',\n icon: VisibilityIcon,\n onClick: this.onClickApplication,\n headerStyle: { backgroundColor: '#f8f8f8', textAlign: 'center' },\n },\n ];\n }\n\n async componentDidMount() {\n this.fetchData();\n }\n\n async componentDidUpdate(prevProps) {\n const {\n currentCall,\n applicationState,\n myTasks,\n } = this.props;\n const isAnotherCall = prevProps.currentCall !== currentCall;\n const isAnotherState = prevProps.applicationState !== applicationState;\n const myTasksHasChanged = prevProps.myTasks !== myTasks;\n if (isAnotherCall || isAnotherState || myTasksHasChanged) {\n this.fetchData();\n }\n }\n\n scrollIntoStepper = () => {\n this.stepperRef.current.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n\n fetchData = async () => {\n const {\n applicationType,\n currentCall,\n applicationState,\n myTasks,\n } = this.props;\n\n // when starting, not trigger the request unless all parameters are valid.\n const idTipoValid = Number.isFinite(parseInt(applicationType));\n const idConvocatoriaValid = Number.isFinite(parseInt(currentCall));\n const estadoValid = Number.isFinite(parseInt(applicationState));\n const myTasksValid = typeof myTasks === 'boolean';\n\n if (!idTipoValid || !idConvocatoriaValid || !estadoValid || !myTasksValid) return;\n\n const payload = await Applications.at('get-applications').post({\n idTipo: applicationType,\n idConvocatoria: currentCall,\n estado: applicationState,\n misTareas: myTasks,\n });\n const { resultado: applications } = payload;\n this.setState({\n applications,\n });\n }\n\n onClickApplication = (event, application) => {\n const { dispatch, currentCall } = this.props;\n const { idPostulacion, idUsuario, idEscuela, modalidad } = application;\n this.setState({ idUsuario, selectedApplicationRow: application });\n MenuApp.at('get-steps').post({ idPostulacion })\n .then((menuResponse) => {\n const { resultado: steps } = menuResponse;\n // idStep for first step is 10\n const FIRST_STEP_ID = 10;\n if (idPostulacion !== null) {\n dispatch(applicationsActions.setApplication({\n idPostulacion,\n idEscuela,\n idUsuario,\n idConvocatoria: currentCall,\n isVirtual: modalidad === 'V',\n }));\n dispatch(applicationsActions.requestApplicationData({ idPostulacion, isVirtual: modalidad === 'V' }));\n dispatch(applicationsActions.setUserApplication({ idUsuario }));\n }\n dispatch(applicationsActions.setStepper(steps));\n this.setState({ steps, activeStep: FIRST_STEP_ID }, () => {\n setTimeout(() => {\n this.scrollIntoStepper();\n }, 500);\n });\n });\n }\n\n handleStepNavigation = (step) => {\n this.setState({\n activeStep: step.idStep,\n });\n }\n\n render() {\n const { role } = this.props;\n const {\n applications,\n activeStep,\n steps,\n selectedApplicationRow,\n } = this.state;\n\n superColumns = superColumns.map((item, index) => {\n if (index % 2 !== 0) {\n return {\n ...item,\n headerStyle: { backgroundColor: '#eeeeee', textAlign: 'center' },\n };\n }\n return {\n ...item,\n headerStyle: { backgroundColor: '#f8f8f8', textAlign: 'center' },\n };\n });\n this.columns = this.columns.map((item, index) => {\n if (item.superColumn !== null) {\n return {\n ...item,\n headerStyle: { backgroundColor: superColumns[item.superColumn].headerStyle.backgroundColor, textAlign: 'center' },\n };\n }\n if (index % 2 !== 0) {\n return {\n ...item,\n headerStyle: { backgroundColor: '#f8f8f8', textAlign: 'center' },\n };\n }\n return {\n ...item,\n headerStyle: { backgroundColor: '#eeeeee', textAlign: 'center' },\n };\n });\n\n return (\n \n \n \n
\n {\n const headerProps = {\n ...props,\n superColumns,\n };\n return (\n
\n );\n },\n }}\n selectedRow={selectedApplicationRow}\n options={{\n canSearch: true,\n canFilterColumns: true,\n canPrint: true,\n showTitle: true,\n canSelect: true,\n }}\n actions={this.actions}\n actionsTitle=\"Ver\"\n />\n
\n
\n {activeStep > 0 && steps.length > 0 && (\n {\n return step.idStep === activeStep;\n })}\n navigateWithNoRestriction={role === ROLE_DRIC || role === ROLE_ASISTENTE_DRIC}\n onClick={this.handleStepNavigation}\n />\n )}\n
\n {(() => {\n switch (activeStep) {\n case 10:\n return ;\n case 15:\n return ;\n case 13:\n return ((role === ROLE_DRIC || role === ROLE_ASISTENTE_DRIC)\n ? (\n \n )\n : \n );\n case 16:\n return ;\n default:\n return null;\n }\n })()}\n\n \n );\n }\n}\n\nexport default compose(\n connect(s => ({\n role: s.session.role.idRol,\n })),\n withStyles(),\n)(ApplicationsManagement);\n","import React from 'react';\nimport { withFormik } from 'formik';\nimport { compose } from 'redux';\nimport PropTypes from 'prop-types';\nimport {\n TextField,\n Grid,\n Typography,\n withStyles,\n FormControlLabel,\n Checkbox,\n Button,\n DialogActions,\n FormControl,\n FormLabel,\n RadioGroup,\n Radio,\n} from '@material-ui/core';\nimport { isFunction } from 'lodash';\nimport { Applications } from '../../../../api';\nimport { ROLE_DRIC, ROLE_PSICOPEDAGOGICO, ROLE_ASISTENTE_DRIC } from '../../../../constants/roles';\nimport styles from './styles';\n\n/**\n * Component to handle approvals and calification by some roles\n * @function Approval\n * @extends {React.Component}\n * @category Screens\n */\nfunction Approval({\n values,\n classes,\n isCalification,\n handleChange,\n handleBlur,\n isSubmitting,\n handleSubmit,\n}) {\n const InputDefault = ({ name, label }) => (\n \n );\n return (\n
\n \n \n \n \n \n \n \n {!isCalification ? (\n \n \n \n ) : (\n \n \n Calificación\n {!values.readOnly && (\n \n Seleccione una opción para la evaluación de la postulación\n \n )}\n \n } label=\"Sí apto\" />\n } label=\"No apto\" />\n \n \n \n )}\n \n \n \n {!isCalification && (\n \n \n \n )}\n label=\"Doy mi conformidad de haber realizado la entrevista al postulante en\n la fecha y hora agendada.\"\n />\n \n \n )}\n \n {isCalification && !values.readOnly && (\n \n Al presionar el botón Guardar, se registrará la información ingresada y no\n será posible su modificación posterior.\n \n )}\n {!values.readOnly && (\n \n \n GUARDAR\n \n \n )}\n \n \n\n
\n );\n}\n\n\n/**\n * propTypes\n * @property {object} classes\n * @property {function} onClose\n * @property {object} value\n * @property {function} handleChange\n * @property {function} handleBlur\n * @property {bool} isSubmitting\n * @property {function} handleSubmit\n */\nApproval.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n onClose: PropTypes.func.isRequired,\n values: PropTypes.shape({}).isRequired,\n handleChange: PropTypes.func.isRequired,\n handleBlur: PropTypes.func.isRequired,\n isSubmitting: PropTypes.bool.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n};\n\n/**\n * The props received can be mapped to values for the form.\n *\n * @function handleSubmit\n * @memberof Approval\n */\nconst mapPropsToValues = (props) => {\n const { data } = props;\n const { role } = data;\n let type;\n switch (role) {\n case ROLE_PSICOPEDAGOGICO:\n type = 'Psicopedagógica';\n break;\n case ROLE_ASISTENTE_DRIC:\n case ROLE_DRIC:\n type = 'DRIC';\n break;\n default:\n type = '';\n }\n const {\n idCalificacion,\n archivo,\n nombre,\n email,\n } = data;\n return {\n idCalificacion,\n archivo,\n tipo: type,\n nombre,\n email,\n observaciones: data.observaciones || '',\n calificacion: true,\n conformidad: data.conformidad,\n readOnly: data.readOnly,\n };\n};\n\n/**\n * On submit, call the specific endpoint.\n *\n * @function handleSubmit\n * @memberof Approval\n */\nconst handleSubmit = async (values, { setSubmitting, props: { onClose, isCalification } }) => {\n setSubmitting(true);\n const {\n idCalificacion,\n archivo,\n observaciones,\n calificacion,\n conformidad,\n } = values;\n await Applications.at('update-statement').post({\n idCalificacion,\n archivo,\n observaciones,\n calificacion: isCalification ? calificacion === 'apto' : calificacion,\n conformidad,\n puntaje: 0,\n });\n setSubmitting(false);\n if (isFunction(onClose)) onClose({ reload: true });\n};\n\nconst withFormikComponent = withFormik({\n displayName: 'ApprovalForm',\n mapPropsToValues,\n handleSubmit,\n});\n\nexport default compose(\n withFormikComponent,\n withStyles(styles),\n)(Approval);\n","export default theme => ({\n actionsContainer: {\n [theme.breakpoints.down('xs')]: {\n flexFlow: 'column',\n },\n },\n actionBtn: {\n minWidth: 150,\n [theme.breakpoints.down('xs')]: {\n marginBottom: theme.spacing.unit,\n width: '100%',\n },\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Markup } from 'interweave';\nimport {\n Button,\n Paper,\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n TextField,\n Typography,\n Grid,\n Tooltip,\n FormHelperText,\n} from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport SendIcon from '@material-ui/icons/Send';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport { Applications } from '../../../../api';\nimport styles from './styles';\n\nconst LightTooltip = withStyles(theme => ({\n tooltip: {\n backgroundColor: theme.palette.common.white,\n color: 'rgba(0, 0, 0, 0.87)',\n boxShadow: theme.shadows[1],\n fontSize: 11,\n },\n}))(Tooltip);\n\nconst gradeEquivalences = {\n 0: [0.0, 11.9],\n 1: [12.0, 14.9],\n 2: [15.0, 17.9],\n 3: [18.0, 20],\n};\n\n/**\n * Component to handle the form that the director must fill in.\n *\n * @class DirectorInterviewForm\n * @extends {React.Component}\n * @category Screens\n */\nclass DirectorInterviewForm extends React.Component {\n state = {\n idCalificacion: null,\n criterias: [],\n recomendaciones: '',\n equivalencia: '',\n }\n\n /**\n * Life cycle method. Load data on component mount.\n */\n async componentDidMount() {\n const { idPostulacion } = this.props;\n const payload = await Applications.at('get-director-score').post({\n idPostulacion,\n });\n const { resultado } = payload;\n this.setState({\n idCalificacion: resultado.idCalificacion,\n criterias: resultado.rubrica,\n recomendaciones: resultado.recomendaciones,\n equivalencia: resultado.equivalencia,\n });\n }\n\n /**\n * Manages the value changes on an specific criteria.\n */\n handleCriteriaChange = criterio => (event) => {\n const criterias = this.state.criterias.slice();\n criterias.forEach((current) => {\n if (current.idCriterio === criterio.idCriterio) {\n current.valor = parseInt(event.target.value);\n if (current.valor < current.minimo || current.valor > current.maximo) {\n current.error = true;\n } else {\n current.error = false;\n }\n }\n });\n this.setState({\n criterias,\n });\n }\n\n /**\n * Manages changes on others fields, except criterias.\n * Criterias' changes are managed via `handleCriteriaChange` callback.\n */\n handleChange = name => (event) => {\n let value;\n if (name === 'conformidad') {\n value = event.target.checked;\n } else {\n ({ value } = event.target);\n }\n\n this.setState({\n [name]: value,\n });\n }\n\n /**\n * On submit, send data to the server so the update process can be done.\n */\n handleSubmit = async (event) => {\n event.preventDefault();\n const {\n idCalificacion,\n criterias,\n recomendaciones,\n } = this.state;\n const { idPostulacion, onClose } = this.props;\n const idCriterios = criterias.map(c => c.idCriterio).join(',');\n const valores = criterias.map(c => c.valor).join(',');\n const total = criterias.reduce((acc, curr) => acc + parseInt(curr.valor), 0);\n\n await Applications.at('update-director-score').post({\n idPostulacion,\n idCalificacion,\n recomendaciones,\n total,\n idCriterios,\n valores,\n });\n onClose({ reload: true });\n }\n\n render() {\n const {\n criterias,\n recomendaciones,\n equivalencia,\n } = this.state;\n\n const { classes, editable } = this.props;\n const total = criterias.reduce((acc, curr) => acc + parseInt(curr.valor), 0);\n // eslint-disable-next-line\n const totalEquivalence = Object.keys(gradeEquivalences).find((key) => {\n const range = gradeEquivalences[key];\n if (total >= range[0] && total <= range[1]) return key;\n });\n const invalid = criterias.reduce((acc, curr) => acc || Boolean(curr.error), false);\n return (\n
\n \n
\n \n \n \n Criterios\n Calificación\n \n \n \n {\n criterias.map((criterio) => {\n return (\n \n \n {criterio.descripcion}\n \n \n \n {\n criterio.error\n && (\n \n El valor ingresado no es válido.\n \n )\n }\n \n \n );\n })\n }\n \n
\n
\n \n \n CALIFICACION\n \n \n \n Puntaje total\n \n \n \n \n {total}\n \n \n \n \n CALIFICACION EQUIVALENTE\n {equivalencia && equivalencia.length > 0 && }}\n >\n \n \n \n \n \n \n Puntaje total calculado según la tabla de equivalencias\n \n \n \n \n {totalEquivalence}\n \n \n \n\n \n \n \n RECOMENDACIONES\n \n \n \n \n\n
\n {editable && (\n \n \n ENVIAR\n \n )}\n \n );\n }\n}\n\nDirectorInterviewForm.propTypes = {\n classes: PropTypes.shape().isRequired,\n idPostulacion: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n onClose: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(DirectorInterviewForm);\n","export default theme => ({\n tableHeader: {\n fontWeight: 'bold',\n backgroundColor: theme.palette.background.default,\n },\n detailCell: {\n backgroundColor: theme.palette.background.default,\n },\n spacing: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 0.5,\n },\n lastSpacing: {\n marginTop: 0,\n marginBottom: theme.spacing.unit * 0.5,\n },\n wideInput: {\n width: '50%',\n marginTop: 0,\n },\n submitButton: {\n float: 'right',\n marginTop: theme.spacing.unit * 3,\n },\n errorText: {\n marginTop: 0,\n marginBottom: theme.spacing.unit,\n color: theme.palette.error.main,\n },\n infoIcon: {\n marginLeft: '4px',\n verticalAlign: 'middle',\n fontSize: 17,\n },\n});\n","import React from 'react';\nimport { compose } from 'redux';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Grid } from '@material-ui/core';\nimport AcademicData from '../../student/academic-data';\nimport PersonalInformation from '../../student/personal-information';\nimport DirectorInterviewForm from './director-interview-form';\nimport { ROLE_DIRECTOR_ESCUELA } from '../../../../constants/roles';\n\n/**\n * Component to display details and form during the director interview. I uses the components listed bellow.\n * @see PersonalInformation\n * @see AcademicInformation\n * @see DirectorInterviewForm\n *\n * @class DirectorInterview\n * @extends {React.Component}\n * @category Screens\n */\nconst DirectorInterview = (props) => {\n const { classes, userId, idPostulacion, onClose, role, idEscuela } = props;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles\n */\nDirectorInterview.propTypes = {\n classes: PropTypes.shape({}).isRequired,\n userId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n idPostulacion: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n onClose: PropTypes.func,\n};\n\nDirectorInterview.defaultProps = {\n onClose: () => null,\n};\n\nexport default compose(\n withStyles(),\n)(DirectorInterview);\n","import React from 'react';\nimport { withStyles, TextField, InputAdornment, IconButton } from '@material-ui/core';\nimport SaveIcon from '@material-ui/icons/Save';\nimport EditIcon from '@material-ui/icons/Edit';\nimport { Applications } from '../../api';\n\n/**\n * Component to handle a custom input inside a table.\n *\n * @class InputCell\n * @extends {React.Component}\n * @memberof GestionPostulaciones.MobilityOut-ApplicationsManagement\n * @category Screens\n */\nclass InputCell extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n edit: false,\n };\n }\n\n static getDerivedStateFromProps = (props, state) => {\n if (props.value !== state.value && !state.edit) {\n return {\n value: props.value,\n };\n }\n }\n\n handleChange = (event) => {\n this.setState({ value: event.target.value });\n }\n\n handleSubmit = (event) => {\n event.preventDefault();\n const { idCalificacion, reload } = this.props;\n const { value } = this.state;\n Applications.at('update-statement').post({\n idCalificacion,\n calificacion: true,\n conformidad: true,\n puntaje: parseFloat(value),\n archivo: '',\n observaciones: '',\n }).then(() => {\n this.setState({ edit: false });\n reload();\n }).catch((error) => {\n // Show error\n });\n }\n\n handleClick = (e) => {\n e.stopPropagation();\n setTimeout(() => this.setState({ edit: true }), 100);\n }\n\n render() {\n const { classes, maxValue, isRK } = this.props;\n const { value, edit } = this.state;\n return (\n
\n \n {edit ? (\n \n \n \n ) : (\n \n \n \n )}\n \n ),\n inputProps: { min: 0, max: maxValue, step: 'any' },\n }}\n />\n \n );\n }\n}\n\nexport default withStyles()(InputCell);\n","import React from \"react\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { CsvBuilder } from \"filefy\";\n\nimport classNames from \"classnames\";\nimport {\n Dialog,\n DialogContent,\n Button,\n withStyles,\n Paper,\n IconButton,\n} from \"@material-ui/core\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\nimport AskRecomendation from \"../recomendations/ask-recomendation\";\n\nimport Header from \"../../components/custom-header\";\nimport Approval from \"../common/non-student/approval\";\nimport {\n TableToolbar,\n HorizontalStepper,\n DialogHeader,\n ActionsTable,\n} from \"../../components\";\nimport { Applications, MenuApp } from \"../../api\";\nimport applicationsActions from \"../../store/applications/actions\";\nimport {\n ROLE_DRIC,\n ROLE_PSICOPEDAGOGICO,\n ROLE_DIRECTOR_ESCUELA,\n ROLE_DIRECTOR_PREGRADO,\n ROLE_DIRECTOR_GESTION_ACADEMICA,\n ROLE_ASISTENTE_DRIC,\n STUDENT_ROLES,\n} from \"../../constants/roles\";\nimport DirectorInterview from \"../common/non-student/director-interview\";\nimport InputCell from \"./input-cell\";\n\nimport AgreementsList from \"../agreements-list\";\nimport ApplicationInfo from \"../application-info\";\nimport Interviews from \"../interviews\";\nimport Results from \"../results\";\nimport AdditionalTasks from \"../additional-tasks\";\nimport Dictum from \"../dictum\";\nimport { getFieldValue } from \"../../utils\";\nimport styles from \"./styles\";\nimport IntentionLetter from \"../intention-letter\";\nimport CommitmentAct from \"../application-info/commitment-act\";\nimport AdditionalDocumentation from \"../application-info/additional-documentation\";\n\nlet superColumns = [\n {\n id: 0,\n title: \"Entrevistas\",\n columnIds: [4, 5, 6],\n },\n { id: 1, title: \"Puntaje\", columnIds: [7, 8, 9, 10, 11] },\n { id: 2, title: \"Calificación\", columnIds: [16, 17, 18] },\n { id: 3, title: \"Requisitos\", columnIds: [12, 13, 14, 15] },\n];\n\nconst STICKY_COLUMNS_WIDTH = 100;\nconst interviewIds = [1, 2];\nconst calificationIds = [8, 9, 10];\nconst calificationIdsWithIcon = calificationIds.concat(interviewIds);\n\n// Get the the role that corresponds to an specific idCalificacion\nconst getCalificationRole = (idCalificacion) => {\n if (idCalificacion === 1 || idCalificacion === 8) {\n return ROLE_DRIC;\n }\n switch (idCalificacion) {\n case 2:\n return ROLE_PSICOPEDAGOGICO;\n case 3:\n return ROLE_DIRECTOR_ESCUELA;\n case 9:\n return ROLE_DIRECTOR_PREGRADO;\n case 10:\n return ROLE_DIRECTOR_GESTION_ACADEMICA;\n default:\n return 0;\n }\n};\n\n// Get the field of an application according to an idEvaluacion\nconst getFieldByidEvaluacion = (idEvaluacion) => {\n switch (idEvaluacion) {\n case 1:\n return \"Entrevista con DRIC\";\n case 2:\n return \"Entrevista con Psicólogo\";\n case 3:\n return \"Entrevista con Director\";\n case 4:\n return \"Vida Universitaria\";\n case 5:\n return \"Promedio\";\n case 6:\n return \"3era Matrícula\";\n case 7:\n return \"recomendacion\";\n case 8:\n return \"DRIC\";\n case 9:\n return \"DPE\";\n case 10:\n return \"DGA\";\n default:\n return null;\n }\n};\n\n// Custom filter function for some columns\nconst customFilterColumn = (term, rowData, idEvaluacion) => {\n const calificacion = rowData.calificaciones.find(\n (item) => item.idEvaluacion === idEvaluacion\n );\n // eslint-disable-next-line\n return calificacion.puntaje == term;\n};\n\n// Custom filter function for dictamen column\nconst filterDictamenColumn = (term, rowData, applications) => {\n const application = applications.find(\n (item) => item.idPostulacion === rowData.idPostulacion\n );\n return (\n application.dictamen &&\n term &&\n application.dictamen.toLowerCase().includes(term.toLowerCase())\n );\n};\n\n/**\n * Component to handle the management of the applications\n * @class MobilityOut-ApplicationsManagement\n * @extends {React.Component}\n * @memberof GestionPostulaciones\n * @category Screens\n */\nclass ApplicationsManagement extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showApproval: false,\n showDirectorInterview: false,\n selectedApplication: null,\n selectedApplicationRow: null,\n isCalification: false,\n applications: [],\n activeStep: 0,\n steps: [],\n currentApplication: {},\n idUsuario: null,\n showLetter: false,\n showRecommendation: false,\n commitmentAct: false,\n showAdditionalDocumentation: false,\n myApplication: {},\n };\n\n this.actionsTableRef = React.createRef();\n this.stepperRef = React.createRef();\n\n /* Rows that are React components must be mapped to a legible value.\n The key is the idEvaluacion rowField is the name of the row and calificationField\n is the legible value. calificationField can be found in rowData.calificaciones.\n */\n this.calificationsMap = {\n 1: { rowField: \"Entrevista con DRIC\", calificationField: \"calificacion\" },\n 2: {\n rowField: \"Entrevista con Psicólogo\",\n calificationField: \"calificacion\",\n },\n 3: { rowField: \"Entrevista con Director\", calificationField: \"puntaje\" },\n 4: { rowField: \"Vida Universitaria\", calificationField: \"puntaje\" },\n 8: { rowField: \"DRIC\", calificationField: \"calificacion\" },\n 9: { rowField: \"DPE\", calificationField: \"calificacion\" },\n 10: { rowField: \"DGA\", calificationField: \"calificacion\" },\n };\n\n this.columns = [\n {\n columnId: 0,\n title: \"Estudiante\",\n field: \"estudiante\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 1,\n title: \"Código\",\n field: \"codigo\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 2,\n title: \"Estado\",\n field: \"estado\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 26,\n title: \"Escuela\",\n field: \"escuela\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 27,\n title: \"Beca\",\n field: \"beca\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 28,\n title: \"Semestre\",\n field: \"semestre\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 29,\n title: \"Correo\",\n field: \"correo\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 30,\n title: \"Nro. de Documento\",\n field: \"nroDocumento\",\n rowSpan: 2,\n superColumn: null,\n },\n {\n columnId: 31,\n title: \"Teléfono\",\n field: \"telefono\",\n rowSpan: 2,\n superColumn: null,\n },\n /*requisitos*/\n {\n columnId: 12,\n title: \"Carta de Intención\",\n field: \"cartaIntencion\",\n rowSpan: 2,\n superColumn: 3,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 13,\n title: \"Recomendación de docente\",\n field: \"recomendacionDocente\",\n rowSpan: 2,\n superColumn: 3,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 14,\n title: \"Autorización notarial de padre o apoderado\",\n field: \"autorizacionNotarial\",\n rowSpan: 2,\n superColumn: 3,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 15,\n title: \"Documentación Adicional (Opcional)\",\n field: \"documentacionAdicional\",\n rowSpan: 2,\n superColumn: 3,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 4,\n title: \"DRIC\",\n field: \"Entrevista con DRIC\",\n superColumn: 0,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 5,\n title: \"Psicólogo\",\n field: \"Entrevista con Psicólogo\",\n superColumn: 0,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 6,\n title: \"Director\",\n field: \"Entrevista con Director\",\n superColumn: 0,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n customFilterAndSearch: (term, rowData) =>\n customFilterColumn(term, rowData, 3),\n },\n {\n columnId: 7,\n title: \"Vida Universitaria\",\n field: \"Vida Universitaria\",\n superColumn: 1,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n customFilterAndSearch: (term, rowData) =>\n customFilterColumn(term, rowData, 4),\n },\n {\n columnId: 8,\n title: \"Rendimiento\",\n field: \"Promedio\",\n superColumn: 1,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n },\n {\n columnId: 9,\n title: \"2da Matrícula\",\n field: \"3era Matrícula\",\n superColumn: 1,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n },\n {\n columnId: 10,\n title: \"Recomendación\",\n field: \"recomendacion\",\n superColumn: 1,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n },\n {\n columnId: 11,\n title: \"Total\",\n field: \"total\",\n superColumn: 1,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\", fontWeight: \"bold\" },\n },\n /*** */\n {\n columnId: 16,\n title: \"DRIC\",\n field: \"DRIC\",\n superColumn: 2,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 17,\n title: \"DPE\",\n field: \"DPE\",\n superColumn: 2,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 18,\n title: \"DGA\",\n field: \"DGA\",\n superColumn: 2,\n hidden: props.role === ROLE_PSICOPEDAGOGICO,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n\n {\n columnId: 19,\n title: \"Dictamen\",\n field: \"dictamen\",\n rowSpan: 2,\n superColumn: null,\n cellStyle: { textAlign: \"center\" },\n customFilterAndSearch: (term, rowData) =>\n filterDictamenColumn(term, rowData, this.state.initialApplications),\n },\n {\n columnId: 20,\n title: \"Pais Region\",\n field: \"paisRegion\",\n rowSpan: 2,\n superColumn: null,\n hidden: true,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 21,\n title: \"Convenio\",\n field: \"convenio\",\n rowSpan: 2,\n superColumn: null,\n hidden: true,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 22,\n title: \"Tipo Beca\",\n field: \"tipoBeca\",\n rowSpan: 2,\n superColumn: null,\n hidden: true,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 23,\n title: \"Vacantes\",\n field: \"vacantes\",\n rowSpan: 2,\n superColumn: null,\n hidden: true,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n {\n columnId: 24,\n title: \"Vacantes Disponibles\",\n field: \"vacantesDisponibles\",\n rowSpan: 2,\n superColumn: null,\n hidden: true,\n cellStyle: { textAlign: \"center\" },\n filtering: false,\n },\n ];\n\n this.actions = [\n {\n tooltip: \"Ver\",\n icon: VisibilityIcon,\n onClick: this.onClickApplication,\n headerStyle: { backgroundColor: \"#F6CED8\", textAlign: \"center\" },\n },\n ];\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see Postula.IntentionLetter\n * @see Postula.AskRecomendation\n * @see Postula.CommitmentAct\n * @see Postula.AdditionalDocumentation\n * @memberof Postula.ApplicationRequirements\n */\n\n async componentDidMount() {\n this.fetchData();\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { currentCall, applicationState, myTasks } = this.props;\n const isAnotherCall = prevProps.currentCall !== currentCall;\n const isAnotherState = prevProps.applicationState !== applicationState;\n const myTasksHasChanged = prevProps.myTasks !== myTasks;\n if (isAnotherCall || isAnotherState || myTasksHasChanged) {\n this.fetchData();\n }\n if (prevState.steps.length === 0 && this.state.steps.length !== 0) {\n this.scrollIntoStepper();\n }\n }\n\n scrollIntoStepper = () => {\n this.stepperRef.current.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\",\n });\n };\n\n fetchData = async () => {\n const {\n applicationType,\n currentCall,\n applicationState,\n myTasks,\n role,\n classes,\n } = this.props;\n\n // when starting, not trigger the request unless all parameters are valid.\n const idTipoValid = Number.isFinite(parseInt(applicationType));\n const idConvocatoriaValid = Number.isFinite(parseInt(currentCall));\n const estadoValid = Number.isFinite(parseInt(applicationState));\n const myTasksValid = typeof myTasks === \"boolean\";\n\n if (!idTipoValid || !idConvocatoriaValid || !estadoValid || !myTasksValid)\n return;\n\n const payload = await Applications.at(\"get-applications\").post({\n idTipo: applicationType,\n idConvocatoria: currentCall,\n estado: applicationState,\n misTareas: myTasks,\n });\n const { resultado } = payload;\n const applications = resultado.map((entry) => {\n const application = { ...entry };\n application.cartaIntencion = (\n {\n let applicationWithTableData = entry;\n applicationWithTableData.tableData = {};\n if (typeof this.actionsTableRef.current.props !== \"undefined\") {\n applicationWithTableData =\n this.actionsTableRef.current.props.data.find(\n (item) => item.idPostulacion === entry.idPostulacion\n );\n }\n this.onClickRequirement(6, applicationWithTableData);\n }}\n >\n \n \n );\n application.recomendacionDocente = (\n {\n let applicationWithTableData = entry;\n applicationWithTableData.tableData = {};\n if (typeof this.actionsTableRef.current.props !== \"undefined\") {\n applicationWithTableData =\n this.actionsTableRef.current.props.data.find(\n (item) => item.idPostulacion === entry.idPostulacion\n );\n }\n this.onClickRequirement(7, applicationWithTableData);\n }}\n >\n \n \n );\n application.autorizacionNotarial = (\n {\n let applicationWithTableData = entry;\n applicationWithTableData.tableData = {};\n if (typeof this.actionsTableRef.current.props !== \"undefined\") {\n applicationWithTableData =\n this.actionsTableRef.current.props.data.find(\n (item) => item.idPostulacion === entry.idPostulacion\n );\n }\n this.onClickRequirement(8, applicationWithTableData);\n }}\n >\n \n \n );\n application.documentacionAdicional = (\n {\n let applicationWithTableData = entry;\n applicationWithTableData.tableData = {};\n if (typeof this.actionsTableRef.current.props !== \"undefined\") {\n applicationWithTableData =\n this.actionsTableRef.current.props.data.find(\n (item) => item.idPostulacion === entry.idPostulacion\n );\n }\n this.onClickRequirement(9, applicationWithTableData);\n }}\n >\n \n \n );\n if (role === ROLE_DRIC) {\n application.dictamen = (\n \n {\n let applicationWithTableData = entry;\n applicationWithTableData.tableData = {};\n if (typeof this.actionsTableRef.current.props !== \"undefined\") {\n applicationWithTableData =\n this.actionsTableRef.current.props.data.find(\n (item) => item.idPostulacion === entry.idPostulacion\n );\n }\n this.onClickApplication({}, applicationWithTableData, true);\n }}\n className={classes.fontSizeSmall}\n >\n {entry.dictamen}\n \n \n \n );\n }\n let total = 0;\n entry.calificaciones.forEach((grade) => {\n const { idCalificacion, idEvaluacion } = grade;\n const needIcon = calificationIdsWithIcon.find(\n (val) => val === idEvaluacion\n );\n if (needIcon) {\n let calificationRole = getCalificationRole(idEvaluacion);\n if (calificationRole === ROLE_DRIC && role === ROLE_ASISTENTE_DRIC) {\n calificationRole = ROLE_ASISTENTE_DRIC;\n }\n const data = {\n idEvaluacion,\n idCalificacion,\n archivo: \"\",\n nombre: entry.estudiante,\n email: entry.email,\n observaciones: grade.observaciones,\n readOnly: role !== calificationRole,\n };\n application[getFieldByidEvaluacion(idEvaluacion)] = this.getIcon(\n grade.estado,\n calificationRole,\n role,\n data\n );\n } else if (\n (role === ROLE_DRIC || role === ROLE_ASISTENTE_DRIC) &&\n grade.idEvaluacion === 4\n ) {\n total += grade.puntaje;\n application[getFieldByidEvaluacion(idEvaluacion)] = (\n \n );\n } else if (\n (role === ROLE_DRIC || role === ROLE_ASISTENTE_DRIC) &&\n grade.idEvaluacion === 5\n ) {\n total += grade.puntaje;\n application[getFieldByidEvaluacion(idEvaluacion)] = (\n \n );\n } else if (grade.idEvaluacion === 3) {\n total += grade.puntaje;\n if (\n !STUDENT_ROLES.includes(role) &&\n grade.estado !== \"No se presento\"\n ) {\n application[getFieldByidEvaluacion(idEvaluacion)] = (\n \n {\n this.setState({\n selectedApplication: entry,\n showDirectorInterview: true,\n });\n }}\n >\n {grade.puntaje}\n \n \n \n );\n } else if (grade.estado !== \"No se presento\") {\n application[getFieldByidEvaluacion(idEvaluacion)] = (\n \n {grade.puntaje}\n {grade.estado === \"Revisado\" && }\n \n );\n } else {\n application[getFieldByidEvaluacion(idEvaluacion)] = ;\n }\n } else {\n total += grade.puntaje;\n if (\n grade.idEvaluacion === 5 &&\n grade.observaciones === \"RK\" &&\n grade.puntaje === 0\n ) {\n application[getFieldByidEvaluacion(idEvaluacion)] = \"RK\";\n } else {\n application[getFieldByidEvaluacion(idEvaluacion)] = grade.puntaje;\n }\n }\n });\n application.total = total;\n return application;\n });\n this.setState({\n initialApplications: payload.resultado,\n applications,\n });\n };\n\n getIcon = (status, role, actualRole, data) => {\n if (\n status === \"Pendiente\" &&\n (role === actualRole ||\n ((actualRole === ROLE_DRIC || actualRole === ROLE_ASISTENTE_DRIC) &&\n interviewIds.includes(data.idEvaluacion)))\n ) {\n return (\n {\n const isCalification = calificationIds.find(\n (val) => val === data.idEvaluacion\n );\n data.role = getCalificationRole(data.idEvaluacion);\n data.conformidad = false;\n this.setState({\n showApproval: true,\n isCalification,\n approvalData: data,\n });\n }}\n >\n \n \n );\n }\n if (status === \"Cumplido\") {\n return (\n {\n const isCalification = calificationIds.find(\n (val) => val === data.idEvaluacion\n );\n data.role = getCalificationRole(data.idEvaluacion);\n data.readOnly = true;\n data.conformidad = true;\n this.setState({\n showApproval: true,\n isCalification,\n approvalData: data,\n });\n }}\n >\n \n \n );\n }\n return \"\";\n };\n\n handleClose =\n (name) =>\n ({ reload = false } = {}) => {\n this.setState(\n {\n [name]: false,\n },\n () => {\n if (reload) {\n this.fetchData();\n }\n }\n );\n };\n\n onClickApplication = (event, application, isDictum = false) => {\n const { dispatch } = this.props;\n const { idPostulacion, idUsuario, idEscuela, modalidad } = application;\n this.setState({ idUsuario, selectedApplicationRow: application });\n try {\n MenuApp.at(\"get-steps\")\n .post({ idPostulacion })\n .then((menuResponse) => {\n const { resultado: steps } = menuResponse;\n const activeSteps = steps.filter((step) => step.estado === true);\n // idStep for first step is 10\n const FIRST_STEP_ID = 10;\n let newActiveStep =\n activeSteps.length > 0\n ? activeSteps[activeSteps.length - 1].idStep\n : FIRST_STEP_ID;\n if (isDictum) {\n newActiveStep = 13;\n }\n if (idPostulacion !== null) {\n dispatch(\n applicationsActions.setApplication({\n idPostulacion,\n idEscuela,\n isVirtual: modalidad === \"V\",\n })\n );\n dispatch(\n applicationsActions.requestApplication({\n idPostulacion,\n isVirtual: modalidad === \"V\",\n })\n );\n }\n dispatch(applicationsActions.setStepper(steps));\n this.setState(\n { steps, activeStep: newActiveStep },\n this.scrollIntoStepper\n );\n });\n } catch (error) {\n console.log(\"Error\", error);\n }\n };\n\n onClickRequirement(idRequisito, application) {\n this.setState({ myApplication: application }, () => {\n if (idRequisito == 6) {\n this.setState({ showLetter: true });\n }\n if (idRequisito == 7) {\n this.setState({ showRecommendation: true });\n }\n if (idRequisito == 8) {\n this.setState({ commitmentAct: true });\n }\n if (idRequisito == 9) {\n this.setState({ showAdditionalDocumentation: true });\n }\n });\n }\n\n handleStepNavigation = (step) => {\n this.setState({\n activeStep: step.idStep,\n });\n };\n\n formatData = (rowData) => {\n const { initialApplications } = this.state;\n\n Object.keys(this.calificationsMap).forEach((key) => {\n // eslint-disable-next-line\n const calification = rowData.calificaciones.find(\n (item) => item.idEvaluacion == key\n );\n\n let exportVal = \"-\";\n if (calification) {\n exportVal = calification[this.calificationsMap[key].calificationField];\n\n if (key >= 1 && key <= 2) {\n // Case of DRIC and Psicólogo interviews\n exportVal = exportVal ? \"Ok\" : \"X\";\n } else if (key >= 8 && key <= 10) {\n // Case of DRIC, DPE and DGA califications\n exportVal = exportVal ? \"Apto\" : \"No Apto\";\n }\n }\n\n rowData[this.calificationsMap[key].rowField] = exportVal;\n });\n // Handle the case of Dictamen row that is also a React Component (Button)\n const application = initialApplications.find(\n (item) => item.codigoPersona === rowData.codigoPersona\n );\n if (application) rowData.dictamen = application.dictamen;\n return rowData;\n };\n\n render() {\n const { role, classes } = this.props;\n const {\n showApproval,\n applications,\n isCalification,\n approvalData,\n selectedApplication,\n showDirectorInterview,\n activeStep,\n steps,\n idUsuario,\n selectedApplicationRow,\n showLetter,\n showRecommendation,\n myApplication,\n commitmentAct,\n showAdditionalDocumentation,\n } = this.state;\n\n superColumns = superColumns.map((item, index) => {\n if (index === 0) {\n return {\n ...item,\n headerStyle: { backgroundColor: \"#D8F6CE\", textAlign: \"center\" },\n };\n }\n if (index === 1) {\n return {\n ...item,\n headerStyle: { backgroundColor: \"#CEF6F5\", textAlign: \"center\" },\n };\n }\n if (index === 2) {\n return {\n ...item,\n headerStyle: { backgroundColor: \"#D8CEF6\", textAlign: \"center\" },\n };\n }\n if (index === 3) {\n return {\n ...item,\n headerStyle: { backgroundColor: \"#CEE3F6\", textAlign: \"center\" },\n };\n }\n });\n this.columns = this.columns.map((item, index) => {\n if (item.superColumn !== null) {\n return {\n ...item,\n headerStyle: {\n backgroundColor:\n superColumns[item.superColumn].headerStyle.backgroundColor,\n textAlign: \"center\",\n },\n };\n }\n if (index >= 0 && index <= 4) {\n return {\n ...item,\n headerStyle: {\n backgroundColor: \"#F5F6CE\",\n textAlign: \"center\",\n minWidth: `${STICKY_COLUMNS_WIDTH}px`,\n position: \"sticky\",\n left: `${index * STICKY_COLUMNS_WIDTH}px`,\n zIndex: 11,\n },\n cellStyle: {\n backgroundColor: \"#FFFFFF\",\n position: \"sticky\",\n left: `${index * STICKY_COLUMNS_WIDTH}px`,\n zIndex: 11,\n },\n filterCellStyle: {\n backgroundColor: \"#FFFFFF\",\n position: \"sticky\",\n left: `${index * STICKY_COLUMNS_WIDTH}px`,\n zIndex: 11,\n },\n };\n }\n if (index >= 5 && index <= 8) {\n return {\n ...item,\n headerStyle: { backgroundColor: \"#F5F6CE\", textAlign: \"center\" },\n };\n }\n if (index === 18) {\n return {\n ...item,\n headerStyle: { backgroundColor: \"#F6CEF5\", textAlign: \"center\" },\n };\n }\n return {\n ...item,\n headerStyle: { backgroundColor: \"#eeeeee\", textAlign: \"center\" },\n };\n });\n\n return (\n \n \n \n {\n const headerProps = {\n ...props,\n superColumns,\n };\n return
;\n },\n }}\n selectedRow={selectedApplicationRow}\n options={{\n canSearch: true,\n canFilterColumns: true,\n canPrint: true,\n showTitle: true,\n canSelect: true,\n }}\n materialTableOptions={{\n exportFileName: \"Puntajes_de_Postulación\",\n exportCsv: (columns, data) => {\n const columnsToExport = columns.filter((columnDef) => {\n return (\n !columnDef.hidden && columnDef.field && !columnDef.export\n );\n });\n const dataToExport = data.map((rowData) => {\n return columnsToExport.map((columnDef) =>\n getFieldValue(this.formatData(rowData), columnDef)\n );\n });\n const builder = new CsvBuilder(\"Puntajes_de_Postulación.csv\");\n builder\n .setDelimeter(\",\")\n .setColumns(\n columnsToExport.map((columnDef) => columnDef.title)\n )\n .addRows(dataToExport)\n .exportFile();\n this.fetchData();\n },\n }}\n printFormat={(data) =>\n data.map((rowData) => this.formatData(rowData))\n }\n actions={this.actions}\n actionsTitle=\"Ver\"\n />\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n return step.idStep === activeStep;\n })}\n navigateWithNoRestriction={\n role === ROLE_DRIC || role === ROLE_ASISTENTE_DRIC\n }\n onClick={this.handleStepNavigation}\n />\n {(() => {\n switch (activeStep) {\n case 10:\n return ;\n case 11:\n return (\n \n );\n case 12:\n return (\n \n );\n case 13:\n return role === ROLE_DRIC ? (\n \n ) : (\n \n );\n case 14:\n return (\n \n );\n default:\n return null;\n }\n })()}\n \n \n \n \n \n \n \n \n \n {selectedApplication && (\n \n )}\n \n \n \n );\n }\n}\n\nexport default compose(\n connect((s) => ({\n role: s.session.role.idRol,\n })),\n withStyles(styles)\n)(ApplicationsManagement);\n\n","export default theme => ({\n textField: {\n marginTop: theme.spacing.unit,\n },\n directorInterviewContent: {\n padding: 24,\n },\n customDiv: {\n padding: theme.spacing.unit * 2,\n },\n postulacionContainer: {\n [theme.breakpoints.only('xs')]: {\n marginBottom: 32,\n },\n },\n fontSizeSmall: {\n fontSize: '10px',\n },\n});\n","import React from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\n\nimport {\n withStyles,\n TextField,\n MenuItem,\n Grid,\n Checkbox,\n FormControlLabel,\n FormControl,\n} from '@material-ui/core';\n\nimport MobilityInManagement from '../mobility-in/applications-management';\nimport MobilityOutManagement from '../out-applications-management';\n\nimport { Mobility } from '../../api';\nimport styles from './styles';\n\nconst MOBILITY_IN_TYPE_ID = 1;\n\n/**\n * Groups all the class and functional components related to the GestionPostulaciones screen.\n * @see {@link ApplicationsManagement} main component\n * @namespace GestionPostulaciones\n * @category Screens\n */\n\n/**\n * @classdesc Main component of {@link GestionPostulaciones} screen that handles the management of the applications\n * @class ApplicationsManagement\n * @extends {React.Component}\n * @category Screens\n */\nclass ApplicationsManagement extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n types: [],\n actualType: '',\n calls: [],\n actualCall: '',\n applicationStates: [],\n actualApplicationState: '',\n myTasks: false,\n };\n }\n\n async componentDidMount() {\n const typesPayload = await Mobility.at('get-mobility-types').post();\n const { resultado: types } = typesPayload;\n const actualType = types && types[0] && types[0].id;\n this.setState({ actualType, types });\n const callsPayload = await Mobility.at('get-calls-list').post({\n idTipo: actualType,\n });\n const { resultado: calls } = callsPayload;\n const actualCall = calls && calls[0] && calls[0].idConvocatoria;\n this.setState({\n calls,\n actualCall,\n });\n const applicationStatesPayload = await Mobility.at('get-application-states').post({\n idTipo: actualType,\n });\n let { resultado: applicationStates } = applicationStatesPayload;\n applicationStates = [{ id: 0, nombre: 'Todos' }, ...applicationStates];\n const actualApplicationState = applicationStates[0].id;\n this.setState({\n applicationStates,\n actualApplicationState,\n });\n }\n\n handleChange = name => (event) => {\n let { value } = event.target;\n if (name === 'myTasks') {\n value = event.target.checked;\n }\n this.setState({ [name]: value }, async () => {\n if (name === 'actualType') {\n const callsPayload = await Mobility.at('get-calls-list').post({\n idTipo: event.target.value,\n });\n const { resultado: calls } = callsPayload;\n const actualCall = calls && calls[0] && calls[0].idConvocatoria;\n this.setState({\n calls,\n actualCall,\n });\n const applicationStatesPayload = await Mobility.at('get-application-states').post({\n idTipo: event.target.value,\n });\n let { resultado: applicationStates } = applicationStatesPayload;\n applicationStates = [{ id: 0, nombre: 'Todos' }, ...applicationStates];\n const actualApplicationState = applicationStates[0] && applicationStates[0].id;\n this.setState({\n applicationStates,\n actualApplicationState,\n });\n }\n });\n }\n\n renderFilters = () => {\n const { classes } = this.props;\n const {\n types,\n actualType,\n calls,\n actualCall,\n applicationStates,\n actualApplicationState,\n myTasks,\n } = this.state;\n return (\n \n \n \n \n {types.map((type, index) => (\n {type.nombre}\n ))}\n \n \n \n \n {calls.map((call, index) => (\n {call.nombre}\n ))}\n \n \n \n \n {applicationStates.map((state, index) => (\n {state.nombre}\n ))}\n \n \n \n \n \n )}\n label=\"Mis Tareas\"\n />\n \n \n \n \n );\n }\n\n /**\n * Handles the rendering of the component using the components listed below.\n * @see GestionPostulaciones.MobilityOut-ApplicationsManagement\n * @see GestionPostulaciones.MobilityIn-ApplicationsManagement\n * @memberof ApplicationsManagement\n */\n render() {\n const { classes, ...otherProps } = this.props;\n const {\n actualType,\n actualCall,\n actualApplicationState,\n myTasks,\n } = this.state;\n\n return (\n \n \n {\n actualType === MOBILITY_IN_TYPE_ID\n ? (\n \n )\n : (\n \n )\n }\n \n \n );\n }\n}\n\nexport default compose(\n connect(s => ({\n role: s.session.role.idRol,\n })),\n withStyles(styles),\n)(ApplicationsManagement);\n","export default theme => ({\n textField: {\n marginTop: theme.spacing.unit,\n },\n directorInterviewContent: {\n padding: 24,\n },\n customDiv: {\n padding: theme.spacing.unit * 2,\n },\n postulacionContainer: {\n [theme.breakpoints.only('xs')]: {\n marginBottom: 32,\n },\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { indexOf, find } from 'lodash';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n CssBaseline,\n} from '@material-ui/core';\n\nimport messagesActions from '../../store/messages/actions';\nimport messagesSelectors from '../../store/messages/selectors';\nimport sessionSelectors from '../../store/session/selectors';\nimport alertsSelectors from '../../store/alerts/selectors';\nimport applicationsSelectors from '../../store/applications/selectors';\nimport sessionActions from '../../store/session/actions';\n\nimport {\n ProtectedRoute,\n NotificationMessage,\n HeaderSideNav,\n} from '../../components';\n\nimport CallRouter from '../call-router';\nimport Profile from '../../screens/profile';\nimport Reports from '../../screens/reports';\nimport CallsManagement from '../../screens/calls-management';\nimport AgreementsManagement from '../../screens/agreements-management';\nimport Dictum from '../../screens/dictum';\nimport InManagement from '../../screens/mobility-in/applications-management';\nimport MobilityInProfile from '../../screens/mobility-in/profile';\n\nimport {\n ROLE_ESTUDIANTE,\n ROLE_ESTUDIANTE_EXTRANJERO,\n OUT_ADMIN_ROLES,\n IN_ADMIN_ROLES,\n ROLE_FREEMOVER,\n} from '../../constants/roles';\nimport styles from './styles';\nimport DricManagement from '../../screens/applications-management';\n\n/**\n * Component that handles the navigation inside /app.\n *\n * @class AppRouter\n * @extends {React.Component}\n * @category Components\n */\nclass AppRouter extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n componentDidMount() {\n const {\n fetchMessagesNotifications,\n fetchUserData,\n history,\n role,\n autDatosPersonales,\n } = this.props;\n fetchUserData();\n fetchMessagesNotifications();\n this.redirectToHome();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.location.pathname !== '/app/perfil' && this.props.location !== prevProps.location) {\n this.props.fetchUserData();\n }\n if (this.props.autDatosPersonales !== prevProps.autDatosPersonales) {\n this.redirectToHome();\n }\n }\n\n redirectToHome = () => {\n const {\n history,\n role,\n autDatosPersonales,\n } = this.props;\n const { location } = history;\n if (autDatosPersonales) {\n if (indexOf(OUT_ADMIN_ROLES, role) >= 0) {\n if (location.pathname === '/app') {\n history.replace('/app/administracion');\n }\n } else if (indexOf([ROLE_ESTUDIANTE, ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER], role) >= 0) {\n history.replace('/app/convocatoria');\n } else if (indexOf(IN_ADMIN_ROLES, role) >= 0) {\n history.replace('/app/convocatoria');\n }\n }\n }\n\n render() {\n const {\n classes,\n messageNotifications,\n match,\n role,\n menu,\n history,\n } = this.props;\n\n const reports = find(menu, { titulo: 'Tablero' });\n\n return (\n \n
\n \n \n
\n
\n {\n messageNotifications\n .map(not => )\n }\n {\n indexOf([ROLE_ESTUDIANTE_EXTRANJERO, ROLE_FREEMOVER], role) >= 0\n ? \n : \n }\n \n \n {reports && }\n \n \n \n {\n indexOf([\n ROLE_ESTUDIANTE,\n ROLE_ESTUDIANTE_EXTRANJERO,\n ROLE_FREEMOVER,\n ...IN_ADMIN_ROLES,\n ], role) >= 0 && (\n \n )\n }\n
\n
\n
\n );\n }\n}\n\n/**\n * propTypes\n * @property {object} classes Classes used by styles.\n * @property {object} match Object that contains the actual path.\n * @property {array} messageNotifications Set of notifications to be shown.\n * @property {object} history Object that handles the redirection to other locations.\n * @property {number} role Role of the logged user.\n * @property {func} fetchUserData Function that calls a redux saga to fetch the user information.\n * @property {func} fetchMessagesNotifications Calls a redux saga to fetch the notifications.\n * @property {object} menu Object that contains the actual menu, it comes from the redux store.\n */\nAppRouter.propTypes = {\n classes: PropTypes.shape().isRequired,\n match: PropTypes.shape().isRequired,\n messageNotifications: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n history: PropTypes.shape().isRequired,\n role: PropTypes.number.isRequired,\n fetchUserData: PropTypes.func.isRequired,\n fetchMessagesNotifications: PropTypes.func.isRequired,\n menu: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({})).isRequired, PropTypes.shape({})]),\n};\n\nconst mapStateToProps = state => ({\n session: state.session,\n messageNotifications: messagesSelectors.notificationsSelector(state),\n alertNotifications: alertsSelectors.notificationsSelector(state),\n application: applicationsSelectors.applicationSelector(state),\n role: sessionSelectors.roleSelector(state),\n menu: state.session.menu,\n autDatosPersonales: state.session.userInfo.autDatosPersonales,\n location: state.router.location,\n});\n\nconst mapDispatchToProps = {\n fetchMessagesNotifications: messagesActions.fetchNotifications,\n fetchUserData: sessionActions.fetchUserData,\n};\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(\n withRouter,\n withConnect,\n withStyles(styles),\n)(AppRouter);\n","export default theme => ({\n root: {\n display: 'flex',\n },\n appBarSpacer: theme.mixins.toolbar,\n content: {\n flexGrow: 1,\n padding: theme.spacing.unit * 3,\n height: '100vh',\n overflow: 'auto',\n },\n chartContainer: {\n marginLeft: -22,\n },\n tableContainer: {\n height: 320,\n },\n h5: {\n marginBottom: theme.spacing.unit * 2,\n },\n alertContainer: {\n position: 'absolute',\n top: 32,\n right: 32,\n },\n});\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\nimport {\n Grid,\n Paper,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n withStyles,\n Typography,\n} from '@material-ui/core';\nimport AccountIcon from '@material-ui/icons/AccountCircle';\nimport { logoDefault } from '../../images';\n\nimport styles from './styles';\nimport actions from '../../store/session/actions';\n\nimport { Auth } from '../../api';\n\nclass RolesPicker extends Component {\n constructor(props) {\n super(props);\n this.state = {\n roles: props.location.state ? props.location.state.roles : [],\n };\n }\n\n componentDidMount() {\n const { token, history } = this.props;\n if (typeof token !== 'undefined' && token.length > 0) {\n history.replace('/login');\n }\n }\n\n handleClick = (_, idRol) => {\n const { location, dispatch } = this.props;\n const { requestData } = location.state;\n requestData.rol = idRol;\n\n Auth.at('login').post(requestData).then((payload) => {\n const { resultado: { sessionToken: token } } = payload;\n const role = {\n idRol,\n };\n\n dispatch(actions.loginSuccess({ token, role }));\n });\n }\n\n render() {\n const { classes, location } = this.props;\n const { roles } = this.state;\n const userName = location.state ? location.state.requestData.username : '';\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {userName}\n \n \n \n \n Ingresar como:\n \n \n \n \n {roles.length > 0 && roles.map(role => (\n this.handleClick(e, role.idRol)}\n >\n \n \n \n \n \n ))}\n \n \n \n \n \n \n );\n }\n}\n\nexport default connect(s => ({\n token: s.session.token,\n}))(withStyles(styles)(RolesPicker));\n","export default theme => ({\n '@global body': {\n overflow: 'auto',\n backgroundColor: theme.palette.primary.main,\n },\n loginRedirection: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n [theme.breakpoints.only('xs')]: {\n flexDirection: 'column',\n },\n },\n loginByMail: {\n display: 'flex',\n alignItems: 'center',\n },\n loginContainer: {\n height: '100vh',\n },\n loginLogo: {\n display: 'block',\n },\n paper: {\n padding: 30,\n },\n submit: {\n marginTop: theme.spacing.unit * 3,\n [theme.breakpoints.down('sm')]: {\n paddingLeft: theme.spacing.unit,\n paddingRight: theme.spacing.unit,\n },\n },\n arrowIcon: {\n color: theme.palette.primary.main,\n marginLeft: theme.spacing.unit,\n },\n loginMobileCollapse: {\n boxShadow: 'none',\n border: `1px solid ${theme.palette.secondary.main}`,\n borderRadius: 4,\n '&:before': {\n backgroundColor: 'unset',\n },\n },\n loginMobileCollaspseBtn: {\n margin: '15px 0',\n },\n registerContainer: {\n paddingTop: theme.spacing.unit * 2,\n },\n registerLink: {\n color: theme.palette.primary.main,\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Route } from 'react-router-dom';\nimport { ConnectedRouter } from 'connected-react-router';\nimport { history } from '../store';\nimport alertsSelectors from '../store/alerts/selectors';\nimport { AlertSnackbar, ProtectedRoute } from '../components';\nimport LoginScreen from '../screens/login';\nimport RegisterScreen from '../screens/register';\nimport RecoverPasswordScreen from '../screens/recover-password';\nimport LandingScreen from '../screens/landing';\nimport PaymentScreen from '../screens/payment';\nimport RedirectScreen from '../screens/redirect';\nimport ForeignUserAuth from '../screens/foreign-user-auth';\nimport AcceptRecomendation from '../screens/recomendations/accept-recomendation';\nimport AppRouter from './app';\nimport RolesPicker from '../screens/roles-picker';\n\n// Renders the routers.\nfunction MainRouter(props) {\n const { alertNotifications } = props;\n\n return (\n \n
\n {\n alertNotifications\n .map(msg => )\n }\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n );\n}\n\n/**\n * propTypes\n * @property {array} alertNotifications Set of alerts to be shown.\n */\nMainRouter.propTypes = {\n alertNotifications: PropTypes.arrayOf(PropTypes.shape()).isRequired,\n};\n\nconst mapStateToProps = state => ({\n alertNotifications: alertsSelectors.notificationsSelector(state),\n});\n\nconst withConnect = connect(mapStateToProps);\n\nexport default withConnect(MainRouter);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","// src/i18n.js\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport en from './locales/en.json';\nimport es from './locales/es.json';\n\ni18n\n .use(initReactI18next)\n .init({\n resources: {\n es: { translation: es },\n en: { translation: en },\n },\n lng: 'es', // Idioma por defecto\n fallbackLng: 'es',\n interpolation: {\n escapeValue: false,\n },\n react: {\n useSuspense: false,\n wait: true,\n },\n });\n\nexport default i18n;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\nimport 'typeface-open-sans';\nimport 'moment/locale/es';\nimport * as moment from 'moment';\nimport { materialTheme } from '@ucsp/material';\nimport './index.css';\nimport store from './store';\nimport App from './navigation';\nimport * as serviceWorker from './serviceWorker';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport './assets/fonts/Calibri Regular.ttf';\nimport './i18n';\nimport { I18nextProvider } from 'react-i18next';\nimport i18n from './i18n';\n\nmoment.locale('es');\n\nconst renderApp = () => {\n const Application = (\n {/* Proveemos el contexto de traducción */}\n \n \n \n \n \n \n );\n\n ReactDOM.render(\n Application,\n document.getElementById('root'),\n );\n};\n\nrenderApp();\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.register();\n"],"sourceRoot":""}