{"version":3,"sources":["api/attachmentsApi.js","constant/functionCode.js","constant/moduleCode.js","modules/common/requestLevelDialog.js","modules/common/textColapp.js","modules/AutoForm/api/AutoFormApi.js","utils/helpler.js","components/common/LoadingProgressBar.js","native/Attachment.js","components/common/commonObj.js","context.js","modules/Menu/api/MenuApi.js","utils/index.js","api/utilities.js","api/authApi.js","modules/login/index.js","components/common/PreviewFile/index.js","components/LazyLoad/index.js","routes.js","native/AttachmentImage.js","components/layout/UserLogo.js","components/common/translateBtn.js","modules/common/StaffInfoDialog.js","components/layout/MobileStaffInfoDialog.js","components/layout/Header.js","components/common/Icon.js","components/layout/LeftBar.js","components/common/Card.js","components/layout/DefaultLayout.js","components/layout/Layout.js","App.js","index.js","api/userApi.js"],"names":["attachmentsApi","list","filter","a","urlBase","make","post","result","getById","id","get","delete","item","del","add","update","listAll","getAttachments","tableName","itemId","toString","downloadExport","downloadModel","encodeURIComponent","filePath","fileName","contentType","link","document","createElement","href","body","appendChild","click","removeChild","getLink","upload","files","savePath","multiUpload","view","url","undefined","clientFile","dowload_guide","uploadMutil","testDownload","getFile","FunctionCode","VIEW","ADD","UPDATE","DELETE","ModuleCode","DUAN","KHACH_HANG","NGUOI_DUNG","NHOM_DU_AN","PHAN_QUYEN","Module","NEWS_CATEGORY","NEWS_ARTICLE","Menu","ProductCategory","DOCUMENT_TYPE","TAG_INFO","DOCUMENT_CATEGRORY","DOCUMENT_INFO","STAFF_INFO","COURSE_INFO","Schema","Types","NumberType","StringType","Textarea","React","forwardRef","props","ref","as","RequestLevelDialog","show","context","useContext","CommonContext","useState","listLevel","setListLevel","formValue","setFormValue","form","useEffect","getListLevel","findLevel","find","c","levelChange","data","condition","benefit","onLevelChange","model","Model","isRequired","profile","AutoFormApi","queryBuilder","name","value","res","success","handleClose","onClose","loading","unloading","error","comfirm","check","console","log","submitData","userApi","userAddRequestChange","size","open","className","Header","Title","Body","style","marginLeft","marginRight","onChange","md","xs","Group","ControlLabel","Control","accepter","InputPicker","block","valueKey","labelKey","placeholder","readOnly","rows","Footer","onClick","appearance","TextColapp","text","arr","split","length","slice","join","dangerouslySetInnerHTML","__html","baseUrl","getAll","getItemType","listByItemType","deleteItem","getItem","saveItem","getRelateList","getListValue","code","parameters","helpler","sumArray","key","sum","i","Number","sumArrayTwo","key1","buildTree","array","keyId","parentKeyId","parent","tree","children","child","number","val","len","trim","replace","copyToClipboard","textToCopy","input","setAttribute","select","isSuccessful","execCommand","customSearchPicker","keyword","label","str","normalize","toLowerCase","indexOf","unflattenObject","keys","reduce","r","e","j","isNaN","flattenObject","ob","toReturn","hasOwnProperty","flatObject","x","createGuid","Math","random","LoadingProgressBar","setState","hideDialog","hide","state","this","isShow","role","pulse","fontSize","color","UrlApi","window","REACT_APP_API_URL","Attachment","onDelete","isClone","index","splice","temp","action","onGetFiles","onDownload","target","download","getDownloadLink","_isMounted","getAttachmentFiles","reset","onPickServerFile","multiple","push","onFileChange","event","isRs","callBack","fileExtensions","extensions","map","ext","pop","alert","fileItem","tmpPath","URL","createObjectURL","message","onUpload","fileupload","onPreview","editable","render","bind","newProps","JSON","stringify","display","Fragment","type","hidden","accept","Component","contextType","moment","require","Utils","parseJwt","token","base64","parse","atob","parseToken","localStorage","TOKEN_KEY","containPermissionCode","permissions","err","anyPermission","codes","showButtons","itemStatus","status","permissionCodes","removeHtmlTag","html","tmp","innerHTML","textContent","innerText","obj","property","substrings","changeAlias","alias","date","format","Date","strDate","toDate","date1","date2","round","diff","ndays","subtract","n","d","t","cx","abs","dx","tx","s","String","parseInt","toFixed","substr","num","AuthContext","createContext","isAuth","onLogin","onLogout","menuApi","getAllMenu","getAllMenuGroup","getMenuByGroup","group","removeAccent","filterWord","searh","toUpperCase","includes","urljoin","args","path","call","guestGet","put","FormData","forEach","file","append","method","noAuth","responseType","access_token","strToken","headers","Accept","Authorization","request","fetch","catch","response","ok","removeItem","location","reload","blob","responseData","json","responseJson","fetchAccessToken","uid","pwd","Promise","resolve","reject","tokenUrl","REACT_APP_AUTH_URL","xhr","XMLHttpRequest","onload","response_data","onerror","statusText","username","password","grant_type","scope","client_id","client_secret","setRequestHeader","btoa","send","Login","jsonPayload","decodeURIComponent","charCodeAt","setItem","loginError","handleChange","visible","onTextFieldChange","handleEnter","tab","toaster","Notification","header","duration","placement","Container","Navbar","textAlign","height","textTransform","fontWeight","Content","FlexboxGrid","justify","marginTop","Item","colspan","Col","sm","lg","Panel","bordered","width","justifyContent","IconButton","icon","circle","backgroundColor","zIndex","Input","onKeyPress","defaultValue","InputGroup","inside","efaultValue","security","Button","ButtonToolbar","borderRadius","PreviewModal","mobile","onRefresh","Preview","showPreview","isLoading","setTimeout","src","frameBorder","minHeight","minWidth","Paragraph","Progress","Loading","graph","active","LazyLoad","importFunc","lazy","Suspense","fallback","Profile","Admin","Permissions","Users","Customer","Roles","LayoutDefine","ModuleDefine","LandingPage","NewsCategory","PageDefine","NewPage","NewModues","AutoForm","Course","CourseUpdate","Staff","StaffUpdate","ListWattingApprove","DragForm","FormExample","CourseDetail","routes","exact","customStyles","alignItems","AttachmentImage","lightboxIsOpen","attachmentControl","toggleLightbox","noImages","imageStyle","noImage","lightbox","caption","withIcon","withPreview","buttonText","onDropImage","atts","alt","position","flexWrap","styles","views","UserLogo","getInfoUser","get_my_profile","user","history","toUserChangPass","container","Whisper","trigger","speaker","Popover","full","fontFamily","Dropdown","objectFit","fullName","withRouter","StaffInfoDialog","userInfo","requestLevelDialogState","setRequestLevelDialogState","openUpgateDialog","Modal","paddingTop","margin","levelName","whiteSpace","wordWrap","levelCondition","levelBenefit","nextlevelBenefit","MobileStaffInfoDialog","Drawer","to","marginBottom","fontStyle","mobileInfoDialog","setMobileInfoDialog","cursor","Icon","NavToggle","expand","Nav","pullRight","onShowGuide","host","REACT_APP_URL","getMenus","datas","menus","linkTo","expanded","activeKey","classname","handleToggle","handleSelect","utils","eventKey","hp","expandMenu","items","route","Sidebar","flexDirection","Sidenav","defaultOpenKeys","Tooltip","title","onSelect","Card","padding","opacity","BodyMain","DefaultLayout","setCurentUser","setLoading","listPaths","servers","setMobile","setExpanded","setShowPreview","contractId","setContractId","categoryLib","setUserInfo","setIsMobile","isMobile","innerWidth","isInput","confirm","cancel","init","showCloseButton","showCancelButton","focusConfirm","confirmButtonText","cancelButtonText","inputPlaceholder","Swal","fire","isConfirm","dismiss","appApi","showLoading","getCurentStaffInfo","getProfile","addEventListener","removeEventListener","Provider","actions","search","getData","moduleCode","functionCode","module","FunctionList","setContract","borderTop","userRoles","LeftBar","PreviewFile","Layout","App","getToken","setAuth","basename","process","ReactDOM","getElementById","updateUserRole","updateProfile","reset_password","getMyRole","upadteMyRole","listroles","roneName","sortBy","pageIndex","pageSize","listPermissions","updateroles","setUserCalendar","deleteUserCalendar","getUserCalendars","userId","getListCalendars","getCalendars","delegacy","evictDelegacy","listDelegacy","requesPassword","email","permissionsList","delegateUser","getUsersDelegated","removeDelegate","checkUserNameInUsed","checkUserEmailInUsed","adminChangePassword","change_password","addStaff","updateStaff","getListStaff","getStaffById","getListRegistration","getRegistrationById","approveRequestChange","rejectRequestChange"],"mappings":"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","file":"static/js/main.6baf388e.chunk.js","sourcesContent":["import { make, post, get, del, getFile, multiUpload } from \"./utilities\";\r\n\r\nconst attachmentsApi = {\r\n list: async (filter) => {\r\n let urlBase = make('v1', 'Attachments', 'list');\r\n let result = await post(urlBase, filter);\r\n return result;\r\n },\r\n\r\n getById: async (id) => {\r\n let urlBase = make('v1', 'Attachments', 'get_by_id?id=' + id);\r\n let result = await get(urlBase);\r\n return result;\r\n },\r\n\r\n delete: async (item) => {\r\n let urlBase = make('v1', 'Attachments', 'delete');\r\n\r\n let result = await del(urlBase, item);\r\n return result;\r\n },\r\n\r\n add: async (item) => {\r\n let urlBase = make('v1', 'Attachments', 'save');\r\n let result = await post(urlBase, item);\r\n return result;\r\n },\r\n\r\n update: async (item) => {\r\n let urlBase = make('v1', 'Attachments', 'save');\r\n let result = await post(urlBase, item);\r\n return result;\r\n },\r\n\r\n listAll: async () => {\r\n let urlBase = make('v1', 'Attachments', 'listAll');\r\n let result = await get(urlBase);\r\n return result;\r\n },\r\n\r\n getAttachments: async (tableName, itemId) => {\r\n let urlBase = make('v1', 'Attachments', 'getattachmentss?tableName=' + tableName + \"&itemId=\" + itemId.toString());\r\n let result = await get(urlBase);\r\n return result;\r\n },\r\n downloadExport: (downloadModel) => {\r\n let urlBase = make('v1', 'Attachments', 'downloadExport?filePath=' + encodeURIComponent(downloadModel.filePath) + \"&fileName=\" + encodeURIComponent(downloadModel.fileName) + \"&contentType=\" + downloadModel.contentType);\r\n const link = document.createElement('a');\r\n link.href = urlBase;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n },\r\n getLink: (downloadModel) => {\r\n const urlBase = make('v1', 'Attachments', 'downloadExport?filePath=' + encodeURIComponent(downloadModel.filePath) + \"&fileName=\" + encodeURIComponent(downloadModel.fileName) + \"&contentType=\" + downloadModel.contentType);\r\n return encodeURIComponent(urlBase)\r\n },\r\n upload: async (files, savePath) => {\r\n let urlBase = make('v1', 'Attachments', 'upload');\r\n let result = await multiUpload(urlBase, files, savePath);\r\n return result;\r\n },\r\n view: (item) => {\r\n let url = make('v1', 'attachments', 'download?id=' + item.id);\r\n if (item.id === undefined || item.id === 0 || item.id === null) url = item.clientFile;\r\n return url\r\n },\r\n dowload_guide: (item) => {\r\n let url = make('assets', 'docs', item);\r\n return url\r\n },\r\n uploadMutil: async (files, savePath) => {\r\n let urlBase = make('v1', 'Attachments', 'uploadMulti');\r\n let result = await multiUpload(urlBase, files, savePath);\r\n return result;\r\n },\r\n testDownload: async (id) => {\r\n let urlBase = make('v1', 'Attachments', 'download?id=' + id );\r\n let result = await getFile(urlBase);\r\n return result;\r\n },\r\n}\r\nexport default attachmentsApi;","const FunctionCode = {\r\n VIEW: 1,\r\n ADD: 2,\r\n UPDATE: 3,\r\n DELETE: 4,\r\n };\r\n\r\n export default FunctionCode;","const ModuleCode = {\r\n DUAN: \"DUAN\",\r\n KHACH_HANG: \"KHACH_HANG\",\r\n NGUOI_DUNG: \"NGUOI_DUNG\",\r\n NHOM_DU_AN: \"NHOM_DU_AN\",\r\n PHAN_QUYEN: \"PHAN_QUYEN\",\r\n Module: \"Module\",\r\n NEWS_CATEGORY: \"NEWS_CATEGORY\",\r\n NEWS_ARTICLE: \"NEWS_ARTICLE\",\r\n Menu:\"Menu\",\r\n ProductCategory:\"PRODUCT_CATEGORY\",\r\n DOCUMENT_TYPE:\"DOCUMENT_TYPE\",\r\n TAG_INFO:\"TAG_INFO\",\r\n DOCUMENT_CATEGRORY:\"DOCUMENT_CATEGRORY\",\r\n DOCUMENT_INFO: \"DOCUMENT_INFO\",\r\n STAFF_INFO: \"STAFF_INFO\",\r\n COURSE_INFO: \"COURSE_INFO\"\r\n};\r\n\r\nexport default ModuleCode;\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport {\r\n Modal, Button, Row,\r\n Col, Form, Input, Schema, InputPicker \r\n} from 'rsuite';\r\nimport AutoFormApi from '../AutoForm/api/AutoFormApi';\r\nimport { GoRocket , GoX} from \"react-icons/go\";\r\nimport userApi from '../../api/userApi';\r\nimport { CommonContext } from \"../../context\";\r\n\r\nconst { StringType, NumberType } = Schema.Types;\r\n\r\nconst Textarea = React.forwardRef((props, ref) => );\r\n\r\nfunction RequestLevelDialog({ show, ...props }) {\r\n const context = useContext(CommonContext);\r\n\r\n const [listLevel, setListLevel] = useState([]);\r\n const [formValue, setFormValue] = useState({});\r\n let form = {};\r\n\r\n useEffect(() => {\r\n getListLevel();\r\n }, [])\r\n\r\n useEffect(() => {\r\n onLevelChange();\r\n }, [formValue.levelChange])\r\n\r\n function onLevelChange(){\r\n let findLevel = listLevel.find(c=> c.id == formValue.levelChange);\r\n if(findLevel){\r\n let data ={\r\n levelChange : formValue.levelChange,\r\n condition : findLevel.condition,\r\n benefit : findLevel.benefit\r\n }\r\n setFormValue(data);\r\n }\r\n \r\n }\r\n\r\n const model = Schema.Model({\r\n levelChange: NumberType()\r\n .isRequired(`Yêu cầu nhập`)\r\n });\r\n\r\n function formEdit(){\r\n return (\r\n setFormValue(formValue)}\r\n ref={(ref) => (form = ref)}\r\n model={model}\r\n >\r\n \r\n \r\n \r\n Cấp yêu cầu\r\n \r\n \r\n \r\n \r\n \r\n Điều kiện\r\n \r\n \r\n \r\n Quyền lợi\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n async function getListLevel() {\r\n let { profile } = context;\r\n var res = await AutoFormApi.queryBuilder(\r\n {\r\n \"code\": \"Get_List_Level_Higher\", \"parameters\": [{\r\n name: \"@UserId\",\r\n value: profile && profile.id ? profile.id : 0\r\n }]\r\n }\r\n );\r\n \r\n if (res && res.success) {\r\n setListLevel(res.data.list);\r\n }\r\n }\r\n\r\n function handleClose() {\r\n if (props.onClose) {\r\n props.onClose();\r\n }\r\n }\r\n\r\n\r\n async function onSave() {\r\n let { loading, unloading, error, success, comfirm } = context;\r\n\r\n if (!form.check()) {\r\n console.log(form);\r\n console.error(\"Form Error\");\r\n return;\r\n }\r\n\r\n let submitData = { ...formValue };\r\n loading();\r\n var res = await userApi.userAddRequestChange(submitData);\r\n unloading();\r\n if(res){\r\n success(\"Gửi yêu cầu thành công\");\r\n if (props.onClose) {\r\n props.onClose();\r\n }\r\n }\r\n }\r\n return (\r\n \r\n \r\n Yêu cầu nâng cấp hệ thống\r\n \r\n \r\n
\r\n {formEdit()}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default RequestLevelDialog\r\n","import React from 'react'\r\n\r\nfunction TextColapp(props) {\r\n let text = \"\";\r\n if(props.text){\r\n let arr = props.text.split(\"\\n-\");\r\n if(arr.length > 3){\r\n text = arr.slice(0, 3).join(\"\\n-\");\r\n }else{\r\n text = props.text;\r\n }\r\n }\r\n console.log(text)\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default TextColapp\r\n","import { make, post, get, del } from \"api/utilities\";\r\nconst baseUrl = \"AutoForm/api/v1/AutoForm\";\r\nconst AutoFormApi = {\r\n list: async filter => {\r\n const url = make(baseUrl, \"list\");\r\n return post(url, filter);\r\n },\r\n getById : async id => {\r\n let url = make(baseUrl, \"get_by_id\", `?id=${id}`);\r\n return await get(url);\r\n },\r\n getAll: async (model) => {\r\n let url = make(baseUrl, \"getAll\");\r\n return await get(url, model);\r\n },\r\n delete: async id => {\r\n let url = make(baseUrl, \"delete\");\r\n return await post(url, id);\r\n },\r\n add: async model => {\r\n let url = make(baseUrl, \"add\");\r\n return await post(url, model);\r\n },\r\n update: async model => {\r\n let url = make(baseUrl, \"update\");\r\n return await post(url, model);\r\n },\r\n getItemType : async id => {\r\n let url = make(baseUrl, \"GetItemType\", `?id=${id}`);\r\n return await get(url);\r\n },\r\n listByItemType : async model => {\r\n let url = make(baseUrl, \"listByItemType\");\r\n return await post(url,model);\r\n },\r\n deleteItem : async model => {\r\n let url = make(baseUrl, \"deleteItem\");\r\n return await post(url,model);\r\n },\r\n getItem : async model => {\r\n let url = make(baseUrl, \"GetItemData\");\r\n return await post(url,model);\r\n },\r\n\r\n saveItem : async model => {\r\n let url = make(baseUrl, \"SaveItemData\");\r\n return await post(url,model);\r\n },\r\n getRelateList : async model => {\r\n let url = make(baseUrl, \"GetRelateList\");\r\n return await post(url,model);\r\n },\r\n\r\n getListValue : async model => {\r\n let url = make(baseUrl, \"getListValue\");\r\n return await post(url,model);\r\n },\r\n\r\n queryBuilder : async (model={\r\n code:\"code\",\r\n parameters:[]\r\n }) => {\r\n let url = make(baseUrl, \"queryBuilder\");\r\n return await post(url,model);\r\n },\r\n\r\n};\r\n\r\nexport default AutoFormApi;","const helpler = {\r\n sumArray: (list, key) => {\r\n if (typeof list === \"undefined\" || typeof key === \"undefined\") {\r\n return 0;\r\n }\r\n var sum = 0;\r\n const data = [...list];\r\n for (var i = data.length - 1; i >= 0; i--) {\r\n if (\r\n data[i][key] === null ||\r\n data[i][key] === \"\" ||\r\n data[i][key] === \"undefined\" ||\r\n !data[i][key]\r\n ) {\r\n data[i][key] = 0;\r\n }\r\n sum += Number(data[i][key]);\r\n }\r\n return sum;\r\n },\r\n sumArrayTwo: (list, key, key1) => {\r\n if (\r\n typeof list === \"undefined\" ||\r\n typeof key === \"undefined\" ||\r\n typeof key1 === \"undefined\"\r\n ) {\r\n return 0;\r\n }\r\n var sum = 0;\r\n const data = [...list];\r\n for (var i = data.length - 1; i >= 0; i--) {\r\n if (\r\n data[i][key] === null ||\r\n data[i][key] === \"\" ||\r\n data[i][key] === \"undefined\" ||\r\n !data[i][key]\r\n ) {\r\n data[i][key] = 0;\r\n }\r\n if (\r\n data[i][key1] === null ||\r\n data[i][key1] === \"\" ||\r\n data[i][key1] === \"undefined\" ||\r\n !data[i][key1]\r\n ) {\r\n data[i][key1] = 0;\r\n }\r\n sum += Number(data[i][key]) * Number(data[i][key1]);\r\n }\r\n return sum;\r\n },\r\n buildTree: (array, keyId, parentKeyId, parent, tree ) => {\r\n tree = typeof tree !== \"undefined\" ? tree : [];\r\n if (typeof parent === \"undefined\") {\r\n parent = {};\r\n parent[keyId] = null;\r\n }\r\n var children = array.filter(child => child[parentKeyId] === parent[keyId]);\r\n if (children && children.length > 0) {\r\n if (parent[keyId] == null) {\r\n tree = children;\r\n } else {\r\n parent[\"children\"] = children;\r\n }\r\n for (let child of children) {\r\n helpler.buildTree(array, keyId, parentKeyId, child);\r\n }\r\n }\r\n\r\n return tree;\r\n },\r\n number: (val) => {\r\n if (val === null || val === undefined || val === null)\r\n return 0;\r\n if (typeof (val) === \"string\") {\r\n val = val.trim();\r\n val = val.replace(/,/g, \"\");\r\n let len = val.length;\r\n while (len > 3) {\r\n len -= 3;\r\n val = val.slice(0, len) + \",\" + val.slice(len);\r\n }\r\n return val;\r\n } else if (typeof (val) === \"number\") {\r\n val = val.toString();\r\n val = val.trim();\r\n val = val.replace(/,/g, \"\");\r\n let len = val.length;\r\n while (len > 3) {\r\n len -= 3;\r\n val = val.slice(0, len) + \",\" + val.slice(len);\r\n }\r\n return val;\r\n }\r\n\r\n },\r\n copyToClipboard: (textToCopy) => {\r\n\r\n // 1) Add the text to the DOM (usually achieved with a hidden input field)\r\n const input = document.createElement('input');\r\n document.body.appendChild(input);\r\n input.value = textToCopy;\r\n input.setAttribute(\"type\", \"hidden\");\r\n\r\n // 2) Select the text\r\n //input.focus();\r\n input.select();\r\n\r\n // 3) Copy text to clipboard\r\n const isSuccessful = document.execCommand('copy');\r\n\r\n // 4) Catch errors\r\n if (!isSuccessful) {\r\n console.error('Failed to copy text.');\r\n }\r\n return isSuccessful;\r\n },\r\n customSearchPicker:(keyword, label)=>{\r\n if(!label)\r\n return false;\r\n var str = label\r\n .normalize(\"NFD\")\r\n .replace(/[\\u0300-\\u036f]/g, \"\")\r\n .replace(/đ/g, \"d\")\r\n .replace(/Đ/g, \"D\").toLowerCase();\r\n keyword = (keyword||\"\").normalize(\"NFD\")\r\n .replace(/[\\u0300-\\u036f]/g, \"\")\r\n .replace(/đ/g, \"d\")\r\n .replace(/Đ/g, \"D\").toLowerCase();\r\n\r\n return str.indexOf(keyword)!==-1;\r\n },\r\n unflattenObject : (data)=> {\r\n var result = {}\r\n for (var i in data) {\r\n var keys = i.split('.')\r\n keys.reduce(function(r, e, j) {\r\n return r[e] || (r[e] = isNaN(Number(keys[j + 1])) ? (keys.length - 1 == j ? data[i] : {}) : [])\r\n }, result)\r\n }\r\n return result\r\n },\r\n\r\n flattenObject : (ob) => {\r\n let toReturn = {};\r\n for (let i in ob) {\r\n if (!ob.hasOwnProperty(i)) continue;\r\n\r\n if ((typeof ob[i]) == 'object') {\r\n let flatObject = this.flattenObject(ob[i]);\r\n for (let x in flatObject) {\r\n if (!flatObject.hasOwnProperty(x)) continue;\r\n\r\n toReturn[i + '.' + x] = flatObject[x];\r\n }\r\n } else {\r\n toReturn[i] = ob[i];\r\n }\r\n }\r\n return toReturn;\r\n },\r\n createGuid:()=> \r\n { \r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { \r\n var r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8); \r\n return v.toString(16); \r\n }); \r\n } \r\n\r\n};\r\nexport default helpler;\r\n","import * as React from 'react';\r\nimport { FiSettings } from \"react-icons/fi\";\r\nimport SpinnerIcon from '@rsuite/icons/legacy/Spinner';\r\nexport default class LoadingProgressBar extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hideDialog: true\r\n };\r\n }\r\n\r\n show = () => {\r\n this.setState({ hideDialog: false });\r\n };\r\n\r\n hide = () => {\r\n this.setState({ hideDialog: true });\r\n };\r\n\r\n render() {\r\n const { hideDialog } = this.state;\r\n const { isShow } = this.props;\r\n const show = isShow ? isShow : !hideDialog;\r\n return \r\n {show &&\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","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport attachmentsApi from 'api/attachmentsApi';\r\nimport { CommonContext } from \"context\";\r\n\r\nconst UrlApi = window.REACT_APP_API_URL;\r\nclass Attachment extends Component {\r\n\tstatic contextType = CommonContext;\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = { files: [] }\r\n\t\tif (props.editable === undefined) {\r\n\t\t\tthis.state.editable = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.state.editable = props.editable;\r\n\t\t}\r\n\t\tthis.render = this.render.bind(this);\r\n\t}\r\n\r\n\tcomponentWillReceiveProps(newProps) {\r\n\t\tif (JSON.stringify(this.props) !== JSON.stringify(newProps)) {\r\n\t\t\t\tthis.getAttachments(newProps.itemId);\r\n\t\t\t\r\n\t\t}\r\n\r\n\t}\r\n\tcomponentDidMount() {\r\n\t\tthis._isMounted = true\r\n\t\tthis.setState({\r\n\t\t\tdisplay: this.props.editable === true ? \"block\" : \"none\"\r\n\t\t})\r\n\t\tthis.getAttachments(this.props.itemId);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tthis._isMounted = false;\r\n\r\n\t}\r\n\r\n\tonDelete = async (item) => {\r\n\t\tif (!item) return\r\n\t\tif (this.props.isClone && item && item.id) {\r\n\t\t\tdelete item.id\r\n\t\t}\r\n\t\tif (item.id === undefined || item.id === 0 || item.id === null) {\r\n\t\t\tvar index = this.state.files.indexOf(item);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.state.files.splice(index, 1);\r\n\t\t\t\tthis.setState({ temp: \"\" })\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// var res = await attachmentsApi.delete(item.id);\r\n\t\t\t// if (!this._isMounted) return;\r\n\t\t\t// if (res && res.success) {\r\n\t\t\t// \tif (index !== -1) {\r\n\t\t\t// \t\tthis.state.files.splice(index, 1);\r\n\t\t\t// \t\tthis.setState({ temp: \"\" });\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t\titem.action = 2;\r\n\t\t\tthis.setState({ temp: \"\" });\r\n\t\t}\r\n\t\tlet { onGetFiles } = this.props;\r\n\t\tif (onGetFiles) {\r\n\t\t\t// let files = this.getAttachmentFiles();\r\n\t\t\tdebugger;\r\n\t\t\t onGetFiles(this.state.files);\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\tonDownload = (item) => {\r\n\t\tvar link = document.createElement('a');\r\n\t\tif (item.id === undefined || item.id === 0 || item.id === null) {\r\n\t\t\tlink.href = item.clientFile;\r\n\t\t\tlink.target = \"_blank\";\r\n\t\t\tlink.download = item.fileName;\r\n\t\t} else {\r\n\t\t\tlink.href = UrlApi + \"v1/attachments/download?id=\" + item.id.toString();\r\n\t\t}\r\n\t\tlink.click();\r\n\t}\r\n\r\n\tgetDownloadLink = (item,size=\"\") => {\r\n\t\tif(!item)\r\n\t\t\treturn \"\";\r\n\t\tif (item.id === undefined || item.id === 0 || item.id === null) {\r\n\t\t\treturn item.clientFile;\r\n\t\t} else {\r\n\t\t\treturn `${UrlApi}v1/attachments/download?id=${item.id}&size=${size}`;\r\n\t\t}\r\n\t}\r\n\r\n\tgetAttachments = async (itemId) => {\r\n\t\tif (!itemId || itemId === 0)\r\n\t\t\treturn;\r\n\t\tlet res = await attachmentsApi.getAttachments(this.props.tableName, itemId);\r\n\t\tif (!this._isMounted) return;\r\n\t\tif (res && res.data) {\r\n\t\t\tthis.setState({ files: res.data });\t\t\r\n\t\t}\r\n\t}\r\n\r\n\tgetAttachmentFiles = () => {\r\n\t\tlet at = this.state.files.filter(c => {\r\n\t\t\treturn (c.id === null || c.id === undefined || c.id === 0);\r\n\t\t});\r\n\t\treturn at;\r\n\t}\r\n\r\n\treset = () => {\r\n\t\tthis.setState({ \"files\": [] })\r\n\t}\r\n\r\n\tonPickServerFile = async (data) => {\r\n\t\tlet { onGetFiles, multiple } = this.props;\r\n\t\tif (!multiple && this.state.files.length > 0) {\r\n\t\t\tawait this.onDelete(this.state.files[0]);\r\n\t\t}\r\n\t\tthis.state.files.push(data);\r\n\t\tthis.setState({ temp: \"\" })\r\n\t\tif (onGetFiles) {\r\n\t\t\t//let files = this.getAttachmentFiles();\r\n\t\t\tonGetFiles(this.state.files);\r\n\t\t}\r\n\t}\r\n\tonFileChange = async (event, isRs, callBack) => {\r\n\t\tlet { fileExtensions = [], tableName, onGetFiles, multiple } = this.props;\r\n\t\tlet files = isRs ? event : event.target;\r\n\t\tif (files.length === 0) return;\r\n\t\tlet extensions = fileExtensions;\r\n\t\tif (extensions.length > 0) {\r\n\t\t\textensions.map(c => {\r\n\t\t\t\treturn c = c.toLowerCase();\r\n\t\t\t})\r\n\t\t\tlet fileName = files[0].name;\r\n\t\t\tlet ext = fileName.split(\".\").pop().toLowerCase();\r\n\t\t\tif (extensions.indexOf(\".\" + ext) === -1) {\r\n\t\t\t\talert(\"File không đúng định dạng\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!multiple && this.state.files.length > 0) {\r\n\t\t\t//await this.onDelete(this.state.files[0]);\r\n\t\t\tthis.state.files.map(c=>{\r\n\t\t\t\tc.action = 2;\r\n\t\t\t})\r\n\t\t}\r\n\t\tlet res ;\r\n\r\n\t\tif(multiple){\r\n\t\t\tres = await attachmentsApi.uploadMutil(files);\r\n\t\t}else{\r\n\t\t\tres = await attachmentsApi.upload(files);\r\n\t\t}\r\n\t\tif (callBack) callBack(res)\r\n\t\tif (!this._isMounted) return;\r\n\t\tif (res && res.success && res.data) {\r\n\t\t\tif(!multiple){\r\n\t\t\t\tconst tmpPath = URL.createObjectURL(files[0]);\r\n\t\t\t\tres.data.clientFile = tmpPath;\r\n\t\t\t\tres.data.tableName = tableName;\r\n\t\t\t\tthis.state.files.push({...res.data, action:1});\r\n\t\t\t\tthis.setState({ temp: \"\" })\r\n\t\t\t}else{\r\n\t\t\t\tfor (let index = 0; index < res.data.length; index++) {\r\n\t\t\t\t\tconst fileItem = files[index];\r\n\t\t\t\t\tconst tmpPath = URL.createObjectURL(fileItem);\r\n\t\t\t\t\tres.data[index].clientFile = tmpPath;\r\n\t\t\t\t\tres.data[index].tableName = tableName;\t\r\n\t\t\t\t\tres.data[index].action = 1;\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\tthis.state.files = [...this.state.files ,...res.data ];\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\r\n\t\t} else {\r\n\t\t\tconst { error } = this.context;\r\n\t\t\treturn error(res.message);\r\n\t\t}\r\n\t\tif (onGetFiles) {\r\n\t\t\t//let files = this.getAttachmentFiles();\r\n\t\t\tonGetFiles(this.state.files);\r\n\t\t}\r\n\t}\r\n\r\n\tonUpload = () => {\r\n\t\tthis.fileupload.click();\r\n\t}\r\n\r\n\tonPreview = (item) => {\r\n\t\tconst { onPreview } = this.context;\r\n\t\tconst link = this.getDownloadLink(item);\r\n\t\tonPreview(link);\r\n\t}\r\n\r\n\trender() {\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\r\n\t\t\t\t this.fileupload = input}\r\n\t\t\t\t\thidden={true}\r\n\t\t\t\t\tonChange={this.onFileChange}\r\n\t\t\t\t\taccept={this.props.fileExtensions ? this.props.fileExtensions.join(\",\") : \"*\"}\r\n\t\t\t\t/>\r\n\t\t\t\t{this.props.children(this)}\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n}\r\n\r\nAttachment.propTypes = {\r\n\teditable: PropTypes.bool,\r\n\tonGetAttachments: PropTypes.func,\r\n\ttableName: PropTypes.string.isRequired,\r\n\titemId: PropTypes.number,\r\n\tfileExtensions: PropTypes.array,\r\n\tmultiple: PropTypes.bool\r\n};\r\n\r\n//attachmentComponent data\r\n//onDelete(item)\r\n//onUpload(item)\r\n//onDownload(item)\r\n//getDownloadLink(item)\r\n//getAttachmentFiles() : get files moi duoc attach\r\n\r\nexport default Attachment;","let moment = require(\"moment\");\r\n\r\nconst ProductType = {\r\n Billet: 1,\r\n Ingot: 2\r\n}\r\nconst ProductionTypeOptions = [\r\n { text: \"Billet\", key: 1 },\r\n { text: \"Ingot\", key: 2 }\r\n]\r\nconst OrderType = {\r\n Hangban: 1,\r\n Giacong: 2\r\n}\r\n\r\n// const ExportType = {\r\n// Production: 1,\r\n// Factory: 2,\r\n// Sale: 3\r\n// }\r\n\r\n// const ProductImportMethod = {\r\n// Production: 1,\r\n// OtherCompany: 2\r\n// }\r\n\r\nconst ItemStatus =\r\n{\r\n Draft: \"Draft\",\r\n Pending: \"Pending\",\r\n Processing: \"Processing\",\r\n Finish: \"Finish\",\r\n Cancel: \"Cancel\",\r\n Delete: \"Delete\"\r\n\r\n}\r\n\r\nconst PermissionCode =\r\n{\r\n //SYSTEM\r\n CREATE_ACCOUNTS_CATEGORIES: 11, // Thêm tài khoản mới\r\n UPDATE_ACCOUNTS_CATEGORIES: 12, // Cập nhật tài khoản\r\n DELETE_ACCOUNTS_CATEGORIES: 13, // Xóa tài khoản\r\n VIEW_ACCOUNTS_CATEGORIES: 14, // Xem d/s tài khoản\r\n MANAGE_USERS: 42, // Quản lý người dùng\r\n MANAGE_ROLES: 43, // Quản lý vai trò\r\n MANAGE_PERMISSION: 44, // Phân quyền\r\n NHOMNHANVIEN_XEM: 105, // Xem d/s nhóm nhân viên\r\n NHOMNHANVIEN_CAPNHAT: 106, // Cập nhật nhóm nhân viên\r\n NHOMNHANVIEN_XOA: 107, // \"Xóa nhóm nhân viên\"\r\n\r\n //CATEGORIES\r\n KHACHHANG_QUANLY: 100, // Quản lý khách hàng\r\n NHOMLICH_QUANLY: 110, // Quản lý nhóm lịch\r\n GIAIDOAN_XEM: 115, // Xem d/s giai đoạn\r\n GIAIDOAN_QUANLY: 116, // Quản lý giai đoạn\r\n GOILAMVIEC_QUANLY: 120, // Quản lý gói giờ làm việc\r\n QUYTRINH_QUANLY: 125, // Quản lý quy trình\r\n OUTGOINGEMAIL_QUANLY: 130, // Quản lý email gửi\r\n INCOMINGEMAIL_QUANLY: 135, // Quản lý email đến\r\n THONGBAO_QUANLY: 140, // Quản lý thông báo chung\r\n BINHLUAN_QUANLY: 145, // Quản lý danh sách trao đổi\r\n NHOMDUAN_QUANLY: 146, // Quản lý nhóm dự án\r\n BOMON_QUANLY: 147, // Quản lý bộ môn\r\n TRANGTHAI_GIAIDOAN_QUANLY: 148, // Quản lý bộ môn\r\n TIEUCHUAN_QUANLY: 149, // Quản lý bộ môn\r\n\r\n GUIBAI: 150, // Gửi bài\r\n YEUCAUKH_QUANLY: 111, // Quản lý YC từ KH\r\n TEMPLATE_QUANLY: 121, // Quản lý mẫu gửi bài\r\n\r\n //PROJECT\r\n DuAn_THEM: 160, // Khởi tạo dự án\r\n DuAn_CapNhat: 161, // Cập nhật dự án\r\n DuAn_ThietLapQuyTrinh: 162, // Lập quy trình dự án\r\n DuAn_CapNhatKeHoach: 163, // Cập nhật kế hoạch dự án\r\n BAOCAO_DUAN: 180, // Xem báo cáo dự án \r\n BAOCAO_CONGVIEC: 181, // Xem báo cáo công việc\r\n BAOCAO_TIMESHEET: 182, // Xem báo cáo timesheet\r\n CONGVIEC_THEM: 190, // Thêm công việc\r\n CONGVIEC_CAPNHAT: 191, // Cập nhật công việc\r\n CONGVIEC_XOA: 192,\r\n DuAn_QUANLY_NHANSU: 164,\r\n DuAn_GIAOVIEC: 165,\r\n DuAn_YEUCAU_CDT: 166,\r\n DuAn_YEUCAU_APPNOIBO: 167,\r\n DuAn_XOA: 156,\r\n DUAN_XEM_KHACHHANG: 193, //Xem thông tin khách hàng trong dự án.\r\n DUAN_XEM_THOIGIAN_GIAIDOAN: 194,//Xem thời gian các giai đoạn dự án\r\n DANHMUCYKIENDUAN_QUANLY: 200,//Xem thời gian các giai đoạn dự án\r\n}\r\n\r\nclass Utils {\r\n formatDate(date, format) {\r\n date = date || \"\";\r\n if (date === \"\")\r\n return \"\";\r\n if (typeof date === \"string\")\r\n date = new Date(date);\r\n format = format || \"YYYY/MM/DD\"\r\n return moment(date).format(format);\r\n\r\n }\r\n convertToDate(strDate, format) {\r\n if (!strDate)\r\n return;\r\n return moment(strDate, format).toDate();\r\n }\r\n\r\n subtractTime(date1, date2, format) {\r\n if (format === undefined) {\r\n if (typeof date1 === \"string\")\r\n date1 = new Date(date1);\r\n if (typeof date2 === \"string\")\r\n date2 = new Date(date2);\r\n }\r\n else {\r\n if (typeof date1 === \"string\")\r\n date1 = moment(date1, format).toDate();\r\n if (typeof date2 === \"string\")\r\n date2 = moment(date2, format).toDate();\r\n }\r\n\r\n if (date1 instanceof Date && date2 instanceof Date) {\r\n return Math.round(moment(date2).diff(moment(date1), 'minute') / 60 * 100) / 100;\r\n }\r\n\r\n else {\r\n return null;\r\n }\r\n }\r\n subtractDay(date, ndays) {\r\n\r\n return moment(date).subtract(ndays, 'day');\r\n }\r\n\r\n formatMoney(n, c, d, t) {\r\n let cx = isNaN(c = Math.abs(c)) ? 2 : c,\r\n dx = d === undefined ? \".\" : d,\r\n tx = t === undefined ? \",\" : t,\r\n s = n < 0 ? \"-\" : \"\",\r\n i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(cx))),\r\n j = (i.length) > 3 ? i.length % 3 : 0;\r\n\r\n let res = s + (j ? i.substr(0, j) + tx : \"\") + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + tx) + (cx ? dx + Math.abs(n - i).toFixed(cx).slice(2) : \"\");\r\n return res;\r\n\r\n }\r\n\r\n formatNumber(num) {\r\n if (!num)\r\n return \"\";\r\n return num.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')\r\n }\r\n\r\n parseJwt = (token) => {\r\n try {\r\n let base64Url = token.split('.')[1];\r\n let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n return JSON.parse(window.atob(base64));\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n parseToken = () => {\r\n let token = localStorage.getItem(window.TOKEN_KEY);\r\n return this.parseJwt(token);\r\n }\r\n\r\n containPermissionCode = (code) => {\r\n try {\r\n let token = localStorage.getItem(window.TOKEN_KEY);\r\n let permissions = this.parseJwt(token).permissions;\r\n // console.log(permissions)\r\n return (permissions.indexOf(\";\" + code + \";\") !== -1)\r\n } catch (err) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n anyPermission = (codes) => {\r\n codes = codes || [];\r\n let result = false;\r\n let token = localStorage.getItem(window.TOKEN_KEY);\r\n let permissions = this.parseJwt(token).permissions;\r\n codes.map(c => {\r\n if (permissions.indexOf(\";\" + c + \";\") !== -1) {\r\n return result = true;\r\n }\r\n return c;\r\n })\r\n return result;\r\n }\r\n\r\n showButtons = (itemStatus, status, permissionCodes) => {\r\n let result = true;\r\n if (status.indexOf(itemStatus) === -1) {\r\n result = false;\r\n }\r\n permissionCodes.map(c => {\r\n if (this.containPermissionCode(c)) {\r\n result = true;\r\n }\r\n return c;\r\n });\r\n return result;\r\n }\r\n\r\n removeHtmlTag = (html) => {\r\n let tmp = document.createElement(\"DIV\");\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || \"\";\r\n }\r\n\r\n unflattenObject = (obj) => {\r\n let result = {};\r\n\r\n for (let property in obj) {\r\n if (property.indexOf('.') > -1) {\r\n let substrings = property.split('.');\r\n\r\n console.log(substrings[0], substrings[1]);\r\n\r\n\r\n } else {\r\n result[property] = obj[property];\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n flattenObject = (ob) => {\r\n let toReturn = {};\r\n\r\n for (let i in ob) {\r\n if (!ob.hasOwnProperty(i)) continue;\r\n\r\n if ((typeof ob[i]) == 'object') {\r\n let flatObject = this.flattenObject(ob[i]);\r\n for (let x in flatObject) {\r\n if (!flatObject.hasOwnProperty(x)) continue;\r\n\r\n toReturn[i + '.' + x] = flatObject[x];\r\n }\r\n } else {\r\n toReturn[i] = ob[i];\r\n }\r\n }\r\n return toReturn;\r\n };\r\n\r\n copyToClipboard = (textToCopy) => {\r\n // 1) Add the text to the DOM (usually achieved with a hidden input field)\r\n const input = document.createElement('input');\r\n document.body.appendChild(input);\r\n input.value = textToCopy;\r\n\r\n // 2) Select the text\r\n //input.focus();\r\n input.select();\r\n\r\n // 3) Copy text to clipboard\r\n const isSuccessful = document.execCommand('copy');\r\n\r\n // 4) Catch errors\r\n if (!isSuccessful) {\r\n console.error('Failed to copy text.');\r\n }\r\n document.body.removeChild(input);\r\n return isSuccessful;\r\n }\r\n\r\n changeAlias = (alias) => {\r\n // if (alias) {\r\n // let str = alias;\r\n // str = str.toLowerCase();\r\n // str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, \"a\");\r\n // str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, \"e\");\r\n // str = str.replace(/ì|í|ị|ỉ|ĩ/g, \"i\");\r\n // str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, \"o\");\r\n // str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, \"u\");\r\n // str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, \"y\");\r\n // str = str.replace(/đ/g, \"d\");\r\n // str = str.replace(/!|@|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|-|{|}|\\||\\\\/g, \" \");\r\n // str = str.replace(/ + /g, \" \");\r\n // return str;\r\n // }\r\n return ''\r\n }\r\n}\r\n\r\nexport { ProductType, OrderType, Utils, ItemStatus, PermissionCode, ProductionTypeOptions }","import React from 'react'\r\n\r\nconst AuthContext = React.createContext({\r\n isAuth: false,\r\n onLogin: null,\r\n onLogout: null\r\n});\r\n\r\nconst CommonContext = React.createContext({\r\n profile: {}\r\n});\r\nconst UserContext = React.createContext({\r\n profile: {}\r\n});\r\n\r\nexport { AuthContext, UserContext, CommonContext };\r\n","import { make, post, get, del } from \"api/utilities\";\r\nconst baseUrl = \"api/v1/Menu\";\r\nconst menuApi = {\r\n list: async filter => {\r\n const url = make(baseUrl, \"list\");\r\n return post(url, filter);\r\n },\r\n getById: async id => {\r\n let url = make(baseUrl, \"get_by_id\", `?id=${id}`);\r\n return await get(url);\r\n },\r\n getAll: async (model) => {\r\n let url = make(baseUrl, \"getAll\");\r\n return await get(url, model);\r\n },\r\n delete: async id => {\r\n let url = make(baseUrl, \"delete\");\r\n return await post(url, id);\r\n },\r\n add: async model => {\r\n let url = make(baseUrl, \"add\");\r\n return await post(url, model);\r\n },\r\n update: async model => {\r\n let url = make(baseUrl, \"update\");\r\n return await post(url, model);\r\n },\r\n getAllMenu: async () => {\r\n let url = make(baseUrl, \"getAllMenu\");\r\n return await get(url);\r\n },\r\n getAllMenuGroup: async () => {\r\n let url = make(baseUrl, \"getAllMenuGroup\");\r\n return await get(url);\r\n },\r\n\r\n getMenuByGroup: async(group)=>{\r\n let url = make(baseUrl, \"getmenubygroup?group=\" + group);\r\n return await get(url);\r\n }\r\n};\r\n\r\nexport default menuApi;","\r\n\r\nexport const checkValidateUpload = (fileName) => {\r\n if (!fileName) return false;\r\n let name = fileName.split('.').pop();\r\n if (name === \"pdf\" || name === \"docx\" || name === \"doc\") return true;\r\n return false;\r\n}\r\n\r\nexport const mobileCheck = function () {\r\n let check = false;\r\n (function (a) { if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);\r\n return check;\r\n};\r\n\r\nexport const DowloadTemp = async (template, name) => {\r\n try {\r\n fetch(template)\r\n .then(resp => resp.blob())\r\n .then(blob => {\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement(\"a\");\r\n a.style.display = \"none\";\r\n a.href = url;\r\n a.download = name;\r\n document.body.appendChild(a);\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n return true;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n } catch (e) {\r\n return e;\r\n }\r\n};\r\n\r\n// Remove accents/diacritics in a string\r\nexport const removeAccent = (text) => {\r\n const str = text\r\n return str.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\r\n}\r\n\r\nexport const filterWord = (searh, text) => {\r\n if (!searh) return true;\r\n const data = removeAccent(text).toUpperCase();\r\n const item = removeAccent(searh).toUpperCase();\r\n\r\n return data.includes(item);\r\n};\r\n\r\n\r\n// export const = (searh, text) => {\r\n\r\n// };\r\n\r\n","var urljoin = require(\"url-join\");\r\n\r\nexport function make(...args) {\r\n var baseUrl = window.REACT_APP_API_URL;\r\n var path = urljoin(args);\r\n return urljoin(baseUrl, path);\r\n}\r\n\r\nexport const get = async url => {\r\n return await call(url, \"GET\");\r\n};\r\n\r\nexport const getFile = async url => {\r\n return await call(url, \"GET\" , null , null , 'blob');\r\n};\r\n\r\nexport const post = async (url, model) => {\r\n return await call(url, \"POST\", model);\r\n};\r\n\r\nexport const guestPost = async (url, model) => {\r\n return await call(url, \"POST\", model, true);\r\n};\r\nexport const guestGet = async (url, model) => {\r\n return await call(url, \"GET\", model, true);\r\n};\r\n\r\n\r\nexport const put = async (url, model) => {\r\n return await call(url, \"PUT\", model);\r\n};\r\n\r\nexport const del = async (url, model) => {\r\n return await call(url, \"DELETE\", model);\r\n};\r\nexport const upload = async (url, file, savePath) => {\r\n var model = new FormData();\r\n model.append(\"file\", file);\r\n if (savePath) model.append(\"model\", JSON.stringify({ savePath: savePath }));\r\n return await call(url, \"UPLOAD\", model);\r\n};\r\nexport const multiUpload = async (url, files, savePath) => {\r\n var model = new FormData();\r\n let i = 0;\r\n files.forEach(file => {\r\n model.append(\"file\" + i, file);\r\n i++;\r\n });\r\n if (savePath) model.append(\"model\", JSON.stringify({ savePath: savePath }));\r\n\r\n return await call(url, \"UPLOAD\", model);\r\n};\r\n\r\n\r\nconst call = async (url, method, model, noAuth, responseType) => {\r\n var access_token = undefined;\r\n try {\r\n var strToken = localStorage.getItem(window.TOKEN_KEY);\r\n var token = strToken;\r\n if (token) access_token = token;\r\n else access_token = null;\r\n\r\n var headers = {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + access_token\r\n };\r\n\r\n if (noAuth) headers.Authorization = undefined;\r\n let request = {\r\n method: method,\r\n headers: headers\r\n };\r\n\r\n if (method === \"POST\" || method === \"PUT\" || method === \"DELETE\") {\r\n request.body = JSON.stringify(model);\r\n }\r\n if (method === \"UPLOAD\") {\r\n const headers = {\r\n Authorization: \"Bearer \" + access_token\r\n };\r\n request.headers = headers;\r\n request.method = \"POST\";\r\n request.body = model;\r\n }\r\n let response = await fetch(url, request).catch(error => console.log(error));\r\n if (!response) return {};\r\n if (!response.ok) {\r\n \r\n if (response.status === 401) {\r\n // unauthorized\r\n localStorage.removeItem(window.TOKEN_KEY);\r\n window.location.reload();\r\n }\r\n if (response.status === 403) {\r\n // forbiden\r\n alert(\"Bạn không có quyền thực hiện tính năng này\");\r\n }\r\n return { message: response.status };\r\n }\r\n\r\n if(responseType == \"blob\"){\r\n let responseData = await response.blob();\r\n return responseData;\r\n }\r\n\r\n let responseJson = await response.json();\r\n return responseJson;\r\n } catch (e) {\r\n console.log(e);\r\n alert(\"Lỗi kết nối với máy chủ\", e);\r\n }\r\n};\r\n","export function fetchAccessToken(uid, pwd) {\r\n return new Promise(function (resolve, reject) {\r\n\r\n let tokenUrl = window.REACT_APP_AUTH_URL ;\r\n let client_id = \"ro.client\";\r\n let client_secret = \"secret\";\r\n let xhr = new XMLHttpRequest();\r\n xhr.onload = function (e) {\r\n let response_data = JSON.parse(xhr.response);\r\n if (xhr.status === 200 && response_data.access_token) {\r\n resolve({ success: true, access_token: response_data.access_token });\r\n } else {\r\n resolve({ success: false });\r\n }\r\n }\r\n xhr.onerror = function () {\r\n reject({\r\n status: this.status,\r\n statusText: xhr.statusText\r\n });\r\n };\r\n xhr.open(\"POST\", tokenUrl);\r\n let data = {\r\n username: uid,\r\n password: pwd,\r\n grant_type: \"password\",\r\n scope: \"openid offline_access wgd_api\",\r\n client_id: client_id,\r\n client_secret: client_secret\r\n };\r\n\r\n let body = \"\";\r\n for (let key in data) {\r\n if (body.length) {\r\n body += \"&\";\r\n }\r\n body += key + \"=\";\r\n body += encodeURIComponent(data[key]);\r\n }\r\n xhr.setRequestHeader(\"Authorization\", \"Basic \" + btoa(client_id + \":\" + client_secret));\r\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\r\n xhr.send(body);\r\n });\r\n}\r\n","import React from 'react'\r\nimport { AuthContext } from 'context'\r\nimport { fetchAccessToken } from \"api/authApi\";\r\nimport { Input, ButtonToolbar, Button, IconButton, Notification, Content, FlexboxGrid, Panel, toaster, Header, Navbar, InputGroup, Col } from 'rsuite';\r\nimport { Container } from 'rsuite';\r\nimport { FaUserAlt, FaUnlockAlt } from \"react-icons/fa\";\r\nimport { AiOutlineLogin } from \"react-icons/ai\";\r\nimport VisibleIcon from '@rsuite/icons/Visible';\r\nimport UnvisibleIcon from '@rsuite/icons/Unvisible';\r\nimport './login.css';\r\nclass Login extends React.Component {\r\n static contextType = AuthContext;\r\n constructor(props) {\r\n super(props);\r\n this.state = { username: \"\", password: \"\", visible: false }\r\n }\r\n\r\n parseJwt = (token) => {\r\n var base64Url = token.split('.')[1];\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n\r\n return JSON.parse(jsonPayload);\r\n }\r\n\r\n\r\n onLogin = async () => {\r\n this.setState({ loading: true })\r\n const { username, password } = this.state;\r\n const response = await fetchAccessToken(username, password);\r\n this.setState({ loading: false })\r\n if (response && response.success) {\r\n\r\n localStorage.setItem(window.TOKEN_KEY, response.access_token);\r\n let dataJwt = this.parseJwt(response.access_token);\r\n this.context.onLogin();\r\n } else this.loginError();\r\n }\r\n\r\n handleChange = () => {\r\n this.setState((state, props) => ({\r\n visible: !state.visible\r\n }));\r\n }\r\n\r\n onTextFieldChange = (value, e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n handleEnter = (e, tab) => {\r\n if (e.key === 'Enter') {\r\n this.onLogin();\r\n }\r\n }\r\n\r\n loginError = () => {\r\n toaster.push(\r\n \r\n Tài khoản hoặc mật khẩu không chính xác!\r\n ,\r\n { placement: 'topEnd' }\r\n );\r\n }\r\n render() {\r\n return (\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n Website đào tạo Heshi\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n

Đăng nhập

\r\n
\r\n\r\n
\r\n } circle size=\"lg\" style={{ color: '#fff', marginRight: '-10px', backgroundColor: \"#6900d2\", zIndex: 10 }} />\r\n this.handleEnter(e, 'tab')}\r\n defaultValue={this.state.username}\r\n onChange={this.onTextFieldChange}\r\n />\r\n
\r\n\r\n
\r\n } circle size=\"lg\" style={{ color: '#fff', marginRight: '-10px', backgroundColor: \"#6900d2\", zIndex: 10 }} />\r\n\r\n \r\n this.handleEnter(e)}\r\n placeholder='Mật khẩu'\r\n />\r\n \r\n {this.state.visible ? : }\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\nexport default Login\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport { Modal, Button } from 'rsuite';\r\nimport { CommonContext } from 'context';\r\nimport cx from \"classnames\"\r\nconst Preview = () => {\r\n const context = useContext(CommonContext);\r\n const { loading, unloading, onPreview, showPreview, isLoading, mobile } = context;\r\n\r\n useEffect(() => {\r\n onRefresh();\r\n }, []);\r\n const onClose = () => {\r\n if (onPreview) onPreview(false);\r\n }\r\n function onRefresh() {\r\n loading();\r\n setTimeout(() => {\r\n unloading()\r\n }, 500);\r\n }\r\n\r\n // note1: `https://docs.google.com/viewer?hl=en&embedded=true&url=${showPreview}`\r\n // note2: `https://docs.google.com/viewerng/viewer?url=${showPreview}&embedded=true`\r\n // mote3: `https://docs.google.com/viewerng/viewer?hl=en&embedded=true&url=${showPreview}`\r\n return (\r\n \r\n {\r\n !isLoading &&\r\n \r\n }\r\n \r\n )\r\n};\r\n\r\nconst PreviewModal = (props) => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {props.children}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\nexport default Preview;","import React from 'react'\r\nimport { Progress } from \"rsuite\";\r\nconst { Paragraph } = Progress;\r\nconst Loading = () => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nconst LazyLoad = (importFunc) => {\r\n const Component = React.lazy(importFunc);\r\n return ((props) => (\r\n \r\n \r\n \r\n ));\r\n}\r\n\r\nexport default LazyLoad\r\n","import LazyLoad from 'components/LazyLoad';\r\n\r\n\r\n\r\nconst Notification = LazyLoad(() => import('modules/notification'));\r\nconst Profile = LazyLoad(() => import('modules/Profile'));\r\n\r\n\r\nconst Admin = LazyLoad(() => import('modules/admin'));\r\nconst Permissions = LazyLoad(() => import('modules/admin/permission'));\r\nconst Users = LazyLoad(() => import('modules/admin/Users'));\r\nconst Customer = LazyLoad(() => import('modules/Customer'));\r\nconst Roles = LazyLoad(() => import('modules/Roles'));\r\nconst LayoutDefine = LazyLoad(() => import('modules/LayoutDefine'));\r\nconst ModuleDefine = LazyLoad(() => import('modules/ModuleDefine'));\r\nconst LandingPage = LazyLoad(() => import('modules/LandingPage'));\r\nconst NewsCategory = LazyLoad(() => import('modules/NewsCategory'));\r\nconst PageDefine = LazyLoad(() => import('modules/PageDefine'));\r\nconst NewPage = LazyLoad(() => import('modules/PageDefine/NewPage'));\r\nconst NewModues = LazyLoad(() => import('modules/ModuleDefine/NewModule'));\r\nconst Menu = LazyLoad(() => import('modules/Menu'));\r\nconst AutoForm = LazyLoad(() => import('modules/AutoForm'));\r\nconst Course = LazyLoad(() => import('modules/Course'));\r\nconst CourseUpdate = LazyLoad(() => import('modules/Course/update'));\r\nconst Staff = LazyLoad(() => import('modules/Staff'));\r\n\r\nconst StaffUpdate = LazyLoad(() => import('modules/Staff/update'));\r\nconst ListWattingApprove = LazyLoad(() => import('modules/ListWattingApprove/ListWattingApprove'));\r\nconst DragForm = LazyLoad(() => import('modules/DragForm'));\r\nconst FormExample = LazyLoad(() => import('modules/DragForm/FormExample'));\r\n\r\n\r\nconst CourseDetail = LazyLoad(() => import('modules/CourseDetail/CourseDetail'));\r\n\r\nconst Home = LazyLoad(() => import('modules/Home/Home'));\r\nconst UserChangePass = LazyLoad(() => import('modules/admin/Users/UserChangePass'));\r\n\r\nconst AccessDenied = LazyLoad(() => import('modules/common/accessDenied'));\r\n\r\n\r\nconst routes = [\r\n \r\n { path: '/', exact: true, render: Home },\r\n { path: '/course/view/:id', exact: true, render: CourseDetail },\r\n\r\n /* Profile*/\r\n { path: '/profile', exact: true, render: Profile },\r\n /* Notification*/\r\n { path: '/notifications', exact: true, render: Notification },\r\n\r\n /* admin */\r\n { path: '/setting/admin', exact: false, render: Admin },\r\n /* admin phân quyền */\r\n { path: '/admin/systems-permissions', exact: true, render: Permissions },\r\n { path: '/admin/users', exact: true, render: Users },\r\n //{ path: '/admin/users/create', exact: true, render: UserCreateForm },\r\n // { path: '/admin/users/update/:id', exact: true, render: UserUpdateForm },\r\n { path: '/admin/customer', exact: true, render: Customer },\r\n { path: '/admin/roles', exact: true, render: Roles },\r\n { path: '/admin/layout', exact: true, render: LayoutDefine},\r\n { path: '/admin/module', exact: true, render: ModuleDefine},\r\n { path: '/admin/landingpage', exact: true, render: LandingPage},\r\n { path: '/admin/newscategory', exact: true, render: NewsCategory},\r\n { path: '/admin/PageDefine', exact: true, render: PageDefine},\r\n { path: '/admin/PageDefine/add-new', exact: true, render: NewPage },\r\n { path: '/admin/PageDefine/edit/:id', exact: true, render: NewPage },\r\n { path: '/admin/module/add-new', exact: true, render: NewModues },\r\n { path: '/admin/module/edit/:id', exact: true, render: NewModues },\r\n { path: '/admin/course', exact: true, render: Course},\r\n { path: '/admin/course/add-new', exact: true, render: CourseUpdate },\r\n { path: '/admin/course/edit/:id', exact: true, render: CourseUpdate },\r\n { path: '/admin/listWattingApprove', exact: true, render: ListWattingApprove},\r\n\r\n\r\n { path: '/admin/staff', exact: true, render: Staff},\r\n { path: '/admin/staff/add-new', exact: true, render: StaffUpdate },\r\n { path: '/admin/staff/edit/:id', exact: true, render: StaffUpdate },\r\n { path: '/admin/staff/approveRegistration', exact: true, render: StaffUpdate },\r\n { path: '/admin/menu', exact: true, render: Menu },\r\n { path: '/form/:id', exact: true, render: AutoForm },\r\n { path: '/dragform', exact: true, render: DragForm },\r\n { path: '/dragform/:id', exact: true, render: DragForm },\r\n { path: '/dynamicform/:code', exact: true, render:FormExample },\r\n { path: '/dynamicform/:code/:id', exact: true, render: FormExample },\r\n { path: '/user-change-pass', exact: true, render: UserChangePass },\r\n { path: '/access-denied', exact: true, render: AccessDenied }\r\n \r\n]\r\n\r\nexport default routes;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Attachment from './Attachment';\r\nimport ImageUploader from 'react-images-upload';\r\nimport Carousel, { Modal, ModalGateway } from 'react-images';\r\nconst customStyles = {\r\n\tview: () => ({\r\n\t\theight: '100%',\r\n\t\twidth: '100%',\r\n\t\talignItems: 'center',\r\n\t\tjustifyContent: 'center',\r\n\t\tdisplay: 'flex !important'\r\n\t}),\r\n\r\n}\r\n\r\nclass AttachmentImage extends Component {\r\n\tstate = { lightboxIsOpen: false };\r\n\tgetAttachments = () => {\r\n\t\treturn this.attachmentControl.getAttachmentFiles();\r\n\t}\r\n\ttoggleLightbox = (lightboxIsOpen) => {\r\n\t\tif (this.props.onClick) this.props.onClick();\r\n\t\telse this.setState({ lightboxIsOpen });\r\n\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet { lightboxIsOpen } = this.state;\r\n\t\tconst { fileExtensions, multiple, tableName, itemId, readOnly, imageStyle, className, noImage, isClone, lightbox, caption } = this.props;\r\n\t\tlet noImages;\r\n\t\tif (noImage) noImages = noImage;\r\n\t\telse noImages = \"/app/assets/images/1.jpg\"\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{atts => {\r\n\t\t\t\t\t\tthis.attachmentControl = atts;\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{readOnly === true ?\r\n\t\t\t\t\t\t\t\t\t
{ this.toggleLightbox(true) }}>\r\n\t\t\t\t\t\t\t\t\t\t{atts.state.files.length > 0 ?\r\n\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\"Upload\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t { atts.onUpload() }}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\tChoose images\r\n \t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tatts.state.files.map((c, key) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
atts.onDelete(c)}>X
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"preview\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlightboxIsOpen && lightbox && atts.state.files[0] &&\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t this.toggleLightbox(false)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}}\r\n\t\t\t\t\r\n\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nAttachmentImage.propTypes = {\r\n\tfileExtensions: PropTypes.array,\r\n\ttableName: PropTypes.string,\r\n\titemId: PropTypes.number,\r\n\treadOnly: PropTypes.bool,\r\n\timageStyle: PropTypes.object,\r\n\tmultiple: PropTypes.bool\r\n};\r\n\r\nexport default AttachmentImage;","import React from 'react'\r\nimport { Dropdown, Whisper, Popover } from 'rsuite';\r\nimport { AuthContext } from 'context'\r\nimport userApi from 'api/userApi';\r\nimport { withRouter , Link } from 'react-router-dom';\r\nimport AttachmentImage from 'native/AttachmentImage';\r\nimport { FaAngleDown ,FaKey } from \"react-icons/fa\";\r\nimport { BiExit } from \"react-icons/bi\";\r\n\r\n\r\nexport class UserLogo extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n user: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getInfoUser()\r\n }\r\n\r\n getInfoUser = async () => {\r\n const user = await userApi.get_my_profile()\r\n if (user && user.success) {\r\n this.setState({\r\n user: user.data\r\n })\r\n }\r\n }\r\n\r\n onLogout = () => {\r\n this.props.history.push(\"/\");\r\n this.context.onLogout();\r\n }\r\n\r\n toUserChangPass =() => {\r\n console.log(this.props)\r\n this.props.history.push(\"/user-change-pass\");\r\n }\r\n\r\n render() {\r\n let { user } = this.state\r\n if (!user) user = {};\r\n const { mobile } = this.props;\r\n return (\r\n
\r\n {\r\n this.container = ref;\r\n }}\r\n >\r\n {\r\n return this.container;\r\n }}\r\n speaker={\r\n \r\n \r\n {false &&\r\n <>\r\n \r\n \r\n Cài đặt tài khoản\r\n \r\n this.themSettingRef.open()}>\r\n \r\n Chủ đề\r\n \r\n \r\n }\r\n \r\n \r\n Đổi mật khẩu\r\n \r\n \r\n Logout\r\n \r\n \r\n \r\n }\r\n >\r\n
\r\n \r\n \r\n {user.fullName}\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(UserLogo)\r\n","import React, { Component } from \"react\";\r\nimport \"./translateBtn.css\"\r\n\r\nclass TranslateBtn extends Component {\r\n googleTranslateElementInit() {\r\n window.google.translate.TranslateElement({ pageLanguage: 'vi', includedLanguages: 'vi,en,fr,ja,it,es,zh-CN,zh-TW', autoDisplay: true }, 'google_translate_element');\r\n }\r\n componentDidMount() {\r\n var addScript = document.createElement('script');\r\n addScript.setAttribute('src', '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');\r\n document.body.appendChild(addScript);\r\n window.googleTranslateElementInit = this.googleTranslateElementInit;\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default TranslateBtn;\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport {\r\n Modal, Button, Row,\r\n Col, Form, Input, Schema, InputPicker\r\n} from 'rsuite';\r\nimport { GoRocket, GoX } from \"react-icons/go\";\r\nimport { CommonContext } from \"../../context\";\r\nimport RequestLevelDialog from './requestLevelDialog'\r\n\r\nfunction StaffInfoDialog({ show, ...props }) {\r\n const context = useContext(CommonContext);\r\n const { userInfo } = context;\r\n\r\n const [requestLevelDialogState, setRequestLevelDialogState] = useState({\r\n show: false\r\n })\r\n\r\n function openUpgateDialog() {\r\n setRequestLevelDialogState({\r\n show: true\r\n })\r\n }\r\n\r\n function onCloseUpgateDialog() {\r\n setRequestLevelDialogState({\r\n show: false\r\n })\r\n }\r\n\r\n function formEdit() {\r\n return (\r\n
\r\n
\r\n \"avt\"\r\n
\r\n
\r\n
\r\n
{userInfo.levelName}: {userInfo.fullName}
\r\n
\r\n
\r\n
Điều kiện:
\r\n
\r\n
\r\n
Quyền lợi:
\r\n
\r\n {userInfo.nextlevelBenefit ? (\r\n
\r\n
Quyền lợi cấp tiếp theo:
\r\n
\r\n ) : null}\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n function handleClose() {\r\n if (props.onClose) {\r\n props.onClose();\r\n }\r\n }\r\n\r\n function getDialogTitle() {\r\n return (\r\n
\r\n Chào mừng đến với website đào tạo Heshi\r\n
\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n {getDialogTitle()}\r\n \r\n \r\n
\r\n {formEdit()}\r\n
\r\n
\r\n \r\n \r\n \r\n {\r\n requestLevelDialogState.show &&\r\n \r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default StaffInfoDialog\r\n","import React, { useState, useContext } from 'react'\r\nimport { Drawer, Panel, Button, Whisper, Popover } from 'rsuite';\r\nimport { CommonContext } from \"context\";\r\nimport { Link } from \"react-router-dom\";\r\nimport TextColapp from '../../modules/common/textColapp'\r\nimport RequestLevelDialog from '../../modules/common/requestLevelDialog'\r\n\r\nfunction MobileStaffInfoDialog(props) {\r\n const context = useContext(CommonContext);\r\n const { mobile, userInfo } = context;\r\n console.log(userInfo)\r\n\r\n const { show, onClose } = props;\r\n const [requestLevelDialogState, setRequestLevelDialogState] = useState({\r\n show: false\r\n })\r\n\r\n function openUpgateDialog() {\r\n setRequestLevelDialogState({\r\n show: true\r\n })\r\n }\r\n\r\n function onCloseUpgateDialog() {\r\n setRequestLevelDialogState({\r\n show: false\r\n })\r\n }\r\n\r\n\r\n return (\r\n \r\n\r\n \r\n
\r\n {userInfo ? (\r\n
\r\n \r\n
\r\n
\r\n \r\n \"avt\"\r\n \r\n
\r\n
\r\n
\r\n
{userInfo.levelName}: {userInfo.fullName}
\r\n
\r\n
\r\n
ĐIỀU KIỆN: {userInfo.levelCondition}
\r\n
\r\n
\r\n
QUYỀN LỢI:
\r\n
\r\n {userInfo.nextlevelBenefit ? (\r\n
\r\n
QUYỀN LỢI CẤP TIẾP THEO:
\r\n
\r\n ) : null}\r\n
\r\n
\r\n

Còn rất nhiều khóa học nâng cao đang chờ bạn

\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n {\r\n requestLevelDialogState.show &&\r\n \r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default MobileStaffInfoDialog\r\n","import React, {useState, useContext } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport UserLogo from \"./UserLogo\";\r\nimport TranslateBtn from \"components/common/translateBtn\";\r\nimport { CommonContext } from \"context\";\r\nimport cx from \"classnames\";\r\nimport StaffInfoDialog from '../../modules/common/StaffInfoDialog'\r\nimport MenuIcon from '@rsuite/icons/Menu';\r\nimport MobileStaffInfoDialog from './MobileStaffInfoDialog'\r\n\r\nfunction Header(props) {\r\n const context = useContext(CommonContext);\r\n const { mobile, userInfo } = context;\r\n const [requestLevelDialogState, setRequestLevelDialogState] = useState({\r\n show: false\r\n })\r\n\r\n const [mobileInfoDialog, setMobileInfoDialog] = useState({\r\n show: false\r\n })\r\n \r\n function openUpgateDialog() {\r\n setRequestLevelDialogState({\r\n show: true\r\n })\r\n }\r\n\r\n function onCloseUpgateDialog() {\r\n setRequestLevelDialogState({\r\n show: false\r\n })\r\n }\r\n\r\n function onOpenMobile() {\r\n setMobileInfoDialog({\r\n show: true\r\n })\r\n }\r\n\r\n function onCloseMobileDialog() {\r\n setMobileInfoDialog({\r\n show: false\r\n })\r\n }\r\n\r\n \r\n\r\n return (\r\n
\r\n \r\n {mobile ? (\r\n \r\n ): null}\r\n
\r\n \r\n \"avt\"\r\n \r\n
\r\n
\r\n
\r\n {userInfo.levelName ? (\r\n
\r\n CẤP HIỆN TẠI CỦA BẠN: \r\n {userInfo.levelName}\r\n
\r\n\r\n ) : null}\r\n
\r\n {/* */}\r\n \r\n
\r\n
\r\n {\r\n requestLevelDialogState.show &&\r\n \r\n }\r\n\r\n{\r\n mobileInfoDialog.show &&\r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nexport default Header;\r\n","import React from 'react'\r\nimport { FaProductHunt, FaBars } from \"react-icons/fa\";\r\nimport ListIcon from '@rsuite/icons/List';\r\nimport MenuIcon from '@rsuite/icons/Menu';\r\nimport GearIcon from '@rsuite/icons/Gear';\r\nimport { FaUserCog, FaBook, FaHouseUser, FaUserFriends, FaChalkboardTeacher, FaCalendarCheck, FaFileVideo, FaBezierCurve, FaArchway } from \"react-icons/fa\";\r\nimport { BiCategory, BiBook, BiCabinet, BiUserCheck } from \"react-icons/bi\";\r\n\r\n\r\n\r\nfunction Icon(props) {\r\n let icon = null;\r\n switch (props.name) {\r\n case \"GearIcon\":\r\n icon = \r\n break;\r\n case \"FaUserCog\":\r\n icon = \r\n break;\r\n case \"BiCategory\":\r\n icon = \r\n break;\r\n case \"FaBook\":\r\n icon = \r\n break;\r\n case \"BiBook\":\r\n icon = \r\n break;\r\n case \"BiCabinet\":\r\n icon = \r\n break;\r\n case \"BiUserCheck\":\r\n icon = \r\n break;\r\n case \"FaHouseUser\":\r\n icon = \r\n break;\r\n case \"FaUserFriends\":\r\n icon = \r\n break;\r\n case \"FaChalkboardTeacher\":\r\n icon = \r\n break;\r\n case \"FaCalendarCheck\":\r\n icon = \r\n break;\r\n case \"FaFileVideo\":\r\n icon = \r\n break;\r\n case \"FaBezierCurve\":\r\n icon = \r\n break;\r\n case \"FaArchway\":\r\n icon = \r\n break;\r\n default: icon = \r\n break;\r\n }\r\n return (\r\n <>\r\n {icon}\r\n \r\n )\r\n}\r\n\r\nexport default Icon\r\n","import React, { Component } from \"react\";\r\nimport {\r\n Toggle,\r\n Sidenav,\r\n Nav,\r\n Button,\r\n Sidebar,\r\n Navbar,\r\n Dropdown,\r\n Whisper,\r\n Tooltip,\r\n} from \"rsuite\";\r\nimport { Utils } from \"components/common/commonObj\";\r\nimport { CommonContext } from \"context\";\r\nimport ModuleCode from \"../../constant/moduleCode\";\r\nimport FunctionCode from \"../../constant/functionCode\";\r\nimport menuApi from \"../../modules/Menu/api/MenuApi\";\r\nimport helpler from \"../../utils/helpler\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { FaAngleLeft, FaAngleRight, FaInfo } from \"react-icons/fa\";\r\nimport Icon from '../../components/common/Icon'\r\nimport GearIcon from '@rsuite/icons/Gear';\r\nimport InfoRoundIcon from '@rsuite/icons/InfoRound';\r\n\r\nconst NavToggle = ({ expand, onChange }) => {\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withRouter(\r\n class extends Component {\r\n static contextType = CommonContext;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n expanded: true,\r\n activeKey: \"\",\r\n classname: \"wgd-shidenav-left\",\r\n menus: [],\r\n };\r\n this.handleToggle = this.handleToggle.bind(this);\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.utils = new Utils();\r\n }\r\n handleToggle() {\r\n this.setState({\r\n expanded: !this.state.expanded,\r\n });\r\n }\r\n handleSelect(eventKey) {\r\n this.setState({\r\n activeKey: eventKey,\r\n expanded: false,\r\n });\r\n }\r\n onShowGuide = async () => {\r\n let host = window.REACT_APP_URL;\r\n if (!host) host = window.location.host + \"/\";\r\n window.open(host + \"assets/docs/Huong_dan_su_dung.docx\", \"_blank\");\r\n };\r\n\r\n componentDidMount() {\r\n this.getMenus();\r\n }\r\n\r\n getMenus = async () => {\r\n var res = await menuApi.getMenuByGroup(\"AdminMenu\");\r\n if (res && res.success) {\r\n let datas = helpler.buildTree(res.data, \"id\", \"parentId\");\r\n this.setState({\r\n menus: datas,\r\n });\r\n }\r\n };\r\n\r\n linkTo = (url) => {\r\n this.props.history.push(url);\r\n };\r\n render() {\r\n const { hp, mobile, expanded, expandMenu } = this.context;\r\n const { activeKey, classname, menus } = this.state;\r\n let items = [\r\n {\r\n route: \"/project\",\r\n label: \"Dự án\",\r\n icon: \"character-authorize\",\r\n show: true,\r\n },\r\n {\r\n route: \"/setting/admin\",\r\n label: \"Quản trị\",\r\n icon: \"th2\",\r\n show:\r\n hp(ModuleCode.NGUOI_DUNG, FunctionCode.VIEW) ||\r\n hp(ModuleCode.NHOM_DU_AN, FunctionCode.VIEW) ||\r\n hp(ModuleCode.KHACH_HANG, FunctionCode.VIEW),\r\n },\r\n // { route: '/email', label: 'Thư điện tử', code: PermissionCode.INCOMINGEMAIL_QUANLY, icon: \"envelope-o\" },\r\n // { route: '/project-report', label: 'Báo cáo dự án', code: PermissionCode.NHOMDUAN_QUANLY, icon: \"trend\" },\r\n ];\r\n items = items.filter((i) => i.show);\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n expandMenu(!expanded)} />\r\n \r\n );\r\n }\r\n }\r\n);\r\n","import React from 'react';\r\n\r\nconst Card = (props) => {\r\n return (\r\n
\r\n {props.children}\r\n
\r\n )\r\n}\r\nexport default Card;","import React, { useEffect, useState ,useContext } from \"react\";\r\nimport userApi from 'api/userApi';\r\n\r\nimport { CommonContext } from \"context\";\r\nimport LoadingProgressBar from \"components/common/LoadingProgressBar\";\r\nimport PreviewFile from \"../common/PreviewFile\";\r\n\r\nimport Swal from \"sweetalert2\";\r\nimport { Notification, toaster , Container, Content, Footer, Sidebar } from 'rsuite';\r\nimport { mobileCheck } from \"utils\"\r\nimport routes from 'routes';\r\nimport Header from './Header';\r\nimport LeftBar from './LeftBar'\r\nimport {\r\n Route,\r\n Switch,\r\n Router\r\n} from 'react-router-dom';\r\nimport Card from \"components/common/Card\";\r\n\r\n// import Permissions from \"constant/permissions\"\r\nfunction DefaultLayout(props) {\r\n\tconst [profile, setCurentUser] = useState({});\r\n\tconst [isLoading, setLoading] = useState(false);\r\n\tconst [listPaths, setListPath] = useState([]);\r\n\tconst [servers, setServer] = useState([]);\r\n\tconst [mobile, setMobile] = useState(false);\r\n\tconst [expanded, setExpanded] = useState(true);\r\n\tconst [showPreview, setShowPreview] = useState(false);\r\n\tconst [contractId, setContractId] = useState(\"\");\r\n\tconst [categoryLib, setCategoryLib] = useState([]);\r\n const [userInfo, setUserInfo] = useState({})\r\n\r\n\tuseEffect(() => {\r\n\t\tgetProfile();\r\n\t\tgetCurentStaffInfo();\r\n\t}, []);\r\n\r\n\tfunction setIsMobile() {\t\t\r\n\t\tlet isMobile = window.innerWidth < 850;\r\n\t\tsetMobile(isMobile);\r\n\t}\r\n\tuseEffect(() => {\r\n\t\tsetIsMobile();\r\n\t\twindow.addEventListener('resize', setIsMobile);\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('resize', setIsMobile);\r\n\t\t}\r\n\t}, [])\r\n\r\n\tasync function getProfile() {\r\n\t\tlet res = await userApi.get_my_profile();\r\n\t\tif (res && res.success) {\r\n\t\t\tsetCurentUser({ ...res.data, permissions: JSON.parse(res.data.permissions) });\r\n\t\t\treturn res.data;\r\n\t\t} else {\r\n\t\t\treturn {};\r\n\t\t}\r\n\t}\r\n\tfunction success(message) {\r\n\t\ttoaster.push(\r\n\t\t\t\r\n\t\t\t\t{message ? message : \"Thao tác thành công.\"}\r\n\t\t\t,\r\n\t\t\t{ placement: 'topEnd' }\r\n\t\t);\r\n\t};\r\n\tfunction error(message) {\r\n\t\ttoaster.push(\r\n\t\t\t\r\n\t\t\t\t{message ? message : \"Có lỗi xảy ra.\"}\r\n\t\t\t,\r\n\t\t\t{ placement: 'topEnd' }\r\n\t\t);\r\n\t};\r\n\tfunction loading() {\r\n\t\tsetLoading(true);\r\n\t}\r\n\tfunction unloading() {\r\n\t\tsetLoading(false);\r\n\t}\r\n\r\n\tasync function comfirm(model, isInput) {\r\n\t\tlet { title, text, confirm, cancel } = model;\r\n\t\tlet init = {\r\n\t\t\ttitle: '

' + title + \"

\",\r\n\t\t\thtml: '

' + text + \"

\",\r\n\t\t\tshowCloseButton: confirm ? confirm : true,\r\n\t\t\tshowCancelButton: cancel ? cancel : true,\r\n\t\t\tfocusConfirm: false,\r\n\t\t\tconfirmButtonText: \"Đồng ý\",\r\n\t\t\tcancelButtonText: \"Bỏ qua\"\r\n\t\t}\r\n\t\tif (isInput) {\r\n\t\t\tinit.input = 'textarea';\r\n\t\t\tinit.inputPlaceholder = 'Nhập nội dung....';\r\n\t\t}\r\n\t\tlet isConfirm = await Swal.fire(init) || {};\r\n\t\treturn (isInput && !isConfirm.dismiss) ? isConfirm : isConfirm.value ? true : false;\r\n\t}\r\n\tasync function actions(appApi, model, callBack) {\r\n\t\tloading();\r\n\t\tlet res = await appApi(model) || {};\r\n\t\tunloading();\r\n\t\tif (res.success) success();\r\n\t\telse error(res.message)\r\n\t\tif (callBack) callBack(res)\r\n\t\treturn res;\r\n\t}\r\n\tasync function search(appApi, model, showLoading) {\r\n\t\tloading();\r\n\t\tlet res = await appApi(model) || {};\r\n\t\tunloading();\r\n\t\treturn res;\r\n\t}\r\n\tasync function getData(appApi, model, showLoading) {\r\n\t\tif (showLoading) loading();\r\n\t\tconst res = await appApi(model) || {};\r\n\t\tif (showLoading) unloading();\r\n\t\treturn res;\r\n\t}\r\n\tfunction hp(moduleCode, functionCode) {\r\n\t\tif (!profile.permissions) return false;\r\n\t\tvar module = profile.permissions.find(c => c.ModuleCode === moduleCode);\r\n\t\tif (!module)\r\n\t\t\treturn false;\r\n\r\n\t\treturn module.FunctionList.indexOf(functionCode) !== -1;\r\n\t};\r\n\r\n\tasync function getCurentStaffInfo() {\r\n var res = await userApi.getCurentStaffInfo();\r\n if (res && res.success) {\r\n setUserInfo(res.data);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\tfunction expandMenu(expand) {\r\n\t\tsetExpanded(expand)\r\n\t}\r\n\r\n\tfunction onPreview(view) {\r\n\t\tsetShowPreview(view)\r\n\t}\r\n\r\n\tfunction setContract(id) {\r\n\t\tsetContractId(id)\r\n\t}\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{/*

*/}\r\n\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{profile && profile.userRoles && profile.userRoles.length > 1 ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : null}\r\n\r\n\t\t\t\t\t\t\r\n\r\n\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t{showPreview &&\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n}\r\n\r\nconst BodyMain = () => {\r\n const context = useContext(CommonContext);\r\n const { expanded } = context;\r\n return (\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n {routes.map((route, index) => (\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\nexport default DefaultLayout;\r\n","import React from 'react';\r\n\r\nimport DefaultLayout from \"./DefaultLayout\"\r\nimport './style.css'\r\nfunction Layout(props) { \r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Layout\r\n","import React, { useState } from \"react\";\r\nimport { BrowserRouter as Router } from \"react-router-dom\";\r\nimport Login from \"modules/login\";\r\n\r\nimport { AuthContext } from \"./context\";\r\nimport Layout from \"components/layout/Layout\";\r\n\r\nfunction App() {\r\n let token = getToken();\r\n const [isAuth, setAuth] = useState(token != null);\r\n function onLogin() {\r\n setAuth(true);\r\n }\r\n\r\n function onLogout() {\r\n localStorage.removeItem(window.TOKEN_KEY);\r\n setAuth(false);\r\n }\r\n\r\n function getToken() {\r\n let access_token = null;\r\n try {\r\n let strToken = localStorage.getItem(window.TOKEN_KEY);\r\n if (strToken) access_token = strToken;\r\n } catch (error) {\r\n access_token = null;\r\n }\r\n\r\n return access_token;\r\n }\r\n\r\n return (\r\n \r\n \r\n {isAuth ? : }\r\n\r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport App from './App';\r\nimport 'rsuite/dist/rsuite.min.css';\r\nimport \"./scss/index.scss\";\r\nReactDOM.render(, document.getElementById('root'));","import { make, post, get, put, guestGet } from \"./utilities\";\r\n\r\nconst userApi = {\r\n updateUserRole: async model => {\r\n const url = make(\"v1\", \"user\", \"updateUserRole\");\r\n return post(url, model);\r\n },\r\n list: async filter => {\r\n const url = make(\"v1\", \"user\", \"search\");\r\n return post(url, filter);\r\n },\r\n get_my_profile: async () => {\r\n let url = make(\"v1\", \"user\", \"get_my_profile\");\r\n return await get(url);\r\n },\r\n getById: async id => {\r\n let url = make(\"v1\", \"user\", \"get_user_info\", `?userId=${id}`);\r\n return await get(url);\r\n },\r\n profile: async () => {\r\n let url = make(\"v1\", \"user\", \"get_my_profile\");\r\n return await get(url);\r\n },\r\n updateProfile: async model => {\r\n let url = make(\"v1\", \"user\", \"update-profile\");\r\n return await post(url, model);\r\n },\r\n reset_password: async (model) => {\r\n let url = make(\"v1\", \"user\", \"reset-password\");\r\n return await post(url, model);\r\n },\r\n \r\n delete: async id => {\r\n let url = make(\"v1\", \"user\", `${id}`, \"remove\");\r\n return await post(url);\r\n },\r\n add: async user => {\r\n let url = make(\"v1\", \"user\", \"add_user\");\r\n return await post(url, user);\r\n },\r\n update: async user => {\r\n let url = make(\"v1\", \"user\", \"update_user\");\r\n return await post(url, user);\r\n },\r\n getMyRole: async () => {\r\n let url = make(\"v1\", \"user\", \"my-roles\");\r\n return await get(url);\r\n },\r\n upadteMyRole: async model => {\r\n let url = make(\"v1\", \"user\", \"update-role\");\r\n return await post(url, model);\r\n },\r\n listroles: async () => {\r\n let filter = {\r\n roneName: \"\",\r\n sortBy: \"\",\r\n pageIndex: 1,\r\n pageSize: 100\r\n };\r\n\r\n let url = make(\"role\", \"list\");\r\n return await post(url, filter);\r\n },\r\n listPermissions: async () => {\r\n let url = make(\"role\", \"roles\", \"list-permissions\");\r\n return await get(url);\r\n },\r\n updateroles: async role => {\r\n let url = make(\"role\", \"roles\", \"update\");\r\n return await put(url, role);\r\n },\r\n setUserCalendar: async model => {\r\n const url = make(\"v1\", \"user\", \"calendar\", \"save\");\r\n var result = await post(url, model);\r\n return result;\r\n },\r\n deleteUserCalendar: async id => {\r\n const url = make(\"v1\", \"user\", \"calendar\", \"delete\", id.toString());\r\n var result = await post(url);\r\n return result;\r\n },\r\n getUserCalendars: async userId => {\r\n const url = make(\"v1\", \"user\", userId.toString(), \"calendars\");\r\n var result = await get(url);\r\n return result.data;\r\n },\r\n getListCalendars: async filter => {\r\n const url = make(\"v1\", \"user\", \"calendar\", \"get_list\");\r\n return post(url, filter);\r\n },\r\n getCalendars: async () => {\r\n const url = make(\"v1\", \"user\", \"calendar\", \"get\");\r\n return get(url);\r\n },\r\n delegacy: async filter => {\r\n const url = make(\"v1\", \"user\", \"delegacy\");\r\n return post(url, filter);\r\n },\r\n evictDelegacy: async filter => {\r\n const url = make(\"v1\", \"user\", \"evict-delegacy\");\r\n return post(url, filter);\r\n },\r\n listDelegacy: async () => {\r\n const url = make(\"v1\", \"user\", \"list-delegacy\");\r\n return get(url);\r\n },\r\n requesPassword: async (email) => {\r\n const url = make(\"v1\", \"user\", \"requestresetpassword?email=\" + email);\r\n return guestGet(url);\r\n },\r\n //Ủy quyền cho chuyên viên\r\n permissionsList: async () => {\r\n const url = make(\"v1\", \"user\", \"permissions\");\r\n return get(url);\r\n },\r\n delegateUser: async filter => {\r\n const url = make(\"v1\", \"user\", \"delegateuser\");\r\n return post(url, filter);\r\n },\r\n getUsersDelegated: async () => {\r\n const url = make(\"v1\", \"user\", \"getusersdelegated\");\r\n return get(url);\r\n },\r\n removeDelegate: async filter => {\r\n const url = make(\"v1\", \"user\", \"removedelegate\");\r\n return post(url, filter);\r\n },\r\n listAll: async () => {\r\n let url = make(\"v1\", \"user\", \"listAll\");\r\n return await get(url);\r\n },\r\n\r\n checkUserNameInUsed: async model => {\r\n const url = make(\"v1\", \"user\", \"checkUserNameInUsed\");\r\n return post(url, model);\r\n },\r\n\r\n checkUserEmailInUsed: async model => {\r\n const url = make(\"v1\", \"user\", \"checkUserEmailInUsed\");\r\n return post(url, model);\r\n },\r\n\r\n adminChangePassword : async model => {\r\n const url = make(\"v1\", \"user\", \"admin_change_password\");\r\n return post(url, model);\r\n },\r\n change_password: async data => {\r\n let url = make(\"v1\", \"user\", \"change_password\");\r\n return await post(url, data);\r\n },\r\n\r\n addStaff : async model => {\r\n const url = make(\"api\", \"v1\", \"StaffInfo\", \"add\");\r\n return post(url, model);\r\n },\r\n\r\n updateStaff : async model => {\r\n const url = make(\"api\", \"v1\", \"StaffInfo\", \"update\");\r\n return post(url, model);\r\n },\r\n getListStaff: async (model) => {\r\n const url = make(\"api\", \"v1\", \"StaffInfo\", \"list\");\r\n return post(url, model);\r\n },\r\n getStaffById: async (id) => {\r\n let url = make(\"api\", \"v1\", \"StaffInfo\" , \"get_by_id\" , \"?id=\" + id);\r\n return await get(url);\r\n },\r\n getListRegistration: async (model) => {\r\n const url = make(\"api\", \"v1\", \"Registration\", \"list\");\r\n return post(url, model);\r\n },\r\n getRegistrationById: async (id) => {\r\n const url = make(\"api\", \"v1\", \"Registration\", \"get_by_id\" , \"?id=\" + id);\r\n return get(url);\r\n },\r\n\r\n getCurentStaffInfo: async () => {\r\n const url = make(\"api\", \"v1\", \"StaffInfo\", \"GetCurentStaffInfo\" );\r\n return get(url);\r\n },\r\n userAddRequestChange: async (model) => {\r\n const url = make(\"api\", \"v1\", \"StaffInfo\", \"UserAddRequestChange\");\r\n return post(url, model);\r\n },\r\n\r\n approveRequestChange: async (model) => {\r\n const url = make(\"api\", \"v1\", \"StaffInfo\", \"Approve\");\r\n return post(url, model);\r\n },\r\n\r\n rejectRequestChange: async (model) => {\r\n const url = make(\"api\", \"v1\", \"StaffInfo\", \"Reject\");\r\n return post(url, model);\r\n },\r\n};\r\n\r\nexport default userApi;\r\n"],"sourceRoot":""}