{"version":3,"sources":["shared/multi.lang.ts","nav/NavMenu.lang.ts","lang/LangSelector.tsx","nav/NavMenu.tsx","layout/Layout.tsx","home/Home.requester.ts","home/Home.lang.ts","home/barcode/BarcodeCheck.lang.ts","home/barcode/BarcodeCheck.tsx","home/Home.tsx","admin/barcode/Barcode.lang.ts","admin/barcode/tab/TabBarcode.lang.ts","admin/barcode/import/ImportBarcode.lang.ts","shared/models.ts","shared/FileUpload.tsx","shared/FadeAlert.tsx","admin/barcode/Barcode.models.ts","admin/barcode/Barcode.requester.ts","shared/ExcelHelpers.ts","shared/Tags.tsx","excel/ExcelPreview.lang.ts","excel/ExcelPreview.tsx","admin/barcode/import/ImportBarcode.tsx","admin/barcode/list/ListBarcodeSet.lang.ts","admin/barcode/tab/TabBarcode.tsx","admin/barcode/list/ListBarcodeSet.tsx","admin/barcode/edit/EditBarcodeSet.lang.ts","admin/barcode/edit/EditBarcodeSet.tsx","admin/company/tab/TabCompany.tsx","admin/barcode/Barcode.tsx","admin/company/Company.lang.ts","admin/company/tab/TabCompany.lang.ts","admin/company/new/NewCompany.lang.ts","admin/company/new/NewCompany.tsx","admin/company/list/ListCompany.lang.ts","admin/company/list/ListCompany.tsx","admin/company/edit/EditCompany.lang.ts","admin/company/edit/EditCompany.tsx","admin/Dashboard.tsx","admin/company/Company.tsx","admin/Dashboard.lang.ts","App.js","registerServiceWorker.js","index.js","shared/AppSettings.ts","shared/requester.ts","admin/company/Company.requester.ts"],"names":["Lang","code","name","Code","Name","this","current","lang","changed","LangChangeHander","HandleChange","TR","EN","GetAll","GetViaCode","allLangs","i","length","Error","MultiLangHelper","langSupports","registrations","RegisterComponent","component","callback","newLang","langSupport","GetSupportViaLang","setState","ls","Current","RegisterOnChange","newRegistration","push","UnregisterComponent","registration","UnregisterOnChange","splice","GetViaKey","key","Object","entries","filter","x","exist","onChangeCallbacks","onChangeCallback","langHelper","adminPanel","LangSelector","props","langs","onLangChange","e","langCode","target","value","onChange","map","React","NavMenu","componentDidMount","toggleNavbar","bind","state","collapsed","Navbar","className","light","Container","NavbarBrand","tag","Link","to","NavbarToggler","onClick","Collapse","isOpen","navbar","NavItem","NavLink","href","rel","style","textDecoration","displayName","Layout","children","Component","CheckBarcodeStatuses","title","serialNumber","check","notFound","mailSubjectOriginal","mailBodyOriginal","warranty","mailSubjectSuspicious","mailBodySuspicious","bepIdIsAServiceOfBepHologram","forMoreInfo","homeRequester","CheckBarcode","request","a","requester","get","toString","resp","data","Modes","BarcodeCheck","componentWillUnmount","getSerialNumberFromUrl","path","window","location","pathname","substring","lastIndexOf","onCheckClick","response","undefined","mode","Success","submitting","checkResult","console","warn","error","onSerialNumberChange","newValue","checkKeyDown","renderResponse","infoElementClassName","Status","NotFound","CardBody","src","alt","maxWidth","maxHeight","company","Company","url","imgUrl","companyEmail","companyPhone","mailSubject","mailBody","Suspicious","SuspiciousUrl","SuspiciousImgUrl","Email","Phone","Original","OriginalUrl","OriginalImgUrl","replaceAll","infoMailSize","infoPhoneSize","infoMailClass","infoPhoneClass","paddingTop","width","height","Row","Col","sm","md","lg","renderCheck","Card","InputGroup","Input","type","placeholder","onKeyDown","disabled","InputGroupAddon","addonType","Button","icon","faSearch","renderBephologramInfo","phoneStr","phoneNum","email","border","marginBottom","margin","marginTop","urlSerialNumber","Home","importFile","importHistory","importEdit","help_previewWillBeShown","help_inCaseOfAProblem","help_pleaseDoCheck","help_editTheFile","help_activeByDefault","help_youMayDisableIt","selectFile","import","hashtags","ColorCodes","primary","secondary","success","danger","warning","info","dark","FileUpload","fileInputRef","clear","fileInput","getFileFromInput","file","Promise","resolve","reject","reader","FileReader","onerror","onload","result","readAsBinaryString","handleFileChange","event","persist","files","fileDetails","binary","log","onError","stopPropagation","click","ref","accept","display","multiple","FadeAlert","alert","message","show","Fade","in","Alert","color","float","fontSize","Date","toLocaleString","FadeAlertMessage","default","BarcodeSetState","BarcodeSetStatus","barcodeRequester","controller","Import","config","headers","formData","FormData","CompanyId","append","File","Tags","JSON","stringify","post","SetList","params","SetBarcodeSetStatus","EditBarcodeSet","innerRequest","Id","TagsJson","ExcelReader","fileReader","read","readAsArrayBuffer","arrayBuffer","Uint8Array","arr","String","fromCharCode","bstr","join","workbook","XLSX","sheets","SheetNames","sheetName","worksheet","Sheets","json","sheet_to_json","raw","rows","j","element","cells","k","property","cell","row","sheet","placeHolder","records","somethingIsWrongHere","xRecordsHaveIssues","ExcelPreview","isInvalid","issueCount","infoStyle","padding","backgroundColor","firstRow","overflowY","overflowX","borderTop","scrollbarWidth","Table","textAlign","colSpan","hidden","ImportBarcode","fileUploadRef","helpButtonClicked","isHelpOn","onFileChange","fileDetail","fileName","then","excelPreviewSheet","getFile","fileUpload","fileList","onTagsChange","tags","submit","preventDefault","Message","onNewImport","alertMessage","body","faQuestionCircle","InputGroupText","faFileImport","faHashtag","search","setPassive","setActive","importFailed","edit","help_startTyping","help_justPressEnter","help_searchProperties","help_searchProperties_1","help_searchProperties_2","help_searchProperties_2_1","help_searchProperties_2_2","help_searchProperties_3","help_searchProperties_3_1","help_searchProperties_3_2","help_searchProperties_4","help_searchProperties_5","help_searchProperties_5_1","help_searchProperties_5_2","help_searchProperties_5_3","help_searchProperties_5_4","help_searchProperties_5_5","help_downloadFile","help_activePassive","help_duplications","Tabs","ListBarcodeSet","searchInputRef","list","querying","Search","Page","Count","barcodeSets","BarcodeSets","barcodeSetItems","barcodeSet","showActiveTooltip","showPassiveTooltip","showFailedTooltip","showEditTooltip","searchInputElement","focus","searchTimeout","clearSearchTimeout","clearTimeout","searchChanged","setTimeout","searchKeyDown","onHashtagClick","page","count","FormGroup","innerRef","barcodeSetItem","activeTarget","passiveTarget","failedTarget","editTarget","setBarcodeSetStatus","status","paddingBottom","minHeight","CardSubtitle","UploadedFileName","BarcodeCount","CreatedAt","cursor","State","id","handler","onEditPress","faEdit","Tooltip","placement","toggle","Active","Passive","faCheckCircle","faTimesCircle","Failed","faExclamationTriangle","help_default","save","onSubmit","faSave","TabBarcode","listBarcodeSetRef","editModeModel","onEdit","reloadBarcodeSets","listBarcodeSet","tab","activeTab","getClassName","new","Nav","tabs","marginLeft","faHistory","TabContent","TabPane","tabId","Barcode","position","addNew","areYouSure","youAreAboutToDelete","yesDelete","noDontDelete","help_ReqiredFields","help_InformationalCompanyDetails","companyName","companyCode","phone","suspiciousUrl","originalUrl","suspiciousImage","originalImage","password","NewCompany","previewImgUrl","notFoundPreviewRef","notFoundFileUploadRef","suspiciousPreviewRef","suspiciousFileUploadRef","originalPreviewRef","originalFileUploadRef","nameChanged","codeChanged","emailChanged","phoneChanged","originalUrlChanged","passwordChanged","SuspiciousImage","OriginalImage","Password","companyRequester","New","clearFileUploadAndPreview","filePreviewRef","filePreview","previewRef","previewElem","URL","createObjectURL","renderImageUpload","text","previewImageRef","minWidth","faImage","originalImgUrl","suspiciousImgUrl","faBuilding","faTerminal","faAt","faPhoneAlt","faLink","qr","delete","help_barcodeMenu","ListCompany","List","companies","Companies","companyItems","showQrTooltip","showDeleteTooltip","companyItem","hasEmail","hasPhone","qrTarget","deleteTarget","CardTitle","onQrPress","faQrcode","onDeletePress","faEraser","EditCompany","Edit","imgSrc","Breadcrumbs","TabCompany","listCompanyRef","onBarcodeSwitch","deleteModal","initializeModal","onCompanyEdit","reloadCompanies","listCompany","onNewRecord","toggleDeleteModal","modalModel","deleteButtonClicked","companyId","Delete","faTh","faPlusCircle","Modal","ModalHeader","ModalBody","ModalFooter","breadcrumbCompanies","breadcrumbBarcodes","Dashboard","breadcrumb","barcodes","onCompanyBreadcrumbClick","companyBreadcrumbStyle","Breadcrumb","BreadcrumbItem","active","App","exact","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","onupdatefound","installingWorker","installing","onstatechange","catch","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","process","origin","addEventListener","fetch","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker","AppSettings","Url","axios","create","baseURL","Buffer","from"],"mappings":"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","file":"static/js/main.5f892440.chunk.js","sourcesContent":["import { Component } from \"react\";\r\n\r\nexport class Lang {\r\n public readonly Code: string;\r\n public readonly Name: string;\r\n\r\n constructor(code: string, name: string) {\r\n this.Code = code;\r\n this.Name = name;\r\n }\r\n\r\n //easy access\r\n static readonly TR = new Lang(\"TR\", \"Türkçe\");\r\n static readonly EN = new Lang(\"EN\", \"English\");\r\n\r\n //list & query langs\r\n static readonly GetAll = () => {\r\n return [Lang.TR, Lang.EN];\r\n }\r\n static readonly GetViaCode = (code: string): Lang => {\r\n let allLangs = Lang.GetAll();\r\n for (let i = 0; i < allLangs.length; i++) {\r\n let lang = allLangs[i];\r\n if (lang.Code === code)\r\n return lang;\r\n }\r\n throw new Error(`Couldn't find any Lang with code '${code}'`);\r\n }\r\n\r\n //current lang\r\n private static current = Lang.TR;\r\n static get Current(): Lang {\r\n return this.current;\r\n }\r\n static set Current(lang: Lang) {\r\n let changed = this.current !== lang;\r\n this.current = lang;\r\n\r\n if (changed)\r\n LangChangeHander.HandleChange(lang);\r\n }\r\n}\r\n\r\nexport class MultiLangHelper {\r\n private readonly langSupports: TLangSupport[];\r\n\r\n private current: TLangSupport;\r\n get Current(): TLangSupport {\r\n return this.current;\r\n }\r\n\r\n constructor(...langSupports: TLangSupport[]) {\r\n this.langSupports = langSupports;\r\n\r\n let allLangs = Lang.GetAll();\r\n for (var i = 0; i < allLangs.length; i++) {\r\n let lang = allLangs[i];\r\n\r\n let exist = false;\r\n for (let i = 0; i < langSupports.length; i++) {\r\n let langSupport = langSupports[i];\r\n if (langSupport.lang === lang) {\r\n exist = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!exist)\r\n throw new Error(`You have to provide ${lang.Code} support`);\r\n }\r\n\r\n this.current = this.GetSupportViaLang(Lang.Current);\r\n }\r\n\r\n private readonly registrations: { component: Component, callback: { (newLang: Lang): void } }[] = [];\r\n readonly RegisterComponent = (component: Component): void => {\r\n let registrations = this.registrations;\r\n\r\n //check existing registration\r\n for (let i = 0; i < registrations.length; i++) {\r\n let registration = registrations[i];\r\n if (registration.component === component)\r\n return;//this component is already registered so cancel the registration by returning from here\r\n }\r\n\r\n //register to LangChangeHander\r\n let callback = (newLang: Lang) => {\r\n let langSupport = this.GetSupportViaLang(newLang);\r\n component.setState({ ls: langSupport });\r\n };\r\n callback(Lang.Current);\r\n LangChangeHander.RegisterOnChange(callback);\r\n\r\n //register here\r\n let newRegistration = { component: component, callback: callback };\r\n registrations.push(newRegistration);\r\n }\r\n readonly UnregisterComponent = (component: Component): void => {\r\n let registrations = this.registrations;\r\n\r\n //check existing registration\r\n for (let i = 0; i < registrations.length; i++) {\r\n let registration = registrations[i];\r\n if (registration.component === component) {\r\n LangChangeHander.UnregisterOnChange(registration.callback);\r\n registrations.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n private readonly GetSupportViaLang = (lang: Lang): TLangSupport => {\r\n for (let i = 0; i < this.langSupports.length; i++) {\r\n if (this.langSupports[i].lang === lang)\r\n return this.langSupports[i];\r\n }\r\n throw new Error(`Couldn't find LangSupport with code '${lang}'`);\r\n }\r\n\r\n readonly GetViaKey = (langSupport: TLangSupport, key: string): string => {\r\n return Object.entries(langSupport).filter(x => x[0] === key)[0][1] as string;\r\n }\r\n}\r\n\r\nclass LangChangeHander {\r\n private static readonly onChangeCallbacks: { (newLang: Lang): void }[] = [];\r\n\r\n static readonly RegisterOnChange = (callback: { (newLang: Lang): void }) => {\r\n LangChangeHander.onChangeCallbacks.push(callback);\r\n }\r\n static readonly UnregisterOnChange = (callback: { (newLang: Lang): void }) => {\r\n let onChangeCallbacks = LangChangeHander.onChangeCallbacks;\r\n for (let i = 0; i < onChangeCallbacks.length; i++) {\r\n let onChangeCallback = onChangeCallbacks[i];\r\n if (onChangeCallback === callback)\r\n onChangeCallbacks.splice(i, 1);\r\n }\r\n }\r\n static readonly HandleChange = (newLang: Lang): void => {\r\n let onChangeCallbacks = LangChangeHander.onChangeCallbacks;\r\n for (let i = 0; i < onChangeCallbacks.length; i++) {\r\n let onChangeCallback = onChangeCallbacks[i];\r\n onChangeCallback(newLang);\r\n }\r\n }\r\n}\r\n","import { Lang, MultiLangHelper } from \"../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n adminPanel: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n adminPanel = \"Admin Paneli\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n adminPanel = \"Admin Panel\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import * as React from 'react';\r\nimport { Lang } from '../shared/multi.lang';\r\n\r\nexport class LangSelector extends React.Component {\r\n\r\n private readonly langs: Lang[] = [];\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.langs = Lang.GetAll();\r\n }\r\n\r\n private readonly onLangChange = (e: React.ChangeEvent): void => {\r\n let langCode = e.target.value;\r\n let lang = Lang.GetViaCode(langCode);\r\n Lang.Current = lang;\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\ninterface IProps {\r\n}\r\n\r\ninterface IState {\r\n}\r\n","import * as React from 'react';\r\nimport { Navbar, Container, NavbarBrand, NavbarToggler, Collapse, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport './NavMenu.css';\r\nimport { ILangSupport, langHelper } from './NavMenu.lang';\r\nimport { LangSelector } from '../lang/LangSelector';\r\n\r\nexport class NavMenu extends React.Component {\r\n static displayName = NavMenu.name;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.state = {\r\n collapsed: true,\r\n ls: langHelper.Current\r\n };\r\n }\r\n\r\n componentDidMount = (): void => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n render() {\r\n let ls = this.state.ls;\r\n return (\r\n
\r\n \r\n \r\n \r\n BEPID\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\ninterface IProps {\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n collapsed: boolean;\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { NavMenu } from '../nav/NavMenu';\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render () {\r\n return (\r\n
\r\n \r\n \r\n {this.props.children}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import requester from \"../shared/requester\";\r\nimport { IResponse } from \"../shared/models\";\r\n\r\nclass HomeRequester {\r\n CheckBarcode = async (request: ICheckBarcodeRequest): Promise => {\r\n let resp = await requester.get(`/barcode/check/${request.Code.toString()}`, {});\r\n return resp.data;\r\n }\r\n}\r\nconst homeRequester = new HomeRequester();\r\nexport { homeRequester };\r\n\r\nexport interface ICheckBarcodeRequest {\r\n Code: string;\r\n}\r\nexport interface ICheckBarcodeResponse extends IResponse {\r\n Status: CheckBarcodeStatuses;\r\n Company: ICleanCompany;\r\n}\r\nexport enum CheckBarcodeStatuses {\r\n NotFound,\r\n Suspicious,\r\n Original\r\n}\r\nexport interface ICleanCompany {\r\n Id: string;\r\n\r\n Name: string;\r\n Email: string;\r\n Phone: string;\r\n\r\n NotFoundUrl: string;\r\n SuspiciousUrl: string;\r\n OriginalUrl: string;\r\n\r\n NotFoundImgUrl: string;\r\n SuspiciousImgUrl: string;\r\n OriginalImgUrl: string;\r\n}","import { Lang, MultiLangHelper } from \"../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n title: string;\r\n\r\n serialNumber: string;\r\n check: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n title = \"BepHologram'a hoşgeldiniz\";\r\n\r\n serialNumber = \"seri numarası\";\r\n check = \"sorgula\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n title = \"Welcome to BepHologram\";\r\n\r\n serialNumber = \"serial number\";\r\n check = \"check\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { Lang, MultiLangHelper } from \"../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n title: string;\r\n\r\n serialNumber: string;\r\n check: string;\r\n notFound: string;\r\n\r\n mailSubjectOriginal: string;\r\n mailBodyOriginal: string;\r\n\r\n mailSubjectSuspicious: string;\r\n mailBodySuspicious: string;\r\n warranty: string;\r\n bepIdIsAServiceOfBepHologram: string;\r\n forMoreInfo: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n title = \"BepHologram'a hoşgeldiniz\";\r\n\r\n serialNumber = \"seri numarası\";\r\n check = \"sorgula\";\r\n notFound = \"üzgünüz, aradığınız bep-id için kayıt bulamadık\";\r\n\r\n mailSubjectOriginal = \"Orijinal Ürün \\\"{0}\\\"\";\r\n mailBodyOriginal = \"Selamlar, BEP-ID uygulamasını kullanarak \\\"{0}\\\" kodlu ürününüzü \\\"https://www.bep-id.com/{0}\\\" linki üzerinden başarıyla doğruladım. Teşekkür eder, iyi günler dilerim.\";\r\n warranty =\"Ürününüzü garanti kapsamında kayıt etmek istiyorsanız tıklayınız\"\r\n mailSubjectSuspicious = \"Şüpheli Ürün \\\"{0}\\\"\";\r\n mailBodySuspicious = \"Selamlar, BEP-ID uygulamasını kullanarak \\\"{0}\\\" kodlu ürününüzü\\\"https://www.bep-id.com/{0}\\\" linki üzerinden doğrularken şüpheli ürün uyarısı aldım. Bilgilerinize sunar, iyi günler dilerim.\";\r\n\r\n bepIdIsAServiceOfBepHologram = \"BEP-ID, BEP HOLOGRAM A.Ş.'nin bir hizmetidir\";\r\n forMoreInfo = \"bilgi için\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n title = \"Welcome to BepHologram\";\r\n\r\n serialNumber = \"serial number\";\r\n check = \"check\";\r\n notFound = \"sorry, we couldn't find any records with this bep-id\";\r\n\r\n mailSubjectOriginal = \"Original Product \\\"{0}\\\"\";\r\n mailBodyOriginal = \"Hi, i was able to verify your \\\"{0}\\\" coded product successfully, using BEP-ID application over \\\"https://www.bep-id.com/{0}\\\" address. Thank you, have a nice day.\";\r\n warranty = \"If you want to register your product under warranty click here\"\r\n\r\n mailSubjectSuspicious = \"Suspicious Product \\\"{0}\\\"\";\r\n mailBodySuspicious = \"Hi, i came accross a suspicious product warning while i was trying to verify your \\\"{0}\\\" coded product, using BEP-ID application over \\\"https://www.bep-id.com/{0}\\\" address. For your information, have a nice day.\";\r\n\r\n bepIdIsAServiceOfBepHologram = \"BEP-ID is a service of BEP HOLOGRAM A.Ş.\";\r\n forMoreInfo = \"for more information\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import * as React from 'react';\r\nimport { Button, Card, CardBody, Col, Input, InputGroup, InputGroupAddon, Row } from 'reactstrap';\r\nimport { ILangSupport, langHelper } from './BarcodeCheck.lang';\r\nimport { CheckBarcodeStatuses, homeRequester, ICheckBarcodeRequest, ICheckBarcodeResponse } from '../Home.requester';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faAt, faPhoneAlt, faSearch } from '@fortawesome/free-solid-svg-icons';\r\n\r\nenum Modes { check, checkResult }\r\n\r\nexport class BarcodeCheck extends React.Component {\r\n static displayName = BarcodeCheck.name;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n\r\n let urlSerialNumber = this.getSerialNumberFromUrl();\r\n\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n mode: Modes.check,\r\n serialNumber: urlSerialNumber ? urlSerialNumber : '',\r\n submitting: false,\r\n\r\n response: undefined\r\n };\r\n }\r\n\r\n componentDidMount = (): void => {\r\n langHelper.RegisterComponent(this);\r\n if (this.state.serialNumber)\r\n this.check();\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private getSerialNumberFromUrl = (): string => {\r\n let path = window.location.pathname;\r\n return path.substring(path.lastIndexOf('/') + 1);\r\n }\r\n\r\n private onCheckClick = (e: React.MouseEvent): void => {\r\n this.check();\r\n }\r\n\r\n check = (): void => {\r\n let state = this.state;\r\n if (!state.serialNumber)\r\n return;\r\n this.setState({ response: undefined, mode: Modes.check }, async () => {\r\n try {\r\n let request: ICheckBarcodeRequest = { Code: state.serialNumber };\r\n let response = await homeRequester.CheckBarcode(request);\r\n // console.log(response.Company.OriginalUrl)\r\n\r\n if (!response.Success) {\r\n //todo\r\n console.warn(response);\r\n this.setState({ submitting: false });\r\n }\r\n else\r\n this.setState({ submitting: false, mode: Modes.checkResult, response: response });\r\n\r\n } catch (error) {\r\n //todo\r\n console.error(error);\r\n }\r\n });\r\n }\r\n\r\n onSerialNumberChange = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ serialNumber: newValue });\r\n }\r\n private checkKeyDown = (e: React.KeyboardEvent): void => {\r\n if (e.key !== 'Enter')\r\n return;\r\n this.check();\r\n }\r\n\r\n private renderResponse = (): React.ReactElement | string => {\r\n let state = this.state;\r\n\r\n if (state.mode !== Modes.checkResult)\r\n return '';\r\n\r\n let response = state.response;\r\n if (!response)\r\n return '';\r\n\r\n let ls = state.ls;\r\n\r\n let infoElementClassName = \"d-flex justify-content-center\";\r\n\r\n if (response.Status === CheckBarcodeStatuses.NotFound)\r\n return (\r\n \r\n
{ls.notFound}
\r\n \"notfound\"\r\n
\r\n );\r\n\r\n let company = response.Company;\r\n\r\n let url = '';\r\n let imgUrl = '';\r\n let alt = 'img';\r\n let companyName = '';\r\n let companyEmail = '';\r\n let companyPhone = '';\r\n let mailSubject = '';\r\n let mailBody = '';\r\n if (response.Status === CheckBarcodeStatuses.Suspicious) {\r\n url = company.SuspiciousUrl;\r\n imgUrl = company.SuspiciousImgUrl;\r\n alt = 'original';\r\n companyName = company.Name;\r\n companyEmail = company.Email;\r\n companyPhone = company.Phone;\r\n mailSubject = ls.mailSubjectSuspicious;\r\n mailBody = ls.mailBodySuspicious;\r\n }\r\n else if (response.Status === CheckBarcodeStatuses.Original) {\r\n url = company.OriginalUrl;\r\n imgUrl = company.OriginalImgUrl;\r\n alt = 'suspicious';\r\n companyName = company.Name;\r\n companyEmail = company.Email;\r\n companyPhone = company.Phone;\r\n mailSubject = ls.mailSubjectOriginal;\r\n mailBody = ls.mailBodyOriginal;\r\n }\r\n\r\n mailSubject = mailSubject.replaceAll('{0}', state.serialNumber);\r\n mailBody = mailBody.replaceAll('{0}', state.serialNumber);\r\n\r\n let infoMailSize = !companyPhone || !companyEmail ? 12 : 8;\r\n let infoPhoneSize = !companyPhone || !companyEmail ? 12 : 4;\r\n\r\n let infoMailClass = !companyPhone || !companyEmail ? \"d-flex justify-content-center\" : \"d-flex justify-content-start\";\r\n let infoPhoneClass = !companyPhone || !companyEmail ? \"d-flex justify-content-center\" : \"d-flex justify-content-end\";\r\n\r\n //let imageStyle:React.CSSProperties = { maxWidth: \"100%\", maxHeight: \"100%\" };\r\n let imageStyle: React.CSSProperties = { width: \"600px\", height: \"550px\" };\r\n\r\n return (\r\n \r\n \r\n {alt}\r\n \r\n \r\n \r\n {\r\n companyEmail &&\r\n \r\n {companyEmail}\r\n \r\n }\r\n {\r\n companyPhone &&\r\n \r\n {companyPhone}\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n\r\n private renderCheck = (): React.ReactElement => {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \"logo\"\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 {this.renderResponse()}\r\n \r\n \r\n );\r\n }\r\n\r\n private renderBephologramInfo = (): React.ReactElement => {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n let phoneStr = '0850 209 1901';\r\n let phoneNum = phoneStr.replaceAll(\" \", \"\");\r\n let email = 'hologram@bephologram.com';\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \"logo\"\r\n \r\n \r\n \r\n {ls.bepIdIsAServiceOfBepHologram}\r\n \r\n \r\n {ls.forMoreInfo}\r\n \r\n \r\n \r\n {phoneStr} - {email}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n return (\r\n
\r\n {this.renderCheck()}\r\n {this.renderBephologramInfo()}\r\n
\r\n );\r\n }\r\n}\r\n\r\ninterface IProps { }\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n mode: Modes;\r\n serialNumber: string;\r\n submitting: boolean;\r\n\r\n response?: ICheckBarcodeResponse;\r\n}\r\n\r\n//\r\n// {alt}\r\n//","import * as React from 'react';\r\nimport { ILangSupport, langHelper } from './Home.lang';\r\nimport { BarcodeCheck } from './barcode/BarcodeCheck';\r\n\r\nexport class Home extends React.Component {\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n\r\n this.state = {\r\n ls: langHelper.Current\r\n };\r\n }\r\n\r\n componentDidMount = (): void => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n render() {\r\n //let state = this.state;\r\n //let ls = state.ls;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\ninterface IProps { }\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n}","import { Lang, MultiLangHelper } from \"../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n title: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n title = 'QR Kodlar'\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n title = 'QR Codes';\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n importFile: string;\r\n importHistory: string;\r\n importEdit: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n importFile = \"Dosya Aktarma\";\r\n importHistory = \"Aktarma Geçmişi\";\r\n importEdit = \"Aktarma Düzenleme\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n importFile = \"Import File\";\r\n importHistory = \"Import History\";\r\n importEdit = \"Import Edit\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n help_previewWillBeShown: string;\r\n help_inCaseOfAProblem: string;\r\n help_pleaseDoCheck: string;\r\n help_editTheFile: string;\r\n help_activeByDefault: string;\r\n help_youMayDisableIt: string;\r\n\r\n selectFile: string;\r\n import: string;\r\n hashtags: string;\r\n\r\n 'BarcodeController.Import.request': string;\r\n 'BarcodeController.Import.File': string;\r\n 'BarcodeController.Import.exelfilerows': string;\r\n 'BarcodeController.Import.CompanyId': string;\r\n 'BarcodeController.Import.company': string;\r\n 'BarcodeController.Import.barcodeSet': string;\r\n 'BarcodeController.Import': string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n help_previewWillBeShown = \"yüklemek üzere seçeceğiniz dosya, yükleme işleminden önce hızlıca göz gezdirmeniz için size gösterilecek\";\r\n help_inCaseOfAProblem = \"dosya içeriğinin size gösterilememesi veya kayıtların hatalı görünmesi, yükleme işleminden sonra da bir problem olacağına işaret ediyor olabilir\";\r\n help_pleaseDoCheck = \"lütfen kayıtları inceleyip, doğruluklarını son bir defa kontrol ediniz\";\r\n help_editTheFile = \"eğer düzeltmeniz gereken bir kayıt varsa, lütfen bu kaydı dosya üzerinde düzeltin ve dosyayı tekrar yükleyin\";\r\n help_activeByDefault = \"kayıtlar başarı ile aktarıldığı andan itibaren arama sonuçlarında görüntülenecektir\";\r\n help_youMayDisableIt = \"aktarma geçmişi sekmesini kullanarak bu kayıtların arama sonuçlarında görünmesini engelleyebilirsiniz\";\r\n\r\n selectFile = \"dosya seç\";\r\n import = \"aktar\";\r\n hashtags = \"hashtag'ler (her hashtag'den sonra 'enter'a basın)\";\r\n\r\n 'BarcodeController.Import.request' = \"yapmaya çalıştığınız istek sunucuya ulaşmadı\";\r\n 'BarcodeController.Import.File' = \"yüklemeye çalıştığınız dosya sunucuya ulaşmadı\";\r\n 'BarcodeController.Import.exelfilerows' = \"Lütfen tek seferde 50.000 adetten daha fazla data yüklemeyin\";\r\n 'BarcodeController.Import.CompanyId' = \"dosya yüklemek istediğiniz şirket bilgisi sunucuya ulaşmadı\";\r\n 'BarcodeController.Import.company' = \"şirket kaydı bulunamadı\";\r\n 'BarcodeController.Import.barcodeSet' = \"aktarma işlemi sırasında bir sorun oluştu, lütfen dosyayı kontrol edip tekrar deneyin\";\r\n 'BarcodeController.Import' = \"dosya aktarma işlemi başarıyla gerçekleşti\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n help_previewWillBeShown = \"the file you want to upload will be shown to you before the upload operation in order for you to quickly check it out\";\r\n help_inCaseOfAProblem = \"it might be a sign of a problem if the file contents are not being shown or the records are corrupt\";\r\n help_pleaseDoCheck = \"please check on the records one last time before you upload the file\";\r\n help_editTheFile = \"in case there's a record you need to fix, please fix that record on the file and then upload the file again\";\r\n help_activeByDefault = \"records will be avaible once your import process is completed successfully\";\r\n help_youMayDisableIt = \"you may prevent these records from showing up on search results via the 'import history' tab\";\r\n\r\n selectFile = \"select file\";\r\n import = \"import\";\r\n hashtags = \"hashtags (press 'enter' after each hastag)\";\r\n\r\n 'BarcodeController.Import.request' = \"your request couldn't make it's way to the server\";\r\n 'BarcodeController.Import.File' = \"the file you're trying to upload couldn't make it's way to the server\";\r\n 'BarcodeController.Import.exelfilerows' = \"please don't upload more than 50.000 pieces of data at a time\";\r\n 'BarcodeController.Import.CompanyId' = \"information of the company you want to relate to this file couldn't make it's way to server\";\r\n 'BarcodeController.Import.company' = \"couldn't find company record\";\r\n 'BarcodeController.Import.barcodeSet' = \"something went wrong during the file import process, please check the file and try again\";\r\n 'BarcodeController.Import' = \"file import was successful\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","export interface IResponse {\r\n Success: boolean;\r\n Message: string;\r\n}\r\n\r\nexport class ColorCodes {\r\n static readonly primary = 'primary';\r\n static readonly secondary = 'secondary';\r\n static readonly success = 'success';\r\n static readonly danger = 'danger';\r\n static readonly warning = 'warning';\r\n static readonly info = 'info';\r\n static readonly light = 'light';\r\n static readonly dark = 'dark';\r\n}","import * as React from 'react';\r\nimport { Button } from 'reactstrap';\r\n\r\nexport class FileUpload extends React.Component {\r\n private readonly fileInputRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n get fileList(): FileList | null {\r\n let fileInput = this.fileInputRef.current;\r\n if (fileInput === null)\r\n return null;\r\n return fileInput.files;\r\n }\r\n\r\n clear = (): void => {\r\n let fileInput = this.fileInputRef.current;\r\n if (fileInput === null)\r\n return;\r\n fileInput.value = '';\r\n }\r\n\r\n private getFileFromInput = (file: File): Promise => {\r\n return new Promise(function (resolve, reject) {\r\n const reader = new FileReader();\r\n reader.onerror = reject;\r\n reader.onload = () => resolve(reader.result);\r\n reader.readAsBinaryString(file); // here the file can be read in different way Text, DataUrl, ArrayBuffer\r\n });\r\n }\r\n\r\n private handleFileChange = async (event: React.ChangeEvent): Promise => {\r\n event.persist();\r\n let files = event.target.files;\r\n if (files === null)\r\n return;\r\n\r\n let props = this.props;\r\n\r\n let fileDetails: IFileDetail[] = [];\r\n for (let i = 0; i < files.length; i++) {\r\n let file = files[i];\r\n try {\r\n let binary = await this.getFileFromInput(file);\r\n fileDetails.push({ binary: binary, file: file });\r\n } catch (e) {\r\n console.log('Error during upload', e);\r\n event.target.value = ''; // to allow upload of same file if error occurs\r\n\r\n if (props.onError === undefined)\r\n throw e;\r\n props.onError(e);\r\n }\r\n }\r\n\r\n if (props.onChange !== undefined)\r\n props.onChange({ fileDetails: fileDetails });\r\n }\r\n\r\n private onClick = (e: any): void => {\r\n e.stopPropagation();\r\n let fileInput = this.fileInputRef.current;\r\n if (fileInput === undefined || fileInput === null)\r\n return;\r\n fileInput.click();\r\n }\r\n\r\n render() {\r\n let props = this.props;\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n className?: string;\r\n name?: string;\r\n accept?: string;\r\n multiple?: boolean;\r\n disabled?: boolean;\r\n onChange?: { (e: IOnChangeEvent): void }\r\n onError?: { (e: any): void }\r\n}\r\n\r\ninterface IState { }\r\n\r\nexport interface IFileDetail {\r\n binary: string;\r\n file: File;\r\n}\r\n\r\nexport interface IOnChangeEvent {\r\n fileDetails: IFileDetail[];\r\n}","import * as React from 'react';\r\nimport { Alert, Fade } from 'reactstrap';\r\nimport { ColorCodes } from './models';\r\n\r\nexport class FadeAlert extends React.Component {\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n render() {\r\n let props = this.props;\r\n let alert = props.alert;\r\n let message = alert.message === null || alert.message === undefined ? '' : alert.message;\r\n let show = message.length > 0;\r\n if (show)\r\n return (\r\n \r\n \r\n {message}\r\n  \r\n ({new Date().toLocaleString()})\r\n \r\n \r\n );\r\n else\r\n return ('');\r\n }\r\n}\r\n\r\ninterface IProps {\r\n alert: FadeAlertMessage;\r\n tag?: React.ElementType;\r\n className?: string;\r\n}\r\n\r\ninterface IState { }\r\n\r\nexport class FadeAlertMessage {\r\n readonly message: string;\r\n readonly color: string;\r\n\r\n constructor(message: string, color: string) {\r\n this.message = message;\r\n this.color = color;\r\n }\r\n\r\n static readonly default: FadeAlertMessage = new FadeAlertMessage('', ColorCodes.light);\r\n}","export interface IBarcode {\r\n\r\n}\r\n\r\nexport interface IBarcodeSet {\r\n Id: string;\r\n CreatedAt: Date;\r\n\r\n UploadedFileName: string;\r\n Tags: string[];\r\n BarcodeCount: number;\r\n IssueCount: number;\r\n\r\n State: BarcodeSetState;\r\n Status: BarcodeSetStatus;\r\n}\r\n\r\nexport enum BarcodeSetState {\r\n Created = 0,\r\n Importing = 1,\r\n Approved = 2,\r\n\r\n Failed = 255,\r\n Success = 256,\r\n}\r\n\r\nexport enum BarcodeSetStatus {\r\n Active = 0,\r\n Passive = 1\r\n}","import requester from \"../../shared/requester\";\r\nimport { IResponse } from \"../../shared/models\"\r\nimport { AxiosRequestConfig } from \"axios\";\r\nimport { IBarcodeSet } from \"./Barcode.models\";\r\n\r\nclass BarcodeRequester {\r\n private readonly controller = 'barcode';\r\n\r\n Import = async (request: IImportBarcodeRequest): Promise => {\r\n let config: AxiosRequestConfig = {\r\n headers: { 'Content-Type': 'multipart/form-data' }\r\n };\r\n\r\n let formData = new FormData();\r\n\r\n if (request.CompanyId)\r\n formData.append(\"CompanyId\", request.CompanyId);\r\n\r\n if (request.File)\r\n formData.append(\"File\", request.File);\r\n\r\n if (request.Tags)\r\n formData.append(\"TagsJson\", JSON.stringify(request.Tags));\r\n\r\n let resp = await requester.post(`${this.controller}/import`, formData, config);\r\n return resp.data;\r\n }\r\n\r\n SetList = async (request: IListBarcodeSetsRequest): Promise => {\r\n let config: AxiosRequestConfig = {\r\n params: request\r\n };\r\n let resp = await requester.get(`${this.controller}/set/list`, config);\r\n return resp.data;\r\n }\r\n\r\n SetBarcodeSetStatus = async (request: ISetBarcodeSetStatusRequest): Promise => {\r\n let resp = await requester.post(`${this.controller}/set/setStatus`, request);\r\n return resp.data;\r\n }\r\n\r\n EditBarcodeSet = async (request: IEditBarcodeSetRequest): Promise => {\r\n let innerRequest = { Id: request.Id, TagsJson: JSON.stringify(request.Tags) };\r\n let resp = await requester.post(`${this.controller}/set/edit`, innerRequest);\r\n return resp.data;\r\n }\r\n}\r\nconst barcodeRequester = new BarcodeRequester();\r\nexport { barcodeRequester };\r\n\r\nexport interface IImportBarcodeRequest {\r\n CompanyId: string;\r\n File?: File | null;\r\n Tags: string[];\r\n}\r\nexport interface IImportBarcodeResponse extends IResponse {\r\n\r\n}\r\n\r\nexport interface IListBarcodeSetsRequest {\r\n Search: string;\r\n Count: number;\r\n Page: number;\r\n CompanyId?: string;\r\n}\r\n\r\nexport interface IListBarcodeSetsResponse extends IResponse {\r\n BarcodeSets: IBarcodeSet[];\r\n}\r\n\r\nexport interface IEditBarcodeSetRequest {\r\n Id: string;\r\n Tags: string[];\r\n}\r\n\r\nexport interface IEditBarcodeSetResponse extends IResponse {\r\n\r\n}\r\n\r\nexport interface ISetBarcodeSetStatusRequest {\r\n Id: string;\r\n BarcodeSetStatus: number;\r\n}\r\n\r\nexport interface ISetBarcodeSetStatusResponse extends IResponse {\r\n\r\n}","import * as XLSX from 'ts-xlsx';\r\n\r\nexport class ExcelReader {\r\n\r\n private readonly fileReader = new FileReader();\r\n\r\n read = async (file: File): Promise => {\r\n\r\n this.fileReader.readAsArrayBuffer(file);\r\n\r\n return new Promise((resolve, reject) => {\r\n try {\r\n this.fileReader.onload = (e) => {\r\n let arrayBuffer: any = this.fileReader.result;\r\n let data = new Uint8Array(arrayBuffer);\r\n let arr = [];\r\n for (let i = 0; i < data.length; ++i)\r\n arr.push(String.fromCharCode(data[i]));\r\n let bstr = arr.join(\"\");\r\n let workbook = XLSX.read(bstr, { type: \"binary\" });\r\n\r\n let sheets: IExcelSheet[] = [];\r\n for (let i = 0; i < workbook.SheetNames.length; i++) {\r\n let sheetName = workbook.SheetNames[i];\r\n let worksheet = workbook.Sheets[sheetName];\r\n let json = XLSX.utils.sheet_to_json(worksheet, { raw: true });\r\n\r\n let rows: IExcelRow[] = [];\r\n for (let j = 0; j < json.length; j++) {\r\n const element: any = json[j];\r\n\r\n let entries = Object.entries(element);\r\n\r\n let cells: IExcelCell[] = [];\r\n for (let k = 0; k < entries.length; k++) {\r\n const property = entries[k];\r\n let cell: IExcelCell = { name: property[0], value: property[1] };\r\n cells.push(cell);\r\n }\r\n\r\n let row: IExcelRow = { cells: cells };\r\n rows.push(row);\r\n }\r\n let sheet: IExcelSheet = { rows: rows };\r\n sheets.push(sheet);\r\n }\r\n\r\n resolve(sheets);\r\n }\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport interface IExcelSheet {\r\n rows: IExcelRow[];\r\n}\r\n\r\nexport interface IExcelRow {\r\n cells: IExcelCell[];\r\n}\r\n\r\nexport interface IExcelCell {\r\n name: string;\r\n value: any;\r\n}\r\n","import * as React from 'react';\r\nimport { TagsInput } from 'react-tag-input-component';\r\n\r\nexport class Tags extends React.Component {\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n render() {\r\n let props = this.props;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n className?: string;\r\n value: string[];\r\n onChange: { (tags: string[]): void };\r\n placeHolder?: string;\r\n name?: string;\r\n}\r\n\r\ninterface IState {\r\n}","import { Lang, MultiLangHelper } from \"../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n records: string;\r\n somethingIsWrongHere: string;\r\n xRecordsHaveIssues: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n records = \"kayıt\";\r\n somethingIsWrongHere = \"bu kayıtta bir problem var\";\r\n xRecordsHaveIssues = \"kayıt problemli\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n records = \"records\";\r\n somethingIsWrongHere = \"there's something wrong with this record\";\r\n xRecordsHaveIssues = \"records have issues\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import * as React from 'react';\r\nimport { Table } from 'reactstrap';\r\nimport { IExcelCell, IExcelSheet } from '../shared/ExcelHelpers';\r\nimport { ILangSupport, langHelper } from './ExcelPreview.lang';\r\n\r\nexport class ExcelPreview extends React.Component {\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current\r\n };\r\n }\r\n\r\n componentDidMount = (): void => {\r\n langHelper.RegisterComponent(this);\r\n\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n isInvalid = (cell: IExcelCell): boolean => {\r\n return cell === null || cell === undefined || cell.value === undefined;\r\n }\r\n\r\n render() {\r\n let props = this.props;\r\n\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n let tableStyle: React.CSSProperties = {\r\n maxHeight: '295px', overflowY: 'scroll', width: '100%',\r\n overflowX: 'hidden', border: '1px solid rgba(0, 0, 0, 0.125)',\r\n borderTop: 0, scrollbarWidth: 'thin'\r\n };\r\n\r\n let rows = props.sheet.rows;\r\n let issueCount = 0;\r\n for (let i = 0; i < rows.length; i++) {\r\n try {\r\n const cells = rows[i].cells;\r\n var anyIssues = this.isInvalid(cells[0]) || this.isInvalid(cells[1]) || this.isInvalid(cells[2]);\r\n if (anyIssues)\r\n issueCount++;\r\n } catch (error) {\r\n issueCount++;\r\n }\r\n }\r\n\r\n let infoStyle: React.CSSProperties = {\r\n float: 'right', padding: '1%',\r\n color: issueCount ? '#721c24' : '#696969',\r\n backgroundColor: issueCount ? 'rgb(248, 215, 218)' : 'initial'\r\n };\r\n\r\n if (rows.length > 0) {\r\n let firstRow = rows[0];\r\n return (\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 rows.map((row, i) => {\r\n let cells = row.cells;\r\n try {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } catch (error) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n })\r\n }\r\n \r\n
{firstRow.cells[0].name}{firstRow.cells[1].name}{firstRow.cells[2].name}
{cells[0].value}{cells[1].value}{cells[2].value}
{ls.somethingIsWrongHere}
\r\n
\r\n \r\n {rows.length}{' '}{ls.records}\r\n \r\n \r\n
\r\n );\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n}\r\n\r\ninterface IProps {\r\n className?: string;\r\n\r\n sheet: IExcelSheet;\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n}\r\n","import { faFileImport, faHashtag, faQuestionCircle, faTags } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport * as React from 'react';\r\nimport { Button, Card, Col, Collapse, InputGroup, InputGroupAddon, InputGroupText, Row } from 'reactstrap';\r\nimport { ILangSupport, langHelper } from './ImportBarcode.lang';\r\nimport { ColorCodes } from '../../../shared/models';\r\nimport { ICompany } from './../../company/Company.models';\r\nimport { FileUpload, IOnChangeEvent } from '../../../shared/FileUpload';\r\nimport { FadeAlert, FadeAlertMessage } from '../../../shared/FadeAlert';\r\nimport { barcodeRequester, IImportBarcodeRequest } from '../Barcode.requester';\r\nimport { ExcelReader, IExcelSheet } from '../../../shared/ExcelHelpers';\r\nimport { Tags } from '../../../shared/Tags';\r\nimport { ExcelPreview } from '../../../excel/ExcelPreview';\r\n\r\nexport class ImportBarcode extends React.Component {\r\n\r\n fileUploadRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n tags: [],\r\n\r\n isHelpOn: false,\r\n alert: FadeAlertMessage.default,\r\n fileName: '',\r\n\r\n submitting: false,\r\n\r\n excelPreviewSheet: { rows: [] }\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private helpButtonClicked = (): void => {\r\n this.setState({ isHelpOn: !this.state.isHelpOn });\r\n }\r\n\r\n private onFileChange = (e: IOnChangeEvent): void => {\r\n let fileDetails = e.fileDetails;\r\n\r\n if (fileDetails === null || fileDetails.length === 0) {\r\n this.setState({ fileName: '', excelPreviewSheet: { rows: [] } });\r\n return;\r\n }\r\n\r\n let fileDetail = fileDetails[0];\r\n this.setState({ fileName: fileDetail.file.name });\r\n\r\n let excelReader = new ExcelReader();\r\n excelReader.read(e.fileDetails[0].file).then((sheets) => {\r\n this.setState({ excelPreviewSheet: sheets[0] });\r\n });\r\n }\r\n\r\n private getFile = (ref: React.RefObject): File | null => {\r\n let fileUpload = ref.current;\r\n if (fileUpload !== null) {\r\n let fileList = fileUpload.fileList;\r\n if (fileList !== null) {\r\n return fileList[0];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private onTagsChange = (tags: string[]): void => {\r\n this.setState({ tags: tags });\r\n };\r\n\r\n submit = (e: React.MouseEvent): void => {\r\n e.preventDefault();\r\n\r\n let props = this.props;\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n this.setState({ submitting: true, alert: FadeAlertMessage.default }, async () => {\r\n try {\r\n let request: IImportBarcodeRequest = {\r\n CompanyId: props.company.Id,\r\n File: this.getFile(this.fileUploadRef),\r\n Tags: state.tags\r\n \r\n };\r\n let response = await barcodeRequester.Import(request);\r\n let message = langHelper.GetViaKey(ls, response.Message);\r\n let color = response.Success ? ColorCodes.success : ColorCodes.warning;\r\n\r\n this.setState({ submitting: false, alert: new FadeAlertMessage(message, color) }, () => {\r\n props.onNewImport({});\r\n });\r\n } catch (error) {\r\n let e = error as Error;\r\n let alertMessage = new FadeAlertMessage(e.message, ColorCodes.danger);\r\n this.setState({ alert: alertMessage, submitting: false });\r\n }\r\n });\r\n \r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n let excelPreviewSheet = state.excelPreviewSheet;\r\n\r\n let fileUploadAccept = \".xlsx\";\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
  • {ls.help_previewWillBeShown}
  • \r\n
  • {ls.help_inCaseOfAProblem}
  • \r\n
  • {ls.help_pleaseDoCheck}
  • \r\n
  • {ls.help_editTheFile}
  • \r\n
  • {ls.help_activeByDefault}
  • \r\n
  • {ls.help_youMayDisableIt}
  • \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 {ls.selectFile + '*'}\r\n \r\n \r\n \r\n \r\n \r\n {state.fileName}\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\ninterface IProps {\r\n company: ICompany;\r\n onNewImport: { (e: INewImportEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n tags: string[];\r\n\r\n isHelpOn: boolean;\r\n alert: FadeAlertMessage;\r\n fileName: string;\r\n\r\n submitting: boolean;\r\n\r\n excelPreviewSheet: IExcelSheet;\r\n}\r\n\r\nexport interface INewImportEvent {\r\n\r\n}\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n search: string;\r\n setPassive: string;\r\n setActive: string;\r\n records: string;\r\n importFailed: string;\r\n edit: string;\r\n\r\n help_startTyping: string;\r\n help_justPressEnter: string;\r\n help_searchProperties: string;\r\n help_searchProperties_1: string;\r\n help_searchProperties_2: string;\r\n help_searchProperties_2_1: string;\r\n help_searchProperties_2_2: string;\r\n help_searchProperties_3: string;\r\n help_searchProperties_3_1: string;\r\n help_searchProperties_3_2: string;\r\n help_searchProperties_4: string;\r\n help_searchProperties_5: string;\r\n help_searchProperties_5_1: string;\r\n help_searchProperties_5_2: string;\r\n help_searchProperties_5_3: string;\r\n help_searchProperties_5_4: string;\r\n help_searchProperties_5_5: string;\r\n help_downloadFile: string;\r\n help_activePassive: string;\r\n help_duplications: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n search = \"ara\";\r\n setPassive = \"pasif yap\";\r\n setActive = \"aktif yap\";\r\n records = \"kayıt\";\r\n importFailed = \"aktarım başarısız\";\r\n edit = \"düzenle\";\r\n\r\n help_startTyping = \"arama kutucuğuna bulmak istediğiniz dosyanın ismini yazmaya başlayın, arama işlemi siz yazmayı bıraktıktan kısa bir süre sonra otomatik olarak başlayacaktır\";\r\n help_justPressEnter = \"eğer beklemek istemiyorsanız enter'a basarak arama işlemini anında başlatabilirsiniz\";\r\n help_searchProperties = \"arama kutucuğunu kullanarak dosya ismi, barkod sayısı, hashtag ve barkod araması yapabilirsiniz. örneğin;\";\r\n help_searchProperties_1 = \"10 yazdığınızda arama sonucu size 10 ve üzeri kaydı olan aktarımları gösterir\";\r\n help_searchProperties_2 = \"eğer aktardığınız dosyaların içeriğinde arama yapmak istiyorsanız \\\" >_ \\\" özel kodunu kullanmalısınız. örneğin;\";\r\n help_searchProperties_2_1 = \">_KS8PZ8J yazarsanız \\\"KS8PZ8J\\\" kaydını içeren aktarımları listeler\";\r\n help_searchProperties_2_2 = \">_8PZ yazarsanız \\\"KS8PZ8J\\\" kaydını içeren aktarımları listelediği gibi \\\"8PZ\\\" kaydını içeren başka aktarımları da listeler\";\r\n help_searchProperties_3 = \"eğer aktarımlarınızın hashtag'i ile arama yapmak istiyorsanız \\\" # \\\" özel kodunu kullanmalısınız. örneğin;\";\r\n help_searchProperties_3_1 = \"#pantolon yazarsanız \\\"pantolon\\\" etiketine sahip tüm aktarımları listeler\";\r\n help_searchProperties_3_2 = \"#pa yazarsanız \\\"pantolon\\\" etiketine sahip aktarımları listelediği gibi etiketinde \\\"pa\\\" geçen başka aktarımları da listeler (#pardesü gibi)\";\r\n help_searchProperties_4 = \"özel kod kullanmadan yazdığınız her kelime normal arama olarak çalışır, sayılar dahil\";\r\n help_searchProperties_5 = \"yukarıda sayılan özellikleri farklı kombinasyonlarla kullanabilirsiniz. örneğin;\";\r\n help_searchProperties_5_1 = \"yaz 500 #kadın >_KSPJKAA #pantolon ilkbahar >_KSR0RTP\";\r\n help_searchProperties_5_2 = \"dosya isminde \\\"ilkbahar\\\" ve \\\"yaz\\\" kelimeleri veya 500 sayısı geçen ve\";\r\n help_searchProperties_5_3 = \"aktarım dosyasında 500'den fazla kaydı olan ve\";\r\n help_searchProperties_5_4 = \"aktarım dosyasında \\\"KSPJKAA\\\" ve \\\"KSR0RTP\\\" barkodları olan ve\";\r\n help_searchProperties_5_5 = \"\\\"kadın\\\" ve \\\"pantolon\\\" hastagleri içeren aktarımlar\";\r\n help_downloadFile = \"listelenen kutulardaki linklere tıklayarak içe aktardığınız dosyanın bir kopyasını indirebilirsiniz\";\r\n help_activePassive = \"her bir kutuyu ayrı ayrı aktif/pasif olarak işaretleyerek arama sonuçlarına dahil olmalarını sağlayabilir veya engelleyebilirsiniz\";\r\n help_duplications = \"eğer aktif dosyalar içinde birbirinin aynısı birden fazla kayda rastlanırsa, arama sonucunda bu kayıtlardan en son aktardığınız kayıt gösterilir\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n search = \"search\";\r\n setPassive = \"set as passive\";\r\n setActive = \"set as active\";\r\n records = \"records\";\r\n importFailed = \"import failed\";\r\n edit = \"güncelle\";\r\n\r\n help_startTyping = \"start typing the name of the file you want to find, the search operation will start right after you stop typing\";\r\n help_justPressEnter = \"in case you don't want to wait, you might as well press 'enter' in order to start the search operation right away\";\r\n help_searchProperties = \"you may perform search over file name, barcode count and barcode itself. for example;\";\r\n help_searchProperties_1 = \"when you type 10, the search result will contain imports which has 10 or more records in it\";\r\n help_searchProperties_2 = \"you need to use \\\" >_ \\\" special code if you want to perform a search over imported barcodes. for example;\";\r\n help_searchProperties_2_1 = \"if you type >_KS8PZ8J , any imports containing \\\"KS8PZ8J\\\" record will be listed\";\r\n help_searchProperties_2_2 = \"if you type >_8PZ , any imports containing \\\"8PZ\\\" record will be listed, including \\\"KS8PZ8J\\\"\";\r\n help_searchProperties_3 = \"you need to use \\\" # \\\" special code if you want to perform a search over the hashtags of your imports. for example;\";\r\n help_searchProperties_3_1 = \"if you type #women , any imports with \\\"women\\\" tag will be listed\";\r\n help_searchProperties_3_2 = \"if you type #men , any imports which has a tag that contains \\\"men\\\" will be listed, including \\\"women\\\"\";\r\n help_searchProperties_4 = \"any words you type without using these special codes, including numbers, will be treated as a regular search\";\r\n help_searchProperties_5 = \"you may combine all these properties listed above. for example;\";\r\n help_searchProperties_5_1 = \"summer 500 #women >_KSPJKAA #pants sprint >_KSR0RTP\";\r\n help_searchProperties_5_2 = \"file name contains \\\"summer\\\" & \\\"sprint\\\" or the number 500 and\";\r\n help_searchProperties_5_3 = \"import file has more than 500 records and\";\r\n help_searchProperties_5_4 = \"import file has \\\"KSPJKAA\\\" & \\\"KSR0RTP\\\" barcodes and\";\r\n help_searchProperties_5_5 = \"import has \\\"women\\\" & \\\"pants\\\" hastags\";\r\n help_downloadFile = \"you may follow the links in these boxes below if you would like to download a copy of the file you imported\";\r\n help_activePassive = \"you may set each box as active/passive in order for them to be included into or excluded from the search results\";\r\n help_duplications = \"in case of a search result having duplicate records because of more than one file having the same record, we will show the one you've imported the last\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import * as React from 'react';\r\nimport { ILangSupport, langHelper } from './TabBarcode.lang';\r\nimport { ImportBarcode, INewImportEvent } from './../import/ImportBarcode';\r\nimport { IBarcodeSetActionEvent, ListBarcodeSet } from './../list/ListBarcodeSet';\r\nimport { ICompany } from '../../company/Company.models';\r\nimport { Nav, NavItem, NavLink, TabContent, TabPane } from 'reactstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faHistory, faFileImport, faEdit } from '@fortawesome/free-solid-svg-icons';\r\nimport { IBarcodeSet } from '../Barcode.models';\r\nimport { EditBarcodeSet, IOnSubmitEvent } from '../edit/EditBarcodeSet';\r\n\r\nenum Tabs { new = 'new', list = 'list', edit = 'edit' }\r\n\r\nexport class TabBarcode extends React.Component {\r\n\r\n private readonly listBarcodeSetRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n activeTab: Tabs.new,\r\n editModeModel: undefined\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private onEditPress = (e: IBarcodeSetActionEvent): void => {\r\n this.setState({ editModeModel: { barcodeSet: e.barcodeSet } }, () => {\r\n this.toggle(Tabs.edit);\r\n });\r\n }\r\n private onEdit = (e: IOnSubmitEvent): void => {\r\n this.reloadBarcodeSets();\r\n this.toggle(Tabs.list);\r\n }\r\n private reloadBarcodeSets = (): void => {\r\n let listBarcodeSet = this.listBarcodeSetRef.current;\r\n if (listBarcodeSet === null)\r\n return;\r\n listBarcodeSet.list();\r\n }\r\n\r\n private toggle = (tab: Tabs) => {\r\n let state = this.state;\r\n\r\n if (state.activeTab === tab)\r\n return;\r\n\r\n let editModeModel = tab === Tabs.edit ? state.editModeModel : undefined;\r\n this.setState({ activeTab: tab, editModeModel: editModeModel });\r\n }\r\n private getClassName = (tab: Tabs) => {\r\n return this.state.activeTab === tab ? 'active' : '';\r\n }\r\n\r\n private onNewImport = (e: INewImportEvent): void => {\r\n let listBarcodeSet = this.listBarcodeSetRef.current;\r\n if (!listBarcodeSet)\r\n return;\r\n listBarcodeSet.list();\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n let props = this.props;\r\n\r\n let activeTab = state.activeTab;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.editModeModel &&\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n company: ICompany\r\n}\r\n\r\ninterface IEditModeModel {\r\n barcodeSet: IBarcodeSet;\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n activeTab: string;\r\n editModeModel?: IEditModeModel\r\n}\r\n","import * as React from 'react';\r\nimport { Button, Card, CardSubtitle, Col, Collapse, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText, Row, Tooltip } from 'reactstrap';\r\nimport { ColorCodes } from '../../../shared/models';\r\nimport { FadeAlert, FadeAlertMessage } from '../../../shared/FadeAlert';\r\nimport { ILangSupport, langHelper } from './ListBarcodeSet.lang';\r\nimport { BarcodeSetState, BarcodeSetStatus, IBarcodeSet } from './../Barcode.models';\r\nimport { barcodeRequester, IListBarcodeSetsRequest, ISetBarcodeSetStatusRequest } from './../Barcode.requester';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCheckCircle, faEdit, faExclamationTriangle, faQuestionCircle, faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { faTimesCircle } from '@fortawesome/free-regular-svg-icons';\r\nimport { ICompany } from '../../company/Company.models';\r\n\r\nexport class ListBarcodeSet extends React.Component {\r\n\r\n searchInputRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n isHelpOn: false,\r\n\r\n querying: false,\r\n alert: FadeAlertMessage.default,\r\n\r\n search: '',\r\n page: 0,\r\n count: 20000,\r\n\r\n barcodeSetItems: []\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n this.list();\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private helpButtonClicked = (): void => {\r\n this.setState({ isHelpOn: !this.state.isHelpOn });\r\n }\r\n\r\n list = (): void => {\r\n let props = this.props;\r\n let state = this.state;\r\n\r\n if (state.querying)\r\n return;\r\n\r\n this.setState({ querying: true }, async () => {\r\n try {\r\n let request: IListBarcodeSetsRequest = { Search: state.search, Page: 0, Count: 20000, CompanyId: props.company.Id };\r\n let response = await barcodeRequester.SetList(request);\r\n\r\n this.setState({ querying: false }, () => {\r\n if (!response.Success) {\r\n let alertMessage = new FadeAlertMessage(response.Message, ColorCodes.warning);\r\n this.setState({ alert: alertMessage });\r\n return;\r\n }\r\n\r\n let barcodeSets = response.BarcodeSets;\r\n let barcodeSetItems: IBarcodeSetItem[] = [];\r\n for (let i = 0; i < barcodeSets.length; i++) {\r\n const barcodeSet = barcodeSets[i];\r\n barcodeSetItems.push({\r\n barcodeSet: barcodeSet,\r\n showActiveTooltip: false,\r\n showPassiveTooltip: false,\r\n showFailedTooltip: false,\r\n showEditTooltip: false\r\n });\r\n }\r\n\r\n this.setState({ alert: FadeAlertMessage.default, barcodeSetItems: barcodeSetItems });\r\n });\r\n } catch (error) {\r\n let e = error as Error;\r\n let alertMessage = new FadeAlertMessage(e.message, ColorCodes.danger);\r\n this.setState({ alert: alertMessage, querying: false });\r\n }\r\n finally {\r\n let searchInputElement = this.searchInputRef.current;\r\n if (searchInputElement === null)\r\n return;\r\n searchInputElement.focus();\r\n }\r\n });\r\n }\r\n\r\n private searchTimeout: NodeJS.Timeout | null = null;\r\n private clearSearchTimeout = (): void => {\r\n if (this.searchTimeout === null)\r\n return;\r\n clearTimeout(this.searchTimeout);\r\n this.searchTimeout = null;\r\n };\r\n private searchChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n\r\n this.setState({ search: newValue }, () => {\r\n this.clearSearchTimeout();\r\n this.searchTimeout = setTimeout(() => {\r\n this.list();\r\n this.clearSearchTimeout();\r\n }, 1000);\r\n });\r\n }\r\n private searchKeyDown = (e: React.KeyboardEvent): void => {\r\n if (e.key !== 'Enter')\r\n return;\r\n\r\n this.clearSearchTimeout();\r\n this.list();\r\n }\r\n\r\n private onHashtagClick = (tag: string): void => {\r\n if (!tag)\r\n return;\r\n\r\n let state = this.state;\r\n if (state.querying)\r\n return;\r\n\r\n let search = state.search;\r\n\r\n if (search.length > 0)\r\n search += ' ';\r\n\r\n search += '#' + tag;\r\n\r\n this.setState({ search: search }, this.list);\r\n }\r\n\r\n render() {\r\n let props = this.props;\r\n\r\n let state = this.state;\r\n let ls = state.ls;\r\n let barcodeSetItems = state.barcodeSetItems;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n hidden?: boolean;\r\n\r\n company: ICompany;\r\n\r\n onEditPress?: { (e: IBarcodeSetActionEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n isHelpOn: boolean;\r\n\r\n querying: boolean;\r\n alert: FadeAlertMessage;\r\n\r\n search: string;\r\n page: number;\r\n count: number;\r\n\r\n barcodeSetItems: IBarcodeSetItem[];\r\n}\r\n\r\ninterface IBarcodeSetItem {\r\n barcodeSet: IBarcodeSet;\r\n showActiveTooltip: boolean;\r\n showPassiveTooltip: boolean;\r\n showFailedTooltip: boolean;\r\n showEditTooltip: boolean;\r\n}\r\n\r\nexport interface IBarcodeSetActionEvent {\r\n barcodeSet: IBarcodeSet;\r\n}\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n help_default: string;\r\n\r\n hashtags: string;\r\n save: string;\r\n\r\n 'BarcodeController.EditBarcodeSet.request': string;\r\n 'BarcodeController.EditBarcodeSet.Id': string;\r\n 'BarcodeController.EditBarcodeSet.barcodeSet': string;\r\n 'BarcodeController.EditBarcodeSet': string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n help_default = \"aşağıdaki formu kullanarak değişikliklerinizi uygulayabilirsiniz\";\r\n\r\n hashtags = \"hashtag'ler (her hashtag'den sonra 'enter'a basın)\";\r\n save = \"kaydet\";\r\n\r\n 'BarcodeController.EditBarcodeSet.request' = \"yapmaya çalıştığınız istek sunucuya ulaşmadı\";\r\n 'BarcodeController.EditBarcodeSet.Id' = \"id bilgisi eksik\";\r\n 'BarcodeController.EditBarcodeSet.barcodeSet' = \"düzenlemek istediğiniz aktarım kaydı silinmiş olabilir\";\r\n 'BarcodeController.EditBarcodeSet' = \"aktarım kaydı başarıyla güncellendi\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n help_default = \"you may apply your changes using the form below\";\r\n\r\n hashtags = \"hashtags (press 'enter' after each hastag)\";\r\n save = \"save\";\r\n\r\n 'BarcodeController.EditBarcodeSet.request' = \"your request couldn't make it's way to the server\";\r\n 'BarcodeController.EditBarcodeSet.Id' = \"id information is missing\";\r\n 'BarcodeController.EditBarcodeSet.barcodeSet' = \"the import record you're trying to edit might have been deleted\";\r\n 'BarcodeController.EditBarcodeSet' = \"import record was successfully edited\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { faHashtag, faQuestionCircle, faSave } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport * as React from 'react';\r\nimport { Button, Card, Col, Collapse, InputGroup, InputGroupAddon, InputGroupText, Row } from 'reactstrap';\r\nimport { ILangSupport, langHelper } from './EditBarcodeSet.lang';\r\nimport { ColorCodes } from '../../../shared/models';\r\nimport { FileUpload } from '../../../shared/FileUpload';\r\nimport { FadeAlert, FadeAlertMessage } from '../../../shared/FadeAlert';\r\nimport { barcodeRequester, IEditBarcodeSetRequest } from '../Barcode.requester';\r\nimport { Tags } from '../../../shared/Tags';\r\nimport { IBarcodeSet } from '../Barcode.models';\r\n\r\nexport class EditBarcodeSet extends React.Component {\r\n\r\n fileUploadRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n tags: props.barcodeSet.Tags,\r\n\r\n isHelpOn: false,\r\n alert: FadeAlertMessage.default,\r\n\r\n submitting: false\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private helpButtonClicked = (): void => {\r\n this.setState({ isHelpOn: !this.state.isHelpOn });\r\n }\r\n\r\n private onTagsChange = (tags: string[]): void => {\r\n this.setState({ tags: tags });\r\n };\r\n\r\n submit = (e: React.MouseEvent): void => {\r\n e.preventDefault();\r\n\r\n let props = this.props;\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n this.setState({ submitting: true, alert: FadeAlertMessage.default }, async () => {\r\n try {\r\n let request: IEditBarcodeSetRequest = {\r\n Id: props.barcodeSet.Id,\r\n Tags: state.tags\r\n };\r\n\r\n let response = await barcodeRequester.EditBarcodeSet(request);\r\n let message = langHelper.GetViaKey(ls, response.Message);\r\n let color = response.Success ? ColorCodes.success : ColorCodes.warning;\r\n\r\n this.setState({ submitting: false, alert: new FadeAlertMessage(message, color) }, () => {\r\n if (props.onSubmit)\r\n props.onSubmit({});\r\n });\r\n } catch (error) {\r\n let e = error as Error;\r\n let alertMessage = new FadeAlertMessage(e.message, ColorCodes.danger);\r\n this.setState({ alert: alertMessage, submitting: false });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
  • {ls.help_default}
  • \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\ninterface IProps {\r\n barcodeSet: IBarcodeSet;\r\n onSubmit?: { (e: IOnSubmitEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n tags: string[];\r\n\r\n isHelpOn: boolean;\r\n alert: FadeAlertMessage;\r\n\r\n submitting: boolean;\r\n}\r\n\r\nexport interface IOnSubmitEvent {\r\n\r\n}\r\n","import * as React from 'react';\r\nimport { ILangSupport, langHelper } from './TabCompany.lang';\r\nimport { NewCompany } from './../new/NewCompany';\r\nimport { ICompanyActionEvent, ListCompany } from './../list/ListCompany';\r\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader, Nav, NavItem, NavLink, TabContent, TabPane } from 'reactstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faPlusCircle, faTh } from '@fortawesome/free-solid-svg-icons';\r\nimport { companyRequester } from '../Company.requester';\r\nimport { IBarcodeSwitchEvent, ICompany, IOnSubmitEvent } from '../Company.models';\r\nimport { EditCompany } from '../edit/EditCompany';\r\n\r\nenum Tabs { new = 'new', list = 'list', edit = 'edit' }\r\n\r\nexport class TabCompany extends React.Component {\r\n private readonly listCompanyRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n activeTab: Tabs.list,\r\n\r\n editModeModel: undefined,\r\n deleteModal: { isOpen: false, id: '', title: '' }\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n //reactions to the buttons of list component\r\n private onEditPress = (e: ICompanyActionEvent): void => {\r\n this.setState({ editModeModel: { company: e.company } }, () => {\r\n this.toggle(Tabs.edit);\r\n });\r\n }\r\n private onQrPress = (e: ICompanyActionEvent): void => {\r\n let props = this.props;\r\n\r\n props.onBarcodeSwitch({ company: e.company });\r\n }\r\n private onDeletePress = (e: ICompanyActionEvent): void => {\r\n let state = this.state;\r\n let deleteModal = state.deleteModal;\r\n\r\n let initializeModal = (): void => {\r\n let company = e.company;\r\n deleteModal.id = company.Id;\r\n deleteModal.title = company.Name;\r\n deleteModal.isOpen = true;\r\n this.setState({ deleteModal: deleteModal });\r\n }\r\n\r\n if (deleteModal.isOpen) {\r\n deleteModal.isOpen = false;\r\n this.setState({ deleteModal: deleteModal }, initializeModal);\r\n }\r\n else\r\n initializeModal();\r\n }\r\n\r\n //Edit mode\r\n private onCompanyEdit = (e: IOnSubmitEvent): void => {\r\n this.reloadCompanies();\r\n this.toggle(Tabs.list);\r\n }\r\n private reloadCompanies = (): void => {\r\n let listCompany = this.listCompanyRef.current;\r\n if (listCompany === null)\r\n return;\r\n listCompany.list();\r\n }\r\n private onNewRecord = (e: IOnSubmitEvent): void => {\r\n this.reloadCompanies();\r\n }\r\n\r\n //delete mode\r\n private toggleDeleteModal = (): void => {\r\n let modalModel = this.state.deleteModal;\r\n modalModel.isOpen = !modalModel.isOpen;\r\n this.setState({ deleteModal: modalModel })\r\n }\r\n private deleteButtonClicked = (): void => {\r\n let state = this.state;\r\n let deleteModal = state.deleteModal;\r\n\r\n let companyId = deleteModal.id;\r\n\r\n deleteModal.id = '';\r\n deleteModal.title = '';\r\n deleteModal.isOpen = false;\r\n\r\n this.setState({ deleteModal: deleteModal }, async () => {\r\n await companyRequester.Delete({ Id: companyId });\r\n this.reloadCompanies();\r\n });\r\n }\r\n\r\n //other\r\n private toggle = (tab: Tabs) => {\r\n let state = this.state;\r\n\r\n if (state.activeTab === tab)\r\n return;\r\n\r\n let editModeModel = tab === Tabs.edit ? state.editModeModel : undefined;\r\n this.setState({ activeTab: tab, editModeModel: editModeModel });\r\n }\r\n private getClassName = (tab: Tabs) => {\r\n return this.state.activeTab === tab ? 'active' : '';\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n let activeTab = state.activeTab;\r\n\r\n let editModeModel = state.editModeModel;\r\n let deleteModal = state.deleteModal;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n editModeModel &&\r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n {deleteModal.title}\r\n \r\n {ls.youAreAboutToDelete}\r\n \r\n \r\n {' '}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n onBarcodeSwitch: { (e: IBarcodeSwitchEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n activeTab: string;\r\n\r\n editModeModel?: IEditModeModel;\r\n deleteModal: IDeleteModalModel;\r\n}\r\n\r\ninterface IEditModeModel {\r\n company: ICompany;\r\n}\r\n\r\ninterface IDeleteModalModel {\r\n isOpen: boolean;\r\n id: string;\r\n title: string;\r\n}\r\n","import * as React from 'react';\r\nimport { Card } from 'reactstrap';\r\nimport { ICompany } from '../company/Company.models';\r\nimport { ILangSupport, langHelper } from './Barcode.lang';\r\nimport { TabBarcode } from './tab/TabBarcode'\r\n\r\nexport class Barcode extends React.Component {\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n let props = this.props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n {ls.title}{' '}{props.company.Name}\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n company: ICompany;\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n}\r\n","import { Lang, MultiLangHelper } from \"../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n title: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n title = 'Şirketler'\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n title = 'Companies';\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n list: string;\r\n addNew: string;\r\n edit: string;\r\n\r\n areYouSure: string;\r\n youAreAboutToDelete: string;\r\n yesDelete: string;\r\n noDontDelete: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n list = 'listele';\r\n addNew = 'yeni ekle';\r\n edit = 'düzenle';\r\n\r\n areYouSure = \"emin misiniz?\";\r\n youAreAboutToDelete = \"bir şirket kaydını silmek üzeresiniz, emin misiniz?\";\r\n yesDelete = \"eminim, sil\";\r\n noDontDelete = \"hayır, iptal et!\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n list = 'list';\r\n addNew = 'add new';\r\n edit = 'edit';\r\n\r\n areYouSure = \"are you sure?\";\r\n youAreAboutToDelete = \"you are about to delete a company record, are you sure?\";\r\n yesDelete = \"sure, delete it\";\r\n noDontDelete = \"nope, cancel!\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n help_ReqiredFields: string;\r\n help_InformationalCompanyDetails: string;\r\n\r\n companyName: string;\r\n companyCode: string;\r\n email: string;\r\n phone: string;\r\n\r\n suspiciousUrl: string;\r\n originalUrl: string;\r\n\r\n suspiciousImage: string;\r\n originalImage: string;\r\n\r\n password: string;\r\n\r\n save: string;\r\n\r\n 'CompanyController.New.Name': string;\r\n 'CompanyController.New.Code': string;\r\n 'CompanyController.New.Email': string;\r\n 'CompanyController.New.Phone': string;\r\n 'CompanyController.New.OriginalUrl': string;\r\n 'CompanyController.New.SuspiciousUrl': string;\r\n 'CompanyController.New.imgtype': string;\r\n 'CompanyController.New.NotFoundImage': string;\r\n 'CompanyController.New.SuspiciousImage': string;\r\n 'CompanyController.New.OriginalImage': string;\r\n 'CompanyController.New.existingCompany': string;\r\n 'CompanyController.New.companyViaCode': string;\r\n 'CompanyController.New': string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n help_ReqiredFields = \"(*) ile işaretlenmiş alanlar zorunlu alanlardır\";\r\n help_InformationalCompanyDetails = \"'eposta' ve 'telefon numarası' gibi alanlar zorunlu olmamakla beraber, kullanıcıların telefon ekranından kolayca bu bilgileri kopyalayabilmesi için tasarlandı\";\r\n\r\n companyName = \"şirket adı\";\r\n companyCode = \"şirket kodu\";\r\n email = \"eposta\";\r\n phone = \"telefon numarası\";\r\n\r\n suspiciousUrl = \"'şüpheli kod' linki\";\r\n originalUrl = \"ürün garanti etme linki\";\r\n\r\n suspiciousImage = \"'şüpheli kod' görseli\";\r\n originalImage = \"'orijinal kod' görseli\";\r\n\r\n password = \"şifre\";\r\n\r\n save = \"kaydet\";\r\n 'CompanyController.New.Name' = \"lütfen şirket adı belirtin\";\r\n 'CompanyController.New.Code' = \"lütfen şirket kodu belirtin\";\r\n 'CompanyController.New.Email' = \"lütfen geçerli bir email belirtin\";\r\n 'CompanyController.New.Phone' = \"lütfen geçerli bir telefon numarası belirtin\";\r\n 'CompanyController.New.OriginalUrl' = \"lütfen geçerli bir 'orijinal kod' linki belirtin\";\r\n 'CompanyController.New.SuspiciousUrl' = \"lütfen geçerli bir 'şüpheli kod' linki belirtin\";\r\n 'CompanyController.New.imgtype' = \"lütfen sadece png formatında görsel yükleyin\";\r\n 'CompanyController.New.NotFoundImage' = \"lütfen 'bilinmeyen kod' görseli ekleyin\";\r\n 'CompanyController.New.SuspiciousImage' = \"lütfen 'şüpheli kod' görseli ekleyin\";\r\n 'CompanyController.New.OriginalImage' = \"lütfen 'orijinal kod' görseli ekleyin\";\r\n 'CompanyController.New.existingCompany' = \"kaydetmeye çalıştığınız şirket zaten mevcut\";\r\n 'CompanyController.New.companyViaCode' = \"aynı koda sahip başka bir şirket zaten mevcut\";\r\n 'CompanyController.New' = \"yeni şirket kaydı başarıyla eklendi\";\r\n 'CompanyController.New.Password' = \"Hatalı şifre! Doğru şifre ile ekleme işlemi yapabilirsiniz\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n help_ReqiredFields = \"fields that are marked with (*) are required\";\r\n help_InformationalCompanyDetails = \"even thought fields like 'email' and 'phone number' are not required, they are designed to help mobile users in order for them to easily copy those informations\";\r\n\r\n companyName = \"company name\";\r\n companyCode = \"company code\";\r\n email = \"email\";\r\n phone = \"phone number\";\r\n\r\n suspiciousUrl = \"'suspicious code' link\";\r\n originalUrl = \"product warranty link\";\r\n\r\n suspiciousImage = \"'suspicious code' image\";\r\n originalImage = \"'original code' image\";\r\n\r\n password = \"password\";\r\n\r\n save = \"save\";\r\n 'CompanyController.New.Name' = \"please provide the company name\";\r\n 'CompanyController.New.Code' = \"please provide the company code\";\r\n 'CompanyController.New.Email' = \"please provide a valid email\";\r\n 'CompanyController.New.Phone' = \"please provide a valid phone number\";\r\n 'CompanyController.New.OriginalUrl' = \"please provide a valid 'original code' link\";\r\n 'CompanyController.New.SuspiciousUrl' = \"please provide a valid 'suspicious code' link\";\r\n 'CompanyController.New.imgtype' = \"please upload images in png format only\";\r\n 'CompanyController.New.NotFoundImage' = \"please provide the 'unkown code' image\";\r\n 'CompanyController.New.SuspiciousImage' = \"please provide the 'suspicious code' image\";\r\n 'CompanyController.New.OriginalImage' = \"please provide the 'original code' image\";\r\n 'CompanyController.New.existingCompany' = \"the company you are trying to save already exists\";\r\n 'CompanyController.New.companyViaCode' = \"there's another company using the same code\";\r\n 'CompanyController.New' = \"new record of the company was successfully added\";\r\n 'CompanyController.New.Password' = \"Wrong password! you can add with the correct password.\"\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { faAt, faBuilding, faExternalLinkAlt, faImage, faLink, faPhoneAlt, faQuestionCircle, faSave, faTerminal } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport * as React from 'react';\r\nimport { Button, Card, Col, Collapse, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText, Row } from 'reactstrap';\r\nimport { FadeAlert, FadeAlertMessage } from '../../../shared/FadeAlert';\r\nimport { FileUpload, IOnChangeEvent } from '../../../shared/FileUpload';\r\nimport { ColorCodes } from '../../../shared/models';\r\nimport { IOnSubmitEvent } from '../Company.models';\r\nimport { ILangSupport, langHelper } from './NewCompany.lang';\r\nimport { INewCompanyRequest, companyRequester } from './../Company.requester';\r\n\r\nexport class NewCompany extends React.Component {\r\n\r\n private readonly previewImgUrl = '/imgs/placeholder.jpg';\r\n\r\n notFoundPreviewRef = React.createRef();\r\n notFoundFileUploadRef = React.createRef();\r\n\r\n suspiciousPreviewRef = React.createRef();\r\n suspiciousFileUploadRef = React.createRef();\r\n\r\n originalPreviewRef = React.createRef();\r\n originalFileUploadRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n isHelpOn: false,\r\n\r\n submitting: false,\r\n alert: FadeAlertMessage.default,\r\n\r\n name: '',\r\n code: '',\r\n email: '',\r\n phone: '',\r\n originalUrl:'',\r\n originalImgUrl: this.previewImgUrl,\r\n suspiciousImgUrl: this.previewImgUrl,\r\n\r\n password: ''\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private helpButtonClicked = (): void => {\r\n this.setState({ isHelpOn: !this.state.isHelpOn });\r\n }\r\n\r\n private nameChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ name: newValue });\r\n }\r\n private codeChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ code: newValue });\r\n }\r\n private emailChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ email: newValue });\r\n }\r\n private phoneChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ phone: newValue });\r\n }\r\n\r\n private originalUrlChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ originalUrl: newValue });\r\n }\r\n private passwordChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ password: newValue });\r\n }\r\n\r\n\r\n \r\n\r\n submit = (e: React.MouseEvent): void => {\r\n\r\n e.preventDefault();\r\n\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n this.setState({ submitting: true, alert: FadeAlertMessage.default }, async () => {\r\n try {\r\n let request: INewCompanyRequest = {\r\n Name: state.name,\r\n Code: state.code,\r\n Email: state.email,\r\n Phone: state.phone,\r\n OriginalUrl: state.originalUrl,\r\n SuspiciousImage: this.getFile(this.suspiciousFileUploadRef),\r\n OriginalImage: this.getFile(this.originalFileUploadRef),\r\n\r\n Password: state.password\r\n };\r\n\r\n let response = await companyRequester.New(request);\r\n\r\n if (!response.Success) {\r\n let message = langHelper.GetViaKey(ls, response.Message);\r\n let alertMessage = new FadeAlertMessage(message, ColorCodes.warning);\r\n this.setState({ submitting: false, alert: alertMessage });\r\n }\r\n else {\r\n let props = this.props;\r\n if (props.onSubmit !== undefined)\r\n props.onSubmit({ company: response.Company });\r\n\r\n this.clearFileUploadAndPreview(this.notFoundPreviewRef, this.notFoundFileUploadRef);\r\n this.clearFileUploadAndPreview(this.suspiciousPreviewRef, this.suspiciousFileUploadRef);\r\n this.clearFileUploadAndPreview(this.originalPreviewRef, this.originalFileUploadRef);\r\n\r\n let message = langHelper.GetViaKey(ls, response.Message);\r\n let alertMessage = new FadeAlertMessage(message, ColorCodes.success);\r\n\r\n this.setState({\r\n submitting: false, alert: alertMessage,\r\n name: '', code: '', phone: '', email: '',originalUrl:''\r\n });\r\n }\r\n } catch (error) {\r\n let e = error as Error;\r\n let alertMessage = new FadeAlertMessage(e.message, ColorCodes.danger);\r\n this.setState({ alert: alertMessage, submitting: false });\r\n }\r\n });\r\n }\r\n\r\n private getFile = (ref: React.RefObject): File | null => {\r\n let fileUpload = ref.current;\r\n if (fileUpload !== null) {\r\n let fileList = fileUpload.fileList;\r\n if (fileList !== null) {\r\n return fileList[0];\r\n }\r\n }\r\n return null;\r\n }\r\n private clearFileUploadAndPreview = (filePreviewRef: React.RefObject, fileUploadRef: React.RefObject): void => {\r\n let filePreview = filePreviewRef.current;\r\n if (filePreview !== null) {\r\n filePreview.src = this.previewImgUrl;\r\n }\r\n\r\n let fileUpload = fileUploadRef.current;\r\n if (fileUpload !== null) {\r\n fileUpload.clear();\r\n }\r\n }\r\n private onFileChange = (e: IOnChangeEvent, previewRef: React.RefObject): void => {\r\n let previewElem = previewRef.current;\r\n if (previewElem === null)\r\n return;\r\n\r\n let fileDetails = e.fileDetails;\r\n if (fileDetails === null)\r\n return;\r\n\r\n if (fileDetails.length === 0) {\r\n previewElem.src = this.previewImgUrl;\r\n return;\r\n }\r\n\r\n let fileDetail = fileDetails[0];\r\n previewElem.src = URL.createObjectURL(fileDetail.file);\r\n }\r\n private renderImageUpload = (text: string, previewImageRef: React.RefObject, fileUploadRef: React.RefObject) => {\r\n let state = this.state;\r\n\r\n let imageUploadAccept = \".png,.jpg,.jpeg\";\r\n let previewImgStyle: React.CSSProperties = { maxWidth: 255, maxHeight: 172, minWidth: 255, minHeight: 172, width: '100%', height: '100%' };\r\n return (\r\n \r\n
\r\n {text}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.onFileChange(e, previewImageRef) }}>\r\n {text + '*'}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
  • {ls.help_ReqiredFields}
  • \r\n
  • {ls.help_InformationalCompanyDetails}
  • \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\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\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 this.renderImageUpload(ls.suspiciousImage, this.suspiciousPreviewRef, this.suspiciousFileUploadRef)\r\n }\r\n {\r\n this.renderImageUpload(ls.originalImage, this.originalPreviewRef, this.originalFileUploadRef)\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\ninterface IProps {\r\n onSubmit?: { (e: IOnSubmitEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n isHelpOn: boolean;\r\n\r\n submitting: boolean;\r\n alert: FadeAlertMessage;\r\n\r\n name: string;\r\n code: string;\r\n email: string;\r\n phone: string;\r\n originalUrl: string;\r\n suspiciousImgUrl: string;\r\n originalImgUrl: string;\r\n\r\n password: string;\r\n}\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n search: string;\r\n edit: string;\r\n qr: string;\r\n delete: string;\r\n\r\n help_startTyping: string;\r\n help_justPressEnter: string;\r\n help_barcodeMenu: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n search = \"ara\";\r\n edit = \"düzenle\";\r\n qr = \"qr kod\";\r\n delete = \"sil\";\r\n\r\n help_startTyping = \"arama kutucuğuna bulmak istediğiniz şirketin ismini yazmaya başlayın, arama işlemi siz yazmayı bıraktıktan kısa bir süre sonra otomatik olarak başlayacaktır\";\r\n help_justPressEnter = \"eğer beklemek istemiyorsanız enter'a basarak arama işlemini anında başlatabilirsiniz\";\r\n help_barcodeMenu = \"qr kod menüsüne erişmek için öncelikle bir şirket kaydı oluşturmalı ve şirket kartındaki 'qr kod' butonunu kullanmalısınız\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n search = \"search\";\r\n edit = \"edit\";\r\n qr = \"qr code\";\r\n delete = \"delete\";\r\n\r\n help_startTyping = \"start typing the name of the company you want to find, the search operation will start right after you stop typing\";\r\n help_justPressEnter = \"in case you don't want to wait, you might as well press 'enter' in order to start the search operation right away\";\r\n help_barcodeMenu = \"you need to create a company and then use the 'qr code' button on the company card in order to access to the qr code menu\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import * as React from 'react';\r\nimport { Button, Card, CardSubtitle, CardTitle, Col, Collapse, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText, Row, Tooltip } from 'reactstrap';\r\nimport { ColorCodes } from '../../../shared/models';\r\nimport { FadeAlert, FadeAlertMessage } from '../../../shared/FadeAlert';\r\nimport { ILangSupport, langHelper } from './ListCompany.lang';\r\nimport { ICompany } from './../Company.models';\r\nimport { companyRequester, IListCompaniesRequest } from './../Company.requester';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faAt, faEdit, faEraser, faPhoneAlt, faQrcode, faQuestionCircle, faSearch } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class ListCompany extends React.Component {\r\n\r\n searchInputRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n isHelpOn: false,\r\n\r\n querying: false,\r\n alert: FadeAlertMessage.default,\r\n\r\n search: '',\r\n page: 0,\r\n count: 20000,\r\n\r\n companyItems: []\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n this.list();\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private helpButtonClicked = (): void => {\r\n this.setState({ isHelpOn: !this.state.isHelpOn });\r\n }\r\n\r\n list = (): void => {\r\n let state = this.state;\r\n\r\n if (state.querying)\r\n return;\r\n\r\n this.setState({ querying: true }, async () => {\r\n try {\r\n let request: IListCompaniesRequest = { Search: state.search, Page: 0, Count: 20000 };\r\n let response = await companyRequester.List(request);\r\n\r\n this.setState({ querying: false }, () => {\r\n if (!response.Success) {\r\n let alertMessage = new FadeAlertMessage(response.Message, ColorCodes.warning);\r\n this.setState({ alert: alertMessage });\r\n return;\r\n }\r\n\r\n let companies = response.Companies;\r\n let companyItems: ICompanyItem[] = [];\r\n for (let i = 0; i < companies.length; i++) {\r\n const company = companies[i];\r\n companyItems.push({\r\n company: company,\r\n showEditTooltip: false,\r\n showQrTooltip: false,\r\n showDeleteTooltip: false\r\n });\r\n }\r\n\r\n this.setState({ alert: FadeAlertMessage.default, companyItems: companyItems });\r\n });\r\n } catch (error) {\r\n let e = error as Error;\r\n let alertMessage = new FadeAlertMessage(e.message, ColorCodes.danger);\r\n this.setState({ alert: alertMessage, querying: false });\r\n }\r\n finally {\r\n let searchInputElement = this.searchInputRef.current;\r\n if (searchInputElement === null)\r\n return;\r\n searchInputElement.focus();\r\n }\r\n });\r\n }\r\n\r\n private searchTimeout: NodeJS.Timeout | null = null;\r\n private clearSearchTimeout = (): void => {\r\n if (this.searchTimeout === null)\r\n return;\r\n clearTimeout(this.searchTimeout);\r\n this.searchTimeout = null;\r\n };\r\n private searchChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n\r\n this.setState({ search: newValue }, () => {\r\n this.clearSearchTimeout();\r\n this.searchTimeout = setTimeout(() => {\r\n this.list();\r\n this.clearSearchTimeout();\r\n }, 1000);\r\n });\r\n }\r\n private searchKeyDown = (e: React.KeyboardEvent): void => {\r\n if (e.key !== 'Enter')\r\n return;\r\n\r\n this.clearSearchTimeout();\r\n this.list();\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n let companyItems = state.companyItems;\r\n\r\n let props = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n hidden?: boolean;\r\n onEditPress?: { (e: ICompanyActionEvent): void }\r\n onQrPress?: { (e: ICompanyActionEvent): void }\r\n onDeletePress?: { (e: ICompanyActionEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n isHelpOn: boolean;\r\n\r\n querying: boolean;\r\n alert: FadeAlertMessage;\r\n\r\n search: string;\r\n page: number;\r\n count: number;\r\n\r\n companyItems: ICompanyItem[];\r\n}\r\n\r\ninterface ICompanyItem {\r\n company: ICompany;\r\n\r\n showEditTooltip: boolean;\r\n showQrTooltip: boolean;\r\n showDeleteTooltip: boolean;\r\n}\r\n\r\nexport interface ICompanyActionEvent {\r\n company: ICompany\r\n}\r\n","import { Lang, MultiLangHelper } from \"../../../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n help_ReqiredFields: string;\r\n help_InformationalCompanyDetails: string;\r\n\r\n companyName: string;\r\n companyCode: string;\r\n email: string;\r\n phone: string;\r\n originalUrl: string;\r\n suspiciousImage: string;\r\n originalImage: string;\r\n\r\n save: string;\r\n\r\n 'CompanyController.Edit.Id': string;\r\n 'CompanyController.Edit.Name': string;\r\n 'CompanyController.Edit.Code': string;\r\n 'CompanyController.Edit.Email': string;\r\n 'CompanyController.Edit.Phone': string;\r\n 'CompanyController.Edit.NotFoundImage': string;\r\n 'CompanyController.Edit.imgtype': string;\r\n 'CompanyController.Edit.SuspiciousImage': string;\r\n 'CompanyController.Edit.OriginalImage': string;\r\n 'CompanyController.Edit.existingCompany': string;\r\n 'CompanyController.Edit.companyViaCode': string;\r\n 'CompanyController.Edit.company': string;\r\n 'CompanyController.Edit': string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n help_ReqiredFields = \"(*) ile işaretlenmiş alanlar zorunlu alanlardır\";\r\n help_InformationalCompanyDetails = \"'eposta' ve 'telefon numarası' gibi alanlar zorunlu olmamakla beraber, kullanıcıların telefon ekranından kolayca bu bilgileri kopyalayabilmesi için tasarlandı\";\r\n\r\n companyName = \"şirket adı\";\r\n companyCode = \"şirket kodu\";\r\n email = \"eposta\";\r\n phone = \"telefon numarası\";\r\n\r\n suspiciousUrl = \"'şüpheli kod' linki\";\r\n originalUrl = \"ürün garanti etme linki\";\r\n\r\n suspiciousImage = \"'şüpheli kod' görseli\";\r\n originalImage = \"'orijinal kod' görseli\";\r\n \r\n save = \"kaydet\";\r\n 'CompanyController.Edit.Id' = \"id bilgisi eksik\";\r\n 'CompanyController.Edit.Name' = \"lütfen şirket adı belirtin\";\r\n 'CompanyController.Edit.Code' = \"lütfen şirket kodu belirtin\";\r\n 'CompanyController.Edit.Email' = \"lütfen geçerli bir email belirtin\";\r\n 'CompanyController.Edit.Phone' = \"lütfen geçerli bir telefon numarası belirtin\";\r\n 'CompanyController.Edit.OriginalUrl' = \"lütfen geçerli bir 'orijinal kod' linki belirtin\";\r\n 'CompanyController.Edit.SuspiciousUrl' = \"lütfen geçerli bir 'şüpheli kod' linki belirtin\";\r\n 'CompanyController.Edit.imgtype' = \"lütfen sadece png formatında görsel yükleyin\";\r\n 'CompanyController.Edit.NotFoundImage' = \"lütfen 'bilinmeyen kod' görseli ekleyin\";\r\n 'CompanyController.Edit.SuspiciousImage' = \"lütfen 'şüpheli kod' görseli ekleyin\";\r\n 'CompanyController.Edit.OriginalImage' = \"lütfen 'orijinal kod' görseli ekleyin\";\r\n 'CompanyController.Edit.existingCompany' = \"bu ismi kullanan başka bir şirket mevcut\";\r\n 'CompanyController.Edit.companyViaCode' = \"aynı koda sahip başka bir şirket zaten mevcut\";\r\n 'CompanyController.Edit.company' = \"düzenlemek istediğiniz şirket'in kaydı silinmiş olabilir\";\r\n 'CompanyController.Edit' = \"şirket kaydı başarıyla güncellendi\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n help_ReqiredFields = \"fields that are marked with (*) are required\";\r\n help_InformationalCompanyDetails = \"even thought fields like 'email' and 'phone number' are not required, they are designed to help mobile users in order for them to easily copy those informations\";\r\n\r\n companyName = \"company name\";\r\n companyCode = \"company code\";\r\n email = \"email\";\r\n phone = \"phone number\";\r\n\r\n suspiciousUrl = \"'suspicious code' link\";\r\n originalUrl = \"product warranty link\";\r\n\r\n suspiciousImage = \"'suspicious code' image\";\r\n originalImage = \"'original code' image\";\r\n\r\n save = \"save\";\r\n 'CompanyController.Edit.Id' = \"id information is missing\";\r\n 'CompanyController.Edit.Name' = \"please provide the company name\";\r\n 'CompanyController.Edit.Code' = \"please provide the company code\";\r\n 'CompanyController.Edit.Email' = \"please provide a valid email\";\r\n 'CompanyController.Edit.Phone' = \"please provide a valid phone number\";\r\n 'CompanyController.Edit.NotFoundImage' = \"please provide the 'unkown code' image\";\r\n 'CompanyController.Edit.SuspiciousImage' = \"please provide the 'suspicious code' image\";\r\n 'CompanyController.Edit.OriginalImage' = \"please provide the 'original code' image\";\r\n 'CompanyController.Edit.imgtype' = \"please upload images in png format only\";\r\n\r\n 'CompanyController.Edit.existingCompany' = \"there is already another company using that name\";\r\n 'CompanyController.Edit.companyViaCode' = \"there's another company using the same code\";\r\n 'CompanyController.Edit.company' = \"the company you're trying to edit might have been deleted\";\r\n 'CompanyController.Edit' = \"company record was successfully edited\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import { faAt, faBuilding, faExternalLinkAlt, faPhoneAlt, faQuestionCircle, faSave, faTerminal, faImage, faLink } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport * as React from 'react';\r\nimport { Button, Card, Col, Collapse, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText, Row } from 'reactstrap';\r\nimport { FadeAlert, FadeAlertMessage } from '../../../shared/FadeAlert';\r\nimport { FileUpload, IOnChangeEvent } from '../../../shared/FileUpload';\r\nimport { ColorCodes } from '../../../shared/models';\r\nimport { ICompany, IOnSubmitEvent } from '../Company.models';\r\nimport { ILangSupport, langHelper } from './EditCompany.lang';\r\nimport { companyRequester, IEditCompanyRequest } from '../Company.requester';\r\n\r\nexport class EditCompany extends React.Component {\r\n\r\n private readonly previewImgUrl = '/imgs/placeholder.jpg';\r\n\r\n notFoundPreviewRef = React.createRef();\r\n notFoundFileUploadRef = React.createRef();\r\n\r\n suspiciousPreviewRef = React.createRef();\r\n suspiciousFileUploadRef = React.createRef();\r\n\r\n originalPreviewRef = React.createRef();\r\n originalFileUploadRef = React.createRef();\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n\r\n let company = props.company;\r\n\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n isHelpOn: false,\r\n\r\n submitting: false,\r\n alert: FadeAlertMessage.default,\r\n\r\n id: company.Id,\r\n name: company.Name ?? '',\r\n code: company.Code ?? '',\r\n email: company.Email ?? '',\r\n phone: company.Phone ?? '',\r\n originalUrl :company.OriginalUrl ?? '',\r\n originalImgUrl: company.OriginalImgUrl,\r\n suspiciousImgUrl: company.SuspiciousImgUrl\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n private helpButtonClicked = (): void => {\r\n this.setState({ isHelpOn: !this.state.isHelpOn });\r\n }\r\n\r\n private nameChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ name: newValue });\r\n }\r\n private codeChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ code: newValue });\r\n }\r\n private emailChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ email: newValue });\r\n }\r\n private phoneChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ phone: newValue });\r\n }\r\n \r\n\r\n private originalUrlChanged = (e: React.ChangeEvent): void => {\r\n let newValue = e.target.value;\r\n this.setState({ originalUrl: newValue });\r\n }\r\n submit = (e: React.MouseEvent): void => {\r\n e.preventDefault();\r\n\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n this.setState({ submitting: true, alert: FadeAlertMessage.default }, async () => {\r\n try {\r\n let request: IEditCompanyRequest = {\r\n Id: state.id,\r\n\r\n Name: state.name,\r\n Code: state.code,\r\n Email: state.email,\r\n Phone: state.phone,\r\n OriginalUrl: state.originalUrl,\r\n\r\n SuspiciousImgUrl: state.suspiciousImgUrl,\r\n OriginalImgUrl: state.originalImgUrl,\r\n\r\n SuspiciousImage: this.getFile(this.suspiciousFileUploadRef),\r\n OriginalImage: this.getFile(this.originalFileUploadRef)\r\n };\r\n\r\n let response = await companyRequester.Edit(request);\r\n\r\n if (!response.Success) {\r\n let message = langHelper.GetViaKey(ls, response.Message);\r\n let alertMessage = new FadeAlertMessage(message, ColorCodes.warning);\r\n this.setState({ submitting: false, alert: alertMessage });\r\n }\r\n else {\r\n let props = this.props;\r\n if (props.onSubmit !== undefined)\r\n props.onSubmit({ company: response.Company });\r\n\r\n this.clearFileUploadAndPreview(this.notFoundPreviewRef, this.notFoundFileUploadRef);\r\n this.clearFileUploadAndPreview(this.suspiciousPreviewRef, this.suspiciousFileUploadRef);\r\n this.clearFileUploadAndPreview(this.originalPreviewRef, this.originalFileUploadRef);\r\n\r\n let message = langHelper.GetViaKey(ls, response.Message);\r\n let alertMessage = new FadeAlertMessage(message, ColorCodes.success);\r\n\r\n this.setState({\r\n submitting: false, alert: alertMessage,\r\n name: '', code: '', phone: '', email: ''\r\n });\r\n }\r\n } catch (error) {\r\n let e = error as Error;\r\n let alertMessage = new FadeAlertMessage(e.message, ColorCodes.danger);\r\n this.setState({ alert: alertMessage, submitting: false });\r\n }\r\n });\r\n }\r\n\r\n private getFile = (ref: React.RefObject): File | null => {\r\n let fileUpload = ref.current;\r\n if (fileUpload !== null) {\r\n let fileList = fileUpload.fileList;\r\n if (fileList !== null) {\r\n return fileList[0];\r\n }\r\n }\r\n return null;\r\n }\r\n private clearFileUploadAndPreview = (filePreviewRef: React.RefObject, fileUploadRef: React.RefObject): void => {\r\n let filePreview = filePreviewRef.current;\r\n if (filePreview !== null) {\r\n filePreview.src = this.previewImgUrl;\r\n }\r\n\r\n let fileUpload = fileUploadRef.current;\r\n if (fileUpload !== null) {\r\n fileUpload.clear();\r\n }\r\n }\r\n private onFileChange = (e: IOnChangeEvent, previewRef: React.RefObject): void => {\r\n let previewElem = previewRef.current;\r\n if (previewElem === null)\r\n return;\r\n\r\n let fileDetails = e.fileDetails;\r\n if (fileDetails === null)\r\n return;\r\n\r\n if (fileDetails.length === 0) {\r\n previewElem.src = this.previewImgUrl;\r\n return;\r\n }\r\n\r\n let fileDetail = fileDetails[0];\r\n previewElem.src = URL.createObjectURL(fileDetail.file);\r\n }\r\n private renderImageUpload = (text: string, imgSrc: string, previewImageRef: React.RefObject, fileUploadRef: React.RefObject) => {\r\n let state = this.state;\r\n\r\n let imageUploadAccept = \".png,.jpg,.jpeg\";\r\n let previewImgStyle: React.CSSProperties = { maxWidth: 255, maxHeight: 172, minWidth: 255, minHeight: 172, width: '100%', height: '100%' };\r\n\r\n let src = imgSrc ? imgSrc : this.previewImgUrl;\r\n\r\n return (\r\n \r\n
\r\n {text}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.onFileChange(e, previewImageRef) }}>\r\n {text + '*'}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
  • {ls.help_ReqiredFields}
  • \r\n
  • {ls.help_InformationalCompanyDetails}
  • \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\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\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {\r\n this.renderImageUpload(ls.suspiciousImage, state.suspiciousImgUrl, this.suspiciousPreviewRef, this.suspiciousFileUploadRef)\r\n }\r\n {\r\n this.renderImageUpload(ls.originalImage, state.originalImgUrl, this.originalPreviewRef, this.originalFileUploadRef)\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\ninterface IProps {\r\n company: ICompany;\r\n onSubmit?: { (e: IOnSubmitEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n\r\n isHelpOn: boolean;\r\n\r\n submitting: boolean;\r\n alert: FadeAlertMessage;\r\n\r\n id: string;\r\n\r\n name: string;\r\n code: string;\r\n email: string;\r\n phone: string;\r\n originalUrl: string;\r\n suspiciousImgUrl: string;\r\n originalImgUrl: string;\r\n}\r\n","import * as React from 'react';\r\nimport { Breadcrumb, BreadcrumbItem } from 'reactstrap';\r\nimport { Barcode } from './barcode/Barcode';\r\nimport { Company } from './company/Company';\r\nimport { IBarcodeSwitchEvent, ICompany } from './company/Company.models';\r\nimport { ILangSupport, langHelper } from './Dashboard.lang';\r\n\r\nenum Breadcrumbs { companies = 'companies', barcodes = 'barcodes' }\r\n\r\nexport class Dashboard extends React.Component {\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current,\r\n\r\n breadcrumb: Breadcrumbs.companies,\r\n company: undefined\r\n };\r\n }\r\n\r\n componentDidMount = (): void => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n onBarcodeSwitch = (e: IBarcodeSwitchEvent): void => {\r\n this.setState({ breadcrumb: Breadcrumbs.barcodes, company: e.company });\r\n }\r\n onCompanyBreadcrumbClick = (): void => {\r\n this.setState({ breadcrumb: Breadcrumbs.companies, company: undefined });\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let ls = state.ls;\r\n\r\n let companyBreadcrumbStyle: React.CSSProperties = { cursor: 'pointer', color: '#f3632a' };\r\n\r\n return (\r\n
\r\n \r\n \r\n {\r\n state.breadcrumb === Breadcrumbs.barcodes && state.company !== undefined &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\ninterface IProps { }\r\n\r\ninterface IState {\r\n ls: ILangSupport\r\n\r\n breadcrumb: Breadcrumbs;\r\n company?: ICompany;\r\n}\r\n\r\n//import axios, { AxiosRequestConfig } from 'axios';\r\n\r\n//const api = axios.create({\r\n// baseURL: 'https://localhost:44335/admin/dashboard'\r\n//});\r\n\r\n\r\n//api.interceptors.request.use((config: AxiosRequestConfig) => {\r\n// const token = localStorage.getItem('token');\r\n// if (token) { config.headers.Authorization = `Bearer ${token}`; } return config;\r\n//}); export default api;\r\n","import * as React from 'react';\r\nimport { Card } from 'reactstrap';\r\nimport { ILangSupport, langHelper } from './Company.lang';\r\nimport { IBarcodeSwitchEvent } from './Company.models';\r\nimport { TabCompany } from './tab/TabCompany';\r\n\r\nexport class Company extends React.Component {\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n ls: langHelper.Current\r\n };\r\n }\r\n\r\n componentDidMount = async (): Promise => {\r\n langHelper.RegisterComponent(this);\r\n }\r\n componentWillUnmount = (): void => {\r\n langHelper.UnregisterComponent(this);\r\n }\r\n\r\n render() {\r\n let props = this.props;\r\n\r\n let state = this.state;\r\n let ls = state.ls;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\ninterface IProps {\r\n hidden?: boolean;\r\n onBarcodeSwitch: { (e: IBarcodeSwitchEvent): void }\r\n}\r\n\r\ninterface IState {\r\n ls: ILangSupport;\r\n}\r\n","import { Lang, MultiLangHelper } from \"../shared/multi.lang\";\r\n\r\nexport interface ILangSupport {\r\n lang: Lang;\r\n\r\n breadcrumbCompanies: string;\r\n breadcrumbBarcodes: string;\r\n}\r\n\r\nclass TurkishSupport implements ILangSupport {\r\n lang = Lang.TR;\r\n\r\n breadcrumbCompanies = \"Şirketler\";\r\n breadcrumbBarcodes = \"QR Kodlar\";\r\n}\r\nconst turkishSupport = new TurkishSupport();\r\n\r\nclass EnglishSupport implements ILangSupport {\r\n lang = Lang.EN;\r\n\r\n breadcrumbCompanies = \"Companies\";\r\n breadcrumbBarcodes = \"QR Codes\";\r\n}\r\nconst englishSupport = new EnglishSupport();\r\n\r\nconst langHelper = new MultiLangHelper(turkishSupport, englishSupport);\r\nexport { langHelper }\r\n","import React, { Component } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Layout } from './layout/Layout';\r\nimport { Home } from './home/Home';\r\nimport { Dashboard } from './admin/Dashboard'\r\n\r\nimport './custom.css'\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nregisterServiceWorker();\r\n\r\n","export class AppSettings {\r\n static readonly Url = \"https://www.bep-id.com/\"\r\n}","import axios from \"axios\";\r\nimport { AppSettings } from \"./AppSettings\"\r\n\r\nexport default axios.create({\r\n baseURL: AppSettings.Url,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n }\r\n});","import requester from \"../../shared/requester\";\r\nimport { IResponse } from \"../../shared/models\"\r\nimport { ICompany } from \"./Company.models\";\r\nimport { AxiosRequestConfig } from \"axios\";\r\n\r\nclass CompanyRequester {\r\n private readonly controller = 'company';\r\n\r\n List = async (request: IListCompaniesRequest): Promise => {\r\n let config: AxiosRequestConfig = {\r\n params: request\r\n };\r\n let resp = await requester.get(`${this.controller}/list`, config);\r\n return resp.data;\r\n }\r\n\r\n New = async (request: INewCompanyRequest): Promise => {\r\n let config: AxiosRequestConfig = {\r\n headers: { 'Content-Type': 'multipart/form-data', 'Authorization': 'Basic ' + Buffer.from(request.Password).toString('base64') }\r\n };\r\n\r\n let formData = new FormData();\r\n\r\n if (request.Name)\r\n formData.append(\"Name\", request.Name);\r\n if (request.Code)\r\n formData.append(\"Code\", request.Code);\r\n if (request.Email)\r\n formData.append(\"Email\", request.Email);\r\n if (request.Phone)\r\n formData.append(\"Phone\", request.Phone);\r\n\r\n if (request.OriginalUrl)\r\n formData.append(\"OriginalUrl\", request.OriginalUrl);\r\n\r\n if (request.SuspiciousImage)\r\n formData.append(\"SuspiciousImage\", request.SuspiciousImage);\r\n if (request.OriginalImage)\r\n formData.append(\"OriginalImage\", request.OriginalImage);\r\n\r\n let resp = await requester.post(`${this.controller}/new`, formData, config);\r\n return resp.data;\r\n }\r\n\r\n Edit = async (request: IEditCompanyRequest): Promise => {\r\n let config: AxiosRequestConfig = {\r\n headers: { 'Content-Type': 'multipart/form-data' }\r\n };\r\n\r\n let formData = new FormData();\r\n\r\n if (request.Id)\r\n formData.append(\"Id\", request.Id);\r\n\r\n if (request.Name)\r\n formData.append(\"Name\", request.Name);\r\n if (request.Code)\r\n formData.append(\"Code\", request.Code);\r\n if (request.Email)\r\n formData.append(\"Email\", request.Email);\r\n if (request.Phone)\r\n formData.append(\"Phone\", request.Phone);\r\n\r\n if (request.OriginalUrl)\r\n formData.append(\"OriginalUrl\", request.OriginalUrl);\r\n\r\n if (request.SuspiciousImgUrl)\r\n formData.append(\"SuspiciousImgUrl\", request.SuspiciousImgUrl);\r\n if (request.OriginalImgUrl)\r\n formData.append(\"OriginalImgUrl\", request.OriginalImgUrl);\r\n\r\n if (request.SuspiciousImage)\r\n formData.append(\"SuspiciousImage\", request.SuspiciousImage);\r\n if (request.OriginalImage)\r\n formData.append(\"OriginalImage\", request.OriginalImage);\r\n\r\n let resp = await requester.post(`${this.controller}/edit`, formData, config);\r\n return resp.data;\r\n }\r\n\r\n Delete = async (request: IDeleteCompanyRequest): Promise => {\r\n let resp = await requester.post(`${this.controller}/delete`, request);\r\n return resp.data;\r\n }\r\n}\r\nconst companyRequester = new CompanyRequester();\r\nexport { companyRequester };\r\n\r\n//List\r\nexport interface IListCompaniesRequest {\r\n Search: string;\r\n Page: number;\r\n Count: number;\r\n}\r\nexport interface IListCompaniesResponse extends IResponse {\r\n Companies: ICompany[];\r\n}\r\n\r\n//New\r\nexport interface INewCompanyRequest {\r\n Name: string;\r\n Code: string;\r\n Email: string;\r\n Phone: string;\r\n OriginalUrl: string;\r\n SuspiciousImage?: File | null;\r\n OriginalImage?: File | null;\r\n\r\n Password: string;\r\n}\r\nexport interface INewCompanyResponse extends IResponse {\r\n Company: ICompany;\r\n}\r\n\r\n//Edit\r\nexport interface IEditCompanyRequest {\r\n Id: string;\r\n\r\n Name: string;\r\n Code: string;\r\n Email: string;\r\n Phone: string;\r\n OriginalUrl: string;\r\n\r\n SuspiciousImgUrl: string;\r\n OriginalImgUrl: string;\r\n\r\n SuspiciousImage?: File | null;\r\n OriginalImage?: File | null;\r\n}\r\nexport interface IEditCompanyResponse extends IResponse {\r\n Company: ICompany;\r\n}\r\n\r\n//Delete\r\nexport interface IDeleteCompanyRequest {\r\n Id: string;\r\n}\r\nexport interface IDeleteCompanyResponse extends IResponse {\r\n}"],"sourceRoot":""}