{"version":3,"sources":["services/constantsService.js","components/Recaptcha/index.js","store/actions/userAction.js","services/axiosService.js","store/actions/coursesAction.js","store/reducers/coursesReducer.js","store/reducers/userReducer.js","store/index.js","components/UI/InputLabelFloating.js","components/ModalUI/index.js","screens/Login/index.js","components/Loader/index.js","components/RequestForm/index.js","screens/Home/index.js","components/ErrorHandler/index.js","components/NavBar/index.js","screens/ScreensRoot.js","index.js","img/curn-logo-horizontal.png"],"names":["mdToken","window","MOODLE_TOKEN","MOODLE_BASE_URL","MOODLE_GET_USERINFO_PARAMS","MOODLE_GET_COURSES_PARAMS","MOODLE_UNSUBSCRIBE_COURSE","MOODLE_GET_TEACHER_INSTANCE_ENROL","MOODLE_GET_TEACHER_PASSWORD_ENROL","PRINCIPAL_API_URL","PROCESOS_API_URL","recaptchaRef","Recaptcha","props","React","useRef","ref","size","sitekey","setUnauthorized","payload","type","login","data","callback","dispatch","AXIOS_REQUEST","then","resp","per","persona","split","filter","i","length","user","correo","username","procesosToken","token","nombre","apellido","current","executeAsync","verifyCaptchaToken","success","tipo","localStorage","setItem","JSON","stringify","catch","err","endpoint","method","formData","completeUrl","headers","parse","getItem","axios","url","params","response","status","console","log","store","Error","MOODLE_AXIOS_REQUEST","setSubjectsCourses","initialState","coursesList","subjectsList","subjects_courses","tramitReducer","state","action","e","RegExp","test","ASIGNATURA","c","id","a","b","a_json","map","course","subject","forEach","COD_ASIGNATURA","CODIGO_MATERIA","subjects","idnumber","find","Object","keys","userInfo","moodleUserInfo","unauthorized","userReducer","removeItem","location","reload","open","btoa","unescape","encodeURIComponent","allReducers","combineReducers","courses","coursesReducer","thunkHandler","applyMiddleware","thunk","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","InputLabelFloating","className","htmlFor","name","label","ModalUI","closeModal","button","close","setState","modal","onCloseAction","onClosed","openModal","getIcon","this","onClick","Modal","keyboard","backdrop","contentClassName","centered","isOpen","toggle","title","ModalHeader","ModalBody","children","buttons","Button","key","color","text","Component","withRouter","Login","exportToSpreadsheet","fileName","fileType","fileExtension","data1","_head","_body","unshift","workSheet","utils","aoa_to_sheet","workBook","Sheets","cols","SheetNames","excelBuffer","write","bookType","fileData","Blob","saveAs","error","alert","confirmPassword","password","document","getElementById","focus","loader","startLogin","pwd","userEmail","verifyUser","inp_user","verifyAccount","cod","step","entidad","Mail","goBack","handlePasswordKeyUp","keyCode","target","value","handleUseremailKeyUp","errorField","subtitle","auxtext","alt","src","height","onKeyUp","defaultValue","placeholder","disabled","href","style","fontSize","fontWeight","connect","Loader","Fade","in","role","prototype","PropTypes","any","string","RequestForm","getServicesList","dependency","codi_dep","categoriesList","onChangeCategoryField","cat","category","desc_cat","codi_cat","categoriesProcessList","procesos","onChangeProcessField","pro","codi_nodo","process","desc_pro","codi_pro","nodo","camp_nodo","goToProcess","goToProcessPlatform","submitCallback","onSubmit","onChange","required","s","cancelCallback","processPlatformURL","Home","optionsMenuCard","options","DropdownItem","tag","showCourseDetails","confirmUnsubscribeCourse","UncontrolledDropdown","DropdownToggle","caret","DropdownMenu","i_op","cardCourse","activeTab","all","fullname","cardSubject","MATERIA","GRUPO","getPasswordEnrol","enroltype","Promise","resolve","courseSelected","formdata","FormData","append","instanceid","enrolpassword","enrolstatus","content","dangerouslySetInnerHTML","__html","summary","idcourse","unsubscribeCourse","courseid","userId","deleteCourse","setTimeout","onHandleReport","onHandleSelect","printCards","opt","list","subjectCoursesList","borderRadius","top","right","componentDidMount","userInfo_resp","setMoodleUserInfo","setCoursesList","setSubjectsList","Nav","pills","NavItem","NavLink","active","bottom","email_temp","ErrorHandler","reloadChildren","hasError","errorInfo","message","stack","path","navigator","onLine","xmlns","width","fill","classNAme","viewBox","d","NavBar","startLogout","nombreUsuario","emailUsuario","iniciales","logout","logo","nav","left","header","marginBottom","ScreensRoot","basename","exact","component","HomeScreen","to","LoginScreen","position","margin","UncontrolledAlert","ReactDOM","render","module","exports"],"mappings":"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","file":"static/js/main.f5aabb6c.chunk.js","sourcesContent":["/**\r\n * ============================================================================\r\n * PRODUCTION ENVIRONMENT CONSTANS\r\n * ============================================================================\r\n */\r\n\r\nconst mdToken = window.MOODLE_TOKEN;\r\n\r\n// dbb3778e246d379e7ba638a1a77a8209\r\n// MOODLE BASE URL \r\nexport const MOODLE_BASE_URL = `https://aulas.curn.edu.co/webservice/rest/server.php`;\r\nexport const MOODLE_GET_USERINFO_PARAMS = `?wstoken=${mdToken}&wsfunction=core_user_get_users_by_field&moodlewsrestformat=json`;\r\nexport const MOODLE_GET_COURSES_PARAMS = `?wstoken=${mdToken}&wsfunction=core_enrol_get_users_courses&moodlewsrestformat=json`;\r\nexport const MOODLE_UNSUBSCRIBE_COURSE = `?wstoken=${mdToken}&wsfunction=enrol_manual_unenrol_users&moodlewsrestformat=json`;\r\nexport const MOODLE_GET_TEACHER_INSTANCE_ENROL = `?wstoken=${mdToken}&wsfunction=core_enrol_get_course_enrolment_methods&moodlewsrestformat=json`;\r\nexport const MOODLE_GET_TEACHER_PASSWORD_ENROL = `?wstoken=${mdToken}&wsfunction=enrol_self_get_instance_info&moodlewsrestformat=json`;\r\n\r\n// API_PROCESOS BASE URL \r\nexport const AXIS_BASE_URL = `https://axis.curn.edu.co/`;\r\n\r\n// PRINCIPAL BASE URL \r\nexport const PRINCIPAL_API_URL = `https://atlas.curn.edu.co/apiaulas/api/`;\r\n\r\n// API_PROCESOS BASE URL \r\nexport const PROCESOS_API_URL = `${AXIS_BASE_URL}apiprocesos/api/`;\r\n\r\n// RECAPTCHA API KEY \r\nexport const RECAPTCHA_API_KEY = `6LeB0W4UAAAAACXqVNcH-HWzYjcgCw2sY7iMtu0R`;\r\n\r\n/**\r\n * ============================================================================\r\n * DEVELOPMENT ENVIRONMENT CONSTANS\r\n * ============================================================================\r\n */\r\n\r\n\r\n// d64d50612d3221191fe1973362aab1aa","import React from 'react';\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport { RECAPTCHA_API_KEY } from './../../services/constantsService';\r\n\r\nvar recaptchaRef = null;\r\n\r\nexport const onSubmitCaptcha = () => recaptchaRef.current.executeAsync();\r\n\r\nconst Recaptcha = (props) => {\r\n\r\n recaptchaRef = React.useRef();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Recaptcha;","import { AXIOS_REQUEST } from './../../services/axiosService';\r\nimport { PROCESOS_API_URL, AXIS_BASE_URL } from './../../services/constantsService';\r\nimport { onSubmitCaptcha } from './../../components/Recaptcha';\r\n\r\n// =============================================================\r\n// CONST ACTIONS\r\nexport const LOGIN = \"LOGIN\";\r\nexport const LOGOUT = \"LOGOUT\";\r\nexport const UNAUTHORIZED = \"UNAUTHORIZED\";\r\nexport const SET_PROCESS_PLATFORM_URL = \"SET_PROCESS_PLATFORM_URL\";\r\nexport const SET_MOODLE_USER_INFO = \"SET_MOODLE_USER_INFO\";\r\nexport const GO_TO_PROCESS_PLATFORM = \"GO_TO_PROCESS_PLATFORM\";\r\n\r\n// =============================================================\r\n// ACTIONS\r\nexport const logout = payload => ({ payload, type: LOGOUT });\r\nexport const setLogin = () => ({ type: LOGIN });\r\nexport const setUnauthorized = (payload = false) => ({ type: UNAUTHORIZED, payload });\r\nexport const goToProcessPlatform = (payload = {}) => ({ type: GO_TO_PROCESS_PLATFORM, payload });\r\nexport const setMoodleUserInfo = (payload = {}) => ({ type: SET_MOODLE_USER_INFO, payload });\r\n\r\n// =============================================================\r\n// ASYNC ACTIONS\r\n\r\n/**\r\n * Verify if account is institutional\r\n * @param {string} user \r\n */\r\nexport const verifyAccount = (user) => {\r\n return (dispatch) => {\r\n return AXIOS_REQUEST(null, \"get\", null, false, `${AXIS_BASE_URL}apildap/api/ldap/account/${user}`)\r\n }\r\n}\r\n\r\n/**\r\n * Login function for students\r\n * @param {object} data {type: number, username: string, password: string}\r\n */\r\nexport const login = ({ data, callback }) => {\r\n return (dispatch) => {\r\n data.type = 0;\r\n return AXIOS_REQUEST(null, \"post\", data, false, `${PROCESOS_API_URL}auth/token`).then(resp => {\r\n if (resp && resp !== 401) {\r\n var per = resp.persona?.split(\" \").filter(i => !!(i) && i.length > 1);\r\n var user = {\r\n type: data.type,\r\n correo: data.username,\r\n procesosToken: resp.token\r\n }\r\n switch (per.length) {\r\n case 4:\r\n user.nombre = `${per[0]} ${per[1]}`\r\n user.apellido = `${per[2]} ${per[3]}`\r\n break;\r\n case 3:\r\n user.nombre = `${per[0]}`\r\n user.apellido = `${per[1]} ${per[2]}`\r\n break;\r\n\r\n default:\r\n user.nombre = `${per[0]}`\r\n user.apellido = `${per[1]}`\r\n break;\r\n }\r\n\r\n return onSubmitCaptcha().then(token =>\r\n dispatch(verifyCaptchaToken(token)).then(resp => {\r\n if (resp.success) {\r\n return AXIOS_REQUEST(\"auth/token\", \"post\", { username: data.username }, false).then(resp => {\r\n if (!(resp)) {\r\n return false;\r\n }\r\n user.token = resp.token;\r\n user.type = resp.tipo;\r\n localStorage.setItem(\"aulas/user\", JSON.stringify(user));\r\n dispatch(setLogin());\r\n return true;\r\n }).catch(err => {\r\n return false;\r\n })\r\n } else {\r\n return false;\r\n }\r\n }).catch(err => {\r\n return false;\r\n })\r\n )\r\n }\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * Verify a captcha token\r\n * @param {string} token captcha token\r\n */\r\nexport const verifyCaptchaToken = token => {\r\n return (dispatch) => {\r\n return AXIOS_REQUEST(null, \"post\", { token }, false, `${PROCESOS_API_URL}auth/recaptcha`)\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport store from './../store';\r\nimport { setUnauthorized } from './../store/actions/userAction';\r\nimport { PRINCIPAL_API_URL } from './constantsService';\r\n\r\n/**\r\n * Axios API request for users make requets\r\n * @param {String} endpoint // End point of API\r\n * @param {String} method //post, get, put, delete\r\n * @param {any} data Data to send\r\n * @param {boolean} formData if request must be used as formData\r\n * @param {String} completeUrl URL complete \r\n */\r\nexport const AXIOS_REQUEST = (endpoint, method = \"get\", data = null, formData = true, completeUrl = null, token = null) => {\r\n var headers = {\r\n 'Content-Type': 'application/json'\r\n }\r\n if (!!(token)) {\r\n headers['Authorization'] = `Bearer ${token}`;\r\n } else if (JSON.parse(localStorage.getItem(\"aulas/user\"))?.token) {\r\n headers['Authorization'] = `Bearer ${JSON.parse(localStorage.getItem(\"aulas/user\"))?.token || \"\"}`;\r\n }\r\n if (method !== \"get\" && formData) {\r\n headers = {\r\n ...headers,\r\n 'Process-Data': false,\r\n \"Content-Type\": false\r\n }\r\n }\r\n\r\n return axios({\r\n method,\r\n url: completeUrl || `${PRINCIPAL_API_URL}${endpoint}`,\r\n data,\r\n params: (method === \"get\" && !!(data)) ? data : null,\r\n headers\r\n }).then(resp => {\r\n return resp?.data\r\n }).catch(err => {\r\n if (err.response?.status === 401) {\r\n console.log(\"UNAUTHORIZED\")\r\n store.dispatch(setUnauthorized(true));\r\n return false;\r\n }\r\n throw new Error(err);\r\n // return [];\r\n })\r\n}\r\n/**\r\n * Axios API request for users make requets\r\n * @param {String} endpoint // End point of API\r\n * @param {String} method //post, get, put, delete\r\n * @param {any} data Data to send\r\n * @param {boolean} formData if request must be used as formData\r\n * @param {String} completeUrl URL complete \r\n */\r\nexport const MOODLE_AXIOS_REQUEST = (endpoint, method = \"get\", data = null, formData = true, completeUrl = null) => {\r\n\r\n return axios({\r\n method,\r\n url: completeUrl || `${PRINCIPAL_API_URL}${endpoint}`,\r\n data,\r\n params: (method === \"get\" && !!(data)) ? data : null,\r\n }).then(resp => {\r\n console.log({ resp });\r\n return resp?.data\r\n }).catch(err => {\r\n if (err.response?.status === 401) {\r\n console.log(\"UNAUTHORIZED\")\r\n store.dispatch(setUnauthorized(true));\r\n return false;\r\n }\r\n console.log({ err })\r\n throw new Error(err);\r\n })\r\n}\r\n\r\nexport const getParameterByName = (name, url = window.location.href) => {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n}\r\n","import { AXIOS_REQUEST } from './../../services/axiosService';\r\n\r\n// =============================================================\r\n// CONST ACTIONS\r\nexport const SET_COURSES_LIST = \"SET_COURSES_LIST\";\r\nexport const SET_SUBJECTS_LIST = \"SET_SUBJECTS_LIST\";\r\nexport const SET_SUBJECTS_COURSES = \"SET_SUBJECTS_COURSES\";\r\nexport const UNSUBSCRIBE_COURSE = \"UNSUBSCRIBE_COURSE\";\r\n\r\n// =============================================================\r\n// ACTIONS\r\nexport const setCoursesList = payload => ({ payload, type: SET_COURSES_LIST });\r\nexport const setSubjectsList = payload => ({ payload, type: SET_SUBJECTS_LIST });\r\nexport const setSubjectsCourses = payload => ({ payload, type: SET_SUBJECTS_COURSES });\r\nexport const unsubscribeCourse = payload => ({ payload, type: UNSUBSCRIBE_COURSE });\r\n\r\nexport const deleteCourse = (courseid) => {\r\n return (dispatch) => {\r\n dispatch(unsubscribeCourse(courseid));\r\n dispatch(setSubjectsCourses())\r\n };\r\n};\r\n\r\n// =============================================================\r\n// ASYNC ACTIONS\r\n\r\n// export const unsubscribeCourse = ({ userid, courseid, }) => {\r\n// return (dispatch) => {\r\n// return AXIOS_REQUEST.get(`enrol_manual_unenrol_users`)\r\n// };\r\n// };\r\n\r\n\r\n\r\n","import { SET_COURSES_LIST, SET_SUBJECTS_COURSES, SET_SUBJECTS_LIST, UNSUBSCRIBE_COURSE } from '../actions/coursesAction';\r\n\r\nconst initialState = {\r\n coursesList: [],\r\n subjectsList: [],\r\n subjects_courses: [] //Relation between subjects and courses\r\n}\r\n\r\nconst tramitReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n\r\n case SET_COURSES_LIST:\r\n return {\r\n ...state,\r\n coursesList: action.payload\r\n };\r\n\r\n case SET_SUBJECTS_LIST:\r\n return {\r\n ...state,\r\n subjectsList: action.payload.filter(e => !(new RegExp(/.*ingles.*/ig).test(e.ASIGNATURA)))\r\n };\r\n\r\n case UNSUBSCRIBE_COURSE:\r\n return {\r\n ...state,\r\n coursesList: state.coursesList.filter(c => c.id !== action.payload)\r\n };\r\n\r\n case SET_SUBJECTS_COURSES:\r\n\r\n let a = state.subjectsList; // Asignaturas\r\n let b = state.coursesList; //Aulas virtuales\r\n let a_json = {}; //Asignaturas as a dictionary by COD_ASIGNATURA or CODIGO_MATERIA \r\n let c = [];\r\n\r\n if (a.length !== 0 || b.length !== 0) {\r\n if (a.length === 0) {\r\n c = b.map((course) => ({ subject: null, course }))\r\n } else if (b.length === 0) {\r\n c = a.map((subject) => ({ subject, course: null }))\r\n } else {\r\n a.forEach(e => { a_json[e.COD_ASIGNATURA || e.CODIGO_MATERIA] = e })\r\n\r\n c = b.map(course => {\r\n let subjects = course.idnumber.split(\",\");\r\n return {\r\n subject: a_json[subjects.find(i => a_json[i] )] || null,\r\n course\r\n }\r\n });\r\n\r\n // b.forEach(course => {\r\n // let subjects = course.idnumber.split(\",\");\r\n\r\n // subjects.length === 0 ?\r\n // c.push({\r\n // subject: null,\r\n // course\r\n // })\r\n // :\r\n // subjects.forEach((subject, i) => {\r\n // !!(a_json[subject]) && (a_json[subject].added = true);\r\n // c.push({\r\n // subject: a_json[subject] || null,\r\n // course\r\n // });\r\n // })\r\n // });\r\n\r\n // for (const key in a_json) {\r\n // if (!a_json[key].added) {\r\n // c.push({\r\n // subject: a_json[key],\r\n // course: null\r\n // })\r\n // }\r\n // }\r\n }\r\n }\r\n\r\n return {\r\n ...state,\r\n subjects_courses: c,\r\n subjectsList: Object.keys(a_json).map(e => a_json[e])\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default tramitReducer;\r\n","import { LOGIN, LOGOUT, UNAUTHORIZED, GO_TO_PROCESS_PLATFORM, SET_MOODLE_USER_INFO } from '../actions/userAction';\r\n\r\nconst initialState = {\r\n userInfo: localStorage.getItem(\"aulas/user\") ? JSON.parse(localStorage.getItem(\"aulas/user\")) : null,\r\n moodleUserInfo: {},\r\n unauthorized: false\r\n}\r\n\r\nconst userReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case UNAUTHORIZED:\r\n localStorage.removeItem(\"aulas/user\")\r\n return {\r\n ...state,\r\n unauthorized: action.payload,\r\n userInfo: null\r\n };\r\n\r\n case SET_MOODLE_USER_INFO:\r\n\r\n return {\r\n ...state,\r\n moodleUserInfo: {...state.moodleUserInfo, ...action.payload}\r\n };\r\n\r\n case LOGIN:\r\n window.location.reload();\r\n return state;\r\n\r\n case LOGOUT:\r\n localStorage.removeItem(\"aulas/user\");\r\n window.location.reload();\r\n return state;\r\n\r\n case GO_TO_PROCESS_PLATFORM:\r\n let user = JSON.parse(localStorage.getItem(\"aulas/user\"));\r\n user.token = user.procesosToken;\r\n delete user.procesosToken;\r\n let data = { user, data: action.payload }\r\n window.open(`https://axis.curn.edu.co/procesos/#/nuevo?${window.btoa(unescape(encodeURIComponent(JSON.stringify(data))))}`, '_blank');\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default userReducer;\r\n","import { createStore, combineReducers, applyMiddleware, compose } from 'redux';\r\nimport thunk from 'redux-thunk';\r\n\r\n// Reducers list\r\nimport coursesReducer from './reducers/coursesReducer';\r\nimport userReducer from './reducers/userReducer';\r\n\r\n// Create deducer all in one\r\nconst allReducers = combineReducers({\r\n courses: coursesReducer,\r\n user: userReducer\r\n});\r\n\r\n// Config Middleware for async actions\r\nconst thunkHandler = applyMiddleware(thunk);\r\nconst composeEnhancers = (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose)\r\n\r\n// Create the store\r\nconst store = createStore(allReducers, composeEnhancers(thunkHandler))\r\n\r\nexport default store;\r\n","import React from 'react';\r\nimport \"./InputLabelFloating.css\"\r\n\r\nconst InputLabelFloating = (props) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InputLabelFloating;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types'\r\nimport { Modal, ModalHeader, ModalBody, Button } from 'reactstrap';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nclass ModalUI extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n modal: props.open === true ? true : false,\r\n onCloseAction: function () { }\r\n }\r\n }\r\n\r\n closeModal = (button) => {\r\n\r\n if (!(button.close === true)) {\r\n\r\n this.setState(\r\n {\r\n modal: false,\r\n onCloseAction: () => { button.callback && button.callback(); this.props.onClosed(); }\r\n })\r\n return;\r\n } else {\r\n this.setState({\r\n modal: false,\r\n onCloseAction: () => { button.callback && button.callback() }\r\n })\r\n }\r\n }\r\n\r\n openModal = () => {\r\n this.setState({ modal: true })\r\n }\r\n\r\n getIcon = (type) => {\r\n switch (type) {\r\n case \"info\":\r\n return \"help\";\r\n case \"danger\":\r\n return \"close\";\r\n case \"warning\":\r\n return \"info\";\r\n default:\r\n return \"check\";\r\n }\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n {this.props.open !== true &&\r\n \r\n {this.props.open}\r\n \r\n }\r\n\r\n this.closeModal({close:true})}>\r\n {this.props.title && this.closeModal({close:true})}>{this.props.title}}\r\n \r\n {this.props.type &&\r\n

\r\n \r\n {this.getIcon(this.props.type)}\r\n \r\n

\r\n }\r\n {this.props.children}\r\n
\r\n {this.props.buttons.map((b, i) => {\r\n return (\r\n { this.closeModal(b) }}>{b.text}\r\n )\r\n })\r\n }\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nModalUI.propTypes = {\r\n open: PropTypes.any, //HTML element for open modal or boolean value\r\n type: PropTypes.oneOf([\"success\", \"danger\", \"info\", \"warning\"]), // Modal icon type\r\n onClosed: PropTypes.func, //Function triggered by \"acept button\" (withow property close=true)\r\n buttons: PropTypes.array.isRequired, //Buttons {color, text, close, callback} for close and trigger any function \r\n title: PropTypes.string, // Text as title of modal\r\n size: PropTypes.string, // Size of modal, default \"lg\"\r\n children: PropTypes.element.isRequired, //Content of modal\r\n};\r\n\r\nexport default withRouter(ModalUI);\r\n","import React, { Component } from 'react';\r\nimport InputLabelFloating from './../../components/UI/InputLabelFloating';\r\nimport './styles.css';\r\nimport { connect } from 'react-redux';\r\nimport { login, verifyAccount, setUnauthorized } from './../../store/actions/userAction';\r\nimport ModalUI from '../../components/ModalUI';\r\n\r\n// Test create file \r\nimport { saveAs } from \"file-saver\";\r\nimport { write, utils } from \"xlsx\";\r\n\r\nclass Login extends Component {\r\n\r\n constructor(props) {\r\n super();\r\n\r\n this.state = {\r\n userEmail: \"\",\r\n password: \"\",\r\n step: 0, //0 is enter email step, 1 is enter password step\r\n loader: null,\r\n modal: null,\r\n errorField: null,\r\n error: null\r\n }\r\n }\r\n\r\n exportToSpreadsheet = (data, fileName = \"ExcelNG\") => {\r\n const fileType =\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n // Desired file extesion\r\n const fileExtension = \".xlsx\";\r\n try {\r\n let data1 = data[0];\r\n let _head = Object.keys(data1);\r\n let _body = data.map(e => {\r\n return _head.map(i => e[i])\r\n })\r\n _body.unshift(_head);\r\n\r\n data = _body;\r\n\r\n //Create a new Work Sheet using the data stored in an Array of Arrays.\r\n const workSheet = utils.aoa_to_sheet(data);\r\n // Generate a Work Book containing the above sheet.\r\n const workBook = {\r\n Sheets: { data: workSheet, cols: [] },\r\n SheetNames: [\"data\"],\r\n };\r\n // Exporting the file with the desired name and extension.\r\n const excelBuffer = write(workBook, { bookType: \"xlsx\", type: \"array\" });\r\n const fileData = new Blob([excelBuffer], { type: fileType });\r\n saveAs(fileData, fileName + fileExtension);\r\n } catch (error) {\r\n alert(error)\r\n }\r\n };\r\n\r\n confirmPassword = (e) => {\r\n if (this.state.password.length < 6) {\r\n document.getElementById(\"inp_pwd\").focus();\r\n this.setState({ error: \"Contraseña incorrecta\" })\r\n } else {\r\n this.setState({ loader: true, error: null })\r\n this.startLogin();\r\n }\r\n }\r\n\r\n startLogin = () => {\r\n let pwd = document.getElementById(\"inp_pwd\");\r\n this.props.login({ data: { username: this.state.userEmail, password: this.state.password } })\r\n .then(resp => {\r\n if (!(resp)) {\r\n pwd.focus();\r\n this.setState({\r\n loader: null,\r\n error: \"Contraseña incorrecta\"\r\n })\r\n this.props.setUnauthorized()\r\n }\r\n }).catch(err => {\r\n pwd.focus();\r\n this.setState({\r\n loader: null,\r\n error: \"Contraseña incorrecta\"\r\n })\r\n this.props.setUnauthorized()\r\n })\r\n }\r\n\r\n verifyUser = () => {\r\n let user = this.state.userEmail;\r\n let inp_user = document.getElementById(\"inp_user\");\r\n if (user.length <= 3) {\r\n inp_user.focus();\r\n return this.setState({ error: \"Ingrese una cuenta valida\" })\r\n }\r\n if (!((/^.+@(curn(virtual)?)\\.edu\\.co+$/ig.test(user)))) {\r\n inp_user.focus();\r\n return this.setState({ error: \"Indique si es @curn.edu.co o @curnvirtual.edu.co\" });\r\n }\r\n this.setState({ loader: true, error: null })\r\n this.props.verifyAccount(user)\r\n .then(resp => {\r\n if (resp.cod !== \"200\") {\r\n inp_user.focus();\r\n return this.setState({ error: \"Cuenta no encontrada\", loader: null })\r\n }\r\n this.setState({\r\n step: 1,\r\n loader: null,\r\n userEmail: resp.data?.entidad?.Mail\r\n })\r\n }).catch(err => {\r\n inp_user.focus();\r\n return this.setState({ error: \"Cuenta no encontrada\", loader: null })\r\n })\r\n }\r\n\r\n goBack = () => this.setState({ step: 0, error: null, password: \"\" })\r\n\r\n handlePasswordKeyUp = e => {\r\n (e.keyCode === 13) ? this.confirmPassword() : this.setState({ password: e.target.value });\r\n }\r\n\r\n handleUseremailKeyUp = e => {\r\n (e.keyCode === 13) ? this.verifyUser() : this.setState({ userEmail: e.target.value });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n\r\n {this.state.loader &&\r\n
\r\n
\r\n
\r\n }\r\n {this.state.modal &&\r\n \r\n <>\r\n

{this.state.modal.title}

\r\n
{this.state.modal.subtitle}
\r\n {this.state.modal.auxtext &&
{this.state.modal.auxtext}
}\r\n \r\n \r\n }\r\n\r\n
\r\n
\r\n \"logo_curn\"\r\n
\r\n {this.state.step === 0 ?\r\n
\r\n
\r\n

Acceder

\r\n
Ir a gestor de aulas
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {!!(this.state.error) && {this.state.error}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n :\r\n
\r\n
\r\n

Te damos la bienvenida

\r\n
\r\n
\r\n
\r\n
\r\n account_circle\r\n
\r\n
\r\n {this.state.userEmail}\r\n
\r\n
\r\n keyboard_arrow_down\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {!!(this.state.error) && {this.state.error}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => (\r\n {\r\n login: data => dispatch(login(data)),\r\n verifyAccount: user => dispatch(verifyAccount(user)),\r\n setUnauthorized: () => dispatch(setUnauthorized(false))\r\n }\r\n)\r\n\r\nexport default connect(null, mapDispatchToProps)(Login);","import React from 'react';\r\nimport PropTypes from 'prop-types'\r\n\r\nimport './styles.css';\r\nimport { Fade } from 'reactstrap';\r\n\r\nconst Loader = ({ children, color }) => {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n Loading...\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nLoader.prototype = {\r\n children: PropTypes.any, //Content below loader\r\n color: PropTypes.string, // Loader color\r\n}\r\n\r\nexport default Loader;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { AXIOS_REQUEST } from './../../services/axiosService';\r\nimport { PROCESOS_API_URL } from './../../services/constantsService';\r\nimport { goToProcessPlatform } from './../../store/actions/userAction';\r\n\r\nclass RequestForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loader: null,\r\n dependency: { \"codi_dep\": 6, \"desc_dep\": \"Soporte TIC\" },\r\n process: null,\r\n nodo: { codi_nodo: null },\r\n category: null,\r\n categoriesList: [],\r\n categoriesProcessList: null\r\n }\r\n }\r\n\r\n getServicesList = () => {\r\n this.setState({ loader: \"Cargando servicios\" })\r\n AXIOS_REQUEST(null, \"get\", null, false, `${PROCESOS_API_URL}categoria/proceso/${this.state.dependency.codi_dep}`)\r\n .then(resp => {\r\n this.setState({\r\n categoriesList: resp,\r\n loader: null\r\n })\r\n })\r\n }\r\n\r\n onChangeCategoryField = (e) => {\r\n let cat = JSON.parse(e.target.value || null);\r\n this.setState({\r\n category: { desc_cat: cat.desc_cat, codi_cat: cat.codi_cat },\r\n categoriesProcessList: !!(cat) ? JSON.parse(cat.procesos) : null\r\n });\r\n }\r\n\r\n onChangeProcessField = (e) => {\r\n let pro = !!(e.target.value) ? JSON.parse(e.target.value) : null;\r\n if (pro) {\r\n AXIOS_REQUEST(null, \"get\", null, false, `${PROCESOS_API_URL}nodo/${pro.codi_nodo}`)\r\n .then(resp => {\r\n this.setState({\r\n process: { desc_pro: pro.desc_pro, codi_pro: pro.codi_pro },\r\n nodo: { codi_nodo: pro?.codi_nodo || null, camp_nodo: resp[0].camp_nodo }\r\n });\r\n })\r\n }\r\n }\r\n\r\n goToProcess = () => {\r\n const { category, process, dependency, nodo } = this.state;\r\n this.props.goToProcessPlatform({ category, process, dependency, nodo });\r\n !!(this.props.submitCallback) && this.props.submitCallback();\r\n }\r\n\r\n componentDidMount() {\r\n this.getServicesList();\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n {this.state.loader &&\r\n
\r\n
\r\n Loading...\r\n
\r\n
\r\n {this.state.loader}\r\n
\r\n
\r\n }\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n {!!(this.state.categoriesProcessList) &&\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n }\r\n\r\n
\r\n \r\n {!!(this.state.process) &&\r\n \r\n }\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nRequestForm.propTypes = {\r\n cancelCallback: PropTypes.func,\r\n submitCallback: PropTypes.func,\r\n};\r\n\r\nconst mapStateToProps = state => (\r\n {\r\n processPlatformURL: state.user.processPlatformURL,\r\n user: state.user.userInfo\r\n }\r\n)\r\n\r\nconst mapDispatchToProps = dispatch => (\r\n {\r\n goToProcessPlatform: (data) => dispatch(goToProcessPlatform(data))\r\n }\r\n)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RequestForm);","import React, { Component } from 'react';\r\nimport { MOODLE_AXIOS_REQUEST, AXIOS_REQUEST } from './../../services/axiosService';\r\nimport {\r\n MOODLE_BASE_URL,\r\n MOODLE_GET_USERINFO_PARAMS,\r\n MOODLE_GET_COURSES_PARAMS,\r\n MOODLE_UNSUBSCRIBE_COURSE,\r\n MOODLE_GET_TEACHER_INSTANCE_ENROL,\r\n MOODLE_GET_TEACHER_PASSWORD_ENROL\r\n} from './../../services/constantsService';\r\nimport { setCoursesList, setSubjectsCourses, setSubjectsList, deleteCourse } from './../../store/actions/coursesAction';\r\nimport { setMoodleUserInfo } from './../../store/actions/userAction';\r\nimport { Nav, NavItem, NavLink, DropdownMenu, DropdownItem, DropdownToggle, UncontrolledDropdown } from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport Loader from '../../components/Loader';\r\nimport ModalUI from '../../components/ModalUI';\r\nimport RequestForm from '../../components/RequestForm';\r\n\r\nclass Home extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.all = \"1\";\r\n this.subject = \"2\";\r\n this.course = \"3\";\r\n\r\n this.state = {\r\n loader: null,\r\n courseSelected: null,\r\n activeTab: this.all\r\n }\r\n }\r\n\r\n optionsMenuCard = (course, allOptions = false) => {\r\n const options = [\r\n this.showCourseDetails(course)}>Más detalles,\r\n (this.props.user.type == 1 || course.idnumber[0] === \"@\") ? this.confirmUnsubscribeCourse(course.id)}>Darme de baja : null\r\n ,\r\n Ver en moodle\r\n ]\r\n return (\r\n \r\n \r\n Opciones\r\n \r\n \r\n {options.map(i_op => i_op)}\r\n \r\n {/* \r\n {!allOptions &&\r\n this.showCourseDetails(course)}>Más detalles\r\n }\r\n {\r\n allOptions &&\r\n <>\r\n {this.props.user.type == 1 && this.confirmUnsubscribeCourse(course.id)}>Darme de baja}\r\n \r\n }\r\n Ver en moodle\r\n */}\r\n \r\n )\r\n }\r\n\r\n cardCourse = (course) => (\r\n
\r\n
\r\n local_libraryAula virtual\r\n
\r\n {\r\n !!(course) ?\r\n
\r\n

{course.fullname}

\r\n
\r\n {this.optionsMenuCard(course)}\r\n
\r\n
\r\n :\r\n
\r\n

No se encuentra enrolado en aula virtual de la asignatura

\r\n
\r\n }\r\n
\r\n )\r\n\r\n cardSubject = (subject) => (\r\n
\r\n
\r\n schoolAsignatura\r\n
\r\n {\r\n !!(subject) ?\r\n
\r\n

{subject.ASIGNATURA || subject.MATERIA}

\r\n

Grupo: {subject.GRUPO}

\r\n

Código: {subject.COD_ASIGNATURA || subject.CODIGO_MATERIA}

\r\n
\r\n :\r\n
\r\n

No tiene asignatura en UXXI asociada al aula virtual

\r\n
\r\n }\r\n
\r\n );\r\n\r\n getPasswordEnrol = (course) => {\r\n\r\n if (this.props.user.type != 1) {\r\n course.enroltype = \"Matriculación manual\";\r\n return new Promise((resolve) => {\r\n this.setState({\r\n loader: null,\r\n courseSelected: course\r\n })\r\n return resolve();\r\n })\r\n }\r\n\r\n this.setState({ loader: \"Consultando detalles\" })\r\n\r\n let formdata = new FormData();\r\n formdata.append(\"courseid\", course.id);\r\n\r\n return MOODLE_AXIOS_REQUEST(null, \"post\", formdata, true, `${MOODLE_BASE_URL}${MOODLE_GET_TEACHER_INSTANCE_ENROL}`).then(resp => {\r\n if (!!(resp.length)) {\r\n\r\n let instanceid = resp[0].id;\r\n let formdata = new FormData();\r\n formdata.append(\"instanceid\", instanceid);\r\n\r\n return MOODLE_AXIOS_REQUEST(null, \"post\", formdata, true, `${MOODLE_BASE_URL}${MOODLE_GET_TEACHER_PASSWORD_ENROL}`).then(resp => {\r\n if (!!(resp)) {\r\n const { enrolpassword, status } = resp;\r\n return this.setState({\r\n loader: null,\r\n courseSelected: {\r\n ...course,\r\n enrolstatus: status,\r\n enroltype: \"Auto - Matriculación\",\r\n enrolpassword\r\n }\r\n })\r\n } else {\r\n throw new Error();\r\n }\r\n })\r\n } else {\r\n throw new Error();\r\n }\r\n }).catch(err => {\r\n return this.setState({\r\n loader: null,\r\n courseSelected: {\r\n ...course,\r\n enroltype: \"Matriculación manual\"\r\n }\r\n })\r\n });\r\n }\r\n\r\n showCourseDetails = (course) => {\r\n this.getPasswordEnrol(course).then(resp => {\r\n course = this.state.courseSelected;\r\n this.setState({\r\n courseSelected: course,\r\n modal: {\r\n title: \"Detalles del aula\",\r\n subtitle: {course.fullname},\r\n content:
\r\n
\r\n
\r\n {course.idnumber &&

Código: {course.idnumber}

}\r\n

Tipo de enrolamiento: {course.enroltype}

\r\n

Descripción:

\r\n
\r\n {/* {course.enrolpassword &&

Contraseña: {course.enrolpassword}

} */}\r\n
\r\n
\r\n {this.optionsMenuCard(course, true)}\r\n
\r\n
,\r\n size: \"md\",\r\n callback: () => { this.setState({ modal: null }); }\r\n }\r\n })\r\n })\r\n }\r\n\r\n confirmUnsubscribeCourse = (idcourse) => {\r\n this.setState({\r\n loader: null,\r\n modal: {\r\n type: \"info\",\r\n title: \"¿Está seguro?\",\r\n subtitle: \"Esta acción lo desenrolará de esta aula virtual\",\r\n size: \"sm\",\r\n buttons: [\r\n { color: \"danger\", text: \"No\" },\r\n {\r\n color: \"primary\", text: \"Si\", callback: () => {\r\n this.unsubscribeCourse(idcourse);\r\n }\r\n }\r\n ],\r\n callback: () => { this.setState({ modal: null }); }\r\n }\r\n })\r\n }\r\n\r\n unsubscribeCourse = (courseid) => {\r\n var formdata = new FormData();\r\n formdata.append(\"enrolments[0][userid]\", this.props.moodleUserInfo.userId);\r\n formdata.append(\"enrolments[0][courseid]\", courseid);\r\n\r\n this.setState({ loader: \"Realizando desenrolamiento\" })\r\n\r\n // // GET virtual courses by user\r\n MOODLE_AXIOS_REQUEST(null, \"post\", formdata, true, `${MOODLE_BASE_URL}${MOODLE_UNSUBSCRIBE_COURSE}`).then(resp => {\r\n if (!(resp)) {\r\n this.props.deleteCourse(courseid)\r\n this.setState({\r\n loader: null,\r\n modal: {\r\n type: \"success\",\r\n title: \"¡Muy bien!\",\r\n subtitle: \"Se ha dado de baja al aula virtual\",\r\n size: \"sm\",\r\n callback: () => { this.setState({ modal: null }); }\r\n }\r\n })\r\n } else {\r\n throw new Error();\r\n }\r\n }).catch(err => {\r\n this.setState({\r\n loader: null,\r\n modal: {\r\n type: \"danger\",\r\n title: \"Ops...\",\r\n subtitle: \"No se pudo realizar el desenrolamiento del aula virtual\",\r\n content:
\r\n ¿Desea reportar este caso?\r\n
,\r\n size: \"sm\",\r\n buttons: [\r\n { color: \"primary\", text: \"Ahora no\", callback: () => { this.setState({ modal: null }); } },\r\n {\r\n color: \"primary\", text: \"Si\", callback: () => {\r\n this.setState({ modal: null });\r\n setTimeout(() => {\r\n this.onHandleReport()\r\n }, 200)\r\n }\r\n },\r\n ]\r\n }\r\n })\r\n });\r\n }\r\n\r\n onHandleSelect = (e) => {\r\n this.setState({\r\n activeTab: e\r\n })\r\n }\r\n\r\n onHandleReport = () => {\r\n this.setState({\r\n loader: null,\r\n modal: {\r\n type: \"info\",\r\n title: \"Solicitud de soporte\",\r\n subtitle: \"Seleccione el tipo de soporte que desea solicitar y posteriormente será redirigido a la plataforma de procesos para el seguimiento y resolución del mismo.\",\r\n content:
\r\n
\r\n this.setState({ modal: null })} submitCallback={() => this.setState({ modal: null })} />\r\n
\r\n
,\r\n size: \"md\",\r\n buttons: [],\r\n callback: () => { this.setState({ modal: null }); }\r\n }\r\n })\r\n }\r\n\r\n printCards = (opt) => {\r\n let list = this.props.subjectCoursesList;\r\n if (opt === this.course) {\r\n list = this.props.coursesList;\r\n if (list.length === 0) {\r\n return (\r\n
\r\n

\r\n local_libraryNo se encuentra enrolado en ningún aula virtual\r\n

\r\n
\r\n )\r\n }\r\n } else if (opt === this.subject) {\r\n list = this.props.subjectsList;\r\n if (list.length === 0) {\r\n return (\r\n
\r\n

\r\n schoolNo tiene asignaturas registradas en UXXI\r\n

\r\n
)\r\n }\r\n }\r\n return (\r\n
\r\n {!(list.length) ?\r\n
\r\n

\r\n warningNo hay nada para mostrar\r\n

\r\n
\r\n : list.map((e, i) => {\r\n return (\r\n
\r\n
\r\n
\r\n {opt === this.all && <>\r\n
\r\n {!!(e.course) && !!(e.subject) ?\r\n check_circle\r\n :\r\n error\r\n }\r\n
\r\n {this.cardSubject(e.subject)}\r\n {this.cardCourse(e.course)}\r\n }\r\n {opt === this.subject && this.cardSubject(e)}\r\n {opt === this.course && this.cardCourse(e)}\r\n
\r\n
\r\n
\r\n )\r\n })\r\n }\r\n
\r\n
\r\n

TOTAL: {list.length}

\r\n
\r\n
\r\n )\r\n }\r\n\r\n componentDidMount = () => {\r\n var formdata = new FormData();\r\n formdata.append(\"field\", \"username\");\r\n formdata.append(\"values[0]\", `${this.props.user.correo.split(\"@\")[0]}`);\r\n\r\n this.setState({ loader: \"Consultando aulas virtuales\" })\r\n\r\n // GET User Moodle Info\r\n MOODLE_AXIOS_REQUEST(null, \"post\", formdata, true, `${MOODLE_BASE_URL}${MOODLE_GET_USERINFO_PARAMS}`).then(userInfo_resp => {\r\n var formdata = new FormData();\r\n formdata.append(\"userid\", userInfo_resp[0].id);\r\n\r\n this.props.setMoodleUserInfo({ userId: userInfo_resp[0].id })\r\n\r\n // GET virtual courses by user\r\n MOODLE_AXIOS_REQUEST(null, \"post\", formdata, true, `${MOODLE_BASE_URL}${MOODLE_GET_COURSES_PARAMS}`).then(resp => {\r\n this.props.setCoursesList(resp);\r\n this.props.setSubjectsCourses();\r\n\r\n this.setState({ loader: \"Consultando asignaturas\" });\r\n // GET subjects by user\r\n AXIOS_REQUEST(`moodle/asignaturas/${this.props.user.type}`).then(resp => {\r\n this.props.setSubjectsList(resp || []);\r\n this.props.setSubjectsCourses();\r\n\r\n this.setState({ loader: null })\r\n }).catch(err => {\r\n this.setState({\r\n loader: null,\r\n modal: {\r\n type: \"warning\",\r\n title: \"Ops...\",\r\n subtitle: \"No se pudo obtener el listado de asignaturas\",\r\n callback: () => { this.setState({ modal: null }) }\r\n }\r\n })\r\n });\r\n });\r\n }).catch(err => {\r\n console.log(err);\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n <>\r\n {!!(this.state.loader) && {this.state.loader}}\r\n {!!(this.state.modal) &&\r\n { })}\r\n size={this.state.modal.size || \"sm\"}\r\n buttons={this.state.modal.buttons ||\r\n [\r\n { color: \"primary\", text: \"OK\" }\r\n ]\r\n }>\r\n <>\r\n

{this.state.modal.title}

\r\n
{this.state.modal.subtitle || \"\"}
\r\n {this.state.modal.content || \"\"}\r\n \r\n \r\n }\r\n {this.printCards(this.state.activeTab)}\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => (\r\n {\r\n subjectCoursesList: state.courses.subjects_courses,\r\n subjectsList: state.courses.subjectsList,\r\n coursesList: state.courses.coursesList,\r\n user: state.user.userInfo,\r\n moodleUserInfo: state.user.moodleUserInfo\r\n }\r\n)\r\n\r\nconst mapDispatchToProps = dispatch => (\r\n {\r\n setCoursesList: (data) => dispatch(setCoursesList(data)),\r\n setSubjectsCourses: () => dispatch(setSubjectsCourses()),\r\n setSubjectsList: (data) => dispatch(setSubjectsList(data)),\r\n setMoodleUserInfo: (data) => dispatch(setMoodleUserInfo(data)),\r\n deleteCourse: (courseid) => dispatch(deleteCourse(courseid)),\r\n }\r\n)\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Home);","import React, { Component } from 'react';\r\n\r\nconst email_temp = (err = \"\") => \"mailto:soporteproceso@curn.edu.co?subject=Error%20en%20plataforma%20de%20aulas&body=Hola%2C%20te%20env%C3%ADo%20la%20informaci%C3%B3n%20sobre%20el%20error%20%0D%0A%0D%0A\" + err;\r\n\r\nclass ErrorHandler extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false, error: null };\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n // Actualiza el estado para que el siguiente renderizado muestre la interfaz de repuesto\r\n return { hasError: true };\r\n }\r\n\r\n reloadChildren = () => { window.location.reload() }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n // Registrar el error en un servicio de reporte de errores\r\n // logErrorToMyService(error, errorInfo);\r\n\r\n console.log(\"========ERROR========\");\r\n console.log({ error, errorInfo });\r\n console.log(\"=====================\");\r\n if (error?.message && /Loading chunk [\\d]+ failed/ig.test(error.message)) {\r\n console.log(\"chunk failed\");\r\n window.location.reload(true);\r\n } else {\r\n let data = {\r\n error,\r\n message: error.message || \"NG\",\r\n stack: error.stack || \"NG\",\r\n errorInfo,\r\n path: window.location.href\r\n }\r\n this.setState({ error: JSON.stringify(data) })\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n if (!(window.navigator?.onLine)) {\r\n return (
\r\n
\r\n \r\n \r\n \r\n


\r\n

Conexión inestable

\r\n Verifica que estés conectado a una red\r\n

\r\n

\r\n \r\n
\r\n
)\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n


:(

\r\n

Ops, Parece que hubo un error en la aplicación

\r\n
\r\n

¿Deseas reportar el problema?

\r\n Si, reportar\r\n
\r\n
\r\n )\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorHandler;\r\n","import React, { Component } from 'react';\r\nimport './styles.css';\r\nimport logo from './../../img/curn-logo-horizontal.png';\r\nimport { UncontrolledDropdown, DropdownItem, DropdownMenu, DropdownToggle, Nav, NavItem, NavLink } from 'reactstrap';\r\nimport { logout } from './../../store/actions/userAction';\r\nimport { connect } from 'react-redux';\r\nimport ModalUI from '../ModalUI';\r\n\r\nclass NavBar extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: null\r\n }\r\n }\r\n\r\n startLogout = () => {\r\n this.setState({ modal: true })\r\n }\r\n\r\n render() {\r\n\r\n // const nombreUsuario = this.props.user ? `| ${this.props.user?.nombre} ${this.props.user?.apellido}` : \"\";\r\n const nombreUsuario = `${this.props.user.nombre} ${this.props.user.apellido}`;\r\n const emailUsuario = `${this.props.user.correo?.split(\"@\")[0] || \"\"}`;\r\n const iniciales = `${this.props.user.nombre[0]}${this.props.user.apellido[0]}`;\r\n\r\n return (\r\n
\r\n {!!(this.state.modal) &&\r\n this.setState({ modal: null })}\r\n buttons={[\r\n { text: \"NO\", color: \"danger\" },\r\n { text: \"SI\", callback: this.props.logout, color: \"primary\" }\r\n ]}\r\n >\r\n

¿Desea cerrar la sesión?

\r\n \r\n }\r\n\r\n
\r\n \"Principal\r\n
\r\n \r\n\r\n {/* {this.props.children} */}\r\n
\r\n );\r\n }\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n user: state.user.userInfo\r\n})\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n logout: () => dispatch(logout())\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NavBar);","import React, { Component } from 'react';\r\nimport {\r\n HashRouter as Router,\r\n Switch,\r\n Route,\r\n Redirect\r\n} from \"react-router-dom\";\r\nimport { connect } from 'react-redux';\r\n\r\nimport { UncontrolledAlert } from 'reactstrap';\r\nimport LoginScreen from './Login'\r\nimport HomeScreen from './Home'\r\nimport ErrorHandler from '../components/ErrorHandler';\r\nimport NavBar from '../components/NavBar';\r\nimport Recaptcha from '../components/Recaptcha';\r\n\r\nclass ScreensRoot extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n {!(this.props.userInfo)\r\n ?\r\n <>\r\n \r\n \r\n \r\n \r\n {this.props.unauthorized &&\r\n
\r\n
\r\n \r\n su sesión ha expirado\r\n \r\n
\r\n
}\r\n \r\n :\r\n <>\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n userInfo: state.user.userInfo,\r\n unauthorized: state.user.unauthorized\r\n})\r\n\r\nexport default connect(mapStateToProps)(ScreensRoot);\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport './styles.css';\r\nimport { Provider } from 'react-redux';\r\nimport store from './store'\r\nimport ScreensRoot from './screens/ScreensRoot';\r\nimport { AXIOS_REQUEST, getParameterByName } from './services/axiosService'\r\n\r\nconst getContent = (internal, loadApp = false) => {\r\n return
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
{internal}
\r\n
\r\n}\r\n\r\nAXIOS_REQUEST(null, 'get', null, false, \"https://atlas.curn.edu.co/apiaxis/api/mantenimiento/aulas\")\r\n .then(resp => {\r\n if (!!(resp)) {\r\n window.location = resp;\r\n }\r\n })\r\n\r\n// const fromTok = getParameterByName(\"from\");\r\n// if (!!(fromTok)) {\r\n// ReactDOM.render(\r\n// getContent(\"Verificando sesión\"),\r\n// document.getElementById('root')\r\n// );\r\n\r\n// AXIOS_REQUEST(null, 'get', null, false, \"https://axis.curn.edu.co/apiportal/api/auth/verificatoken\", fromTok)\r\n// .then(resp => {\r\n// ReactDOM.render(\r\n// ,\r\n// document.getElementById('root')\r\n// );\r\n// console.log(resp)\r\n// if (!!(resp)) {\r\n// }\r\n// })\r\n// } else {\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);\r\n// }\r\n\r\n// { apellido, correo, nombre, type, token, procesosToken }\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/curn-logo-horizontal.6cddcb2a.png\";"],"sourceRoot":""}